Update net stack: add interruption command.

Update UI: add dark theme, created and added navigation panel pattern, updated margins for better view on phones with curved screens (eg. 1+ 8pro)
master
Dmitry Isaenko 2020-10-10 23:24:32 +03:00
parent 4b629628d8
commit 59c1e4afa8
16 changed files with 495 additions and 252 deletions

View File

@ -7,8 +7,8 @@ android {
applicationId "com.blogspot.developersu.ns_usbloader"
minSdkVersion 15
targetSdkVersion 29
versionCode 4
versionName "2.0"
versionCode 5
versionName "3.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
android.defaultConfig.vectorDrawables.useSupportLibrary = true
}

View File

@ -9,16 +9,16 @@ import android.text.Spanned;
import android.text.TextWatcher;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Switch;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.Toolbar;
public class SettingsActivity extends AppCompatActivity {
private EditText nsIp;
private EditText servAddr;
private EditText servPort;
private Switch autoDetectIp;
private SwitchCompat autoDetectIp;
@Override
public boolean onOptionsItemSelected(MenuItem item){
@ -68,7 +68,7 @@ public class SettingsActivity extends AppCompatActivity {
if (! editable.toString().matches("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"))
nsIp.setTextColor(Color.RED);
else
nsIp.setTextColor(Color.BLACK);
nsIp.setTextColor(getResources().getColor(R.color.defaultTextColor));
}
});
servAddr.addTextChangedListener(new TextWatcher() {
@ -83,7 +83,7 @@ public class SettingsActivity extends AppCompatActivity {
if (! editable.toString().matches("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"))
nsIp.setTextColor(Color.RED);
else
nsIp.setTextColor(Color.BLACK);
nsIp.setTextColor(getResources().getColor(R.color.defaultTextColor));
}
});
@ -99,10 +99,10 @@ public class SettingsActivity extends AppCompatActivity {
String contentString = editable.toString();
//Log.i("LPR", contentString);
if (contentString.matches("^\\d{1,5}")){
if (Integer.valueOf(contentString) < 1024)
if (Integer.parseInt(contentString) < 1024)
servPort.setTextColor(Color.RED);
else
servPort.setTextColor(Color.BLACK);
servPort.setTextColor(getResources().getColor(R.color.defaultTextColor));
}
}
});
@ -123,33 +123,30 @@ public class SettingsActivity extends AppCompatActivity {
spEditor.putString("SServerIP", servAddr.getText().toString());
final String contentString = servPort.getText().toString();
if (contentString.matches("^\\d{1,5}") && (Integer.valueOf(contentString) >= 1024)){
spEditor.putInt("SServerPort", Integer.valueOf(servPort.getText().toString()));
if (contentString.matches("^\\d{1,5}") && (Integer.parseInt(contentString) >= 1024)){
spEditor.putInt("SServerPort", Integer.parseInt(servPort.getText().toString()));
}
spEditor.apply();
}
private static InputFilter inputFilterForIP = new InputFilter() {
@Override
public CharSequence filter(CharSequence charSequence, int start, int end, Spanned destination, int dStart, int dEnd) {
if (end > start) {
String destTxt = destination.toString();
String resultingTxt = destTxt.substring(0, dStart) +
charSequence.subSequence(start, end) +
destTxt.substring(dEnd);
if (! resultingTxt.matches ("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?"))
return "";
else {
String[] splits = resultingTxt.split("\\.");
for (String split : splits) {
if (Integer.valueOf(split) > 255)
return "";
}
private static InputFilter inputFilterForIP = (charSequence, start, end, destination, dStart, dEnd) -> {
if (end > start) {
String destTxt = destination.toString();
String resultingTxt = destTxt.substring(0, dStart) +
charSequence.subSequence(start, end) +
destTxt.substring(dEnd);
if (! resultingTxt.matches ("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?"))
return "";
else {
String[] splits = resultingTxt.split("\\.");
for (String split : splits) {
if (Integer.parseInt(split) > 255)
return "";
}
}
return null;
}
return null;
};
private static InputFilter inputFilterForPort = new InputFilter() {
@ -162,7 +159,7 @@ public class SettingsActivity extends AppCompatActivity {
destTxt.substring(dEnd);
if (!resultingTxt.matches ("^[0-9]+"))
return "";
if (Integer.valueOf(resultingTxt) > 65535)
if (Integer.parseInt(resultingTxt) > 65535)
return "";
}
return null;

View File

@ -30,7 +30,7 @@ import static android.content.Context.WIFI_SERVICE;
class TinfoilNET extends TransferTask {
private HashMap<String, NSPElement> nspMap;
private HashMap<String, NSPElement> files;
private Socket handShakeSocket;
private ServerSocket serverSocket;
@ -42,6 +42,7 @@ class TinfoilNET extends TransferTask {
private String phoneIp;
private int phonePort;
private boolean jobInProgress = true;
@Override
void cancel(){
@ -68,11 +69,10 @@ class TinfoilNET extends TransferTask {
this.phoneIp = phoneIp;
this.phonePort = phonePort;
this.nspMap = new HashMap<>();
this.files = new HashMap<>();
// Collect and encode NSP files list
for (NSPElement nspElem : nspElements)
nspMap.put(URLEncoder.encode(nspElem.getFilename(), "UTF-8").replaceAll("\\+", "%20"), nspElem); // replace + to %20
files.put(URLEncoder.encode(nspElem.getFilename(), "UTF-8").replaceAll("\\+", "%20"), nspElem); // replace + to %20
// Resolve IP
if (phoneIp.isEmpty())
@ -102,13 +102,28 @@ class TinfoilNET extends TransferTask {
@Override
boolean run(){
if (interrupt)
return false;
// Create string that we'll send to TF and which initiates chain
StringBuilder myStrBuilder;
try {
if (interrupt)
return false;
myStrBuilder = new StringBuilder();
for (String fileNameEncoded : nspMap.keySet()) {
byte[] handshakeCommand = buildHandshakeContent().getBytes(); // android's .getBytes() default == UTF8 // Follow the
byte[] handshakeCommandSize = ByteBuffer.allocate(4).putInt(handshakeCommand.length).array(); // defining order ; Integer size = 4 bytes
sendHandshake(handshakeCommandSize, handshakeCommand);
serveRequestsLoop();
}
catch (Exception e){
close(true);
issueDescription = "NET: Unable to connect to NS and send files list: "+e.getMessage();
return true;
}
close(false);
return true;
}
private String buildHandshakeContent(){
StringBuilder myStrBuilder = new StringBuilder();
for (String fileNameEncoded : files.keySet()) {
myStrBuilder.append(phoneIp);
myStrBuilder.append(':');
myStrBuilder.append(phonePort);
@ -116,201 +131,183 @@ class TinfoilNET extends TransferTask {
myStrBuilder.append(fileNameEncoded);
myStrBuilder.append('\n');
}
byte[] nspListNames = myStrBuilder.toString().getBytes(); // android's .getBytes() default == UTF8 // Follow the
byte[] nspListSize = ByteBuffer.allocate(4).putInt(nspListNames.length).array(); // defining order ; Integer size = 4 bytes
return myStrBuilder.toString();
}
private void sendHandshake(byte[] handshakeCommandSize, byte[] handshakeCommand) throws Exception{
try {
handShakeSocket = new Socket();
handShakeSocket.connect(new InetSocketAddress(InetAddress.getByName(nsIp), 2000), 1000); // e.g. 1sec
OutputStream os = handShakeSocket.getOutputStream();
os.write(nspListSize);
os.write(nspListNames);
os.write(handshakeCommandSize);
os.write(handshakeCommand);
os.flush();
handShakeSocket.close();
}
catch (IOException uhe){
issueDescription = "NET: Unable to connect to NS and send files list. Returned: "+uhe.getMessage();
close(true);
return true;
throw new Exception("NET: Unable to send files list: "+uhe.getMessage());
}
// Go transfer
work_routine:
while (true){
try {
Socket clientSocket = serverSocket.accept();
BufferedReader br = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())
);
currSockOS = clientSocket.getOutputStream();
currSockPW = new PrintWriter(new OutputStreamWriter(currSockOS));
String line;
LinkedList<String> tcpPacket = new LinkedList<>();
while ((line = br.readLine()) != null) {
//System.out.println(line); // Debug
if (line.trim().isEmpty()) { // If TCP packet is ended
if (handleRequest(tcpPacket)) // Proceed required things
break work_routine;
tcpPacket.clear(); // Clear data and wait for next TCP packet
}
else
tcpPacket.add(line); // Otherwise collect data
}
clientSocket.close();
}
catch (IOException ioe){ // If server socket closed, then client socket also closed.
break;
}
}
close(false);
return true;
}
private void serveRequestsLoop() throws Exception{
while (jobInProgress){
Socket clientSocket = serverSocket.accept();
BufferedReader br = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())
);
currSockOS = clientSocket.getOutputStream();
currSockPW = new PrintWriter(new OutputStreamWriter(currSockOS));
String line;
LinkedList<String> tcpPacket = new LinkedList<>();
while ((line = br.readLine()) != null) {
if (line.trim().isEmpty()) { // If TCP packet is ended
handleRequest(tcpPacket); // Proceed required things
tcpPacket.clear(); // Clear data and wait for next TCP packet
}
else
tcpPacket.add(line); // Otherwise collect data
}
clientSocket.close();
}
}
// 200 206 400 (inv range) 404 416 (Range Not Satisfiable )
/**
* Handle requests
* @return true if failed
* */
private boolean handleRequest(LinkedList<String> packet){
private void handleRequest(LinkedList<String> packet) throws Exception{
if (packet.get(0).startsWith("DROP")){
jobInProgress = false;
return;
}
String reqFileName = packet.get(0).replaceAll("(^[A-z\\s]+/)|(\\s+?.*$)", "");
if (! nspMap.containsKey(reqFileName)){
currSockPW.write(NETPacket.getCode404());
currSockPW.flush();
issueDescription = "NET: File "+reqFileName+" doesn't exists or have 0 size. Returning 404";
return true;
if (! files.containsKey(reqFileName)){
writeToSocket(NETPacket.getCode404());
return;
}
NSPElement requestedElement = nspMap.get(reqFileName);
NSPElement requestedElement = files.get(reqFileName);
long reqFileSize = requestedElement.getSize();
if (reqFileSize == 0){ // well.. tell 404 if file exists with 0 length is against standard, but saves time
currSockPW.write(NETPacket.getCode404());
currSockPW.flush();
issueDescription = "NET: File "+reqFileName+" doesn't exists or have 0 size. Returning 404";
return true;
writeToSocket(NETPacket.getCode404());
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return;
}
if (packet.get(0).startsWith("HEAD")){
currSockPW.write(NETPacket.getCode200(reqFileSize));
currSockPW.flush();
return false;
writeToSocket(NETPacket.getCode200(reqFileSize));
return;
}
if (packet.get(0).startsWith("GET")) {
for (String line: packet) {
if (line.toLowerCase().startsWith("range")) { //todo: fix
try {
String[] rangeStr = line.toLowerCase().replaceAll("^range:\\s+?bytes=", "").split("-", 2);
if (!rangeStr[0].isEmpty() && !rangeStr[1].isEmpty()) { // If both ranges defined: Read requested
if (Long.parseLong(rangeStr[0]) > Long.parseLong(rangeStr[1])){ // If start bytes greater then end bytes
currSockPW.write(NETPacket.getCode400());
currSockPW.flush();
issueDescription = "NET: Requested range for "+requestedElement.getFilename()+" is incorrect. Returning 400";
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return true;
}
if (writeToSocket(requestedElement, Long.parseLong(rangeStr[0]), Long.parseLong(rangeStr[1]))) // DO WRITE
return true;
}
else if (!rangeStr[0].isEmpty()) { // If only START defined: Read all
if (writeToSocket(requestedElement, Long.parseLong(rangeStr[0]), reqFileSize)) // DO WRITE
return true;
}
else if (!rangeStr[1].isEmpty()) { // If only END defined: Try to read last 500 bytes
if (reqFileSize > 500){
if (writeToSocket(requestedElement, reqFileSize-500, reqFileSize)) // DO WRITE
return true;
}
else { // If file smaller than 500 bytes
currSockPW.write(NETPacket.getCode416());
currSockPW.flush();
issueDescription = "NET: File size requested for "+requestedElement.getFilename()+" while actual size of it: "+requestedElement.getSize()+". Returning 416";
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return true;
}
}
else {
currSockPW.write(NETPacket.getCode400()); // If Range not defined: like "Range: bytes=-"
currSockPW.flush();
issueDescription = "NET: Requested range for "+requestedElement.getFilename()+" is incorrect (empty start & end). Returning 400";
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return true;
}
break;
}
catch (NumberFormatException nfe){
currSockPW.write(NETPacket.getCode400());
currSockPW.flush();
issueDescription = "NET: Requested range for "+requestedElement.getFilename()+" has incorrect format. Returning 400\n\t"+nfe.getMessage();
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return true;
}
if (line.toLowerCase().startsWith("range")){
parseGETrange(requestedElement, reqFileSize, line);
return;
}
}
}
return false;
}
/**
* Send files.
* */
private boolean writeToSocket(NSPElement nspElem, long start, long end){
if (interrupt)
return true;
currSockPW.write(NETPacket.getCode206(nspElem.getSize(), start, end));
private void parseGETrange(NSPElement requestedElement, long fileSize, String rangeDirective) throws Exception{
try {
String[] rangeStr = rangeDirective.toLowerCase().replaceAll("^range:\\s+?bytes=", "").split("-", 2);
if (! rangeStr[0].isEmpty()){
if (rangeStr[1].isEmpty()) {
writeToSocket(requestedElement, Long.parseLong(rangeStr[0]), fileSize);
return;
}
long fromRange = Long.parseLong(rangeStr[0]);
long toRange = Long.parseLong(rangeStr[1]);
if (fromRange > toRange){ // If start bytes greater then end bytes
writeToSocket(NETPacket.getCode400());
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return;
}
writeToSocket(requestedElement, fromRange, toRange);
return;
}
if (rangeStr[1].isEmpty()) {
writeToSocket(NETPacket.getCode400()); // If Range not defined: like "Range: bytes=-"
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return;
}
if (fileSize > 500) {
writeToSocket(requestedElement, fileSize - 500, fileSize);
return;
}
// If file smaller than 500 bytes
writeToSocket(NETPacket.getCode416());
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
}
catch (NumberFormatException nfe){
writeToSocket(NETPacket.getCode400());
requestedElement.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
throw new Exception("NET: Requested range for "+requestedElement.getFilename()+" has incorrect format. Returning 400\n\t"+nfe.getMessage());
}
}
/** Send commands */
private void writeToSocket(String string) {
currSockPW.write(string);
currSockPW.flush();
}
/** Send files */
private void writeToSocket(NSPElement nspElem, long start, long end) throws Exception{
if (interrupt){
throw new Exception("Interrupted by user");
}
writeToSocket(NETPacket.getCode206(nspElem.getSize(), start, end));
try{
long count = end - start + 1; // Meeh. Somehow it works
InputStream elementIS = context.getContentResolver().openInputStream(nspElem.getUri());
if (elementIS == null) {
issueDescription = "NET Unable to obtain InputStream";
return true;
InputStream elementInputStream = context.getContentResolver().openInputStream(nspElem.getUri());
if (elementInputStream == null) {
throw new Exception("NET Unable to obtain input stream");
}
BufferedInputStream bis = new BufferedInputStream(elementIS);
BufferedInputStream bis = new BufferedInputStream(elementInputStream);
int readPice = 8388608; // = 8Mb
int readPice = 4194304;//8388608;// = 8Mb (1024 is slow)
byte[] byteBuf;
if (bis.skip(start) != start){
issueDescription = "NET: Unable to skip requested range.";
nspElem.setStatus(context.getResources().getString(R.string.status_failed_to_upload));
return true;
throw new Exception("NET: Unable to skip requested range");
}
long currentOffset = 0;
while (currentOffset < count){
if (interrupt)
return true;
throw new Exception("Interrupted by user");
if ((currentOffset+readPice) >= count){
readPice = (int) (count - currentOffset);
}
byteBuf = new byte[readPice];
if (bis.read(byteBuf) != readPice){
issueDescription = "NET: Reading of nspElem stream suddenly ended.";
return true;
throw new Exception("NET: Reading from file stream suddenly ended");
}
currSockOS.write(byteBuf);
currentOffset += readPice;
updateProgressBar((int) ((currentOffset+1)/(count/100+1)));
updateProgressBar((int) ((double)currentOffset/((double)count/100.0)));
}
currSockOS.flush(); // TODO: check if this really needed.
bis.close();
resetProgressBar();
}
catch (IOException ioe){
issueDescription = "NET: File transmission failed. Returned: "+ioe.getMessage();
nspElem.setStatus(context.getResources().getString(R.string.status_failed_to_upload)); // TODO: REDUNDANT?
return true;
throw new Exception("NET: File transmission failed. Returned: "+ioe.getMessage());
}
return false;
}
/**
* Close when done

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?android:attr/textColorPrimary" android:state_checked="false" />
<item android:color="@color/highlightSelected" android:state_checked="true" />
</selector>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle">
<gradient
android:angle="135"
android:endColor="#7d06de"
android:centerColor="#146fde"
android:startColor="#773fcc"
android:type="linear" />
</shape>
</item>
<item
android:drawable="@drawable/ic_game_pattern" />
</layer-list>

View File

@ -1,41 +1,60 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="124dp"
android:width="185dp"
android:height="33dp"
android:viewportWidth="124"
android:viewportWidth="185"
android:viewportHeight="33">
<path
android:pathData="M5.131,26.687L5.131,19.222L0.145,5.838L2.653,5.838L6.327,16.16 10.555,3.68L12.859,3.68L7.435,19.31L7.435,26.687l-2.304,-0"
android:pathData="M2.283,0.111L183.022,0.111A1.921,1.921 45,0 1,184.943 2.033L184.943,31.024A1.921,1.921 135,0 1,183.022 32.945L2.283,32.945A1.921,1.921 0,0 1,0.361 31.024L0.361,2.033A1.921,1.921 135,0 1,2.283 0.111z"
android:strokeWidth="1772.81"
android:fillColor="#ffffff"
android:strokeColor="#00000000"/>
<path
android:pathData="m35.131,26.687l0,-7.465l-4.986,-13.384l2.508,-0L36.327,16.16 40.555,3.68l2.304,-0L37.435,19.31L37.435,26.687l-2.304,-0"
android:strokeAlpha="0.996"
android:fillColor="#ff0000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
<path
android:pathData="m62.752,11.99 l-2.741,6.882 3.062,7.815l-2.362,-0l-2.275,-6.065 -2.216,6.065l-2.245,-0l3.062,-7.611 -2.77,-7.086l2.362,-0l1.895,5.336 2.012,-5.336zM46.773,17.997l3.762,-0c0,-2.508 -0.408,-4.345 -1.721,-4.345 -1.399,-0 -1.895,1.72 -2.041,4.345zM49.281,26.891c-3.033,-0 -4.899,-2.42 -4.899,-6.939 0,-4.724 1.312,-8.165 4.432,-8.165 2.449,-0 4.053,1.837 4.053,6.823l0,1.254l-6.123,-0c0,3.324 0.933,5.074 2.741,5.074 1.283,-0 2.216,-0.584 2.799,-0.991l0.525,1.749c-0.933,0.729 -2.07,1.195 -3.528,1.195zM39.833,14.352c-0.467,-0.467 -0.962,-0.7 -1.72,-0.7 -1.837,-0 -2.712,2.77 -2.712,5.773 0,3.441 0.642,5.541 2.304,5.541 1.137,-0 1.749,-0.554 2.129,-1.138zM32.981,19.893c0,-5.453 2.041,-8.106 4.986,-8.106 0.7,-0 1.428,0.233 1.866,0.554l0,-6.502l2.274,-0L42.108,26.687l-1.691,-0l-0.175,-1.166l-0.146,-0c-0.642,0.816 -1.458,1.37 -2.653,1.37 -2.887,-0 -4.461,-2.449 -4.461,-6.998zM24.758,26.687l-2.274,-0l0,-14.725l2.274,-0l0,1.283l0.146,-0c0.408,-0.554 1.516,-1.458 2.887,-1.458 1.925,-0 2.945,1.079 2.945,3.324L30.736,26.687l-2.303,-0l0,-11.372c0,-1.108 -0.496,-1.488 -1.371,-1.488 -0.962,-0 -1.779,0.729 -2.304,1.458zM17.41,19.018l-0.262,-0c-2.828,-0 -3.441,1.254 -3.441,3.149 0,1.691 0.554,2.799 1.72,2.799 0.788,-0 1.575,-0.525 1.983,-1.167zM19.918,26.687l-1.925,-0c-0.087,-0.321 -0.175,-0.787 -0.204,-1.166l-0.146,-0c-0.642,0.816 -1.458,1.37 -2.741,1.37 -2.099,-0 -3.528,-1.575 -3.528,-4.461 0,-3.149 1.604,-5.132 5.715,-5.132l0.321,-0l0,-0.875c0,-1.925 -0.642,-2.741 -1.925,-2.741 -1.166,-0 -2.158,0.612 -2.916,1.283L12.132,12.953c0.671,-0.554 2.012,-1.166 3.499,-1.166 2.595,-0 4.024,1.108 4.024,4.665L19.655,23.363c0,1.399 0.146,2.624 0.262,3.324"
android:pathData="m92.752,11.99 l-2.741,6.882 3.062,7.815l-2.362,-0l-2.275,-6.065 -2.216,6.065l-2.245,-0l3.062,-7.611 -2.77,-7.086l2.362,-0l1.895,5.336 2.012,-5.336zM76.773,17.997l3.762,-0c0,-2.508 -0.408,-4.345 -1.721,-4.345 -1.399,-0 -1.895,1.72 -2.041,4.345zM79.281,26.891c-3.033,-0 -4.899,-2.42 -4.899,-6.939 0,-4.724 1.312,-8.165 4.432,-8.165 2.449,-0 4.053,1.837 4.053,6.823l0,1.254l-6.123,-0c0,3.324 0.933,5.074 2.741,5.074 1.283,-0 2.216,-0.584 2.799,-0.991l0.525,1.749c-0.933,0.729 -2.07,1.195 -3.528,1.195zM69.833,14.352c-0.467,-0.467 -0.962,-0.7 -1.72,-0.7 -1.837,-0 -2.712,2.77 -2.712,5.773 0,3.441 0.642,5.541 2.304,5.541 1.137,-0 1.749,-0.554 2.129,-1.138zM62.981,19.893c0,-5.453 2.041,-8.106 4.986,-8.106 0.7,-0 1.428,0.233 1.866,0.554l0,-6.502l2.274,-0L72.108,26.687l-1.691,-0l-0.175,-1.166l-0.146,-0c-0.642,0.816 -1.458,1.37 -2.653,1.37 -2.887,-0 -4.461,-2.449 -4.461,-6.998zM54.758,26.687l-2.274,-0l0,-14.725l2.274,-0l0,1.283l0.146,-0c0.408,-0.554 1.516,-1.458 2.887,-1.458 1.925,-0 2.945,1.079 2.945,3.324L60.736,26.687l-2.303,-0l0,-11.372c0,-1.108 -0.496,-1.488 -1.371,-1.488 -0.962,-0 -1.779,0.729 -2.304,1.458zM47.41,19.018l-0.262,-0c-2.828,-0 -3.441,1.254 -3.441,3.149 0,1.691 0.554,2.799 1.72,2.799 0.788,-0 1.575,-0.525 1.983,-1.167zM49.918,26.687l-1.925,-0c-0.087,-0.321 -0.175,-0.787 -0.204,-1.166l-0.146,-0c-0.642,0.816 -1.458,1.37 -2.741,1.37 -2.099,-0 -3.528,-1.575 -3.528,-4.461 0,-3.149 1.604,-5.132 5.715,-5.132l0.321,-0l0,-0.875c0,-1.925 -0.642,-2.741 -1.925,-2.741 -1.166,-0 -2.158,0.612 -2.916,1.283L42.132,12.953c0.671,-0.554 2.012,-1.166 3.499,-1.166 2.595,-0 4.024,1.108 4.024,4.665L49.655,23.363c0,1.399 0.146,2.624 0.262,3.324"
android:strokeAlpha="0.996"
android:fillColor="#000000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
<path
android:pathData="m70.93,12.428 l-0.612,14.259l-1.195,-0l0.904,-20.849l1.604,-0l3.12,12.859c0.263,1.02 0.409,2.012 0.496,2.886l0.058,-0c0.087,-0.875 0.262,-1.866 0.525,-2.886l3.207,-12.859l1.633,-0l0.904,20.849l-1.4,-0l-0.612,-14.375c-0.087,-1.633 -0.058,-2.887 -0.058,-4.169l-0.088,-0c-0.174,1.312 -0.378,2.536 -0.699,3.762l-2.916,11.518l-1.137,-0l-2.887,-11.518c-0.292,-1.138 -0.525,-2.304 -0.671,-3.732l-0.088,-0c0,1.137 -0.029,2.828 -0.087,4.257"
android:pathData="m100.93,12.428 l-0.612,14.259l-1.195,-0l0.904,-20.849l1.604,-0l3.12,12.859c0.263,1.02 0.409,2.012 0.496,2.886l0.058,-0c0.087,-0.875 0.262,-1.866 0.525,-2.886l3.207,-12.859l1.633,-0l0.904,20.849l-1.4,-0l-0.612,-14.375c-0.087,-1.633 -0.058,-2.887 -0.058,-4.169l-0.088,-0c-0.174,1.312 -0.378,2.536 -0.699,3.762l-2.916,11.518l-1.137,-0l-2.887,-11.518c-0.292,-1.138 -0.525,-2.304 -0.671,-3.732l-0.088,-0c0,1.137 -0.029,2.828 -0.087,4.257"
android:strokeAlpha="0.996"
android:fillColor="#000000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
<path
android:pathData="m91.461,19.339c0,-4.607 -1.4,-6.502 -3.12,-6.502 -1.721,-0 -3.121,2.041 -3.121,6.502 0,4.578 1.4,6.532 3.121,6.532 1.721,-0 3.12,-2.1 3.12,-6.532zM83.85,19.426c0,-4.899 1.954,-7.727 4.491,-7.727 2.536,-0 4.49,2.508 4.49,7.552 0,4.869 -1.953,7.727 -4.49,7.727 -2.537,-0 -4.491,-2.537 -4.491,-7.552"
android:pathData="m121.461,19.339c0,-4.607 -1.4,-6.502 -3.12,-6.502 -1.721,-0 -3.121,2.041 -3.121,6.502 0,4.578 1.4,6.532 3.121,6.532 1.721,-0 3.12,-2.1 3.12,-6.532zM113.85,19.426c0,-4.899 1.954,-7.727 4.491,-7.727 2.536,-0 4.49,2.508 4.49,7.552 0,4.869 -1.953,7.727 -4.49,7.727 -2.537,-0 -4.491,-2.537 -4.491,-7.552"
android:strokeAlpha="0.996"
android:fillColor="#000000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
<path
android:pathData="M96.712,15.956L96.712,26.687l-1.371,-0l0,-14.696l1.254,-0l0.058,2.42l0.058,-0c0.408,-1.079 1.574,-2.712 3.557,-2.712 1.954,-0 3.091,1.225 3.091,3.558L103.36,26.687l-1.37,-0l0,-11.255c0,-1.749 -0.642,-2.566 -1.983,-2.566 -1.458,-0 -2.566,1.225 -3.295,3.091"
android:pathData="M126.712,15.956L126.712,26.687l-1.371,-0l0,-14.696l1.254,-0l0.058,2.42l0.058,-0c0.408,-1.079 1.574,-2.712 3.557,-2.712 1.954,-0 3.091,1.225 3.091,3.558L133.36,26.687l-1.37,-0l0,-11.255c0,-1.749 -0.642,-2.566 -1.983,-2.566 -1.458,-0 -2.566,1.225 -3.295,3.091"
android:strokeAlpha="0.996"
android:fillColor="#000000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
<path
android:pathData="m107.123,18.493l5.337,-0c0.233,-3.907 -0.933,-5.656 -2.421,-5.656 -1.545,-0 -2.8,1.983 -2.916,5.656zM110.331,25.783c1.953,-0 2.974,-1.575 2.974,-1.575l0.437,1.108c0,-0 -1.108,1.662 -3.44,1.662 -3.119,-0 -4.549,-2.828 -4.549,-7.639 0,-4.811 1.808,-7.64 4.287,-7.64 2.537,-0 4.169,2.654 3.703,7.873l-6.648,-0c0.058,4.024 1.108,6.211 3.236,6.211"
android:pathData="m137.123,18.493l5.337,-0c0.233,-3.907 -0.933,-5.656 -2.421,-5.656 -1.545,-0 -2.8,1.983 -2.916,5.656zM140.331,25.783c1.953,-0 2.974,-1.575 2.974,-1.575l0.437,1.108c0,-0 -1.108,1.662 -3.44,1.662 -3.119,-0 -4.549,-2.828 -4.549,-7.639 0,-4.811 1.808,-7.64 4.287,-7.64 2.537,-0 4.169,2.654 3.703,7.873l-6.648,-0c0.058,4.024 1.108,6.211 3.236,6.211"
android:strokeAlpha="0.996"
android:fillColor="#000000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
<path
android:pathData="m115.903,31.293 l-0.146,-1.283c0.233,0.058 0.525,0.117 0.904,0.117 0.991,-0 1.691,-0.963 2.129,-2.595l0.117,-0.437 -3.645,-15.105l1.37,-0l2.332,9.593c0.262,1.108 0.467,2.187 0.613,3.324l0.088,-0c0.203,-1.167 0.437,-2.245 0.699,-3.324l2.275,-9.593l1.225,-0L120.101,27.445C119.605,29.427 118.731,31.352 116.661,31.352c-0.321,-0 -0.554,-0.029 -0.758,-0.059"
android:pathData="m145.903,31.293 l-0.146,-1.283c0.233,0.058 0.525,0.117 0.904,0.117 0.991,-0 1.691,-0.963 2.129,-2.595l0.117,-0.437 -3.645,-15.105l1.37,-0l2.332,9.593c0.262,1.108 0.467,2.187 0.613,3.324l0.088,-0c0.203,-1.167 0.437,-2.245 0.699,-3.324l2.275,-9.593l1.225,-0l-3.762,15.455C149.605,29.427 148.731,31.352 146.661,31.352c-0.321,-0 -0.554,-0.029 -0.758,-0.059"
android:strokeAlpha="0.996"
android:fillColor="#000000"
android:strokeColor="#00000000"
android:fillType="nonZero"/>
android:fillType="nonZero"
android:fillAlpha="0.996"/>
</vector>

View File

@ -0,0 +1,181 @@
<vector android:height="112dp" android:viewportHeight="170"
android:viewportWidth="304" android:width="200.28235dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#6699ff"
android:pathData="m259.321,103.161a13.229,13.229 0,0 1,13.227 13.23,13.229 13.229,0 0,1 -13.229,13.228 13.229,13.229 0,0 1,-13.229 -13.228,13.229 13.229,0 0,1 13.226,-13.231l0.003,13.229z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#47d147"
android:pathData="m240.8,126.973a13.229,13.229 0,0 1,13.227 13.23,13.229 13.229,0 0,1 -13.229,13.228 13.229,13.229 0,0 1,-13.229 -13.228,13.229 13.229,0 0,1 13.226,-13.231l0.003,13.229z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#ffd731"
android:pathData="m264.612,142.848a13.229,13.229 0,0 1,13.227 13.23,13.229 13.229,0 0,1 -13.229,13.228 13.229,13.229 0,0 1,-13.229 -13.228,13.229 13.229,0 0,1 13.226,-13.231l0.003,13.229z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#cc3030"
android:pathData="m284.456,121.682a13.229,13.229 0,0 1,13.227 13.23,13.229 13.229,0 0,1 -13.229,13.228 13.229,13.229 0,0 1,-13.229 -13.228,13.229 13.229,0 0,1 13.226,-13.231l0.003,13.229z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#232323"
android:pathData="M6.487,113.609L24.818,116.255A1.323,1.323 53.212,0 1,25.938 117.753L23.293,136.084A1.323,1.323 53.212,0 1,21.794 137.204L3.463,134.559A1.323,1.323 53.212,0 1,2.343 133.061L4.989,114.73A1.323,1.323 53.212,0 1,6.487 113.609z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#aa0088"
android:pathData="m5.454,130.024l15.712,2.268l-5.892,-14.741z"
android:strokeColor="#00000000" android:strokeWidth="0.3175"/>
<path android:fillColor="#232323"
android:pathData="m22.811,5.485c-1.14,0.178 -1.915,1.239 -1.736,2.379L24.53,29.986 2.408,33.441C1.268,33.62 0.493,34.681 0.671,35.821l1.286,8.231c0.178,1.14 1.239,1.915 2.379,1.736l22.122,-3.455 3.455,22.122c0.178,1.14 1.239,1.915 2.379,1.736L40.525,64.906c1.14,-0.178 1.915,-1.239 1.736,-2.379L38.806,40.405 60.928,36.949c1.14,-0.178 1.915,-1.239 1.736,-2.379L61.378,26.339C61.2,25.199 60.139,24.424 58.999,24.602L36.877,28.058 33.422,5.935c-0.178,-1.14 -1.239,-1.915 -2.379,-1.736zM27.409,7.929 L31.138,11.562 24.965,12.526zM7.157,36.178 L8.121,42.352 3.523,39.908ZM55.105,28.689 L59.703,31.133 56.069,34.862zM32.358,59.858 L38.531,58.893 36.087,63.491z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#00aa88"
android:pathData="m55.089,28.586 l4.598,2.444 -3.634,3.73z" android:strokeWidth="0.00640255"/>
<path android:fillColor="#00aa88"
android:pathData="M8.105,42.249 L3.507,39.805 7.141,36.075Z" android:strokeWidth="0.00640255"/>
<path android:fillColor="#00aa88"
android:pathData="m38.515,58.79 l-2.444,4.598 -3.73,-3.634z" android:strokeWidth="0.00640255"/>
<path android:fillColor="#00aa88"
android:pathData="m24.949,12.424 l2.444,-4.598 3.73,3.634z" android:strokeWidth="0.00640255"/>
<path android:fillColor="#002636"
android:pathData="m270.254,68.122c-0.775,0.209 -1.231,1.001 -1.022,1.775l4.049,15.036 -15.036,4.049c-0.775,0.209 -1.231,1 -1.022,1.775l1.507,5.595c0.209,0.775 1,1.231 1.775,1.022l15.036,-4.049 4.049,15.036c0.209,0.775 1,1.231 1.775,1.022l5.595,-1.507c0.775,-0.209 1.231,-1 1.022,-1.775l-4.049,-15.036 15.036,-4.049c0.775,-0.209 1.231,-1 1.022,-1.775l-1.507,-5.595c-0.209,-0.775 -1,-1.231 -1.775,-1.022L281.673,82.674 277.624,67.637c-0.209,-0.775 -1,-1.231 -1.775,-1.022zM273.616,69.467 L276.468,71.699 272.271,72.829zM261.734,90.519 L262.864,94.715 259.501,93.37zM294.324,81.742 L297.686,83.087 295.454,85.938zM280.935,105 L285.131,103.87 283.786,107.232z" android:strokeWidth="0.00724272"/>
<path android:fillColor="#ff6600"
android:pathData="m273.597,69.397 l-1.345,3.363 4.196,-1.13zM261.715,90.449 L259.483,93.3 262.845,94.644zM294.305,81.672 L295.435,85.868 297.667,83.017zM280.916,104.93 L283.767,107.162L285.112,103.8Z" android:strokeWidth="0.0132483"/>
<path android:fillColor="#979797"
android:pathData="m9.914,93.107a15.119,15.119 0,0 0,19.722 -8.207,15.119 15.119,0 0,0 -8.195,-19.748 15.119,15.119 0,0 0,-19.749 8.193,15.119 15.119,0 0,0 8.191,19.75l1.359,-3.284 -0.609,-7.313 -6.983,-3.995 7.418,-3.113 1.641,-7.875 5.253,6.093 7.997,-0.873 -4.172,6.878 3.301,7.336 -7.831,-1.842 -5.957,5.407 -0.058,-0.693 -1.354,3.276a15.119,15.119 0,0 0,0.025 0.01z" android:strokeWidth="0.00839959"/>
<path android:fillColor="#ffcc00"
android:pathData="m25.018,86.597 l-7.71,-1.864 -5.871,5.335 -0.651,-7.955 -6.873,-3.995 7.308,-3.053 1.623,-7.804 5.167,6.068 7.876,-0.828 -4.114,6.803z"
android:strokeColor="#00000000" android:strokeWidth="0.264583"/>
<path android:fillColor="#282828"
android:pathData="m70.258,127.2a15.875,15.875 0,0 0,-15.872 15.877,15.875 15.875,0 0,0 15.875,15.873 15.875,15.875 0,0 0,15.875 -15.874,15.875 15.875,0 0,0 -15.872,-15.876l-0,2.356a13.519,13.519 0,0 1,13.516 13.52,13.519 13.519,0 0,1 -13.519,13.518 13.519,13.519 0,0 1,-13.519 -13.517,13.519 13.519,0 0,1 13.516,-13.521zM70.259,130.375a12.7,12.7 0,0 0,-12.698 12.701,12.7 12.7,0 0,0 12.7,12.699 12.7,12.7 0,0 0,12.7 -12.699,12.7 12.7,0 0,0 -12.698,-12.701 12.7,12.7 0,0 0,-0 0l-0.002,12.7z" android:strokeWidth="0.0105834"/>
<path android:fillColor="#ff0066"
android:pathData="m69.351,156.539c-2.657,-0.179 -5.144,-1.126 -7.344,-2.795 -0.589,-0.447 -1.912,-1.76 -2.362,-2.345 -0.576,-0.748 -1.063,-1.529 -1.473,-2.362 -0.97,-1.971 -1.393,-3.792 -1.391,-5.987 0.003,-2.991 0.924,-5.717 2.76,-8.162 0.539,-0.718 1.83,-2.006 2.56,-2.553 2.043,-1.531 4.25,-2.403 6.804,-2.687 0.571,-0.063 2.145,-0.063 2.715,0 2.798,0.311 5.348,1.406 7.412,3.183 2.65,2.281 4.263,5.361 4.655,8.884 0.063,0.571 0.063,2.145 0,2.715 -0.284,2.555 -1.151,4.752 -2.686,6.804 -0.516,0.69 -1.821,2.007 -2.497,2.52 -2.201,1.67 -4.688,2.603 -7.423,2.787 -0.777,0.052 -0.918,0.052 -1.73,-0.003zM72.134,155.658c3.969,-0.603 7.35,-2.96 9.295,-6.481 0.698,-1.264 1.19,-2.728 1.423,-4.24 0.086,-0.556 0.104,-0.873 0.105,-1.841 0.002,-1.253 -0.052,-1.792 -0.278,-2.806 -1.068,-4.78 -4.852,-8.564 -9.632,-9.632 -1.002,-0.224 -1.556,-0.279 -2.783,-0.279 -1.232,0 -1.772,0.055 -2.806,0.284 -3.118,0.691 -5.977,2.652 -7.763,5.324 -2.867,4.29 -2.875,9.847 -0.02,14.15 0.883,1.332 2.192,2.637 3.55,3.541 1.716,1.143 3.727,1.857 5.823,2.066 0.709,0.071 2.354,0.025 3.087,-0.087z"
android:strokeColor="#00000000" android:strokeWidth="0.0467722"/>
<path android:fillColor="#680088"
android:pathData="m175.735,136.077a15.875,15.875 0,0 0,-15.872 15.877,15.875 15.875,0 0,0 15.875,15.873 15.875,15.875 0,0 0,15.875 -15.874,15.875 15.875,0 0,0 -15.872,-15.876l-0,2.356a13.519,13.519 0,0 1,13.516 13.52,13.519 13.519,0 0,1 -13.519,13.518 13.519,13.519 0,0 1,-13.519 -13.517,13.519 13.519,0 0,1 13.516,-13.521zM175.735,139.252a12.7,12.7 0,0 0,-12.698 12.701,12.7 12.7,0 0,0 12.7,12.699 12.7,12.7 0,0 0,12.7 -12.699,12.7 12.7,0 0,0 -12.698,-12.701 12.7,12.7 0,0 0,-0 0l-0.002,12.7z" android:strokeWidth="0.0105834"/>
<path android:fillColor="#00ff66"
android:pathData="m173.212,165.127c-2.88,-0.618 -4.772,-1.661 -6.941,-3.828 -1.337,-1.335 -1.757,-1.908 -2.483,-3.385 -1.011,-2.057 -1.419,-3.762 -1.423,-5.95 -0.004,-2.13 0.428,-3.922 1.454,-6.024 1.472,-3.016 4.208,-5.433 7.489,-6.616 8.594,-3.1 17.824,3.452 17.805,12.64 -0.005,2.191 -0.413,3.896 -1.427,5.95 -0.74,1.499 -1.143,2.042 -2.577,3.467 -2.629,2.614 -5.25,3.771 -8.903,3.929 -1.106,0.048 -2.236,-0.022 -2.993,-0.184zM179.917,164.042c1.987,-0.706 3.292,-1.542 4.918,-3.15 1.18,-1.167 1.586,-1.733 2.279,-3.181 1.119,-2.337 1.35,-3.38 1.327,-5.97 -0.016,-1.777 -0.105,-2.412 -0.508,-3.648 -1.762,-5.401 -6.545,-8.887 -12.195,-8.887 -6.818,0 -12.265,5.112 -12.752,11.967 -0.302,4.259 1.772,8.651 5.263,11.142 2.51,1.791 4.436,2.347 7.862,2.27 2.056,-0.047 2.645,-0.131 3.804,-0.543z"
android:strokeColor="#00000000" android:strokeWidth="0.187089"/>
<path android:fillColor="#b1ff46"
android:pathData="m178.318,158.077 l-1.175,-0.358c-4.168,-1.263 -6.922,-2.101 -7.939,-4.255 -0.834,-1.766 -0.117,-3.804 1.622,-4.644 0.983,-0.475 2.144,-0.468 3.102,-0.04 0.273,-1.023 0.998,-1.942 1.98,-2.417 1.739,-0.841 3.756,-0.124 4.59,1.642 1.017,2.154 -0.069,4.848 -1.718,8.923z" android:strokeWidth="0.629555"/>
<path android:fillColor="#d3a222"
android:pathData="m111.125,10.583l17.58,26.578c0.348,0.526 0.347,1.432 -0.359,1.899 -9.303,6.12 -18.437,12.215 -27.734,18.345C99.916,57.866 99.047,57.631 98.66,57.035L81.08,30.457c10.44,-6.928 20.205,-13.364 30.045,-19.873z"
android:strokeColor="#00000000" android:strokeWidth="0.0378019"/>
<path android:fillColor="#08131b"
android:pathData="M76.121,20.448C73.568,22.136 72.867,25.575 74.556,28.127l24.459,36.979c1.682,2.542 5.114,3.262 7.68,1.565l27.734,-18.345c2.553,-1.689 3.253,-5.127 1.565,-7.68L111.534,3.668C109.86,1.137 106.373,0.437 103.855,2.103ZM79.178,25.07l27.734,-18.345c0.719,-0.476 1.468,-0.292 1.92,0.391l19.873,30.045C129.148,37.832 129.004,38.626 128.314,39.082L100.58,57.426C99.897,57.878 99.124,57.736 98.66,57.035L78.787,26.99C78.341,26.316 78.513,25.51 79.178,25.07Z" android:strokeColor="#00000000"/>
<path android:fillColor="#ffffff"
android:pathData="m109.042,55.151l13.867,-9.172l-3.876,9.208z" android:strokeColor="#00000000"/>
<path android:fillColor="#ffffff"
android:pathData="m82.806,20.01l18.029,-11.925c0.234,-0.148 0.233,-0.148 0.385,0.082l0.152,0.23C101.52,8.618 101.523,8.622 101.295,8.779L83.266,20.705C83.044,20.871 83.042,20.866 82.884,20.627L82.731,20.397C82.579,20.166 82.573,20.158 82.806,20.01Z" android:strokeColor="#00000000"/>
<path android:fillColor="#f00054"
android:pathData="M81.08,30.457L78.787,26.99C78.439,26.464 78.472,25.537 79.178,25.07 88.481,18.95 97.616,12.855 106.912,6.725c0.696,-0.461 1.533,-0.204 1.92,0.391L111.125,10.583C100.685,17.511 90.92,23.948 81.08,30.457Z"
android:strokeColor="#00000000" android:strokeWidth="0.0378019"/>
<path android:fillColor="#2b8b51"
android:pathData="m109.042,55.151 l13.867,-9.172 -3.876,9.208z"
android:strokeColor="#00000000" android:strokeWidth="0.0204458"/>
<path android:fillColor="#2b8b51"
android:pathData="M82.667,20.102L100.974,7.993A0.11,0.11 101.517,0 1,101.126 8.024L101.464,8.535A0.11,0.11 101.517,0 1,101.433 8.688L83.127,20.796A0.11,0.11 101.517,0 1,82.975 20.765L82.636,20.254A0.11,0.11 101.517,0 1,82.667 20.102z"
android:strokeColor="#00000000" android:strokeWidth="0.327131"/>
<path android:fillColor="#fffd46"
android:pathData="m107.25,44.205q0.304,-0.847 -0.254,-1.667 -0.558,-0.821 -1.451,-0.84 -0.884,-0.026 -2.033,0.755l-2.389,1.624 2.287,3.364 2.389,-1.624q1.149,-0.781 1.45,-1.612zM102.636,49.928 L96.606,41.057 93.643,43.072 92.731,41.731 95.694,39.717 92.992,35.742 94.679,34.595 97.381,38.57 101.256,35.936 102.167,37.276 98.292,39.911 100.214,42.737 102.675,41.063q1.951,-1.326 3.508,-1.292 1.56,0.019 2.601,1.551 1.041,1.532 0.491,2.998 -0.54,1.46 -2.491,2.787z" android:strokeWidth="0.264583"/>
<path android:fillColor="#00aad7"
android:pathData="m227.19,96.321l-10.459,30.101c-0.207,0.596 -0.927,1.144 -1.727,0.867 -10.509,-3.681 -20.897,-7.244 -31.41,-10.914C182.805,116.101 182.464,115.268 182.703,114.599L193.163,84.498c11.841,4.095 22.882,7.951 34.027,11.824z"
android:strokeColor="#00000000" android:strokeWidth="0.0378019"/>
<path android:fillColor="#08131b"
android:pathData="M198.109,74.483C195.218,73.478 192.06,75.007 191.055,77.899l-14.552,41.88c-1,2.879 0.511,6.044 3.416,7.054l31.41,10.914c2.891,1.005 6.049,-0.525 7.054,-3.416L232.935,92.451C233.931,89.584 232.372,86.388 229.519,85.397ZM196.29,79.718l31.41,10.914c0.815,0.283 1.123,0.99 0.854,1.763l-11.824,34.027C216.467,127.181 215.748,127.548 214.967,127.276L183.557,116.362C182.783,116.093 182.427,115.393 182.703,114.599L194.527,80.572C194.792,79.808 195.537,79.456 196.29,79.718Z" android:strokeColor="#00000000"/>
<path android:fillColor="#ffffff"
android:pathData="m190.5,121.708l15.705,5.457l-9.671,2.506z" android:strokeColor="#00000000"/>
<path android:fillColor="#ffffff"
android:pathData="m202.514,79.531l20.418,7.095c0.26,0.096 0.259,0.095 0.168,0.356l-0.091,0.261C222.923,87.494 222.923,87.499 222.659,87.413L202.241,80.318C201.974,80.242 201.976,80.238 202.071,79.967L202.161,79.706C202.252,79.445 202.254,79.435 202.514,79.531Z" android:strokeColor="#00000000"/>
<path android:fillColor="#d93535"
android:pathData="M193.163,84.498L194.527,80.572C194.734,79.976 195.491,79.44 196.29,79.718 206.8,83.399 217.187,86.961 227.7,90.632c0.789,0.274 1.093,1.095 0.854,1.763L227.19,96.321C215.348,92.227 204.307,88.37 193.163,84.498Z"
android:strokeColor="#00000000" android:strokeWidth="0.0378019"/>
<path android:fillColor="#388b2b"
android:pathData="m190.5,121.708 l15.705,5.457 -9.671,2.506z"
android:strokeColor="#00000000" android:strokeWidth="0.0204458"/>
<path android:fillColor="#388b2b"
android:pathData="M202.357,79.476L223.09,86.681A0.11,0.11 64.161,0 1,223.157 86.82L222.956,87.4A0.11,0.11 64.161,0 1,222.816 87.468L202.083,80.263A0.11,0.11 64.161,0 1,202.016 80.124L202.217,79.544A0.11,0.11 64.161,0 1,202.357 79.476z"
android:strokeColor="#00000000" android:strokeWidth="0.327131"/>
<path android:fillColor="#e153b5"
android:pathData="M201.895,95.89m-5.556,0a5.556,5.556 0,1 1,11.113 0a5.556,5.556 0,1 1,-11.113 0"
android:strokeColor="#00000000" android:strokeWidth="0.264583"/>
<path android:fillColor="#232323"
android:pathData="M48.023,0.134L61.301,3.429A0.977,0.977 58.936,0 1,62.015 4.613L58.72,17.892A0.977,0.977 58.936,0 1,57.536 18.605L44.257,15.31A0.977,0.977 58.936,0 1,43.544 14.126L46.839,0.847A0.977,0.977 58.936,0 1,48.023 0.134z" android:strokeWidth="0.0132292"/>
<path android:fillColor="#3fb8ff"
android:pathData="m50.904,2.38 l-4.114,5.877 1.599,6.993 4.113,-5.877zM52.503,9.373 L54.102,16.367 58.216,10.489 56.617,3.496z"
android:strokeColor="#00000000" android:strokeWidth="0.0929014"/>
<path android:fillColor="#42b951"
android:pathData="m230.621,40.407 l-12.315,4.312 -5.659,11.757 4.312,12.315 11.757,5.659 12.315,-4.312 5.659,-11.757 -4.312,-12.315z"
android:strokeColor="#00000000" android:strokeWidth="0.133947"/>
<path android:fillColor="#353535"
android:pathData="m231.965,40.285a12.266,12.266 0,0 0,-12.266 12.266,12.266 12.266,0 0,0 3.585,8.666l-0.756,1.309c-0.095,0.165 -0.039,0.374 0.126,0.469l4.625,2.67c0.165,0.095 0.374,0.04 0.469,-0.125l0.713,-1.235a12.266,12.266 0,0 0,3.505 0.512,12.266 12.266,0 0,0 12.266,-12.266 12.266,12.266 0,0 0,-12.266 -12.266zM231.997,41.383a11.142,11.142 0,0 1,0.001 0,11.142 11.142,0 0,1 0.032,0 11.142,11.142 0,0 1,11.142 11.142,11.142 11.142,0 0,1 -11.142,11.141 11.142,11.142 0,0 1,-11.142 -11.141,11.142 11.142,0 0,1 11.11,-11.142zM232.092,41.802a10.674,10.674 0,0 0,-10.674 10.674,10.674 10.674,0 0,0 10.674,10.674 10.674,10.674 0,0 0,10.674 -10.674,10.674 10.674,0 0,0 -10.674,-10.674zM231.955,42.588a9.926,9.926 0,0 1,0.056 0,9.926 9.926,0 0,1 9.925,9.925 9.926,9.926 0,0 1,-9.925 9.926,9.926 9.926,0 0,1 -9.926,-9.926 9.926,9.926 0,0 1,9.87 -9.925zM232.019,42.952a9.552,9.552 0,0 0,-9.52 9.551,9.552 9.552,0 0,0 9.552,9.551 9.552,9.552 0,0 0,9.551 -9.551,9.552 9.552,0 0,0 -9.551,-9.551 9.552,9.552 0,0 0,-0.032 0z"
android:strokeColor="#00000000" android:strokeWidth="0.204437"/>
<path android:fillColor="#4b8ffb"
android:pathData="m231.799,41.421c-2.855,0.047 -5.579,1.206 -7.632,3.261 -2.576,2.579 -3.728,6.272 -3.069,9.84 0.904,4.891 4.907,8.563 9.893,9.074 0.449,0.046 1.859,0.025 2.34,-0.035 3.282,-0.408 6.111,-2.155 7.959,-4.913 0.431,-0.643 0.986,-1.75 1.224,-2.44 0.738,-2.145 0.823,-4.321 0.255,-6.518 -0.804,-3.107 -3.024,-5.786 -5.953,-7.182 -1.456,-0.694 -2.811,-1.024 -4.445,-1.082 -0.191,-0.007 -0.382,-0.009 -0.573,-0.006zM232.191,41.785c4.003,0.036 7.713,2.305 9.514,6.009 1.805,3.714 1.321,8.091 -1.257,11.368 -0.331,0.421 -1.246,1.336 -1.668,1.669 -1.579,1.244 -3.47,2.03 -5.435,2.26v0.001c-0.715,0.084 -1.856,0.083 -2.553,-0.002 -1.866,-0.226 -3.594,-0.926 -5.178,-2.1 -0.567,-0.42 -1.612,-1.463 -2.044,-2.042 -2.266,-3.031 -2.796,-6.963 -1.408,-10.45 1.323,-3.323 4.281,-5.792 7.786,-6.499 0.751,-0.151 1.502,-0.221 2.244,-0.214zM231.783,42.637c-0.53,0.008 -1.046,0.044 -1.375,0.104 -1.731,0.316 -3.278,1.005 -4.56,2.031 -0.411,0.329 -1.167,1.078 -1.505,1.491 -0.85,1.039 -1.547,2.398 -1.886,3.675 -1.564,5.897 2.45,11.739 8.535,12.422h0.001c0.193,0.022 0.634,0.041 0.981,0.044 4.933,0.036 9.158,-3.637 9.844,-8.557 0.097,-0.686 0.097,-1.963 0.003,-2.643 -0.291,-2.088 -1.183,-3.953 -2.626,-5.486 -1.557,-1.656 -3.678,-2.732 -5.956,-3.022 -0.383,-0.049 -0.926,-0.068 -1.456,-0.059zM232.068,42.951c0.498,-0 0.993,0.025 1.334,0.074 3.167,0.462 5.863,2.427 7.251,5.285 0.339,0.699 0.523,1.202 0.693,1.896 0.358,1.464 0.351,3.219 -0.02,4.663 -1.015,3.952 -4.366,6.798 -8.439,7.168 -3.645,0.331 -7.218,-1.505 -9.083,-4.667 -2.023,-3.431 -1.697,-7.799 0.814,-10.908 0.363,-0.45 1.198,-1.255 1.66,-1.602 1.304,-0.978 2.823,-1.606 4.437,-1.834 0.353,-0.05 0.854,-0.075 1.352,-0.075z"
android:strokeColor="#00000000" android:strokeWidth="0.0467722"/>
<path android:fillColor="#282828"
android:pathData="m203.841,28.795a15.875,15.875 0,0 0,-22.448 -0.265,15.875 15.875,0 0,0 -0.267,22.448 15.875,15.875 0,0 0,22.448 0.269,15.875 15.875,0 0,0 0.272,-22.448l-1.686,1.646a13.519,13.519 0,0 1,-0.232 19.116,13.519 13.519,0 0,1 -19.116,-0.23 13.519,13.519 0,0 1,0.228 -19.116,13.519 13.519,0 0,1 19.117,0.226zM201.569,31.013a12.7,12.7 0,0 0,-17.958 -0.213,12.7 12.7,0 0,0 -0.214,17.959 12.7,12.7 0,0 0,17.958 0.215,12.7 12.7,0 0,0 0.217,-17.958 12.7,12.7 0,0 0,-0 -0l-9.089,8.871z" android:strokeWidth="0.0105834"/>
<path android:fillColor="#00efff"
android:pathData="m182.215,48.641c-1.728,-2.026 -2.788,-4.467 -3.13,-7.207 -0.092,-0.734 -0.076,-2.597 0.028,-3.328 0.133,-0.935 0.351,-1.829 0.661,-2.704 0.733,-2.071 1.74,-3.646 3.312,-5.178 2.142,-2.087 4.736,-3.332 7.768,-3.727 0.89,-0.116 2.714,-0.091 3.615,0.049 2.523,0.392 4.688,1.363 6.676,2.992 0.444,0.364 1.544,1.49 1.897,1.943 1.733,2.22 2.73,4.809 2.901,7.527 0.219,3.489 -0.858,6.796 -3.105,9.537 -0.364,0.444 -1.49,1.544 -1.943,1.897 -2.027,1.582 -4.204,2.496 -6.745,2.832 -0.854,0.113 -2.708,0.099 -3.547,-0.026 -2.732,-0.408 -5.137,-1.535 -7.18,-3.364 -0.58,-0.519 -0.679,-0.621 -1.207,-1.24zM184.789,50.017c3.204,2.419 7.253,3.191 11.131,2.123 1.393,-0.384 2.783,-1.055 4.027,-1.944 0.458,-0.327 0.697,-0.535 1.39,-1.211 0.898,-0.874 1.246,-1.289 1.814,-2.16 2.674,-4.103 2.738,-9.454 0.163,-13.62 -0.54,-0.873 -0.887,-1.308 -1.744,-2.186 -0.86,-0.881 -1.277,-1.23 -2.164,-1.81 -2.672,-1.748 -6.073,-2.424 -9.232,-1.835 -5.073,0.946 -9.054,4.822 -10.139,9.871 -0.336,1.562 -0.356,3.411 -0.054,5.014 0.381,2.027 1.275,3.964 2.589,5.61 0.445,0.557 1.626,1.701 2.218,2.148z"
android:strokeColor="#00000000" android:strokeWidth="0.0467722"/>
<path android:fillColor="#d44949"
android:pathData="m196.807,45.179 l-10.662,-2.994c-0.226,-0.063 -0.462,0.069 -0.525,0.295l-0.23,0.82c-0.063,0.226 0.069,0.462 0.295,0.525l10.662,2.994c0.226,0.063 0.462,-0.069 0.525,-0.295l0.23,-0.82c0.063,-0.226 -0.069,-0.462 -0.295,-0.525zM200.751,37.437c-0.679,-0.191 -1.385,0.206 -1.576,0.885 -0.051,0.182 -0.058,0.363 -0.03,0.539l-2.168,0.591c-0.461,0.125 -0.934,-0.152 -1.049,-0.615l-1.062,-4.242c0.338,-0.149 0.612,-0.436 0.72,-0.821 0.191,-0.679 -0.206,-1.385 -0.885,-1.576 -0.679,-0.191 -1.385,0.206 -1.576,0.885 -0.108,0.384 -0.023,0.773 0.187,1.076l-3.115,3.068c-0.34,0.336 -0.89,0.325 -1.216,-0.021l-1.541,-1.633c0.112,-0.134 0.204,-0.294 0.255,-0.476 0.191,-0.679 -0.206,-1.385 -0.885,-1.576 -0.679,-0.191 -1.388,0.205 -1.578,0.884 -0.191,0.679 0.206,1.385 0.885,1.576 0.067,0.019 0.136,0.027 0.203,0.035l0.465,5.462 9.842,2.764 3.241,-4.421c0.061,0.028 0.125,0.057 0.192,0.076 0.679,0.191 1.385,-0.206 1.576,-0.885 0.191,-0.679 -0.206,-1.385 -0.885,-1.576z" android:strokeWidth="0.0266224"/>
<path android:fillColor="#e4e4e4"
android:pathData="m7.422,153.736c-0.439,0.048 -1.181,3.656 -1.976,4.396 -0.807,0.751 0.337,-0.383 -0.299,1.824 -0.476,1.655 -0.639,4.798 -0.603,9.619h4.627c-0.389,-1.039 -0.728,-2.363 -0.543,-3.099 0,0 0.003,0.758 0.381,1.161 0.379,0.402 0.946,1.41 0.866,1.144 -0.097,-0.325 -0.032,-0.42 -0.153,-0.788 -0.192,-0.601 -0.843,-1.891 -0.286,-5.065 0.128,2.352 0.29,2.355 0.336,2.35 0.203,-0.326 0.419,-3.112 0.771,-3.478 0.024,-0.024 0.15,2.356 0.22,2.043 0.085,-0.384 0.314,-1.105 0.448,-1.625 1.363,0.302 4.02,2.945 4.497,3.353 0.024,-0.946 -1.113,-2.575 -2.267,-3.962h0.002c4.343,3.686 4.913,5.773 5.629,7.867 -0.133,0.032 -0.262,0.066 -0.394,0.098h21.823c-0.243,-0.05 -0.487,-0.101 -0.725,-0.148 0.003,-0.008 0.005,-0.011 0.008,-0.021 0.871,-2.234 1.018,-4.242 5.737,-8.133h0c-1.125,1.314 -2.229,2.852 -2.209,3.747 0.465,-0.387 3.053,-2.885 4.382,-3.171 0.13,0.493 0.361,1.166 0.443,1.529 0.064,0.296 0.189,-1.95 0.211,-1.928 0.343,0.347 0.552,2.983 0.75,3.291 0.048,0.005 0.204,0.002 0.327,-2.226 0.543,3.005 -0.091,4.231 -0.278,4.8 -0.115,0.348 -0.064,0.438 -0.157,0.746 -0.08,0.252 0.489,-0.705 0.858,-1.086 0.369,-0.381 0.365,-1.098 0.365,-1.098 0.232,0.897 -0.382,2.723 -0.86,3.696h4.848c0.06,-5.029 -0.095,-8.206 -0.587,-9.868 -0.619,-2.089 0.488,-1.013 -0.298,-1.724 -0.827,-0.747 -1.584,-4.588 -1.998,-4.128 -0.549,0.118 -2.622,0.734 -3.312,1.339 0.272,-0.359 0.833,-1.211 0.833,-1.211 0,0 -0.85,0.337 -1.185,0.547 -1.885,1.182 -2.437,1.788 -2.773,2.081 -0.594,0.518 -0.787,0.826 -1.157,1.239 -0.802,0.898 0.116,-1.146 -0.128,-0.792 -0.865,1.255 -1.038,2.582 -1.932,3.946 -1.8,2.748 -2.065,3.681 -2.927,5.293 -0.446,0.834 -0.877,1.613 -1.303,2.362v0.569l-16.32,-0.024 0.016,-0.004v-0.928c-0.234,-0.448 -0.466,-0.889 -0.711,-1.361 -0.884,-1.703 -1.162,-2.685 -3.009,-5.587 -0.917,-1.44 -1.094,-2.844 -1.981,-4.17 -0.25,-0.374 0.682,1.798 -0.141,0.849 -0.379,-0.437 -0.571,-0.771 -1.181,-1.318 -0.345,-0.309 -0.918,-0.953 -2.852,-2.201 -0.344,-0.222 -1.206,-0.576 -1.206,-0.576 0,0 0.591,0.935 0.862,1.297 -0.699,-0.642 -2.833,-1.305 -3.399,-1.43h-0.005c-0.027,-0.03 -0.054,-0.043 -0.083,-0.04z" android:strokeWidth="2.12228"/>
<path android:fillColor="#e43131"
android:pathData="m33.872,169.626v-5.383h-9.001v5.355l-0.009,0.004z" android:strokeWidth="1.63353"/>
<path android:fillColor="#13cd78"
android:pathData="M119.969,139.66m-13.181,-7.367a15.1,15.1 74.2,1 1,26.362 14.733a15.1,15.1 74.2,1 1,-26.362 -14.733"
android:strokeColor="#00000000" android:strokeWidth="0.302001"/>
<path android:fillColor="#c5c5c5"
android:pathData="m102.092,115.615c5.331,-3.522 11.885,-5.008 19.094,-5.403 1.464,-0.08 2.867,0.415 3.266,1.825l1.441,5.092c0.399,1.41 -0.365,3.138 -1.825,3.266 -6.367,0.559 -12.734,1.255 -19.094,5.403 -1.228,0.801 -2.867,-0.415 -3.266,-1.825l-1.441,-5.092c-0.399,-1.41 0.603,-2.458 1.825,-3.266z"
android:strokeColor="#00000000" android:strokeWidth="0.264583"/>
<path android:fillColor="#c5c5c5"
android:pathData="m145.499,124.72c3.522,5.331 5.008,11.885 5.403,19.094 0.08,1.464 -0.415,2.867 -1.825,3.266l-5.092,1.441c-1.41,0.399 -3.138,-0.365 -3.266,-1.825 -0.559,-6.367 -1.255,-12.734 -5.403,-19.094 -0.801,-1.228 0.415,-2.867 1.825,-3.266l5.092,-1.441c1.41,-0.399 2.458,0.603 3.266,1.825z"
android:strokeColor="#00000000" android:strokeWidth="0.264583"/>
<path android:fillColor="#ce0e4d"
android:pathData="M99.507,161.459m-7.938,0a7.938,7.938 0,1 1,15.875 0a7.938,7.938 0,1 1,-15.875 0"
android:strokeColor="#00000000" android:strokeWidth="0.264583"/>
<path android:fillColor="#a0a0a0"
android:pathData="m220.315,12.558c-2.467,0.274 -4.232,2.48 -3.958,4.946l0.988,8.905c0.274,2.467 2.479,4.232 4.946,3.959l8.905,-0.988c2.467,-0.274 4.232,-2.48 3.959,-4.946L234.166,15.529c-0.274,-2.467 -2.48,-4.232 -4.946,-3.959zM264.394,7.67c-2.467,0.274 -4.232,2.48 -3.958,4.946l0.988,8.905c0.274,2.467 2.479,4.232 4.946,3.959l8.905,-0.988c2.467,-0.274 4.232,-2.48 3.959,-4.946L278.245,10.641c-0.274,-2.467 -2.48,-4.232 -4.946,-3.959zM286.656,5.201c-2.467,0.274 -4.232,2.48 -3.959,4.946l0.988,8.905c0.274,2.467 2.48,4.232 4.946,3.959l8.905,-0.988c2.467,-0.274 4.232,-2.48 3.959,-4.946L300.508,8.172c-0.274,-2.467 -2.48,-4.232 -4.946,-3.959z"
android:strokeColor="#00000000" android:strokeWidth="1.69312"/>
<path android:fillColor="#00b2cb"
android:pathData="M242.577,10.09L251.482,9.102A4.48,4.48 128.672,0 1,256.428 13.061L257.416,21.966A4.48,4.48 128.672,0 1,253.457 26.912L244.552,27.899A4.48,4.48 128.672,0 1,239.606 23.941L238.619,15.036A4.48,4.48 128.672,0 1,242.577 10.09z"
android:strokeColor="#00000000" android:strokeWidth="0.447972"/>
<path android:fillColor="#cacaca"
android:pathData="m153.821,51.969c-0.846,-0.187 -1.677,0.343 -1.864,1.189l-3.378,15.265 -15.265,-3.378c-0.846,-0.187 -1.677,0.343 -1.864,1.189l-3.04,13.739c-0.187,0.846 0.343,1.677 1.189,1.864l15.265,3.378 -3.378,15.265c-0.187,0.846 0.343,1.677 1.189,1.864l13.739,3.04c0.846,0.187 1.677,-0.343 1.864,-1.189l3.378,-15.265 15.265,3.378c0.846,0.187 1.677,-0.343 1.864,-1.189l3.04,-13.739c0.187,-0.846 -0.343,-1.677 -1.189,-1.864l-15.265,-3.378 3.378,-15.265c0.187,-0.846 -0.343,-1.677 -1.189,-1.864z"
android:strokeColor="#00000000" android:strokeWidth="0.156345"/>
<path android:fillColor="#161616"
android:pathData="m159.161,55.86c-0.175,-0.039 -0.347,0.071 -0.386,0.245l-3.005,13.577c-0.039,0.175 0.071,0.347 0.246,0.386l1.804,0.399c0.175,0.039 0.347,-0.071 0.386,-0.246l3.005,-13.577c0.039,-0.175 -0.071,-0.347 -0.246,-0.385zM133.042,72.514c-0.175,-0.039 -0.347,0.071 -0.385,0.246l-0.399,1.804c-0.039,0.175 0.071,0.347 0.245,0.386l13.577,3.005c0.175,0.039 0.347,-0.071 0.386,-0.246l0.399,-1.804c0.039,-0.175 -0.071,-0.347 -0.246,-0.386zM164.042,79.375c-0.175,-0.039 -0.346,0.071 -0.385,0.246l-0.399,1.804c-0.039,0.175 0.071,0.347 0.245,0.386l13.577,3.005c0.175,0.039 0.347,-0.071 0.386,-0.246l0.399,-1.804c0.039,-0.175 -0.071,-0.347 -0.246,-0.385zM152.302,86.861c-0.175,-0.039 -0.347,0.071 -0.386,0.245l-3.005,13.577c-0.039,0.175 0.071,0.347 0.246,0.386l1.804,0.399c0.175,0.039 0.347,-0.071 0.385,-0.246l3.005,-13.577c0.039,-0.175 -0.071,-0.346 -0.246,-0.385z"
android:strokeColor="#00000000" android:strokeWidth="0.177122"/>
<path android:fillColor="#595959"
android:pathData="M277.793,47.399m-12.127,0a12.127,12.127 0,1 1,24.254 0a12.127,12.127 0,1 1,-24.254 0"
android:strokeColor="#00000000" android:strokeWidth="0.264583"/>
<path android:fillColor="#e13d3d"
android:pathData="m279.121,39.079 l-8.925,5.873 2.356,0.358 -0.954,6.281 10.992,1.67 0.954,-6.281 2.355,0.358z" android:strokeWidth="0.866323"/>
<path android:fillColor="#a4a4a4"
android:pathData="m277.752,33.216a14.185,14.185 0,0 0,-14.17 14.185,14.185 14.185,0 0,0 14.185,14.185 14.185,14.185 0,0 0,14.185 -14.185,14.185 14.185,0 0,0 -14.185,-14.185 14.185,14.185 0,0 0,-0.015 0zM277.738,35.071a12.341,12.341 0,0 1,0.032 0,12.341 12.341,0 0,1 12.341,12.341 12.341,12.341 135,0 1,-12.341 12.341,12.341 12.341,45 0,1 -12.341,-12.341 12.341,12.341 135,0 1,12.309 -12.341z"
android:strokeColor="#00000000" android:strokeWidth="0.309484"/>
<path android:fillColor="#00000000"
android:pathData="M186.734,0.378C186.939,7.02 186.384,8.646 180.417,9.829 172.296,11.092 158.567,6.412 157.607,18.172"
android:strokeColor="#ae0000" android:strokeLineCap="butt"
android:strokeLineJoin="miter" android:strokeWidth="3.00007"/>
<path android:fillColor="#FF000000"
android:pathData="m163.539,46.716c1.593,-0.011 2.887,-1.323 2.876,-2.915l-0.078,-11.584 1.448,-0.01 -0.039,-5.792 -5.831,-5.753 -0.02,-2.896 -8.688,0.059 0.02,2.896 -5.753,5.831 0.039,5.792 1.448,-0.01 0.078,11.584c0.011,1.593 1.308,2.887 2.915,2.876m11.564,-2.974 l-11.584,0.078 -0.078,-11.584 11.584,-0.078m-1.399,7.249 l-0.02,-2.896 -2.896,0.02 0.02,2.896m-2.896,0.02 l-0.02,-2.896 -2.896,0.02 0.02,2.896z" android:strokeWidth="0.616"/>
<path android:fillColor="#282828"
android:pathData="M102.13,77.513A15.875,15.875 0,0 0,87.722 94.729,15.875 15.875,0 0,0 104.937,109.139 15.875,15.875 0,0 0,119.348 91.926,15.875 15.875,0 0,0 102.136,77.513l0.208,2.347A13.519,13.519 0,0 1,117.001 92.134,13.519 13.519,0 0,1 104.729,106.792 13.519,13.519 0,0 1,90.069 94.521,13.519 13.519,0 0,1 102.339,79.86ZM102.411,80.676A12.7,12.7 0,0 0,90.885 94.448,12.7 12.7,0 0,0 104.657,105.976 12.7,12.7 0,0 0,116.185 92.206,12.7 12.7,0 0,0 102.416,80.675a12.7,12.7 0,0 0,-0 0l1.119,12.651z" android:strokeWidth="0.0105834"/>
<path android:fillColor="#66ff00"
android:pathData="m103.817,106.817c-2.662,0.056 -5.223,-0.667 -7.562,-2.136 -0.626,-0.393 -2.059,-1.584 -2.56,-2.127 -0.64,-0.694 -1.194,-1.429 -1.676,-2.223 -1.14,-1.877 -1.722,-3.654 -1.914,-5.841 -0.261,-2.98 0.416,-5.776 2.028,-8.373 0.473,-0.762 1.646,-2.159 2.325,-2.769 1.9,-1.706 4.022,-2.769 6.54,-3.277 0.563,-0.114 2.131,-0.252 2.705,-0.24 2.815,0.063 5.452,0.928 7.664,2.516 2.841,2.038 4.72,4.964 5.421,8.439 0.114,0.563 0.252,2.131 0.24,2.705 -0.057,2.57 -0.727,4.835 -2.074,7.015 -0.453,0.733 -1.637,2.16 -2.265,2.73 -2.045,1.858 -4.439,3.007 -7.148,3.432 -0.769,0.121 -0.91,0.133 -1.724,0.15zM106.511,105.694c3.9,-0.951 7.06,-3.598 8.686,-7.276 0.584,-1.321 0.944,-2.822 1.043,-4.349 0.036,-0.561 0.026,-0.878 -0.058,-1.843 -0.109,-1.248 -0.21,-1.781 -0.525,-2.771 -1.485,-4.667 -5.589,-8.102 -10.445,-8.744 -1.018,-0.134 -1.574,-0.141 -2.797,-0.033 -1.227,0.109 -1.76,0.211 -2.77,0.53 -3.044,0.963 -5.72,3.169 -7.262,5.988 -2.477,4.527 -1.994,10.062 1.23,14.097 0.997,1.248 2.416,2.433 3.849,3.214 1.811,0.987 3.877,1.52 5.982,1.544 0.713,0.008 2.347,-0.183 3.067,-0.359z"
android:strokeColor="#00000000" android:strokeWidth="0.0467722"/>
<path android:fillColor="#f81839"
android:pathData="m99.334,89.831a2.89,2.89 0,0 1,1.447 -3.823,2.89 2.89,0 0,1 3.823,1.447c0.154,0.34 0.542,0.487 0.882,0.334 0.34,-0.154 0.487,-0.542 0.334,-0.882l-0.274,-0.608 1.216,-0.548 0.274,0.608a2.001,2.001 0,0 1,-1.001 2.646,2.001 2.001,0 0,1 -2.646,-1.001 1.556,1.556 0,0 0,-2.058 -0.779,1.556 1.556,0 0,0 -0.779,2.058l1.013,-0.457 0.472,1.046c2.657,-0.359 5.347,1.042 6.506,3.612a6.225,6.225 0,0 1,-3.116 8.234,6.225 6.225,0 0,1 -8.234,-3.116c-1.159,-2.57 -0.428,-5.514 1.6,-7.267l-0.472,-1.046 1.013,-0.457m8.715,-3.93 l1.621,-0.731 0.366,0.811 -1.621,0.731 -0.366,-0.811m-3.163,-0.525 l-0.731,-1.621 0.811,-0.366 0.731,1.621 -0.811,0.366m1.687,-0.39 l0.632,-1.67 0.835,0.316 -0.632,1.67z" android:strokeWidth="0.889269"/>
<path android:fillColor="#be2929"
android:pathData="m33.867,164.243v5.355l0.017,0.004 -4.514,0.007 -4.514,-0.007 0.017,-0.004v-5.355l-3.704,0.001v5.355l-0.017,0.004 6.163,0.009 -6.046,0.009v0.006l8.101,-0.012 8.102,0.012v-0.006l-6.046,-0.009 6.163,-0.009 -0.017,-0.004v-5.355z" android:strokeWidth="2.19845"/>
<path android:fillColor="#cc3a3a"
android:pathData="m29.321,160.229c0,0 -4.452,4.006 -4.452,4.016l9,0z" android:strokeWidth="2.19845"/>
<path android:fillColor="#9e1e1e"
android:pathData="m29.322,160.229v0.001l0.002,0.001 -0.002,-0.001zM29.324,160.23c0.003,0.002 4.544,4.004 4.544,4.014 -2.32,0 -7.609,-0 -8.996,-0 0,-0.01 4.447,-4.011 4.449,-4.013 -0.002,0.001 -8.153,4.004 -8.153,4.014 7.893,0 11.4,-0 16.404,-0 0,-0.01 -8.246,-4.013 -8.249,-4.014z" android:strokeWidth="2.19845"/>
<path android:fillColor="#00c8fc"
android:pathData="m45.93,72.542c-4.816,-1.418 -10.031,2.204 -10.893,5.132 -3.163,10.72 -5.179,17.551 -8.193,27.819 -0.886,3.01 1.557,8.798 6.373,10.217l12.422,3.658L58.351,76.2Z" android:strokeWidth="1"/>
<path android:fillColor="#ec0000"
android:pathData="m60.293,76.772l-12.713,43.167l20.164,5.938L80.457,82.71Z" android:strokeWidth="1"/>
<path android:fillColor="#ffffff"
android:pathData="m40.341,100.513a2.159,2.159 61.41,0 0,-2.709 1.41,2.159 2.159,61.41 0,0 1.41,2.709 2.159,2.159 61.41,0 0,2.709 -1.409,2.159 2.159,61.41 0,0 -1.409,-2.709l-0.651,2.059zM45.137,97.821a2.159,2.159 61.41,0 0,-2.708 1.41,2.159 2.159,61.41 0,0 1.409,2.709 2.159,2.159 61.41,0 0,2.709 -1.409,2.159 2.159,61.41 0,0 -1.409,-2.709l-0.65,2.059zM37.769,95.651a2.159,2.159 61.41,0 0,-2.709 1.41,2.159 2.159,61.41 0,0 1.41,2.709 2.159,2.159 61.41,0 0,2.709 -1.409,2.159 2.159,61.41 0,0 -1.409,-2.709l-0.65,2.059zM42.566,92.958a2.159,2.159 61.41,0 0,-2.709 1.41,2.159 2.159,61.41 0,0 1.41,2.709 2.159,2.159 61.41,0 0,2.709 -1.409,2.159 2.159,61.41 0,0 -1.409,-2.709l-0.651,2.059z" android:strokeWidth="0.392613"/>
<path android:fillColor="#ffffff"
android:pathData="m46.549,79.292a4.5,4.5 109.546,0 1,3.044 5.588,4.5 4.5,115.109 0,1 -5.588,3.045A4.5,4.5 60.298,0 1,40.96 82.337,4.5 4.5,58.438 0,1 46.548,79.292" android:strokeWidth="0.272727"/>
<path android:fillColor="#ffffff"
android:pathData="m68.961,86.675 l-2.848,2.711l1.345,0.396L62.542,106.476l-2.477,-4.262c-0.14,-0.342 -0.189,-0.75 -0.088,-1.125 0.444,-1.506 0.707,-2.401 0.803,-2.73 0.702,-0.036 1.337,-0.5 1.547,-1.213 0.266,-0.902 -0.251,-1.849 -1.152,-2.114 -0.902,-0.266 -1.849,0.25 -2.115,1.152 -0.21,0.713 0.072,1.447 0.642,1.857l-0.795,2.698c-0.215,0.731 -0.04,1.616 0.287,2.242 -0.01,-0.017 -0.021,-0.036 0,0.001 0.009,0.014 2.628,4.522 2.628,4.522 0.14,0.341 0.188,0.749 0.087,1.123l-0.556,1.888c-1.321,-0.117 -2.586,0.708 -2.975,2.029 -0.444,1.507 0.418,3.088 1.924,3.531 1.507,0.444 3.088,-0.418 3.532,-1.925 0.389,-1.322 -0.227,-2.701 -1.402,-3.319l0.546,-1.855c0.001,-0.005 0.003,-0.009 0.004,-0.014l1.209,-4.104c0.119,-0.369 0.38,-0.684 0.683,-0.895 0,0 4.644,-2.368 4.659,-2.375 0.037,-0.019 0.018,-0.01 0,-0 0.614,-0.349 1.24,-0.998 1.456,-1.729l0.765,-2.6l1.095,0.322l0.962,-3.267l-3.267,-0.962l-0.962,3.267l1.094,0.322c0,0 -0.203,0.684 -0.776,2.631 -0.118,0.37 -0.38,0.686 -0.683,0.898l-4.392,2.24L68.538,90.099l1.348,0.397z" android:strokeWidth="0.0680452"/>
<path android:fillColor="#000000"
android:pathData="m58.363,76.203c-0.006,-0.002 -0.013,0.002 -0.015,0.008L45.642,119.356c-0.002,0.006 0.002,0.013 0.008,0.015l1.919,0.565c0.006,0.002 0.013,-0.002 0.015,-0.008L60.29,76.783c0.002,-0.006 -0.002,-0.013 -0.008,-0.015z" android:strokeWidth="0.264583"/>
<path android:fillColor="#ff8c3c"
android:pathData="m214.351,101.119c0,-0 -0.279,2.283 -1.892,2.676l-3.487,1.167c-0.856,0.318 -1.73,2.384 -2.513,4.895 0.332,-0.2 0.659,-0.399 1.013,-0.601 0.658,-0.375 3.452,-0.788 5.514,-1.601 1.919,-0.756 3.327,-3.522 1.365,-6.536zM206.458,109.857c-1.705,1.027 -3.075,2.087 -3.421,3.789 -0.193,0.949 0.717,2.058 0.821,7.275 0,0 1.134,-6.359 2.6,-11.064zM216.509,104.874c0,0 -0.205,2.87 -1.818,3.264l-3.914,0.992c-2.46,0.915 -4.571,2.751 -4.974,4.728 -0.55,2.697 -1.125,5.357 -1.125,5.357 1.103,-1.191 1.374,-3.28 4.305,-4.662 0.674,-0.318 3.547,-1.269 5.61,-2.082 1.919,-0.756 3.288,-4.725 1.916,-7.597zM215.922,112.952c0,0 -1.157,0.895 -2.256,1.014 -2.326,0.26 -5.179,1.263 -6.403,2.717 -2.373,2.819 -2.575,4.398 -2.575,4.398 0,0 3.003,0.776 5.974,-0.531 0.679,-0.298 5.456,-3.705 5.26,-7.598z"
android:strokeColor="#00000000" android:strokeWidth="1.18854"/>
<path android:fillColor="#d3d3d3"
android:pathData="m48.409,51.364c-0.951,2.75 0.508,5.749 3.258,6.7l15.274,5.28c0.351,0.121 0.602,0.143 0.801,0.112 0.211,-0.033 0.376,-0.091 0.538,-0.146 0.325,-0.111 0.638,-0.231 0.951,-0.296 0.626,-0.128 1.146,-0.169 1.941,0.727l-0.03,-0.035c0.803,1.004 2.241,1.554 5.2,2.661 2.959,1.107 7.426,2.621 14.049,4.905l0.576,-1.673C84.341,67.314 79.872,65.795 76.964,64.707 74.057,63.619 72.696,62.813 72.526,62.6l-0.014,-0.02 -0.015,-0.016c-1.164,-1.311 -2.623,-1.491 -3.62,-1.286 -0.416,0.085 -0.643,0.424 -1.006,0.298l0.001,-0.002 -15.559,-5.378c-1.719,-0.594 -2.631,-2.469 -2.037,-4.187 0.594,-1.719 2.469,-2.63 4.188,-2.036l13.069,4.518c0.687,0.238 1.052,0.987 0.815,1.675 -0.238,0.687 -0.988,1.052 -1.675,0.814l-11.825,-4.087 -0.645,1.867 11.825,4.087c1.719,0.594 3.594,-0.317 4.188,-2.036 0.594,-1.719 -0.318,-3.593 -2.037,-4.187l-13.069,-4.518c-2.75,-0.95 -5.749,0.508 -6.7,3.258z" android:strokeWidth="1.31699"/>
</vector>

View File

@ -1,9 +1,17 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="135"
android:endColor="#00718d"
android:centerColor="#0090b4"
android:startColor="@color/colorAccent"
android:type="linear" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle">
<gradient
android:angle="135"
android:endColor="#d87dff"
android:centerColor="#087bb9"
android:startColor="#904dfa"
android:type="linear" />
</shape>
</item>
<item
android:drawable="@drawable/ic_game_pattern" />
</layer-list>

View File

@ -15,11 +15,13 @@
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_width="@dimen/nav_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
app:itemTextColor="@color/drawer_item"
app:itemIconTint="@color/drawer_item"
/>
</androidx.drawerlayout.widget.DrawerLayout>

View File

@ -48,7 +48,7 @@
android:inputType="number" />
</LinearLayout>
<Switch
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/autoDetectIpSW"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -11,28 +11,32 @@
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<!--
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@drawable/ic_logo_android" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@drawable/ic_logo_android" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/app_name"
android:textSize="18sp"
android:shadowColor="@color/defaultTextShadow"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="0.01"
app:fontFamily="@font/play"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/app_name"
android:textSize="18sp"
app:fontFamily="@font/play"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<!--
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nav_header_subtitle" />
-->
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nav_header_subtitle" />
-->
</LinearLayout>

View File

@ -4,44 +4,43 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
app:cardElevation="@dimen/cardview_default_elevation">
android:layout_margin="2dp">
<androidx.constraintlayout.widget.ConstraintLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_margin="3dp"
android:orientation="vertical">
<CheckedTextView
android:id="@+id/checkedCTV"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/background_light"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:text="Name Long" />
<TextView
android:id="@+id/sizeTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/checkedCTV"
app:layout_constraintTop_toBottomOf="@+id/checkedCTV"
app:layout_constraintVertical_bias="0.0" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:id="@+id/statusTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/sizeTV"
app:layout_constraintTop_toBottomOf="@+id/checkedCTV"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/sizeTV"
android:layout_marginRight="2dp"
android:layout_marginEnd="2dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST" />
<TextView
android:id="@+id/statusTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(test)" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#ce0000</color>
<color name="colorPrimaryDark">#b20101</color>
<color name="colorAccent">#00c8fc</color>
<color name="lightAccent">#52acff</color>
<color name="goldReliable">#eea11e</color>
<color name="highlightSelected">#00c8fc</color>
<color name="defaultTextColor">#ffffff</color>
<color name="defaultTextShadow">#1c1c1c</color>
</resources>

View File

@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#ec0000</color>
<color name="colorPrimaryDark">#ce0000</color>
<color name="colorPrimary">#ce0000</color>
<color name="colorPrimaryDark">#b20101</color>
<color name="colorAccent">#00c8fc</color>
<color name="lightAccent">#52acff</color>
<color name="goldReliable">#eea11e</color>
<color name="highlightSelected">#ce0000</color>
<color name="defaultTextColor">#000000</color>
<color name="defaultTextShadow">#1c1c1c</color>
</resources>

View File

@ -3,6 +3,7 @@
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="nav_header_vertical_spacing">8dp</dimen>
<dimen name="nav_header_height">150dp</dimen>
<dimen name="nav_header_height">170dp</dimen>
<dimen name="nav_drawer_width">304dp</dimen>
<dimen name="fab_margin">16dp</dimen>
</resources>

View File

@ -1,10 +1,9 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
@ -14,9 +13,9 @@
<!--######################################### -->
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
<item name="fontFamily">@font/play</item>
</style>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight" />
</resources>