mirror of
https://github.com/MultiMC/MultiMC5.git
synced 2025-01-27 06:35:17 +00:00
NOISSUE embed branding again
Doing the whole 'secrets' thing by trying to hide MSA client ID was honestly crazy. To everyone who tried to work on the code and couldn't use their own development build, I am sorry.
This commit is contained in:
parent
40d918e5a4
commit
80c3eb7d99
@ -88,33 +88,6 @@ set(Launcher_UPDATER_BASE "" CACHE STRING "Base URL for the updater.")
|
||||
# Notification URL
|
||||
set(Launcher_NOTIFICATION_URL "" CACHE STRING "URL for checking for notifications.")
|
||||
|
||||
# The metadata server
|
||||
set(Launcher_META_URL "https://meta.multimc.org/v1/" CACHE STRING "URL to fetch Launcher's meta files from.")
|
||||
|
||||
# paste.ee API key
|
||||
set(Launcher_PASTE_EE_API_KEY "utLvciUouSURFzfjPxLBf5W4ISsUX4pwBDF7N1AfZ" CACHE STRING "API key you can get from paste.ee when you register an account")
|
||||
|
||||
# Imgur API Client ID
|
||||
set(Launcher_IMGUR_CLIENT_ID "5b97b0713fba4a3" CACHE STRING "Client ID you can get from Imgur when you register an application")
|
||||
|
||||
# Google analytics ID
|
||||
set(Launcher_ANALYTICS_ID "UA-87731965-2" CACHE STRING "ID you can get from Google analytics")
|
||||
|
||||
# Bug tracker URL
|
||||
set(Launcher_BUG_TRACKER_URL "https://github.com/MultiMC/Launcher/issues" CACHE STRING "URL for the bug tracker.")
|
||||
|
||||
# Discord URL
|
||||
set(Launcher_DISCORD_URL "https://discord.gg/multimc" CACHE STRING "URL for the Discord guild.")
|
||||
|
||||
# Subreddit URL
|
||||
set(Launcher_SUBREDDIT_URL "https://www.reddit.com/r/MultiMC/" CACHE STRING "URL for the subreddit.")
|
||||
|
||||
# Patreon URL
|
||||
set(Launcher_PATREON_URL "https://www.patreon.com/multimc" CACHE STRING "URL for the patreon.")
|
||||
|
||||
# Use the secrets library or a public stub?
|
||||
option(Launcher_EMBED_SECRETS "Determines whether to embed secrets. Secrets are separate and non-public." OFF)
|
||||
|
||||
#### Check the current Git commit and branch
|
||||
include(GetGitRevisionDescription)
|
||||
get_git_head_revision(Launcher_GIT_REFSPEC Launcher_GIT_COMMIT)
|
||||
@ -151,13 +124,31 @@ if (Qt5_POSITION_INDEPENDENT_CODE)
|
||||
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
####################################### Secrets #######################################
|
||||
####################################### Branding #######################################
|
||||
|
||||
if(Launcher_EMBED_SECRETS)
|
||||
add_subdirectory(secrets)
|
||||
else()
|
||||
add_subdirectory(notsecrets)
|
||||
endif()
|
||||
set(Launcher_CommonName "MultiMC")
|
||||
|
||||
set(Launcher_Copyright "MultiMC Contributors")
|
||||
set(Launcher_Domain "multimc.org")
|
||||
set(Launcher_Name "${Launcher_CommonName}")
|
||||
set(Launcher_DisplayName "${Launcher_CommonName} 5")
|
||||
set(Launcher_UserAgent "${Launcher_CommonName}/5.0")
|
||||
set(Launcher_ConfigFile "multimc.cfg")
|
||||
set(Launcher_Git "https://github.com/MultiMC/Launcher")
|
||||
|
||||
set(Launcher_Branding_ICNS "${PROJECT_SOURCE_DIR}/branding/${Launcher_CommonName}.icns")
|
||||
set(Launcher_Branding_WindowsRC "${PROJECT_SOURCE_DIR}/branding/multimc.rc")
|
||||
set(Launcher_Branding_LogoQRC "${PROJECT_SOURCE_DIR}/branding/logo.qrc")
|
||||
|
||||
set(Launcher_META_URL "https://meta.multimc.org/v1/")
|
||||
set(Launcher_PASTE_EE_API_KEY "utLvciUouSURFzfjPxLBf5W4ISsUX4pwBDF7N1AfZ")
|
||||
set(Launcher_MSA_CLIENT_ID "499546d9-bbfe-4b9b-a086-eb3d75afb78f")
|
||||
set(Launcher_IMGUR_CLIENT_ID "5b97b0713fba4a3")
|
||||
set(Launcher_ANALYTICS_ID "UA-87731965-2")
|
||||
set(Launcher_BUG_TRACKER_URL "https://github.com/MultiMC/Launcher/issues")
|
||||
set(Launcher_DISCORD_URL "https://discord.gg/multimc")
|
||||
set(Launcher_SUBREDDIT_URL "https://www.reddit.com/r/MultiMC/")
|
||||
set(Launcher_PATREON_URL "https://www.patreon.com/multimc")
|
||||
|
||||
####################################### Install layout #######################################
|
||||
|
||||
@ -199,7 +190,7 @@ if(Launcher_LAYOUT_REAL STREQUAL "mac-bundle")
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_HOTFIX}.${Launcher_VERSION_BUILD}")
|
||||
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_HOTFIX}.${Launcher_VERSION_BUILD}")
|
||||
set(MACOSX_BUNDLE_ICON_FILE ${Launcher_Name}.icns)
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2015-2023 ${Launcher_Copyright}")
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2015-2024 ${Launcher_Copyright}")
|
||||
|
||||
# directories to look for dependencies
|
||||
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
|
@ -45,6 +45,7 @@ Config::Config()
|
||||
NEWS_URL = "@Launcher_NEWS_URL@";
|
||||
NEWS_RSS_URL = "@Launcher_NEWS_RSS_URL@";
|
||||
PASTE_EE_KEY = "@Launcher_PASTE_EE_API_KEY@";
|
||||
MSA_CLIENT_ID = "@Launcher_MSA_CLIENT_ID@";
|
||||
IMGUR_CLIENT_ID = "@Launcher_IMGUR_CLIENT_ID@";
|
||||
META_URL = "@Launcher_META_URL@";
|
||||
|
||||
|
@ -81,6 +81,12 @@ public:
|
||||
*/
|
||||
QString PASTE_EE_KEY;
|
||||
|
||||
/**
|
||||
* API key from registering an application in Microsoft Azure
|
||||
* See: https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
|
||||
*/
|
||||
QString MSA_CLIENT_ID;
|
||||
|
||||
/**
|
||||
* Client ID you can get from Imgur when you register an application
|
||||
*/
|
||||
|
@ -76,9 +76,6 @@
|
||||
#include <ganalytics.h>
|
||||
#include <sys.h>
|
||||
|
||||
#include <Secrets.h>
|
||||
|
||||
|
||||
#if defined Q_OS_WIN32
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
@ -1648,7 +1645,7 @@ void Application::on_windowClose()
|
||||
}
|
||||
|
||||
QString Application::msaClientId() const {
|
||||
return Secrets::getMSAClientID('-');
|
||||
return BuildConfig.MSA_CLIENT_ID;
|
||||
}
|
||||
|
||||
void Application::updateProxySettings(QString proxyTypeStr, QString addr, int port, QString user, QString password)
|
||||
|
@ -598,7 +598,7 @@ SET(LAUNCHER_SOURCES
|
||||
resources/iOS/iOS.qrc
|
||||
resources/flat/flat.qrc
|
||||
resources/documents/documents.qrc
|
||||
../${Launcher_Branding_LogoQRC}
|
||||
${Launcher_Branding_LogoQRC}
|
||||
|
||||
# Icons
|
||||
icons/MMCIcon.h
|
||||
@ -902,7 +902,7 @@ qt5_add_resources(LAUNCHER_RESOURCES
|
||||
resources/iOS/iOS.qrc
|
||||
resources/flat/flat.qrc
|
||||
resources/documents/documents.qrc
|
||||
../${Launcher_Branding_LogoQRC}
|
||||
${Launcher_Branding_LogoQRC}
|
||||
)
|
||||
|
||||
######## Windows resource files ########
|
||||
@ -939,8 +939,6 @@ target_link_libraries(Launcher_logic
|
||||
ganalytics
|
||||
)
|
||||
|
||||
target_link_libraries(Launcher_logic secrets)
|
||||
|
||||
add_executable(${Launcher_Name} MACOSX_BUNDLE WIN32 main.cpp ${LAUNCHER_RCS})
|
||||
target_link_libraries(${Launcher_Name} Launcher_logic)
|
||||
|
||||
|
@ -37,8 +37,6 @@
|
||||
|
||||
#include "BuildConfig.h"
|
||||
|
||||
#include "Secrets.h"
|
||||
|
||||
AccountListPage::AccountListPage(QWidget *parent)
|
||||
: QMainWindow(parent), ui(new Ui::AccountListPage)
|
||||
{
|
||||
@ -74,7 +72,7 @@ AccountListPage::AccountListPage(QWidget *parent)
|
||||
updateButtonStates();
|
||||
|
||||
// Xbox authentication won't work without a client identifier, so disable the button if it is missing
|
||||
ui->actionAddMicrosoft->setVisible(Secrets::hasMSAClientID());
|
||||
ui->actionAddMicrosoft->setVisible(!BuildConfig.MSA_CLIENT_ID.isEmpty());
|
||||
}
|
||||
|
||||
AccountListPage::~AccountListPage()
|
||||
@ -111,22 +109,6 @@ void AccountListPage::listChanged()
|
||||
updateButtonStates();
|
||||
}
|
||||
|
||||
void AccountListPage::on_actionAddMojang_triggered()
|
||||
{
|
||||
MinecraftAccountPtr account = LoginDialog::newAccount(
|
||||
this,
|
||||
tr("Please enter your Mojang account email and password to add your account.")
|
||||
);
|
||||
|
||||
if (account)
|
||||
{
|
||||
m_accounts->addAccount(account);
|
||||
if (m_accounts->count() == 1) {
|
||||
m_accounts->setDefaultAccount(account);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AccountListPage::on_actionAddMicrosoft_triggered()
|
||||
{
|
||||
if(BuildConfig.BUILD_PLATFORM == "osx64") {
|
||||
|
@ -60,7 +60,6 @@ public:
|
||||
}
|
||||
|
||||
public slots:
|
||||
void on_actionAddMojang_triggered();
|
||||
void on_actionAddMicrosoft_triggered();
|
||||
void on_actionRemove_triggered();
|
||||
void on_actionRefresh_triggered();
|
||||
|
@ -53,7 +53,6 @@
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<addaction name="actionAddMicrosoft"/>
|
||||
<addaction name="actionAddMojang"/>
|
||||
<addaction name="actionRefresh"/>
|
||||
<addaction name="actionRemove"/>
|
||||
<addaction name="actionSetDefault"/>
|
||||
@ -62,11 +61,6 @@
|
||||
<addaction name="actionUploadSkin"/>
|
||||
<addaction name="actionDeleteSkin"/>
|
||||
</widget>
|
||||
<action name="actionAddMojang">
|
||||
<property name="text">
|
||||
<string>Add Mojang</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRemove">
|
||||
<property name="text">
|
||||
<string>Remove</string>
|
||||
|
@ -1,18 +0,0 @@
|
||||
add_library(secrets STATIC Secrets.cpp Secrets.h)
|
||||
target_link_libraries(secrets Qt5::Core)
|
||||
target_compile_definitions(secrets PUBLIC -DEMBED_SECRETS)
|
||||
target_include_directories(secrets PUBLIC .)
|
||||
|
||||
set(Launcher_CommonName "DevLauncher")
|
||||
|
||||
set(Launcher_Copyright "MultiMC Contributors" PARENT_SCOPE)
|
||||
set(Launcher_Domain "multimc.org" PARENT_SCOPE)
|
||||
set(Launcher_Name "${Launcher_CommonName}" PARENT_SCOPE)
|
||||
set(Launcher_DisplayName "${Launcher_CommonName} 5" PARENT_SCOPE)
|
||||
set(Launcher_UserAgent "${Launcher_CommonName}/5.0" PARENT_SCOPE)
|
||||
set(Launcher_ConfigFile "devlauncher.cfg" PARENT_SCOPE)
|
||||
set(Launcher_Git "https://github.com/MultiMC/Launcher" PARENT_SCOPE)
|
||||
|
||||
set(Launcher_Branding_ICNS "notsecrets/Launcher.icns" PARENT_SCOPE)
|
||||
set(Launcher_Branding_WindowsRC "notsecrets/launcher.rc" PARENT_SCOPE)
|
||||
set(Launcher_Branding_LogoQRC "notsecrets/logo.qrc" PARENT_SCOPE)
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 100 KiB |
@ -1,31 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<assemblyIdentity name="MultiMC.Application.5" type="win32" version="5.0.0.0" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<description>Custom Minecraft launcher for managing multiple installs.</description>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!--The ID below indicates app support for Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<!--The ID below indicates app support for Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<!--The ID below indicates app support for Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<!--The ID below indicates app support for Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<!--The ID below indicates app support for Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
@ -1,25 +0,0 @@
|
||||
# DevLauncher (Not) Secrets
|
||||
|
||||
This is a dummy implementation of MultiMC's _Secrets_ library, used to store private information needed for:
|
||||
- Application name and logo (and branding in general)
|
||||
- Various URLs and API endpoints
|
||||
- Your Microsoft Identity Platform client ID. **This is required to use Microsoft accounts to play!**
|
||||
- If omitted, adding Microsoft accounts will be completely disabled.
|
||||
|
||||
## MultiMC development
|
||||
|
||||
In its current state, the `notsecrets` library is suitable for MultiMC code contributions (the code builds as `DevLauncher`).
|
||||
|
||||
All you have to do is add the Microsoft client ID. See `Secrets.cpp` for details.
|
||||
|
||||
## Forking
|
||||
|
||||
Forks of this project that intend to distribute binaries to users should use their own implementation of this library that does not impersonate MultiMC in any way (see the Apache 2.0 license, common sense and trademark law).
|
||||
|
||||
A fork is a serious business, especially if you intend to distribute binaries to users. This is because you need to agree to the Microsoft identity platform Terms of Use:
|
||||
|
||||
https://docs.microsoft.com/en-us/legal/microsoft-identity-platform/terms-of-use
|
||||
|
||||
If you truly want to accept such an agreement, a starting point is to copy `notsecrets` to `secrets`, enable the `Launcher_EMBED_SECRETS` CMake option and customize the files.
|
||||
|
||||
We do not want confused users asking for help with your fork in MultiMC Discord or similar locations.
|
@ -1,42 +0,0 @@
|
||||
#include "Secrets.h"
|
||||
|
||||
#include <array>
|
||||
#include <cstdio>
|
||||
|
||||
namespace {
|
||||
|
||||
/*
|
||||
* This is the MSA client ID. It is confidential and should not be reused.
|
||||
* You can obtain one for yourself by using azure app registration:
|
||||
* https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app
|
||||
*
|
||||
* The app registration should:
|
||||
* - Be only for personal accounts.
|
||||
* - Not have any redirect URI.
|
||||
* - Not have any platform.
|
||||
* - Have no credentials.
|
||||
* - No certificates.
|
||||
* - No client secrets.
|
||||
* - Enable 'Live SDK support' for access to XBox APIs.
|
||||
* - Enable 'public client flows' for OAuth2 device flow.
|
||||
*
|
||||
* By putting one in here, you accept the terms and conditions for using the MS Identity Plaform and assume all responsibilities associated with it.
|
||||
* See: https://docs.microsoft.com/en-us/legal/microsoft-identity-platform/terms-of-use
|
||||
*
|
||||
* Above all else, do not impersonate other applications! This includes the Mojang Launcher and MultiMC - your builds are *NOT* MultiMC.
|
||||
*
|
||||
* If you intend to base your own launcher on this code, take care and customize this to obfuscate the client ID, so it cannot be trivially found by casual attackers.
|
||||
*/
|
||||
|
||||
QString MSAClientID = "";
|
||||
}
|
||||
|
||||
namespace Secrets {
|
||||
bool hasMSAClientID() {
|
||||
return !MSAClientID.isEmpty();
|
||||
}
|
||||
|
||||
QString getMSAClientID(uint8_t separator) {
|
||||
return MSAClientID;
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#pragma once
|
||||
#include <QString>
|
||||
#include <cstdint>
|
||||
|
||||
namespace Secrets {
|
||||
bool hasMSAClientID();
|
||||
QString getMSAClientID(uint8_t separator);
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
#/bin/bash
|
||||
|
||||
inkscape -w 16 -h 16 -o logo_16.png logo.svg
|
||||
inkscape -w 24 -h 24 -o logo_24.png logo.svg
|
||||
inkscape -w 32 -h 32 -o logo_32.png logo.svg
|
||||
inkscape -w 48 -h 48 -o logo_48.png logo.svg
|
||||
inkscape -w 64 -h 64 -o logo_64.png logo.svg
|
||||
inkscape -w 128 -h 128 -o logo_128.png logo.svg
|
||||
|
||||
convert logo_128.png logo_64.png logo_48.png logo_32.png logo_24.png logo_16.png Launcher.ico
|
||||
|
||||
inkscape -w 256 -h 256 -o logo_256.png logo.svg
|
||||
inkscape -w 512 -h 512 -o logo_512.png logo.svg
|
||||
inkscape -w 1024 -h 1024 -o logo_1024.png logo.svg
|
||||
|
||||
png2icns Launcher.icns logo_1024.png logo_512.png logo_256.png logo_128.png logo_32.png logo_16.png
|
||||
|
||||
rm -f logo_*.png
|
@ -1,29 +0,0 @@
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "Launcher.ico"
|
||||
1 RT_MANIFEST "Launcher.manifest"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
FILEOS VOS_NT_WINDOWS32
|
||||
FILETYPE VFT_APP
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "000004b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "MultiMC Contributors"
|
||||
VALUE "FileDescription", "A Minecraft Launcher"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
VALUE "ProductName", "Launcher"
|
||||
VALUE "ProductVersion", "5"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x0000, 0x04b0 // Unicode
|
||||
END
|
||||
END
|
@ -1,8 +0,0 @@
|
||||
<!DOCTYPE RCC>
|
||||
<RCC version="1.0">
|
||||
<qresource prefix="/">
|
||||
<file>logo.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
|
@ -1,271 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="68.26667"
|
||||
height="68.26667"
|
||||
id="svg4427"
|
||||
version="1.1"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
sodipodi:docname="logo.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs4429">
|
||||
<linearGradient
|
||||
id="linearGradient5668"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5670"
|
||||
offset="0"
|
||||
style="stop-color:#75b54b;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5672"
|
||||
offset="1"
|
||||
style="stop-color:#75b54b;stop-opacity:0.6" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5084"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5086"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:0.8" />
|
||||
<stop
|
||||
id="stop5088"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0.35" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5668"
|
||||
id="linearGradient5072"
|
||||
x1="6.7342591"
|
||||
y1="28.510933"
|
||||
x2="50.506943"
|
||||
y2="61.773685"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-0.01532073,-0.00938002)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5084"
|
||||
id="linearGradient5082"
|
||||
x1="14.312115"
|
||||
y1="9.7948904"
|
||||
x2="44.097023"
|
||||
y2="82.973114"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5668"
|
||||
id="linearGradient3281"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-0.01532073,-0.00938002)"
|
||||
x1="6.7342591"
|
||||
y1="28.510933"
|
||||
x2="50.506943"
|
||||
y2="61.773685" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5668"
|
||||
id="linearGradient3283"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-0.01532073,-0.00938002)"
|
||||
x1="6.7342591"
|
||||
y1="28.510933"
|
||||
x2="50.506943"
|
||||
y2="61.773685" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5084"
|
||||
id="linearGradient3288"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.312115"
|
||||
y1="9.7948904"
|
||||
x2="44.097023"
|
||||
y2="82.973114" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5084"
|
||||
id="linearGradient3290"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.312115"
|
||||
y1="9.7948904"
|
||||
x2="44.097023"
|
||||
y2="82.973114" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5580">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.0627451"
|
||||
offset="0"
|
||||
id="stop5576" />
|
||||
<stop
|
||||
style="stop-color:#252424;stop-opacity:0.58823532"
|
||||
offset="1"
|
||||
id="stop5578" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3999"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop3995"
|
||||
offset="0"
|
||||
style="stop-color:#777777;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop3997"
|
||||
offset="1"
|
||||
style="stop-color:#4f4e4e;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2727"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop2723"
|
||||
offset="0"
|
||||
style="stop-color:#7f8080;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop2725"
|
||||
offset="1"
|
||||
style="stop-color:#404040;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2727"
|
||||
id="linearGradient2050"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="36.546478"
|
||||
y1="33.80484"
|
||||
x2="86.415741"
|
||||
y2="97.065842"
|
||||
gradientTransform="translate(-0.0016031,-4.5764148e-4)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3999"
|
||||
id="radialGradient2052"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-0.00142193,-4.5702768e-4)"
|
||||
cx="34.133331"
|
||||
cy="34.133335"
|
||||
fx="34.133331"
|
||||
fy="34.133335"
|
||||
r="29.866665" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5580"
|
||||
id="linearGradient2140"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-0.0010513,-9.083059e-4)"
|
||||
x1="29.866674"
|
||||
y1="29.867579"
|
||||
x2="38.400005"
|
||||
y2="38.400913" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="8.0000001"
|
||||
inkscape:cx="-15.9375"
|
||||
inkscape:cy="15.75"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2129"
|
||||
inkscape:window-x="1200"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-midpoints="false"
|
||||
inkscape:snap-intersection-paths="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-text-baseline="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:pagecheckerboard="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4446"
|
||||
empspacing="16"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="4.2666667"
|
||||
spacingy="4.2666667"
|
||||
originx="0"
|
||||
originy="0" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata4432">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g2048"
|
||||
transform="translate(9.113e-4,0.00104183)">
|
||||
<rect
|
||||
rx="8.5333338"
|
||||
ry="8.5333338"
|
||||
style="fill:url(#linearGradient2050);fill-opacity:1;stroke:none;stroke-width:17.0667"
|
||||
id="rect2026"
|
||||
width="68.266998"
|
||||
height="68.26667"
|
||||
x="-0.0016037956"
|
||||
y="-0.00045376646" />
|
||||
<rect
|
||||
rx="4.2666626"
|
||||
y="4.2662144"
|
||||
x="4.2652307"
|
||||
height="59.733334"
|
||||
width="59.73333"
|
||||
id="rect2028"
|
||||
style="opacity:0.5;fill:url(#radialGradient2052);fill-opacity:1;stroke:none;stroke-width:14.9333"
|
||||
ry="4.2666669" />
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient2140);fill-opacity:1;stroke:none;stroke-width:17.06666756"
|
||||
d="m 8.5322887,-9.083059e-4 c -4.72747,0 -8.5332,3.8057359059 -8.5332,8.5332029059 V 59.731515 c 0,4.727467 3.80573,8.535156 8.5332,8.535156 H 59.731502 c 4.72747,0 8.5332,-3.807689 8.5332,-8.535156 V 8.5322946 c 0,-4.727467 -3.80573,-8.5332029059 -8.5332,-8.5332029059 z m 0,4.2675779059 H 59.731502 c 2.36373,0 4.26758,1.901892 4.26758,4.265625 V 59.731515 c 0,2.363733 -1.90385,4.267578 -4.26758,4.267578 H 8.5322887 c -2.36373,0 -4.26758,-1.903845 -4.26758,-4.267578 V 8.5322946 c 0,-2.363733 1.90385,-4.265625 4.26758,-4.265625 z"
|
||||
id="path2046"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:0.494118;fill-rule:evenodd;stroke:none;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 17.343575,15.030602 -1e-6,43.517002 38.229105,-21.758501 z"
|
||||
id="path1382"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:#00ff66;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 16.888808,11.986385 -1e-6,43.517003 38.229104,-21.758501 z"
|
||||
id="path1059"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
id="path13539"
|
||||
style="fill:#ff00ff;fill-opacity:0.992157;fill-rule:evenodd;stroke:none;stroke-width:0.999996px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 19.576616,50.882478 C 29.612077,45.170295 39.647539,39.458112 49.682999,33.745928 39.647539,28.032869 29.612077,22.319811 19.576616,16.606753 c 0,11.425241 0,22.850484 0,34.275725 z" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.9 KiB |
Loading…
x
Reference in New Issue
Block a user