diff --git a/.gitattributes b/.gitattributes
index 9ce6848f71..372557fbd8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,9 +1,30 @@
-LICENSE text
-*.md text
-*.js text
-*.json text
-*.html text
-*.css text
-*.txt text
+LICENSE text eol=lf
+*.md text eol=lf
+*.c text eol=lf
+*.cc text eol=lf
+*.h text eol=lf
+*.cc text eol=lf
+*.S text eol=lf
+*.s text eol=lf
+*.hex -crlf -diff
+*.elf -crlf -diff
+*.ld text eol=lf
+Makefile text eol=lf
+*.mk text eol=lf
+*.nomk text eol=lf
+*.pl text eol=lf
+*.js text eol=lf
+*.json text eol=lf
+*.html text eol=lf
+*.css text eol=lf
+*.svg text eol=lf
*.png -crlf -diff
-*.svg -crlf -diff
+*.yml text eol=lf
+*.xml text eol=lf
+*.mcm text eol=lf
+*.nsi text eol=lf
+*.nsh text eol=lf
+*.lua text eol=lf
+*.txt text eol=lf
+*.sh text eol=lf
+*.config text eol=lf
diff --git a/assets/windows/UnInst.nsh b/assets/windows/UnInst.nsh
index 125e6e7221..d7affa2fb4 100644
--- a/assets/windows/UnInst.nsh
+++ b/assets/windows/UnInst.nsh
@@ -1,377 +1,377 @@
-/*
-
-NSIS Uninstaller Data
-Copyright 2014 Aleksandr Ivankiv
-
-Modified by the Betaflight Team project to let it be used out of the uninstall section
-*/
-
-;--------------------------------
-
-!ifndef UNINST_INCLUDED
-!define UNINST_INCLUDED
-
-!verbose push
-!verbose 3
-
-!ifndef UNINST_VERBOSE
- !define UNINST_VERBOSE 3
-!endif
-
-!verbose ${UNINST_VERBOSE}
-
-;--------------------------------
-;Header files required by Uninstaller Data
-
-!include "FileFunc.nsh"
-!include "TextFunc.nsh"
-
-;--------------------------------
-;Variables
-
-Var List
-Var Log
-Var Tmp
-Var UNINST_DAT
-Var UNINST_EXE
-Var UNINST_DEL_FILE
-
-;--------------------------------
-;Default language strings
-
-!define UNINST_EXCLUDE_ERROR_DEFAULT "Error creating an exclusion list."
-!define UNINST_DATA_ERROR_DEFAULT "Error creating the uninstaller data: $\r$\nCannot find an exclusion list."
-!define UNINST_DAT_NOT_FOUND_DEFAULT "$UNINST_DAT not found, unable to perform uninstall. Manually delete files."
-!define UNINST_DAT_MISSING_DEFAULT "$UNINST_DAT is missing, some elements could not be removed. These can be removed manually."
-!define UNINST_DEL_FILE_DEFAULT "Delete File"
-
-;--------------------------------
-;Language strings macro
-
-!macro SETSTRING NAME
-
- !ifndef "${NAME}"
- !ifdef UNINST_LOCALIZE
- !define "${NAME}" "$(${NAME})"
- !else
- !define "${NAME}" "${${NAME}_DEFAULT}"
- !endif
- !endif
-
-!macroend
-
-;--------------------------------
-;Initialization macro
-
-!macro UNINST_INIT
-
- ;Default settings
- !ifndef UninstName
- !define UninstName "Uninstall"
- !endif
- !ifndef UninstHeader
- !define UninstHeader "=========== Uninstaller Data please do not edit this file ==========="
- !endif
- !insertmacro SETSTRING "UNINST_EXCLUDE_ERROR"
- !insertmacro SETSTRING "UNINST_DATA_ERROR"
- !insertmacro SETSTRING "UNINST_DAT_NOT_FOUND"
- !insertmacro SETSTRING "UNINST_DAT_MISSING"
- !insertmacro SETSTRING "UNINST_DEL_FILE"
- StrCpy $UNINST_DEL_FILE "${UNINST_DEL_FILE}"
- StrCpy $UNINST_DAT "$OUTDIR\${UninstName}.dat"
- StrCpy $UNINST_EXE "$OUTDIR\${UninstName}.exe"
-
-!macroend
-
-;--------------------------------
-;Change name of file
-
-!macro UNINST_NAME Name
-
- !ifdef UninstName
- !undef UninstName
- !define UninstName "${Name}"
- !else
- !define UninstName "${Name}"
- !endif
- !insertmacro UNINST_INIT
-
-!macroend
-
-;--------------------------------
-;Create an exclusion list
-
-!macro UNINSTALLER_DATA_BEGIN
-
- !insertmacro UNINST_EXCLUDE
-
-!macroend
-
-!macro UNINST_EXCLUDE
-
- !verbose push
- !verbose ${UNINST_VERBOSE}
-
- !insertmacro UNINST_INIT
-
- StrCmp "$PLUGINSDIR" "" 0 +2
- InitPluginsDir
-
- GetTempFileName $Tmp $PLUGINSDIR
-
- IfErrors 0 UninstExclude
- !ifndef UNINST_ERROR
- !define UNINST_ERROR
- MessageBox MB_OK|MB_ICONEXCLAMATION "${UNINST_EXCLUDE_ERROR}" /SD IDOK
- Goto +3
- !endif
-
- UninstExclude:
- FileOpen $List "$Tmp" w
- ${Locate} "$OUTDIR" "/L=FD" "${ExcludeList_Func_CallBack}"
- FileClose $List
-
- !verbose pop
-
-!macroend
-
-!macro UNINST_FUNCTION_EXCLUDELIST
-
- Function ExcludeList
-
- FileWrite $List "$R9$\r$\n"
- Push $0
-
- FunctionEnd
-
-!macroend
-
-!ifndef ExcludeList_Func_CallBack
- !insertmacro UNINST_FUNCTION_EXCLUDELIST
- !define ExcludeList_Func_CallBack "ExcludeList"
-!endif
-
-;----------------------------------------------------------------
-;Write Uninstaller Data
-
-!macro UNINSTALLER_DATA_END
-
- !insertmacro UNINST_DATA
-
-!macroend
-
-!macro UNINST_DATA
-
- !verbose push
- !verbose ${UNINST_VERBOSE}
-
- !insertmacro UNINST_INIT
-
- IfFileExists "$Tmp" UninstData
- !ifndef UNINST_ERROR
- !define UNINST_ERROR
- ${GetFileName} "$UNINST_DAT" $R0
- MessageBox MB_OK|MB_ICONEXCLAMATION "${UNINST_DATA_ERROR}" /SD IDOK
- !endif
- Goto DoneUninstData
-
- UninstData:
- FileOpen $Log "$UNINST_DAT" a
- FileOpen $List "$Tmp" r
-
- FileRead $Log $1
- IfErrors 0 +2
- FileWrite $Log "${UninstHeader}$\r$\n"
-
- ${Locate} "$OUTDIR" "/L=FD" "${UninstallData_Func_CallBack}"
-
- FileClose $List
- FileClose $Log
-
- DoneUninstData:
- StrCpy $Tmp ""
-
- !verbose pop
-
-!macroend
-
-!macro UNINST_FUNCTION_UNINSTDATA
-
- Function UninstallData
-
- StrCmp $R9 $UNINST_DAT Done
-
- FileSeek $List 0 SET
-
- LoopReadList:
- FileRead $List $1 ${NSIS_MAX_STRLEN}
- IfErrors DoneReadList
-
- ${TrimNewLines} $1 $R0
- StrCmp $R0 $R9 Done
-
- Goto LoopReadList
-
- DoneReadList:
- FileSeek $Log 0 SET
-
- LoopReadLog:
- FileRead $Log $1 ${NSIS_MAX_STRLEN}
- IfErrors DoneReadLog
-
- ${TrimNewLines} $1 $R0
- StrCmp $R0 $R9 Done
-
- Goto LoopReadLog
-
- DoneReadLog:
- FileSeek $Log 0 END
- FileWrite $Log "$R9$\r$\n"
-
- Done:
- Push $0
-
- FunctionEnd
-
-!macroend
-
-!ifndef UninstallData_Func_CallBack
- !insertmacro UNINST_FUNCTION_UNINSTDATA
- !define UninstallData_Func_CallBack "UninstallData"
-!endif
-
-;----------------------------------------------------------------
-;Uninstall Files
-
-!macro INST_DELETE Path Name
- !insertmacro UNINST_DELETE_MULTIPLE ${Path} ${Name} ""
-!macroend
-
-!macro UNINST_DELETE Path Name
- !insertmacro UNINST_DELETE_MULTIPLE ${Path} ${Name} "un."
-!macroend
-
-!macro UNINST_DELETE_MULTIPLE Path Name un
-
- !verbose push
- !verbose ${UNINST_VERBOSE}
-
- !if "${Path}" == ""
- StrCpy $OUTDIR "$INSTDIR"
- !else
- StrCpy $OUTDIR "${Path}"
- !endif
- !if "${Name}" == ""
- !insertmacro UNINST_NAME "Uninstall"
- !else
- !insertmacro UNINST_NAME "${Name}"
- !endif
-
- !insertmacro UNINST_INIT
-
- IfFileExists "$UNINST_DAT" +3
- !ifdef UNINST_TERMINATE
- MessageBox MB_OK|MB_ICONSTOP "${UNINST_DAT_NOT_FOUND}" /SD IDOK
- Quit
- !else
- MessageBox MB_OK|MB_ICONEXCLAMATION "${UNINST_DAT_MISSING}" /SD IDOK
- StrCpy $0 "error"
- !endif
-
- ${If} $0 != "error"
-
- FileOpen $Log "$UNINST_DAT" r
- Call ${un}DeleteList
- FileClose $Log
-
- Delete "$UNINST_DAT"
-
- !ifdef UNINST_INTERACTIVE
- ${Locate} "$OUTDIR" "/L=F" "${un.InterActive_Func_CallBack}"
- ${Locate} "$OUTDIR" "/L=DE" "${un.InterActive_Func_CallBack}"
- !else
- Call ${un}InterActive
- !endif
-
- ${Else}
- StrCpy $0 ""
- ${EndIf}
-
- Delete "$UNINST_EXE"
- RMDir $OUTDIR
- ClearErrors
-
- !verbose pop
-
-!macroend
-
-!macro UNINST_FUNCTION_DELETE un
-
- Function ${un}DeleteList
-
- LoopReadFile:
- FileRead $Log $1 ${NSIS_MAX_STRLEN}
- IfErrors DoneReadFile
-
- ${TrimNewLines} $1 $R0
-
- IfFileExists $R0\*.* +3
- IfFileExists $R0 0 +2
- Delete $R0
-
- Goto LoopReadFile
-
- DoneReadFile:
- FileSeek $Log 0 SET
-
- LoopReadDIR:
- FileRead $Log $1 ${NSIS_MAX_STRLEN}
- IfErrors DoneReadDIR
-
- ${TrimNewLines} $1 $R0
-
- IfFileExists $R0\*.* 0 +3
- RMDir $R0
- ClearErrors
-
- Goto LoopReadDIR
-
- DoneReadDIR:
-
- FunctionEnd
-
-!macroend
-
-!insertmacro UNINST_FUNCTION_DELETE ""
-!insertmacro UNINST_FUNCTION_DELETE "un."
-
-!macro UNINST_FUNCTION_INTERACTIVE un
-
- Function ${un}InterActive
-
- StrCmp $R9 "" +8
- IfFileExists $R9\*.* 0 +3
- RMDir $R9
- Goto +4
- StrCmp $R9 $UNINST_EXE +3
- MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "$UNINST_DEL_FILE '$R9'?" /SD IDNO IDNO +2
- Delete $R9
- Push $0
-
- FunctionEnd
-
-!macroend
-
-!ifndef un.InterActive_Func_CallBack
- !insertmacro UNINST_FUNCTION_INTERACTIVE "un."
- !define un.InterActive_Func_CallBack "un.InterActive"
-!endif
-
-!ifndef InterActive_Func_CallBack
- !insertmacro UNINST_FUNCTION_INTERACTIVE ""
- !define InterActive_Func_CallBack "InterActive"
-!endif
-
-!verbose pop
-
-!endif
+/*
+
+NSIS Uninstaller Data
+Copyright 2014 Aleksandr Ivankiv
+
+Modified by the Betaflight Team project to let it be used out of the uninstall section
+*/
+
+;--------------------------------
+
+!ifndef UNINST_INCLUDED
+!define UNINST_INCLUDED
+
+!verbose push
+!verbose 3
+
+!ifndef UNINST_VERBOSE
+ !define UNINST_VERBOSE 3
+!endif
+
+!verbose ${UNINST_VERBOSE}
+
+;--------------------------------
+;Header files required by Uninstaller Data
+
+!include "FileFunc.nsh"
+!include "TextFunc.nsh"
+
+;--------------------------------
+;Variables
+
+Var List
+Var Log
+Var Tmp
+Var UNINST_DAT
+Var UNINST_EXE
+Var UNINST_DEL_FILE
+
+;--------------------------------
+;Default language strings
+
+!define UNINST_EXCLUDE_ERROR_DEFAULT "Error creating an exclusion list."
+!define UNINST_DATA_ERROR_DEFAULT "Error creating the uninstaller data: $\r$\nCannot find an exclusion list."
+!define UNINST_DAT_NOT_FOUND_DEFAULT "$UNINST_DAT not found, unable to perform uninstall. Manually delete files."
+!define UNINST_DAT_MISSING_DEFAULT "$UNINST_DAT is missing, some elements could not be removed. These can be removed manually."
+!define UNINST_DEL_FILE_DEFAULT "Delete File"
+
+;--------------------------------
+;Language strings macro
+
+!macro SETSTRING NAME
+
+ !ifndef "${NAME}"
+ !ifdef UNINST_LOCALIZE
+ !define "${NAME}" "$(${NAME})"
+ !else
+ !define "${NAME}" "${${NAME}_DEFAULT}"
+ !endif
+ !endif
+
+!macroend
+
+;--------------------------------
+;Initialization macro
+
+!macro UNINST_INIT
+
+ ;Default settings
+ !ifndef UninstName
+ !define UninstName "Uninstall"
+ !endif
+ !ifndef UninstHeader
+ !define UninstHeader "=========== Uninstaller Data please do not edit this file ==========="
+ !endif
+ !insertmacro SETSTRING "UNINST_EXCLUDE_ERROR"
+ !insertmacro SETSTRING "UNINST_DATA_ERROR"
+ !insertmacro SETSTRING "UNINST_DAT_NOT_FOUND"
+ !insertmacro SETSTRING "UNINST_DAT_MISSING"
+ !insertmacro SETSTRING "UNINST_DEL_FILE"
+ StrCpy $UNINST_DEL_FILE "${UNINST_DEL_FILE}"
+ StrCpy $UNINST_DAT "$OUTDIR\${UninstName}.dat"
+ StrCpy $UNINST_EXE "$OUTDIR\${UninstName}.exe"
+
+!macroend
+
+;--------------------------------
+;Change name of file
+
+!macro UNINST_NAME Name
+
+ !ifdef UninstName
+ !undef UninstName
+ !define UninstName "${Name}"
+ !else
+ !define UninstName "${Name}"
+ !endif
+ !insertmacro UNINST_INIT
+
+!macroend
+
+;--------------------------------
+;Create an exclusion list
+
+!macro UNINSTALLER_DATA_BEGIN
+
+ !insertmacro UNINST_EXCLUDE
+
+!macroend
+
+!macro UNINST_EXCLUDE
+
+ !verbose push
+ !verbose ${UNINST_VERBOSE}
+
+ !insertmacro UNINST_INIT
+
+ StrCmp "$PLUGINSDIR" "" 0 +2
+ InitPluginsDir
+
+ GetTempFileName $Tmp $PLUGINSDIR
+
+ IfErrors 0 UninstExclude
+ !ifndef UNINST_ERROR
+ !define UNINST_ERROR
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${UNINST_EXCLUDE_ERROR}" /SD IDOK
+ Goto +3
+ !endif
+
+ UninstExclude:
+ FileOpen $List "$Tmp" w
+ ${Locate} "$OUTDIR" "/L=FD" "${ExcludeList_Func_CallBack}"
+ FileClose $List
+
+ !verbose pop
+
+!macroend
+
+!macro UNINST_FUNCTION_EXCLUDELIST
+
+ Function ExcludeList
+
+ FileWrite $List "$R9$\r$\n"
+ Push $0
+
+ FunctionEnd
+
+!macroend
+
+!ifndef ExcludeList_Func_CallBack
+ !insertmacro UNINST_FUNCTION_EXCLUDELIST
+ !define ExcludeList_Func_CallBack "ExcludeList"
+!endif
+
+;----------------------------------------------------------------
+;Write Uninstaller Data
+
+!macro UNINSTALLER_DATA_END
+
+ !insertmacro UNINST_DATA
+
+!macroend
+
+!macro UNINST_DATA
+
+ !verbose push
+ !verbose ${UNINST_VERBOSE}
+
+ !insertmacro UNINST_INIT
+
+ IfFileExists "$Tmp" UninstData
+ !ifndef UNINST_ERROR
+ !define UNINST_ERROR
+ ${GetFileName} "$UNINST_DAT" $R0
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${UNINST_DATA_ERROR}" /SD IDOK
+ !endif
+ Goto DoneUninstData
+
+ UninstData:
+ FileOpen $Log "$UNINST_DAT" a
+ FileOpen $List "$Tmp" r
+
+ FileRead $Log $1
+ IfErrors 0 +2
+ FileWrite $Log "${UninstHeader}$\r$\n"
+
+ ${Locate} "$OUTDIR" "/L=FD" "${UninstallData_Func_CallBack}"
+
+ FileClose $List
+ FileClose $Log
+
+ DoneUninstData:
+ StrCpy $Tmp ""
+
+ !verbose pop
+
+!macroend
+
+!macro UNINST_FUNCTION_UNINSTDATA
+
+ Function UninstallData
+
+ StrCmp $R9 $UNINST_DAT Done
+
+ FileSeek $List 0 SET
+
+ LoopReadList:
+ FileRead $List $1 ${NSIS_MAX_STRLEN}
+ IfErrors DoneReadList
+
+ ${TrimNewLines} $1 $R0
+ StrCmp $R0 $R9 Done
+
+ Goto LoopReadList
+
+ DoneReadList:
+ FileSeek $Log 0 SET
+
+ LoopReadLog:
+ FileRead $Log $1 ${NSIS_MAX_STRLEN}
+ IfErrors DoneReadLog
+
+ ${TrimNewLines} $1 $R0
+ StrCmp $R0 $R9 Done
+
+ Goto LoopReadLog
+
+ DoneReadLog:
+ FileSeek $Log 0 END
+ FileWrite $Log "$R9$\r$\n"
+
+ Done:
+ Push $0
+
+ FunctionEnd
+
+!macroend
+
+!ifndef UninstallData_Func_CallBack
+ !insertmacro UNINST_FUNCTION_UNINSTDATA
+ !define UninstallData_Func_CallBack "UninstallData"
+!endif
+
+;----------------------------------------------------------------
+;Uninstall Files
+
+!macro INST_DELETE Path Name
+ !insertmacro UNINST_DELETE_MULTIPLE ${Path} ${Name} ""
+!macroend
+
+!macro UNINST_DELETE Path Name
+ !insertmacro UNINST_DELETE_MULTIPLE ${Path} ${Name} "un."
+!macroend
+
+!macro UNINST_DELETE_MULTIPLE Path Name un
+
+ !verbose push
+ !verbose ${UNINST_VERBOSE}
+
+ !if "${Path}" == ""
+ StrCpy $OUTDIR "$INSTDIR"
+ !else
+ StrCpy $OUTDIR "${Path}"
+ !endif
+ !if "${Name}" == ""
+ !insertmacro UNINST_NAME "Uninstall"
+ !else
+ !insertmacro UNINST_NAME "${Name}"
+ !endif
+
+ !insertmacro UNINST_INIT
+
+ IfFileExists "$UNINST_DAT" +3
+ !ifdef UNINST_TERMINATE
+ MessageBox MB_OK|MB_ICONSTOP "${UNINST_DAT_NOT_FOUND}" /SD IDOK
+ Quit
+ !else
+ MessageBox MB_OK|MB_ICONEXCLAMATION "${UNINST_DAT_MISSING}" /SD IDOK
+ StrCpy $0 "error"
+ !endif
+
+ ${If} $0 != "error"
+
+ FileOpen $Log "$UNINST_DAT" r
+ Call ${un}DeleteList
+ FileClose $Log
+
+ Delete "$UNINST_DAT"
+
+ !ifdef UNINST_INTERACTIVE
+ ${Locate} "$OUTDIR" "/L=F" "${un.InterActive_Func_CallBack}"
+ ${Locate} "$OUTDIR" "/L=DE" "${un.InterActive_Func_CallBack}"
+ !else
+ Call ${un}InterActive
+ !endif
+
+ ${Else}
+ StrCpy $0 ""
+ ${EndIf}
+
+ Delete "$UNINST_EXE"
+ RMDir $OUTDIR
+ ClearErrors
+
+ !verbose pop
+
+!macroend
+
+!macro UNINST_FUNCTION_DELETE un
+
+ Function ${un}DeleteList
+
+ LoopReadFile:
+ FileRead $Log $1 ${NSIS_MAX_STRLEN}
+ IfErrors DoneReadFile
+
+ ${TrimNewLines} $1 $R0
+
+ IfFileExists $R0\*.* +3
+ IfFileExists $R0 0 +2
+ Delete $R0
+
+ Goto LoopReadFile
+
+ DoneReadFile:
+ FileSeek $Log 0 SET
+
+ LoopReadDIR:
+ FileRead $Log $1 ${NSIS_MAX_STRLEN}
+ IfErrors DoneReadDIR
+
+ ${TrimNewLines} $1 $R0
+
+ IfFileExists $R0\*.* 0 +3
+ RMDir $R0
+ ClearErrors
+
+ Goto LoopReadDIR
+
+ DoneReadDIR:
+
+ FunctionEnd
+
+!macroend
+
+!insertmacro UNINST_FUNCTION_DELETE ""
+!insertmacro UNINST_FUNCTION_DELETE "un."
+
+!macro UNINST_FUNCTION_INTERACTIVE un
+
+ Function ${un}InterActive
+
+ StrCmp $R9 "" +8
+ IfFileExists $R9\*.* 0 +3
+ RMDir $R9
+ Goto +4
+ StrCmp $R9 $UNINST_EXE +3
+ MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 "$UNINST_DEL_FILE '$R9'?" /SD IDNO IDNO +2
+ Delete $R9
+ Push $0
+
+ FunctionEnd
+
+!macroend
+
+!ifndef un.InterActive_Func_CallBack
+ !insertmacro UNINST_FUNCTION_INTERACTIVE "un."
+ !define un.InterActive_Func_CallBack "un.InterActive"
+!endif
+
+!ifndef InterActive_Func_CallBack
+ !insertmacro UNINST_FUNCTION_INTERACTIVE ""
+ !define InterActive_Func_CallBack "InterActive"
+!endif
+
+!verbose pop
+
+!endif
diff --git a/assets/windows/installer.nsi b/assets/windows/installer.nsi
index a19ebf5eb5..70ea1bc362 100644
--- a/assets/windows/installer.nsi
+++ b/assets/windows/installer.nsi
@@ -1,213 +1,213 @@
-!include "MUI2.nsh"
-!include "FileFunc.nsh"
-!include "LogicLib.nsh"
-!include "UnInst.nsh"
-
-# Receives variables from the command line
-# ${VERSION} - Version to generate (x.y.z)
-# ${PLATFORM} - Platform to generate (win32 or win64)
-# ${DEST_FOLDER} - Destination folder for the installer files
-
-# Some definitions
-!define SOURCE_FILES "..\..\apps\betaflight-configurator\${PLATFORM}\*"
-!define APP_NAME "Betaflight Configurator"
-!define COMPANY_NAME "The Betaflight open source project."
-!define GROUP_NAME "Betaflight"
-!define FOLDER_NAME "Betaflight-Configurator"
-!define FILE_NAME_INSTALLER "betaflight-configurator-installer_${VERSION}_${PLATFORM}.exe"
-!define FILE_NAME_UNINSTALLER "uninstall-betaflight-configurator.exe"
-!define FILE_NAME_EXECUTABLE "betaflight-configurator.exe"
-!define LICENSE "..\..\LICENSE"
-!define MUI_WELCOMEFINISHPAGE_BITMAP ".\bf_installer.bmp"
-
-
-Name "${APP_NAME}"
-BrandingText "${COMPANY_NAME}"
-
-# set the icon
-!define MUI_ICON ".\bf_installer_icon.ico"
-!define MUI_UNICON ".\bf_uninstaller_icon.ico"
-
-#Define uninstall list name
-!define UninstName "uninbf00"
-
-# Request rights user level
-RequestExecutionLevel highest
-
-# define the resulting installer's name:
-OutFile "..\..\${DEST_FOLDER}\${FILE_NAME_INSTALLER}"
-
-# app dialogs
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE ${LICENSE}
-!insertmacro MUI_PAGE_DIRECTORY
-!insertmacro MUI_PAGE_INSTFILES
-
-!define MUI_FINISHPAGE_RUN "$INSTDIR\${FILE_NAME_EXECUTABLE}"
-
-!insertmacro MUI_PAGE_FINISH
-!insertmacro MUI_LANGUAGE "English"
-!insertmacro MUI_LANGUAGE "Catalan"
-!insertmacro MUI_LANGUAGE "Croatian"
-!insertmacro MUI_LANGUAGE "French"
-!insertmacro MUI_LANGUAGE "Galician"
-!insertmacro MUI_LANGUAGE "German"
-!insertmacro MUI_LANGUAGE "Indonesian"
-!insertmacro MUI_LANGUAGE "Italian"
-!insertmacro MUI_LANGUAGE "Japanese"
-!insertmacro MUI_LANGUAGE "Korean"
-!insertmacro MUI_LANGUAGE "Latvian"
-!insertmacro MUI_LANGUAGE "Portuguese"
-!insertmacro MUI_LANGUAGE "Russian"
-!insertmacro MUI_LANGUAGE "SimpChinese"
-!insertmacro MUI_LANGUAGE "Spanish"
-!insertmacro MUI_LANGUAGE "Swedish"
-
-# detect default install folder
-Function .onInit
-
- # Check if older version
- ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "InstallLocation"
-
- ${If} $R0 != ""
- StrCpy $INSTDIR $R0
- ${Else}
-
- # Check if older version without administrative rights
- ReadRegStr $R1 HKCU "Software\${GROUP_NAME}\${APP_NAME}" \
- "InstallLocation"
-
- ${If} $R1 != ""
- StrCpy $INSTDIR $R1
- ${Else}
-
- # New version, select default folder
- UserInfo::GetAccountType
- Pop $R2
-
- ${If} $R2 == "Admin"
- # set the default installation directory
- !if ${PLATFORM} == 'win64'
- StrCpy $INSTDIR "$PROGRAMFILES64\${GROUP_NAME}\${FOLDER_NAME}\"
- !else
- StrCpy $INSTDIR "$PROGRAMFILES\${GROUP_NAME}\${FOLDER_NAME}\"
- !endif
- ${Else}
- StrCpy $INSTDIR "$DOCUMENTS\${GROUP_NAME}\${FOLDER_NAME}\"
- ${Endif}
- ${Endif}
- ${Endif}
-
-FunctionEnd
-
-# default section start
-Section
-
- # remove the older version, users with admin rights
- ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "InstallLocation"
-
- ${If} $R3 != ""
- # delete the installed files of the older version
- !insertmacro INST_DELETE $R3 "${UninstName}"
-
- # remove installation folder if empty
- RMDir "$R3"
-
- ${Else}
- # remove the older version, users without admin rights
- ReadRegStr $R4 HKCU "Software\${GROUP_NAME}\${APP_NAME}" \
- "InstallLocation"
-
- ${If} $R4 != ""
- # delete the installed files of the older version
- !insertmacro INST_DELETE $R4 "${UninstName}"
-
- # remove installation folder if empty
- RMDir "$R4"
-
- ${EndIf}
- ${EndIf}
-
- # the english shortcut is not installed in actual versions, remove the deletion in a future release
- Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME} (English).lnk"
-
- # if the registry entries did not exist, we ignore the errors
- ClearErrors
-
- # define the path to which the installer should install
- SetOutPath $INSTDIR
-
- # create an exclusion list for the uninstaller
- !insertmacro UNINSTALLER_DATA_BEGIN
-
- # specify the files to go in the output path
- File /r ${SOURCE_FILES}
-
- # create the uninstaller
- WriteUninstaller "$INSTDIR\${FILE_NAME_UNINSTALLER}"
-
- # store uninstaller data
- !insertmacro UNINSTALLER_DATA_END
-
- # create shortcuts in the start menu and on the desktop
- CreateDirectory "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}"
- CreateShortCut "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME}.lnk" "$INSTDIR\${FILE_NAME_EXECUTABLE}" "" "$INSTDIR\images\bf_icon.ico" "0" "" "" ""
- CreateShortCut "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\Uninstall ${APP_NAME}.lnk" "$INSTDIR\${FILE_NAME_UNINSTALLER}"
- CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${FILE_NAME_EXECUTABLE}" "" "$INSTDIR\images\bf_icon.ico" "0" "" "" ""
-
- # include in add/remove programs
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "Publisher" "${COMPANY_NAME}"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "DisplayName" "${APP_NAME}"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "DisplayIcon" "$\"$INSTDIR\${FILE_NAME_EXECUTABLE}$\""
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "UninstallString" "$\"$INSTDIR\${FILE_NAME_UNINSTALLER}$\""
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "InstallLocation" "$INSTDIR"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "DisplayVersion" "${VERSION}"
-
- # include for users without admin rights
- WriteRegStr HKCU "Software\${GROUP_NAME}\${APP_NAME}" \
- "InstallLocation" "$INSTDIR"
-
- # estimate the size
- ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
- IntFmt $0 "0x%08X" $0
- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
- "EstimatedSize" "$0"
-
-
-SectionEnd
-
-# create a section to define what the uninstaller does
-Section "Uninstall"
-
- # terminate uninstaller if the .dat file does not exist
- !define UNINST_TERMINATE
-
- # delete files
- !insertmacro UNINST_DELETE "$INSTDIR" "${UninstName}"
-
- # remove installation folder if it is empty
- RMDir "$INSTDIR"
-
- # delete the shortcuts
- # the english shortcut is not installed in actual versions, remove the deletion in a future release
- Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME}.lnk"
- Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME} (English).lnk"
- Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\Uninstall ${APP_NAME}.lnk"
- RMDir "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}"
- RMDir "$SMPROGRAMS\${GROUP_NAME}"
- Delete "$DESKTOP\${APP_NAME}.lnk"
-
- # remove from registry
- DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"
- DeleteRegKey HKCU "Software\${GROUP_NAME}\${APP_NAME}"
- DeleteRegKey /ifempty HKCU "Software\${GROUP_NAME}"
-
-SectionEnd
+!include "MUI2.nsh"
+!include "FileFunc.nsh"
+!include "LogicLib.nsh"
+!include "UnInst.nsh"
+
+# Receives variables from the command line
+# ${VERSION} - Version to generate (x.y.z)
+# ${PLATFORM} - Platform to generate (win32 or win64)
+# ${DEST_FOLDER} - Destination folder for the installer files
+
+# Some definitions
+!define SOURCE_FILES "..\..\apps\betaflight-configurator\${PLATFORM}\*"
+!define APP_NAME "Betaflight Configurator"
+!define COMPANY_NAME "The Betaflight open source project."
+!define GROUP_NAME "Betaflight"
+!define FOLDER_NAME "Betaflight-Configurator"
+!define FILE_NAME_INSTALLER "betaflight-configurator-installer_${VERSION}_${PLATFORM}.exe"
+!define FILE_NAME_UNINSTALLER "uninstall-betaflight-configurator.exe"
+!define FILE_NAME_EXECUTABLE "betaflight-configurator.exe"
+!define LICENSE "..\..\LICENSE"
+!define MUI_WELCOMEFINISHPAGE_BITMAP ".\bf_installer.bmp"
+
+
+Name "${APP_NAME}"
+BrandingText "${COMPANY_NAME}"
+
+# set the icon
+!define MUI_ICON ".\bf_installer_icon.ico"
+!define MUI_UNICON ".\bf_uninstaller_icon.ico"
+
+#Define uninstall list name
+!define UninstName "uninbf00"
+
+# Request rights user level
+RequestExecutionLevel highest
+
+# define the resulting installer's name:
+OutFile "..\..\${DEST_FOLDER}\${FILE_NAME_INSTALLER}"
+
+# app dialogs
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE ${LICENSE}
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+
+!define MUI_FINISHPAGE_RUN "$INSTDIR\${FILE_NAME_EXECUTABLE}"
+
+!insertmacro MUI_PAGE_FINISH
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "Catalan"
+!insertmacro MUI_LANGUAGE "Croatian"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "Galician"
+!insertmacro MUI_LANGUAGE "German"
+!insertmacro MUI_LANGUAGE "Indonesian"
+!insertmacro MUI_LANGUAGE "Italian"
+!insertmacro MUI_LANGUAGE "Japanese"
+!insertmacro MUI_LANGUAGE "Korean"
+!insertmacro MUI_LANGUAGE "Latvian"
+!insertmacro MUI_LANGUAGE "Portuguese"
+!insertmacro MUI_LANGUAGE "Russian"
+!insertmacro MUI_LANGUAGE "SimpChinese"
+!insertmacro MUI_LANGUAGE "Spanish"
+!insertmacro MUI_LANGUAGE "Swedish"
+
+# detect default install folder
+Function .onInit
+
+ # Check if older version
+ ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "InstallLocation"
+
+ ${If} $R0 != ""
+ StrCpy $INSTDIR $R0
+ ${Else}
+
+ # Check if older version without administrative rights
+ ReadRegStr $R1 HKCU "Software\${GROUP_NAME}\${APP_NAME}" \
+ "InstallLocation"
+
+ ${If} $R1 != ""
+ StrCpy $INSTDIR $R1
+ ${Else}
+
+ # New version, select default folder
+ UserInfo::GetAccountType
+ Pop $R2
+
+ ${If} $R2 == "Admin"
+ # set the default installation directory
+ !if ${PLATFORM} == 'win64'
+ StrCpy $INSTDIR "$PROGRAMFILES64\${GROUP_NAME}\${FOLDER_NAME}\"
+ !else
+ StrCpy $INSTDIR "$PROGRAMFILES\${GROUP_NAME}\${FOLDER_NAME}\"
+ !endif
+ ${Else}
+ StrCpy $INSTDIR "$DOCUMENTS\${GROUP_NAME}\${FOLDER_NAME}\"
+ ${Endif}
+ ${Endif}
+ ${Endif}
+
+FunctionEnd
+
+# default section start
+Section
+
+ # remove the older version, users with admin rights
+ ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "InstallLocation"
+
+ ${If} $R3 != ""
+ # delete the installed files of the older version
+ !insertmacro INST_DELETE $R3 "${UninstName}"
+
+ # remove installation folder if empty
+ RMDir "$R3"
+
+ ${Else}
+ # remove the older version, users without admin rights
+ ReadRegStr $R4 HKCU "Software\${GROUP_NAME}\${APP_NAME}" \
+ "InstallLocation"
+
+ ${If} $R4 != ""
+ # delete the installed files of the older version
+ !insertmacro INST_DELETE $R4 "${UninstName}"
+
+ # remove installation folder if empty
+ RMDir "$R4"
+
+ ${EndIf}
+ ${EndIf}
+
+ # the english shortcut is not installed in actual versions, remove the deletion in a future release
+ Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME} (English).lnk"
+
+ # if the registry entries did not exist, we ignore the errors
+ ClearErrors
+
+ # define the path to which the installer should install
+ SetOutPath $INSTDIR
+
+ # create an exclusion list for the uninstaller
+ !insertmacro UNINSTALLER_DATA_BEGIN
+
+ # specify the files to go in the output path
+ File /r ${SOURCE_FILES}
+
+ # create the uninstaller
+ WriteUninstaller "$INSTDIR\${FILE_NAME_UNINSTALLER}"
+
+ # store uninstaller data
+ !insertmacro UNINSTALLER_DATA_END
+
+ # create shortcuts in the start menu and on the desktop
+ CreateDirectory "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}"
+ CreateShortCut "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME}.lnk" "$INSTDIR\${FILE_NAME_EXECUTABLE}" "" "$INSTDIR\images\bf_icon.ico" "0" "" "" ""
+ CreateShortCut "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\Uninstall ${APP_NAME}.lnk" "$INSTDIR\${FILE_NAME_UNINSTALLER}"
+ CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${FILE_NAME_EXECUTABLE}" "" "$INSTDIR\images\bf_icon.ico" "0" "" "" ""
+
+ # include in add/remove programs
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "Publisher" "${COMPANY_NAME}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "DisplayName" "${APP_NAME}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "DisplayIcon" "$\"$INSTDIR\${FILE_NAME_EXECUTABLE}$\""
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "UninstallString" "$\"$INSTDIR\${FILE_NAME_UNINSTALLER}$\""
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "InstallLocation" "$INSTDIR"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "DisplayVersion" "${VERSION}"
+
+ # include for users without admin rights
+ WriteRegStr HKCU "Software\${GROUP_NAME}\${APP_NAME}" \
+ "InstallLocation" "$INSTDIR"
+
+ # estimate the size
+ ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+ IntFmt $0 "0x%08X" $0
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" \
+ "EstimatedSize" "$0"
+
+
+SectionEnd
+
+# create a section to define what the uninstaller does
+Section "Uninstall"
+
+ # terminate uninstaller if the .dat file does not exist
+ !define UNINST_TERMINATE
+
+ # delete files
+ !insertmacro UNINST_DELETE "$INSTDIR" "${UninstName}"
+
+ # remove installation folder if it is empty
+ RMDir "$INSTDIR"
+
+ # delete the shortcuts
+ # the english shortcut is not installed in actual versions, remove the deletion in a future release
+ Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME}.lnk"
+ Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\${APP_NAME} (English).lnk"
+ Delete "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}\Uninstall ${APP_NAME}.lnk"
+ RMDir "$SMPROGRAMS\${GROUP_NAME}\${FOLDER_NAME}"
+ RMDir "$SMPROGRAMS\${GROUP_NAME}"
+ Delete "$DESKTOP\${APP_NAME}.lnk"
+
+ # remove from registry
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"
+ DeleteRegKey HKCU "Software\${GROUP_NAME}\${APP_NAME}"
+ DeleteRegKey /ifempty HKCU "Software\${GROUP_NAME}"
+
+SectionEnd
diff --git a/src/images/CF_settings_black.svg b/src/images/CF_settings_black.svg
index 8b7f92915c..aee0eb9e96 100644
--- a/src/images/CF_settings_black.svg
+++ b/src/images/CF_settings_black.svg
@@ -1,24 +1,24 @@
-
-
-
+
+
+
diff --git a/src/images/CF_settings_white.svg b/src/images/CF_settings_white.svg
index 58d66d1ddf..97afaab4d0 100644
--- a/src/images/CF_settings_white.svg
+++ b/src/images/CF_settings_white.svg
@@ -1,22 +1,22 @@
-
-
-
+
+
+
diff --git a/src/images/arrow.svg b/src/images/arrow.svg
index 12b193a5f2..f945f986db 100644
--- a/src/images/arrow.svg
+++ b/src/images/arrow.svg
@@ -1,19 +1,19 @@
-
-
-
+
+
+
diff --git a/src/images/cf_logo_white.svg b/src/images/cf_logo_white.svg
index 7c71cf3f0b..0935affffa 100644
--- a/src/images/cf_logo_white.svg
+++ b/src/images/cf_logo_white.svg
@@ -1,47 +1,47 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure1-dark.svg b/src/images/icons/cf_failsafe_procedure1-dark.svg
index 28ec922c3d..165aac7d1d 100644
--- a/src/images/icons/cf_failsafe_procedure1-dark.svg
+++ b/src/images/icons/cf_failsafe_procedure1-dark.svg
@@ -1,49 +1,49 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure1.svg b/src/images/icons/cf_failsafe_procedure1.svg
index ecf3c98c79..c08da3c841 100644
--- a/src/images/icons/cf_failsafe_procedure1.svg
+++ b/src/images/icons/cf_failsafe_procedure1.svg
@@ -1,49 +1,49 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure2-dark.svg b/src/images/icons/cf_failsafe_procedure2-dark.svg
index 5e028567a2..e8b71fe4a9 100644
--- a/src/images/icons/cf_failsafe_procedure2-dark.svg
+++ b/src/images/icons/cf_failsafe_procedure2-dark.svg
@@ -1,53 +1,53 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure2.svg b/src/images/icons/cf_failsafe_procedure2.svg
index be3e553e67..5fdb05acee 100644
--- a/src/images/icons/cf_failsafe_procedure2.svg
+++ b/src/images/icons/cf_failsafe_procedure2.svg
@@ -1,54 +1,54 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure3.svg b/src/images/icons/cf_failsafe_procedure3.svg
index 5472a8ecde..8b931ec763 100644
--- a/src/images/icons/cf_failsafe_procedure3.svg
+++ b/src/images/icons/cf_failsafe_procedure3.svg
@@ -1,56 +1,56 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure4-dark.svg b/src/images/icons/cf_failsafe_procedure4-dark.svg
index dc34276c71..f3f6b2c44e 100644
--- a/src/images/icons/cf_failsafe_procedure4-dark.svg
+++ b/src/images/icons/cf_failsafe_procedure4-dark.svg
@@ -1,78 +1,78 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_failsafe_procedure4.svg b/src/images/icons/cf_failsafe_procedure4.svg
index 4555c45aae..d4af1e9a80 100644
--- a/src/images/icons/cf_failsafe_procedure4.svg
+++ b/src/images/icons/cf_failsafe_procedure4.svg
@@ -1,78 +1,78 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_adjust_grey.svg b/src/images/icons/cf_icon_adjust_grey.svg
index eed1419427..8de19cc9b9 100644
--- a/src/images/icons/cf_icon_adjust_grey.svg
+++ b/src/images/icons/cf_icon_adjust_grey.svg
@@ -1,13 +1,13 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_adjust_white.svg b/src/images/icons/cf_icon_adjust_white.svg
index d3c00f07fa..55df0f446c 100644
--- a/src/images/icons/cf_icon_adjust_white.svg
+++ b/src/images/icons/cf_icon_adjust_white.svg
@@ -1,13 +1,13 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_advanced_grey.svg b/src/images/icons/cf_icon_advanced_grey.svg
index d092b60388..d24fd50954 100644
--- a/src/images/icons/cf_icon_advanced_grey.svg
+++ b/src/images/icons/cf_icon_advanced_grey.svg
@@ -1,14 +1,14 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_advanced_white.svg b/src/images/icons/cf_icon_advanced_white.svg
index 3674e41a40..18618c6ea2 100644
--- a/src/images/icons/cf_icon_advanced_white.svg
+++ b/src/images/icons/cf_icon_advanced_white.svg
@@ -1,14 +1,14 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_armed_active.svg b/src/images/icons/cf_icon_armed_active.svg
index b76fab7ec0..6d2d96c7fe 100644
--- a/src/images/icons/cf_icon_armed_active.svg
+++ b/src/images/icons/cf_icon_armed_active.svg
@@ -1,16 +1,16 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_armed_grey.svg b/src/images/icons/cf_icon_armed_grey.svg
index 7ae1904a82..0f99805482 100644
--- a/src/images/icons/cf_icon_armed_grey.svg
+++ b/src/images/icons/cf_icon_armed_grey.svg
@@ -1,16 +1,16 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_backup_grey.svg b/src/images/icons/cf_icon_backup_grey.svg
index ca1a977188..238b81a874 100644
--- a/src/images/icons/cf_icon_backup_grey.svg
+++ b/src/images/icons/cf_icon_backup_grey.svg
@@ -1,12 +1,12 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_backup_white.svg b/src/images/icons/cf_icon_backup_white.svg
index 7c97157a91..0bd189cb1d 100644
--- a/src/images/icons/cf_icon_backup_white.svg
+++ b/src/images/icons/cf_icon_backup_white.svg
@@ -1,12 +1,12 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_bat_grey.svg b/src/images/icons/cf_icon_bat_grey.svg
index bbde282020..b6fa3d4a6a 100644
--- a/src/images/icons/cf_icon_bat_grey.svg
+++ b/src/images/icons/cf_icon_bat_grey.svg
@@ -1,14 +1,14 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_cli_grey.svg b/src/images/icons/cf_icon_cli_grey.svg
index 879a3f65e3..c103aa40f8 100644
--- a/src/images/icons/cf_icon_cli_grey.svg
+++ b/src/images/icons/cf_icon_cli_grey.svg
@@ -1,17 +1,17 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_cli_white.svg b/src/images/icons/cf_icon_cli_white.svg
index 5625f4ca3f..f396afdf7b 100644
--- a/src/images/icons/cf_icon_cli_white.svg
+++ b/src/images/icons/cf_icon_cli_white.svg
@@ -1,17 +1,17 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_config_grey.svg b/src/images/icons/cf_icon_config_grey.svg
index d00c844e12..7a7ef03095 100644
--- a/src/images/icons/cf_icon_config_grey.svg
+++ b/src/images/icons/cf_icon_config_grey.svg
@@ -1,17 +1,17 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_config_white.svg b/src/images/icons/cf_icon_config_white.svg
index cfd9b961dc..896abf5081 100644
--- a/src/images/icons/cf_icon_config_white.svg
+++ b/src/images/icons/cf_icon_config_white.svg
@@ -1,17 +1,17 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_data_grey.svg b/src/images/icons/cf_icon_data_grey.svg
index 59107c129e..7d35512bcd 100644
--- a/src/images/icons/cf_icon_data_grey.svg
+++ b/src/images/icons/cf_icon_data_grey.svg
@@ -1,23 +1,23 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_data_white.svg b/src/images/icons/cf_icon_data_white.svg
index b4ff7f1a74..489070b944 100644
--- a/src/images/icons/cf_icon_data_white.svg
+++ b/src/images/icons/cf_icon_data_white.svg
@@ -1,23 +1,23 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_failsafe_active.svg b/src/images/icons/cf_icon_failsafe_active.svg
index e3ecd36951..60a497fb82 100644
--- a/src/images/icons/cf_icon_failsafe_active.svg
+++ b/src/images/icons/cf_icon_failsafe_active.svg
@@ -1,14 +1,14 @@
-
-
-
+
+
+
diff --git a/src/images/icons/cf_icon_failsafe_grey.svg b/src/images/icons/cf_icon_failsafe_grey.svg
index 70dbbc4945..1e3a33cae6 100644
--- a/src/images/icons/cf_icon_failsafe_grey.svg
+++ b/src/images/icons/cf_icon_failsafe_grey.svg
@@ -1,15 +1,15 @@
-
-
-