initial commit

This commit is contained in:
HeiaSamahi
2018-12-12 11:46:29 +01:00
commit eb12f3cb41
43 changed files with 25172 additions and 0 deletions

7
.editorconfig Normal file
View File

@ -0,0 +1,7 @@
[*.{js,jsx,ts,tsx,vue}]
indent_style = tab
indent_size = 4
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true
root = true

18
.eslintrc.js Normal file
View File

@ -0,0 +1,18 @@
module.exports = {
root: true,
env: {
node: true
},
'extends': [
'plugin:vue/essential',
'@vue/standard'
],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'semi': 2
},
parserOptions: {
parser: 'babel-eslint'
}
};

149
.gitignore vendored Normal file
View File

@ -0,0 +1,149 @@
# ---> Node
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
node_modules
# ---> Lua
# Compiled Lua sources
luac.out
# luarocks build files
*.src.rock
*.zip
*.tar.gz
# Object files
*.o
*.os
*.ko
*.obj
*.elf
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
*.def
*.exp
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# ---> VisualStudioCode
.settings
# ---> Windows
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
# ---> macOS
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# ---> Linux
*~
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# Vue
/dist/
yarn-debug.log*
yarn-error.log*
.env.local
.env.*.local
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
certificates/

1
.jshintignore Normal file
View File

@ -0,0 +1 @@
frontend/dist/*

3
.jshintrc Normal file
View File

@ -0,0 +1,3 @@
{
"esversion": 6
}

8
LICENSE Normal file
View File

@ -0,0 +1,8 @@
MIT License
Copyright (c) 2019 Heia Samahi, HeiKyu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# HIVE
HIVE is a by clustorio inspired server cluster for factorio.

100
backend/index.js Normal file
View File

@ -0,0 +1,100 @@
const express = require('express');
const https = require('https');
const http = require('http');
const fs = require('fs');
const chokidar = require('chokidar');
const watcher = chokidar.watch('./app');
const privateKey = fs.readFileSync('certificates/private.key').toString();
const certificate = fs.readFileSync('certificates/public.pem').toString();
const production = process.env.NODE_ENV === 'production';
// This line is from the Node.js HTTPS documentation.
const options = {
key: privateKey,
cert: certificate
};
// Create a service (the app object is just a callback).
const app = express();
// File watcher for development reload
if (!production) {
watcher.on('ready', function () {
watcher.on('all', function () {
console.log("Clearing /dist/ module cache from server");
Object.keys(require.cache).forEach(function (id) {
if (/[\/\\]app[\/\\]/.test(id)) delete require.cache[id];
});
});
});
}
app.use(express.static(require('path').join(__dirname, 'src')));
app.use(function (req, res, next) {
res.sendFile(require('path').join(__dirname, 'index.html'));
//require('./index')(req, res, next);
});
//Create http server and redirect to https.
http.createServer(function (req, res) {
res.writeHead(301, {
"Location": "https://" + req.headers.host + req.url
});
res.end();
}).listen(80);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(443);
// routes
app.get('/hey', function (req, res) {
sendToClient("HO!", res, 200, "text/plain");
});
function getHeader(type) {
return {
"Content-Type": type
};
}
function sendToClient(data, res, code, type) {
res.writeHead(code, getHeader(type));
(type === "text/html" || type === "text") ? res.end(data, "utf-8"): res.end(data);
}
const convict = require('convict');
const config = convict({
db: {
name: {
format: String,
default: ''
},
synchro: {
active: {
format: 'Boolean',
default: false
},
remote_url: {
format: 'url',
default: 'http://localhost:8080/'
}
}
},
secret: {
doc: 'Secret used for session cookies and CSRF tokens',
format: '*',
default: '',
sensitive: true
}
});
//config.loadFile("shared/const.json");
const schema = config.getSchemaString();
require('fs').writeFileSync('shared/const.json', config.toString());

2417
backend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

41
backend/package.json Normal file
View File

@ -0,0 +1,41 @@
{
"name": "factorio_hive_backend",
"version": "0.0.1",
"description": "HIVE is an by clustorio inspiered server cluster for factorio.",
"main": "index.js",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "http://heia.heikyu.de:8930/HeiaSamahi/HIVE.git"
},
"keywords": [
"factorio"
],
"author": "Heia Samahi",
"license": "MIT",
"engines": {
"node": "^10.14.1"
},
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
"chokidar": "^2.0.4",
"connect-flash": "^0.1.1",
"convict": "^4.4.0",
"cookie-parser": "^1.4.3",
"express": "^4.16.4",
"express-messages": "^1.0.1",
"express-session": "^1.15.6",
"express-validator": "^5.3.0",
"passport": "^0.4.0",
"passport-http": "^0.3.0",
"passport-local": "1.0.0",
"rcon-client": "^3.1.4",
"socket.io": "^2.2.0",
"socket.io-client": "^2.2.0",
"underscore": "^1.9.1"
}
}

3
frontend/.browserslistrc Normal file
View File

@ -0,0 +1,3 @@
> 1%
last 2 versions
not ie <= 8

18
frontend/.eslintrc.js Normal file
View File

@ -0,0 +1,18 @@
module.exports = {
root: true,
env: {
node: true
},
'extends': [
'plugin:vue/essential',
'@vue/standard'
],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'semi': 2
},
parserOptions: {
parser: 'babel-eslint'
}
};

29
frontend/README.md Normal file
View File

@ -0,0 +1,29 @@
# factorio_hive_frontend
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Run your tests
```
npm run test
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

5
frontend/babel.config.js Normal file
View File

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/app'
]
};

11350
frontend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

32
frontend/package.json Normal file
View File

@ -0,0 +1,32 @@
{
"name": "factorio_hive_frontend",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"vue": "^2.5.17",
"vue-router": "^3.0.1",
"vuetify": "^1.3.0",
"vuex": "^3.0.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.2.0",
"@vue/cli-plugin-eslint": "^3.2.0",
"@vue/cli-service": "^3.2.0",
"@vue/eslint-config-standard": "^4.0.0",
"babel-eslint": "^10.0.1",
"eslint": "^5.8.0",
"eslint-plugin-vue": "^5.0.0-0",
"style-resources-loader": "^1.2.1",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
"vue-cli-plugin-style-resources-loader": "^0.1.3",
"vue-cli-plugin-vuetify": "^0.4.6",
"vue-template-compiler": "^2.5.17",
"vuetify-loader": "^1.0.5"
}
}

View File

@ -0,0 +1,5 @@
module.exports = {
plugins: {
autoprefixer: {}
}
}

BIN
frontend/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>factorio_hive_frontend</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons">
</head>
<body>
<noscript>
<strong>We're sorry but factorio_hive_frontend doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

96
frontend/src/App.vue Normal file
View File

@ -0,0 +1,96 @@
<template>
<div id="app">
<v-app id="inspire" dark>
<!-- <v-navigation-drawer clipped fixed v-model="drawer" app>
<v-list dense>
<v-list-tile @click>
<v-list-tile-action>
<v-icon>dashboard</v-icon>
</v-list-tile-action>
<v-list-tile-content>
<v-list-tile-title>Dashboard</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-tile @click>
<v-list-tile-action>
<v-icon>settings</v-icon>
</v-list-tile-action>
<v-list-tile-content>
<v-list-tile-title>Settings</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
</v-list>
</v-navigation-drawer>-->
<!-- <v-toolbar app fixed clipped-left>
<v-toolbar-side-icon @click.stop="drawer = !drawer"></v-toolbar-side-icon>
<v-toolbar-title>Application</v-toolbar-title>
</v-toolbar>-->
<v-content>
<!-- <v-container fluid fill-height>
<v-layout justify-center align-center>
<v-flex shrink>
<v-tooltip right>
<v-btn icon large :href="source" target="_blank" slot="activator">
<v-icon large>code</v-icon>
</v-btn>
<span>Source</span>
</v-tooltip>
</v-flex>
</v-layout>
</v-container>-->
<!-- <HelloWorld/> -->
<Spinner v-if="appIsLoading"/>
<!-- <transition name="fade">
<Spinner v-if="appIsLoading"/>
</transition> -->
</v-content>
<!-- <v-footer app fixed>
<span>&copy; 2017</span>
</v-footer>-->
</v-app>
</div>
<!-- <v-app>
<v-toolbar app>
<v-toolbar-title class="headline text-uppercase">
<span>Vuetify</span>
<span class="font-weight-light">MATERIAL DESIGN</span>
</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn flat href="https://github.com/vuetifyjs/vuetify/releases/latest" target="_blank">
<span class="mr-2">Latest Release</span>
</v-btn>
</v-toolbar>
<v-content>
<HelloWorld/>
</v-content>
</v-app>-->
</template>
<script>
import HelloWorld from "./components/HelloWorld";
import Spinner from "./components/Spinner";
import { mapGetters } from "vuex";
export default {
name: "App",
components: {
Spinner
},
computed: {
...mapGetters('application', {
appIsLoading: 'isLoading'
})
},
data() {
return {};
}
};
</script>
<style >
/* @import url("./assets/css/default"); */
</style>

View File

@ -0,0 +1 @@
@import url("fadeAnimation.css");

View File

@ -0,0 +1,31 @@
.fade-enter {}
.fade-enter-active {
animation: fade-out 1s ease-out;
}
.fade-leave {}
.fade-leave-active {
animation: fade-out 1s ease-out;
}
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fade-out {
from {
opacity: 1;
}
to {
opacity: 0;
}
}

View File

@ -0,0 +1 @@
@import url("defaultAnimations.css");

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.5 100"><defs><style>.cls-1{fill:#1697f6;}.cls-2{fill:#7bc6ff;}.cls-3{fill:#1867c0;}.cls-4{fill:#aeddff;}</style></defs><title>Artboard 46</title><polyline class="cls-1" points="43.75 0 23.31 0 43.75 48.32"/><polygon class="cls-2" points="43.75 62.5 43.75 100 0 14.58 22.92 14.58 43.75 62.5"/><polyline class="cls-3" points="43.75 0 64.19 0 43.75 48.32"/><polygon class="cls-4" points="64.58 14.58 87.5 14.58 43.75 100 43.75 62.5 64.58 14.58"/></svg>

After

Width:  |  Height:  |  Size: 539 B

View File

@ -0,0 +1,509 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{enable-background:new ;}
.st1{clip-path:url(#SVGID_2_);enable-background:new ;}
.st2{fill:#462212;}
.st3{clip-path:url(#SVGID_4_);enable-background:new ;}
.st4{fill:#492313;}
.st5{fill:#4C2414;}
.st6{fill:#4E2614;}
.st7{fill:#512715;}
.st8{fill:#542816;}
.st9{fill:#562A16;}
.st10{fill:#592B17;}
.st11{fill:#5C2C18;}
.st12{fill:#5E2D19;}
.st13{fill:#612F19;}
.st14{fill:#64301A;}
.st15{fill:#67311B;}
.st16{fill:#69331B;}
.st17{fill:#6C341C;}
.st18{fill:#6F351D;}
.st19{fill:#71371D;}
.st20{fill:#74381E;}
.st21{fill:#77391F;}
.st22{fill:#7A3B20;}
.st23{fill:#7C3C20;}
.st24{fill:#7F3D21;}
.st25{fill:#823E22;}
.st26{fill:#844022;}
.st27{fill:#874123;}
.st28{fill:#95583D;}
.st29{clip-path:url(#SVGID_6_);enable-background:new ;}
.st30{clip-path:url(#SVGID_8_);enable-background:new ;}
.st31{clip-path:url(#SVGID_10_);enable-background:new ;}
.st32{clip-path:url(#SVGID_12_);enable-background:new ;}
.st33{clip-path:url(#SVGID_14_);enable-background:new ;}
.st34{clip-path:url(#SVGID_16_);enable-background:new ;}
.st35{clip-path:url(#SVGID_18_);enable-background:new ;}
.st36{clip-path:url(#SVGID_20_);enable-background:new ;}
.st37{clip-path:url(#SVGID_22_);enable-background:new ;}
.st38{clip-path:url(#SVGID_24_);enable-background:new ;}
.st39{clip-path:url(#SVGID_26_);enable-background:new ;}
.st40{clip-path:url(#SVGID_28_);enable-background:new ;}
.st41{clip-path:url(#SVGID_30_);enable-background:new ;}
.st42{fill:#75381E;}
.st43{clip-path:url(#SVGID_32_);enable-background:new ;}
.st44{clip-path:url(#SVGID_34_);enable-background:new ;}
.st45{clip-path:url(#SVGID_36_);enable-background:new ;}
.st46{clip-path:url(#SVGID_38_);enable-background:new ;}
</style>
<g>
<g>
<g>
<g class="st0">
<g class="st0">
<defs>
<path id="SVGID_1_" class="st0" d="M233.2,427.8c0.1-0.2,0.2-0.3,0.4-0.8c0,0.1,0.4,0.3,0.4,0.3
C233.9,427.4,233.5,427.5,233.2,427.8z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g class="st1">
<path class="st2" d="M233.3,427.8l0.2-0.7c0,0.1,0.4,0.3,0.4,0.3l-0.7,0.3C233.3,427.9,233.1,427.8,233.3,427.8"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_3_" class="st0" d="M361.9,397.2c0.1-0.4,0.1-0.7-0.2-1.3c-0.1-0.3-0.4-0.6-0.5-0.7c-0.3-0.4-0.6-0.7-0.8-1
c0.1,0.1,0.8,0,2.3-0.2C362.7,393.9,361.9,397.2,361.9,397.2z"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" style="overflow:visible;"/>
</clipPath>
<g class="st3">
<path class="st2" d="M362.4,396.6l-1.9-2.5c0,0.1,0.2,0.1,0.6,0l1.1,2.9C362.1,396.9,362.2,396.8,362.4,396.6"/>
<polyline class="st4" points="362.1,397 361,394.2 361,394.2 362,397 362.1,397 "/>
<polyline class="st5" points="362,397 361,394.2 361,394.2 362,397 362,397 "/>
<polyline class="st6" points="362,397 361,394.2 361,394.2 362,397 362,397 "/>
<polyline class="st7" points="362,397 361,394.2 361,394.2 362,397.1 362,397 "/>
<polyline class="st8" points="362,397.1 361,394.2 361,394.2 362,397.1 362,397.1 "/>
<polyline class="st9" points="362,397.1 361,394.2 361,394.2 362,397.1 362,397.1 "/>
<polyline class="st10" points="362,397.1 361,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st11" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st12" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st13" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st14" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st15" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st16" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st17" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st18" points="362,397.1 361.1,394.2 361.1,394.2 362,397.1 362,397.1 "/>
<polyline class="st19" points="362,397.1 361.1,394.2 361.1,394.1 362,397.1 362,397.1 "/>
<polyline class="st20" points="362,397.1 361.1,394.1 361.1,394.1 362,397.1 362,397.1 "/>
<polyline class="st21" points="362,397.1 361.1,394.1 361.1,394.1 362,397.1 362,397.1 "/>
<polyline class="st22" points="362,397.1 361.1,394.1 361.2,394.1 362,397.1 362,397.1 "/>
<polyline class="st23" points="362,397.1 361.2,394.1 361.2,394.1 362,397.1 362,397.1 "/>
<polyline class="st24" points="362,397.1 361.2,394.1 361.2,394.1 362,397.1 362,397.1 "/>
<polyline class="st25" points="362,397.1 361.2,394.1 361.2,394.1 362,397.1 362,397.1 "/>
<polyline class="st26" points="362,397.1 361.2,394.1 361.2,394.1 362,397.1 362,397.1 "/>
<polyline class="st27" points="362,397.1 361.2,394.1 361.2,394.1 362,397.1 362,397.1 "/>
<path class="st28" d="M362,397.1l-0.8-2.9c0.4-0.1,0.9-0.1,1.5-0.2l-0.8,3.3C361.9,397.2,362,397.2,362,397.1"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_5_" class="st0" d="M152.3,395.9c0-0.6,0-1.2-0.4-2.3c0,0,0.1,0,0.4,0c0.5,0,0.8,0.1,0.8,0.1c0,0,0,0,0,0
C152.8,394.1,152.3,395,152.3,395.9z"/>
</defs>
<clipPath id="SVGID_6_">
<use xlink:href="#SVGID_5_" style="overflow:visible;"/>
</clipPath>
<g class="st29">
<path class="st2" d="M152.6,395.8l-0.8-2.2c0,0,0.1,0,0.4,0c0.5,0,0.8,0.1,0.8,0.1l-1.2,2c0.3,0.2,0.4,0.3,0.4,0.2
C152.3,395.9,152.4,395.9,152.6,395.8"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_7_" class="st0" d="M119.8,360.9c0.1,0,0.2,0,0.4-0.1c0,0,0,0.1,0,0.1c0,0,0,0,0,0
C120.1,360.9,120,360.9,119.8,360.9z"/>
</defs>
<clipPath id="SVGID_8_">
<use xlink:href="#SVGID_7_" style="overflow:visible;"/>
</clipPath>
<g class="st30">
<path class="st2" d="M119.9,360.9l0.4-0.1c0,0,0,0.1,0,0.1L119.9,360.9C119.8,360.9,119.8,360.9,119.9,360.9"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_9_" class="st0" d="M394.8,361c-0.2,0-0.4,0-0.9,0.2c0.1,0,0-0.6,0-0.6C394.2,360.8,394.5,361,394.8,361z"/>
</defs>
<clipPath id="SVGID_10_">
<use xlink:href="#SVGID_9_" style="overflow:visible;"/>
</clipPath>
<g class="st31">
<path class="st2" d="M394.7,360.9l-0.8,0.3c0.1,0,0-0.6,0-0.6l0.7,0.5C394.9,360.9,394.9,361.1,394.7,360.9"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_11_" class="st0" d="M427.2,279.8L427.2,279.8c-0.2,0,0.3-0.4,0.2-0.4c0,0,0,0,0,0c0,0,0,0.1-0.1,0.2
C427.2,279.7,427.1,279.8,427.2,279.8C427.1,279.8,427.2,279.8,427.2,279.8z"/>
</defs>
<clipPath id="SVGID_12_">
<use xlink:href="#SVGID_11_" style="overflow:visible;"/>
</clipPath>
<g class="st32">
<path class="st2" d="M427.2,279.8L427.2,279.8c-0.2,0,0.3-0.4,0.2-0.4l0,0.1C427.5,279.5,427.1,279.8,427.2,279.8"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_13_" class="st0" d="M427.2,279.8L427.2,279.8c-0.3-15.4-0.3-30.7-0.1-46.1l5,0.1c-0.2,15.3-0.2,30.7,0,46
c0,3.3-1.2,4.1-4.2,4.6c-14.5,2.4-28.9,5.1-43.3,7.5c-2.8,0.5-4.3,1.3-5.1,4.3c-1.8,6.7-4.6,13.2-8,19.4
c-1.5,2.7-1.4,4.6,0.5,7.1c8.7,11.8,17.2,23.8,25.9,35.6c1.8,2.4,1.9,3.9-0.4,6.1c-11.1,10.8-22,21.9-32.9,32.8
c-0.8,0.8-1.4,1.9-3,2.1l0.5-1.9c0.1-0.4,0.1-0.7-0.2-1.3c-0.1-0.3-0.4-0.6-0.5-0.7c-0.3-0.4-0.6-0.7-0.8-1
c-0.1-0.1,0.2-0.3,0.5-0.7c11-10.9,21.8-22,33-32.8c0,0,0,0,0,0c0.3,0.2,0.6,0.4,0.9,0.4c-0.2,0-0.4,0-0.9,0.2
c0,0,0,0-0.1-0.1c-8.7-11.8-17.2-23.8-25.9-35.5c-3.2-4.2-3.3-8.1-0.8-12.5c3.2-5.8,5.8-11.9,7.5-18.2
c1.4-5.4,4.7-7.2,9.1-7.9c14.4-2.4,28.8-5.1,43.3-7.5c0.2-0.1,0.3-0.1,0.3-0.1c0,0,0,0.1-0.1,0.2
C427.2,279.7,427.1,279.8,427.2,279.8C427.1,279.8,427.2,279.8,427.2,279.8z"/>
</defs>
<clipPath id="SVGID_14_">
<use xlink:href="#SVGID_13_" style="overflow:visible;"/>
</clipPath>
<g class="st33">
<path class="st28" d="M427.1,233.7l5,0.1c-0.2,15.3-0.2,30.7,0,46c0,3.3-1.2,4.1-4.2,4.6c-14.5,2.4-28.9,5.1-43.3,7.5
c-2.8,0.5-4.3,1.3-5.1,4.3c-1.8,6.7-4.6,13.2-8,19.4c-1.5,2.7-1.4,4.6,0.5,7.1c8.7,11.8,17.2,23.8,25.9,35.6
c1.8,2.4,1.9,3.9-0.4,6.1c-11.1,10.8-22,21.9-32.9,32.8c-0.6,0.6-1,1.3-1.8,1.7l-1.7-4.6c-0.9,0.1-0.7-0.1,0-0.7
c11-10.9,21.8-22,33-32.8c0-0.2,0,0.9-0.1,0.4c-8.7-11.8-17.2-23.8-25.9-35.5c-3.2-4.2-3.3-8.1-0.8-12.5
c3.2-5.8,5.8-11.9,7.5-18.2c1.4-5.4,4.7-7.2,9.1-7.9c14.4-2.4,28.8-5.1,43.3-7.5c0.7-0.3-0.2,0.3,0,0.4
C426.9,264.4,426.9,249.1,427.1,233.7"/>
<polyline class="st27" points="361,394.2 362.7,398.7 362.7,398.7 361,394.2 361,394.2 "/>
<polyline class="st26" points="361,394.2 362.7,398.7 362.7,398.7 361,394.2 361,394.2 "/>
<polyline class="st25" points="361,394.2 362.7,398.7 362.7,398.7 361,394.2 361,394.2 "/>
<polyline class="st24" points="361,394.2 362.7,398.7 362.6,398.7 361,394.2 361,394.2 "/>
<polyline class="st23" points="361,394.2 362.6,398.7 362.6,398.7 361,394.2 361,394.2 "/>
<polyline class="st22" points="361,394.2 362.6,398.7 362.6,398.7 361,394.2 361,394.2 "/>
<polyline class="st21" points="361,394.2 362.6,398.7 362.6,398.7 361,394.2 361,394.2 "/>
<polyline class="st20" points="361,394.2 362.6,398.7 362.6,398.8 361.1,394.2 361,394.2 "/>
<polyline class="st19" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st18" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st17" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st16" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st15" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st14" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st13" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st12" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.2 361.1,394.2 "/>
<polyline class="st11" points="361.1,394.2 362.6,398.8 362.6,398.8 361.1,394.1 361.1,394.2 "/>
<polyline class="st10" points="361.1,394.1 362.6,398.8 362.6,398.8 361.1,394.1 361.1,394.1 "/>
<polyline class="st9" points="361.1,394.1 362.6,398.8 362.5,398.8 361.1,394.1 361.1,394.1 "/>
<polyline class="st8" points="361.1,394.1 362.5,398.8 362.5,398.8 361.2,394.1 361.1,394.1 "/>
<polyline class="st7" points="361.2,394.1 362.5,398.8 362.5,398.8 361.2,394.1 361.2,394.1 "/>
<polyline class="st6" points="361.2,394.1 362.5,398.8 362.5,398.8 361.2,394.1 361.2,394.1 "/>
<polyline class="st5" points="361.2,394.1 362.5,398.8 362.5,398.8 361.2,394.1 361.2,394.1 "/>
<polyline class="st4" points="361.2,394.1 362.5,398.8 362.5,398.8 361.2,394.1 361.2,394.1 "/>
<path class="st2" d="M361.2,394.1l1.3,4.7c-0.3,0.1-0.6,0.3-1,0.3l1.3-5.2C362.1,394,361.6,394.1,361.2,394.1"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_15_" class="st0" d="M427.8,233.2c-0.1,0.1-0.3,0.3-0.5,0.7c0,0-0.2-0.4-0.3-0.4
C427.3,233.5,427.6,233.4,427.8,233.2z"/>
</defs>
<clipPath id="SVGID_16_">
<use xlink:href="#SVGID_15_" style="overflow:visible;"/>
</clipPath>
<g class="st34">
<path class="st2" d="M427.7,233.2l-0.3,0.7c0,0-0.2-0.4-0.3-0.4l0.7-0.2C427.8,233.1,427.9,233.3,427.7,233.2"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_17_" class="st0" d="M393.5,152.5c-0.1,0-0.2,0-0.4,0.1c0,0,0.1-0.1,0-0.1
C393.4,152.5,393.4,152.5,393.5,152.5z"/>
</defs>
<clipPath id="SVGID_18_">
<use xlink:href="#SVGID_17_" style="overflow:visible;"/>
</clipPath>
<g class="st35">
<path class="st2" d="M393.5,152.5l-0.3,0.1c0,0,0.1-0.1,0-0.1L393.5,152.5C393.6,152.5,393.5,152.5,393.5,152.5"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_19_" class="st0" d="M360.1,120.3l0.3,0.4c0,0,0,0.1,0,0.1C360.4,120.6,360.2,120.4,360.1,120.3z"/>
</defs>
<clipPath id="SVGID_20_">
<use xlink:href="#SVGID_19_" style="overflow:visible;"/>
</clipPath>
<g class="st36">
<path class="st2" d="M360.1,120.3l0.3,0.4c0,0,0,0.1,0,0.1L360.1,120.3C360.2,120.3,360.1,120.3,360.1,120.3"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_21_" class="st0" d="M360.4,120.7C360.4,120.7,360.5,120.7,360.4,120.7c-0.1-0.1-0.2-0.2-0.3-0.4
C360.2,120.4,360.4,120.5,360.4,120.7z"/>
</defs>
<clipPath id="SVGID_22_">
<use xlink:href="#SVGID_21_" style="overflow:visible;"/>
</clipPath>
<g class="st37">
<path class="st28" d="M360.4,120.7l-0.3-0.4c0,0,0,0.1,0.1,0.1L360.4,120.7C360.5,120.7,360.4,120.7,360.4,120.7"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_23_" class="st0" d="M152.8,117.6c0.1,0.6,0.3,1.2,0.9,2.1c0,0-0.3,0.1-0.9,0.1c-0.3,0-0.5,0-0.5,0
c0,0,0,0,0,0C152.5,119.1,152.8,118.4,152.8,117.6z"/>
</defs>
<clipPath id="SVGID_24_">
<use xlink:href="#SVGID_23_" style="overflow:visible;"/>
</clipPath>
<g class="st38">
<path class="st2" d="M152.5,117.8l1.2,1.8c0,0-0.3,0.1-0.9,0.1c-0.3,0-0.5,0-0.5,0l0.8-2c-0.2-0.1-0.3-0.1-0.3-0.1
C152.8,117.6,152.7,117.6,152.5,117.8"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_25_" class="st0" d="M233.1,86.1c0.2,0.2,0.3,0.3,0.8,0.5c-0.1,0-0.5,0.3-0.5,0.3
C233.4,86.5,233.3,86.3,233.1,86.1z"/>
</defs>
<clipPath id="SVGID_26_">
<use xlink:href="#SVGID_25_" style="overflow:visible;"/>
</clipPath>
<g class="st39">
<path class="st2" d="M233.2,86.3l0.8,0.4c-0.1,0-0.5,0.3-0.5,0.3l-0.1-0.8C233,86.1,233.2,85.9,233.2,86.3"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_27_" class="st0" d="M280.1,86.2c-0.1,0.1-0.2,0.4-0.3,0.8c0,0-0.3-0.3-0.4-0.3c0,0,0,0,0,0
C279.7,86.5,279.9,86.4,280.1,86.2z"/>
</defs>
<clipPath id="SVGID_28_">
<use xlink:href="#SVGID_27_" style="overflow:visible;"/>
</clipPath>
<g class="st40">
<path class="st2" d="M279.9,86.2l-0.1,0.8c0,0-0.3-0.3-0.4-0.3l0.7-0.4C280,86,280.1,86.2,279.9,86.2"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_29_" class="st0" d="M432.1,233.8c0-3.1-0.9-4.3-4-4.8c-14.5-2.2-28.9-4.8-43.4-6.9c-3.2-0.5-4.5-1.8-5.3-4.7
c-1.9-6.6-4.5-12.9-7.8-18.9c-1.5-2.7-1.4-4.6,0.4-7.1c8.5-11.8,16.6-23.8,25-35.5c2-2.8,2.3-4.4-0.4-7
c-10.7-10.3-21.2-20.8-31.4-31.4c-1.5-1.6-2.7-2.4-4-2.4c-1.1,0-2.2,0.5-3.6,1.6c-11.2,8.4-22.7,16.3-33.9,24.7
c-1.7,1.2-3.1,2-4.7,2c-1.1,0-2.3-0.4-3.7-1.2c-5.8-3.3-12-5.9-18.4-7.6c-3.1-0.8-4.5-2.3-5.1-5.6c-2.3-14.3-5-28.5-7.3-42.8
c-0.5-3-1.4-4.1-4.7-4.1c-7.6,0.1-15.1,0.1-22.7,0.1c-7.8,0-15.5,0-23.5-0.1c-3,0-4.1,1-4.6,4.1c-2.2,14.3-4.7,28.6-6.8,42.9
c-0.4,2.8-1.4,4.3-4.2,5.2c-6.6,1.9-13,4.3-18.9,7.7c-1.5,0.8-2.7,1.2-3.9,1.2c-1.4,0-2.9-0.6-4.5-1.8
c-11.5-8.5-23.3-16.7-34.9-25.1c-1.1-0.8-2-1.3-2.9-1.3c-0.9,0-1.7,0.5-2.8,1.6c-10.8,11.1-21.8,22-32.9,32.8
c-2.4,2.3-2,3.8-0.3,6.2c8.4,11.8,16.6,23.8,25,35.6c1.6,2.3,2.1,4,0.6,6.7c-3.6,6.2-6.3,12.9-8.3,19.8
c-0.9,3-2.4,4.2-5.5,4.6c-14.3,2.2-28.6,4.8-42.9,7c-3,0.5-3.8,1.6-3.7,4.5c0.1,15.5,0.1,31,0,46.5c0,2.6,0.6,3.7,3.4,4.2
c14.6,2.4,29.2,5.2,43.8,7.7c2.5,0.4,3.8,1.3,4.5,3.7c2.2,7.4,5,14.5,8.8,21.2c1.3,2.3,0.7,3.9-0.7,5.8
c-8.5,11.7-16.8,23.6-25.4,35.3c-2.2,2.9-1.8,4.4,0.7,6.9c10.9,10.6,21.6,21.3,32.1,32.2c1.2,1.2,2.1,1.7,3.1,1.7
c0.9,0,1.9-0.5,3.1-1.4c11.8-8.4,23.8-16.6,35.5-25c1.4-1,2.5-1.5,3.8-1.5c1,0,2.1,0.3,3.3,1c6.1,3.4,12.6,6.1,19.3,8
c3.1,0.9,4.2,2.4,4.6,5.4c2.2,14.3,4.8,28.6,7,42.9c0.5,3.2,1.7,4,4.8,4c7.6-0.1,15.2-0.1,22.7-0.1c7.6,0,15.2,0,23,0.1
c3.1,0,4.3-0.8,4.9-4.2c2.3-14.5,5.1-28.9,7.6-43.3c0.4-2.7,1.4-4,4.1-4.8c7-2.1,13.8-4.9,20.2-8.5c1.1-0.6,2-0.9,2.8-0.9
c1.1,0,2.2,0.5,3.4,1.4c12.1,8.6,24.3,17,36.4,25.5c0.9,0.7,1.9,1.3,2.7,1.8c0.7-2.8,0.7-2.8,0.8-3.1c0.2-0.7,0.6-1.5,0.8-1.9
c0,0-0.7-0.5-1.3-0.9c-12.2-8.5-24.3-16.9-36.4-25.5c-1.8-1.3-3.8-2.3-6.3-2.3c-1.9,0-3-0.4-5.3,1.5c-6,3.4-12.5,6.1-19.1,8
c-4.8,1.4-6.9,4.3-7.6,8.8c-2.4,14.4-5.2,28.8-7.6,43.3c-7.8-0.1-15.3-0.1-22.9-0.1c-7.6,0-15.1,0-22.7,0.1
c-2.2-14.3-4.7-28.5-6.9-42.6c-0.7-4.8-2.9-8-8.2-9.5c-6.4-1.8-12.5-4.3-18.3-7.5c-2.4-2-3.7-1.7-5.8-1.7
c-2.5,0-4.7,0.9-6.7,2.4c-11.7,8.4-23.7,16.5-35.5,25c-10.5-10.8-21.2-21.5-32-32c-0.1-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0-0.1
c8.7-11.7,16.9-23.6,25.4-35.3c2.2-3,3.8-6.4,1-11.2c-3.6-6.3-6.3-13.1-8.4-20.1c-1.3-4.7-4.3-6.6-8.5-7.3
c-14.3-2.4-28.6-5.1-43-7.5c0.1-15.2,0.1-30.3,0-45.5c14.2-2.2,28.3-4.7,42.4-6.9c7.9-1.2,8-3,9.5-8.2
c1.9-6.5,4.4-12.8,7.8-18.7c2.8-4.8,1.8-8.5-0.8-12c-8.4-11.8-16.5-23.7-25-35.5c10.9-10.6,21.6-21.3,32.2-32.2
c11.5,8.4,23.2,16.4,34.5,24.9c3,3.1,4.7,2.8,7.5,2.8c2.3,0,4.4-0.7,6.4-1.9c5.5-3.1,11.6-5.4,17.9-7.2
c5.1-1.4,7.2-4.6,7.8-9.2c2.2-14.2,4.7-28.4,6.8-42.7c7.8,0.1,15.5,0.1,23.1,0.1c7.5,0,15,0,22.4-0.1
c2.3,14.3,5.1,28.5,7.3,42.7c0.8,5.6,3.7,8.4,8.7,9.7c6,1.7,11.8,4.1,17.2,7.2c2.6,2.2,4,1.8,6.2,1.8c3,0,5.4-1.3,7.6-2.9
c11.2-8.3,22.7-16.2,33.9-24.7c-0.1-0.1-0.2-0.3-0.3-0.4c0.1,0.1,0.2,0.3,0.3,0.4c0,0,0,0.1,0,0.1c0.2,0.3,0.4,0,0.6-0.3
c0.1,0.1,0.2,0.2,0.4,0.4c10.3,10.7,20.9,21.2,31.6,31.6c0,0,0,0.1,0.1,0.1c-0.1,0.1-0.1,0.2-0.2,0.4
c-8.5,11.8-16.6,23.8-25.1,35.5c-3.1,4.2-3.2,8-0.7,12.4c3.1,5.7,5.6,11.6,7.4,17.8c1.3,4.8,4,7.6,9.4,8.3
c14.4,2.1,28.9,4.7,43.4,6.9c0,0,0.1,0,0.1,0c0-0.1,0.1-0.2,0.1-0.2L432.1,233.8z M86.2,279.3c0,0.1,0,0.2-0.1,0.3
C86.1,279.6,86.1,279.5,86.2,279.3c-0.1-0.7-0.1-0.8,0-1c0,0,0.2,0.2,0.5,1C86.5,279.3,86.4,279.3,86.2,279.3"/>
</defs>
<clipPath id="SVGID_30_">
<use xlink:href="#SVGID_29_" style="overflow:visible;"/>
</clipPath>
<g class="st41">
<polyline class="st2" points="362.7,393.9 361.5,399.1 361.5,399.1 362.7,393.9 362.7,393.9 "/>
<polyline class="st4" points="362.7,393.9 361.5,399.1 361.5,399.1 362.7,393.9 362.7,393.9 "/>
<polyline class="st5" points="362.7,393.9 361.5,399.1 361.5,399.1 362.8,393.9 362.7,393.9 "/>
<polyline class="st6" points="362.8,393.9 361.5,399.1 361.5,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st7" points="362.8,393.9 361.5,399.1 361.5,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st8" points="362.8,393.9 361.5,399.1 361.5,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st9" points="362.8,393.9 361.5,399.1 361.5,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st10" points="362.8,393.9 361.5,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st11" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st12" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st13" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st14" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st15" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st16" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,393.9 362.8,393.9 "/>
<polyline class="st17" points="362.8,393.9 361.4,399.1 361.4,399.1 362.8,394 362.8,393.9 "/>
<polyline class="st18" points="362.8,394 361.4,399.1 361.4,399.1 362.8,394 362.8,394 "/>
<polyline class="st19" points="362.8,394 361.4,399.1 361.4,399.1 362.8,394 362.8,394 "/>
<polyline class="st20" points="362.8,394 361.4,399.1 361.4,399.1 362.8,394 362.8,394 "/>
<polyline class="st21" points="362.8,394 361.4,399.1 361.4,399.1 362.8,394 362.8,394 "/>
<polyline class="st22" points="362.8,394 361.4,399.1 361.4,399 362.8,394 362.8,394 "/>
<polyline class="st23" points="362.8,394 361.4,399 361.4,399 362.8,394 362.8,394 "/>
<polyline class="st24" points="362.8,394 361.4,399 361.4,399 362.8,394 362.8,394 "/>
<polyline class="st25" points="362.8,394 361.4,399 361.4,399 362.8,394 362.8,394 "/>
<polyline class="st26" points="362.8,394 361.4,399 361.4,399 362.8,394 362.8,394 "/>
<polyline class="st27" points="362.8,394 361.4,399 361.4,399 362.8,394 362.8,394 "/>
<path class="st28" d="M362.8,394l-1.5,5.1c-0.8-0.5-1.6-1.1-2.5-1.8c-12.2-8.5-24.3-16.9-36.4-25.5c-1.2-0.9-2.3-1.4-3.4-1.4
c-0.9,0-1.8,0.3-2.8,0.9c-6.4,3.6-13.2,6.4-20.2,8.5c-2.7,0.8-3.6,2.2-4.1,4.8c-2.4,14.4-5.2,28.8-7.6,43.3
c-0.5,3.4-1.8,4.2-4.9,4.2c-7.8-0.1-15.4-0.1-23-0.1c-7.6,0-15.2,0-22.7,0.1c-3.1,0-4.3-0.8-4.8-4c-2.2-14.3-4.7-28.6-7-42.9
c-0.5-3-1.5-4.5-4.6-5.4c-6.7-1.9-13.2-4.6-19.3-8c-1.2-0.7-2.3-1-3.3-1c-1.2,0-2.4,0.5-3.8,1.5c-11.8,8.4-23.8,16.6-35.5,25
c-1.2,0.9-2.2,1.4-3.1,1.4c-1,0-1.9-0.5-3.1-1.7c-10.6-10.9-21.3-21.6-32.1-32.2c-2.5-2.4-2.9-3.9-0.7-6.9
c8.6-11.6,16.9-23.5,25.4-35.3c1.4-1.9,2.1-3.4,0.7-5.8c-3.8-6.7-6.7-13.8-8.8-21.2c-0.7-2.4-2-3.3-4.5-3.7
c-14.6-2.5-29.2-5.2-43.8-7.7c-2.4-0.4-3.2-1.2-3.4-3.1l4.5-2.2c-0.6-1.5-0.1,0.3-0.3,0.4c14.7,2.4,29.2,5.2,43.8,7.7
c4.2,0.6,7.2,2.6,8.5,7.3c2.1,7,4.8,13.8,8.4,20.1c2.8,4.8,1.2,8.2-1,11.2c-8.5,11.7-16.8,23.6-25.4,35.3
c-0.2,0.5-0.4-0.4,0.1,0.3c10.9,10.6,21.6,21.4,32.2,32.3c0.5,0.5,0.3,0.3-0.5,0.2c-0.6,0-0.5,0.1,0.2-0.4
c11.8-8.5,23.8-16.6,35.5-25c2-1.5,4.2-2.4,6.7-2.4c2.1,0,3.3-0.4,5.8,1.7c5.8,3.2,11.9,5.7,18.3,7.5c5.3,1.4,7.5,4.7,8.2,9.5
c2.2,14.3,4.8,28.5,7,42.9c0.2,0.1-0.7-0.4-0.2-0.3c7.6-0.1,15.2-0.1,22.8-0.1c7.6,0,15.2,0,23,0.1c-3,1.3-0.3,0.5-0.1,0
c2.3-14.5,5.1-28.9,7.6-43.3c0.7-4.4,2.8-7.4,7.6-8.8c6.7-2,13.1-4.6,19.1-8c2.3-2,3.4-1.5,5.3-1.5c2.5,0,4.5,1,6.3,2.3
c12,8.6,24.2,17,36.4,25.5C362.6,393.8,363.5,394.4,362.8,394"/>
<path class="st27" d="M86.5,278.9l-4.5,2.2c0,0,0,0,0,0L86.5,278.9C86.5,278.9,86.5,278.9,86.5,278.9"/>
<path class="st26" d="M86.5,278.9l-4.5,2.2c0,0,0,0,0,0L86.5,278.9C86.5,278.9,86.5,278.9,86.5,278.9"/>
<path class="st25" d="M86.5,278.9l-4.5,2.1c0,0,0,0,0,0L86.5,278.9C86.5,279,86.5,279,86.5,278.9"/>
<path class="st24" d="M86.5,279l-4.6,2.1c0,0,0,0,0,0L86.5,279C86.5,279,86.5,279,86.5,279"/>
<path class="st23" d="M86.5,279l-4.6,2.1c0,0,0,0,0,0L86.5,279C86.5,279,86.5,279,86.5,279"/>
<path class="st22" d="M86.6,279l-4.6,2.1c0,0,0,0,0,0L86.6,279C86.6,279,86.6,279,86.6,279"/>
<path class="st21" d="M86.6,279l-4.6,2c0,0,0,0,0,0L86.6,279C86.6,279,86.6,279,86.6,279"/>
<path class="st20" d="M86.6,279l-4.6,2c0,0,0,0,0,0L86.6,279C86.6,279,86.6,279,86.6,279"/>
<path class="st19" d="M86.6,279l-4.6,2c0,0,0,0,0,0L86.6,279C86.6,279,86.6,279,86.6,279"/>
<path class="st18" d="M86.6,279l-4.6,2c0,0,0,0,0,0L86.6,279C86.6,279,86.6,279,86.6,279"/>
<path class="st17" d="M86.6,279L82,281c0,0,0,0,0,0L86.6,279C86.6,279,86.6,279,86.6,279"/>
<path class="st16" d="M86.6,279.1L82,281c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st15" d="M86.6,279.1L82,281c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st14" d="M86.6,279.1l-4.6,1.9c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st13" d="M86.6,279.1l-4.6,1.8c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st12" d="M86.6,279.1l-4.6,1.8c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st11" d="M86.6,279.1l-4.6,1.8c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st10" d="M86.6,279.1l-4.6,1.8c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st9" d="M86.6,279.1l-4.6,1.7c0,0,0,0,0,0L86.6,279.1C86.6,279.1,86.6,279.1,86.6,279.1"/>
<path class="st8" d="M86.6,279.2l-4.6,1.7c0,0,0,0,0,0L86.6,279.2C86.6,279.2,86.6,279.2,86.6,279.2"/>
<path class="st7" d="M86.6,279.2l-4.6,1.7c0,0,0,0,0,0L86.6,279.2C86.6,279.2,86.6,279.2,86.6,279.2"/>
<path class="st6" d="M86.6,279.2l-4.7,1.7c0,0,0,0,0,0L86.6,279.2C86.6,279.2,86.6,279.2,86.6,279.2"/>
<path class="st5" d="M86.6,279.2l-4.7,1.6c0,0,0,0,0,0L86.6,279.2C86.6,279.2,86.6,279.2,86.6,279.2"/>
<path class="st4" d="M86.6,279.2l-4.7,1.6c0,0,0,0,0,0L86.6,279.2C86.6,279.2,86.6,279.2,86.6,279.2"/>
<path class="st2" d="M86.6,279.2l-4.7,1.6c0-0.1,0-0.3,0-0.4l4.8-0.8C86.7,279.5,86.7,279.3,86.6,279.2"/>
<path class="st4" d="M86.8,279.6l-4.8,0.8c0,0,0,0,0,0L86.8,279.6C86.8,279.6,86.8,279.6,86.8,279.6"/>
<path class="st5" d="M86.8,279.6l-4.8,0.7c0,0,0,0,0,0L86.8,279.6C86.8,279.7,86.8,279.6,86.8,279.6"/>
<path class="st6" d="M86.8,279.7l-4.8,0.7c0,0,0,0,0,0L86.8,279.7C86.8,279.7,86.8,279.7,86.8,279.7"/>
<path class="st7" d="M86.8,279.7l-4.9,0.7c0,0,0,0,0,0L86.8,279.7C86.8,279.7,86.8,279.7,86.8,279.7"/>
<path class="st8" d="M86.8,279.7l-4.9,0.7c0,0,0,0,0,0L86.8,279.7C86.8,279.7,86.8,279.7,86.8,279.7"/>
<path class="st9" d="M86.8,279.7l-4.9,0.6c0,0,0,0,0,0L86.8,279.7C86.8,279.7,86.8,279.7,86.8,279.7"/>
<path class="st10" d="M86.8,279.7l-4.9,0.6c0,0,0,0,0,0L86.8,279.7C86.8,279.7,86.8,279.7,86.8,279.7"/>
<path class="st11" d="M86.8,279.7l-4.9,0.6c0,0,0,0,0,0L86.8,279.7C86.8,279.8,86.8,279.8,86.8,279.7"/>
<path class="st12" d="M86.8,279.8l-4.9,0.5c0,0,0,0,0,0L86.8,279.8C86.8,279.8,86.8,279.8,86.8,279.8"/>
<path class="st13" d="M86.8,279.8l-4.9,0.5c0,0,0,0,0,0L86.8,279.8C86.9,279.8,86.9,279.8,86.8,279.8"/>
<path class="st14" d="M86.9,279.8l-4.9,0.5c0,0,0,0,0,0L86.9,279.8C86.9,279.8,86.9,279.8,86.9,279.8"/>
<path class="st15" d="M86.9,279.8l-4.9,0.4c0,0,0,0,0,0L86.9,279.8C86.9,279.8,86.9,279.8,86.9,279.8"/>
<path class="st16" d="M86.9,279.8l-4.9,0.4c0,0,0,0,0,0L86.9,279.8C86.9,279.8,86.9,279.8,86.9,279.8"/>
<path class="st17" d="M86.9,279.9l-4.9,0.4c0,0,0,0,0,0L86.9,279.9C86.9,279.9,86.9,279.9,86.9,279.9"/>
<path class="st18" d="M86.9,279.9l-4.9,0.3c0,0,0,0,0,0L86.9,279.9C86.9,279.9,86.9,279.9,86.9,279.9"/>
<path class="st19" d="M86.9,279.9l-4.9,0.3c0,0,0,0,0,0L86.9,279.9C86.9,279.9,86.9,279.9,86.9,279.9"/>
<path class="st20" d="M86.9,279.9l-4.9,0.2c0,0,0,0,0,0L86.9,279.9C86.9,279.9,86.9,279.9,86.9,279.9"/>
<path class="st21" d="M86.9,279.9l-5,0.2c0,0,0,0,0,0L86.9,279.9C86.9,279.9,86.9,279.9,86.9,279.9"/>
<path class="st22" d="M86.9,279.9l-5,0.2c0,0,0,0,0,0L86.9,279.9C86.9,280,86.9,280,86.9,279.9"/>
<path class="st23" d="M86.9,280l-5,0.1c0,0,0,0,0,0L86.9,280C86.9,280,86.9,280,86.9,280"/>
<path class="st24" d="M86.9,280l-5,0.1c0,0,0,0,0,0L86.9,280C86.9,280,86.9,280,86.9,280"/>
<path class="st25" d="M86.9,280l-5,0.1c0,0,0,0,0,0L86.9,280C86.9,280,86.9,280,86.9,280"/>
<path class="st26" d="M86.9,280l-5,0c0,0,0,0,0,0L86.9,280C86.9,280,86.9,280,86.9,280"/>
<path class="st27" d="M86.9,280l-5,0c0,0,0,0,0,0L86.9,280C87,280.1,86.9,280.1,86.9,280"/>
<path class="st28" d="M87,280.1l-5,0c0,0,0,0,0,0c0.1-15.5,0.1-31,0-46.5c0-2.9,0.8-4,3.7-4.5c14.3-2.2,28.6-4.8,42.9-7
c3-0.5,4.6-1.6,5.5-4.6c2-6.9,4.7-13.6,8.3-19.8c1.5-2.7,1-4.4-0.6-6.7c-8.4-11.8-16.6-23.8-25-35.6c-1.7-2.4-2.1-3.8,0.3-6.2
c11.1-10.8,22.1-21.8,32.9-32.8c1.1-1.1,2-1.6,2.8-1.6c0.9,0,1.8,0.5,2.9,1.3c11.6,8.4,23.4,16.6,34.9,25.1
c1.6,1.2,3,1.8,4.5,1.8c1.2,0,2.5-0.4,3.9-1.2c5.9-3.4,12.4-5.8,18.9-7.7c2.9-0.8,3.8-2.3,4.2-5.2c2.2-14.3,4.7-28.6,6.8-42.9
c0.5-3.1,1.5-4.1,4.6-4.1c7.9,0.1,15.7,0.1,23.5,0.1c7.6,0,15.1,0,22.7-0.1c3.2,0,4.2,1.1,4.7,4.1c2.3,14.3,5.1,28.5,7.3,42.8
c0.5,3.4,2,4.8,5.1,5.6c6.4,1.8,12.6,4.3,18.4,7.6c1.4,0.8,2.6,1.2,3.7,1.2c1.6,0,3-0.7,4.7-2c11.2-8.3,22.8-16.3,33.9-24.7
c1.5-1.1,2.6-1.6,3.6-1.6c1.3,0,2.5,0.8,4,2.4c10.3,10.7,20.8,21.2,31.4,31.4c2.7,2.6,2.4,4.2,0.4,7
c-8.5,11.7-16.6,23.8-25,35.5c-1.8,2.5-1.9,4.4-0.4,7.1c3.3,6,5.9,12.3,7.8,18.9c0.8,2.9,2.2,4.3,5.3,4.7
c14.5,2.1,28.9,4.7,43.4,6.9c3.1,0.5,4,1.7,4,4.8l-5-0.1c-0.2-0.4,0.5,0.4,0.3,0.2c-14.5-2.2-29-4.8-43.4-6.9
c-5.4-0.7-8.1-3.5-9.4-8.3c-1.8-6.2-4.3-12.2-7.4-17.8c-2.5-4.4-2.3-8.3,0.7-12.4c8.4-11.7,16.5-23.7,25.1-35.5
c0.5-0.9,0.3,0,0.2-0.4c-10.7-10.3-21.2-20.9-31.6-31.6c-1-0.9-1.1-0.9-0.4-0.9c0.4,0-0.4,1.3-0.6,0.6
c-11.2,8.5-22.8,16.4-34,24.7c-2.2,1.7-4.6,2.9-7.6,2.9c-2.1,0-3.5,0.4-6.2-1.8c-5.4-3.1-11.2-5.5-17.2-7.2
c-5-1.3-7.9-4.1-8.7-9.7c-2.2-14.2-5-28.5-7.3-42.8c-0.2-0.5,0.5,0.3,0.3,0.1c-7.5,0.1-15.1,0.1-22.7,0.1
c-7.8,0-15.6,0-23.5-0.1c-0.2,0.1,0.6-0.6,0.4-0.2c-2.2,14.4-4.7,28.7-6.9,42.9c-0.6,4.6-2.7,7.8-7.8,9.2
c-6.3,1.8-12.3,4.1-17.9,7.2c-2,1.2-4.1,1.9-6.4,1.9c-2.8,0-4.5,0.3-7.5-2.8c-11.4-8.5-23.2-16.6-34.8-25.1
c-0.7-0.5-0.7-0.4,0-0.3c0.9,0,1.1-0.3,0.7,0.1c-10.8,11.1-21.8,22.1-33,32.9c0.2,0.1-0.1-1,0.3-0.3
c8.5,11.8,16.6,23.8,25,35.6c2.6,3.6,3.7,7.2,0.8,12c-3.4,5.9-5.9,12.1-7.8,18.7c-1.5,5.2-1.6,7-9.5,8.2
c-14.3,2.2-28.5,4.8-42.9,7c0,0.2,0.6-0.8,0.5-0.5C87.1,249,87.1,264.5,87,280.1C87,280.1,87,280.1,87,280.1"/>
</g>
</g>
<g>
<path class="st42" d="M427.1,233.7c-0.2,15.4-0.2,30.7,0,46.1c-0.2-0.1,0.8-0.7,0-0.4c-14.5,2.4-28.9,5.1-43.3,7.5
c-4.5,0.7-7.7,2.4-9.1,7.9c-1.7,6.3-4.3,12.5-7.5,18.2c-2.5,4.4-2.4,8.3,0.8,12.5c8.7,11.7,17.1,23.7,25.9,35.5
c0.1,0.4,0.1-0.7,0.1-0.4c-11.1,10.9-22,21.9-33,32.8c-0.9,0.9-0.9,0.8,1.8,0.4c0.8,0.6-0.1-0.1-1-0.7
c-12.2-8.5-24.3-16.9-36.4-25.5c-1.8-1.3-3.8-2.3-6.3-2.3c-1.9,0-3-0.4-5.3,1.5c-6,3.4-12.5,6.1-19.1,8
c-4.8,1.4-6.9,4.3-7.6,8.8c-2.4,14.4-5.2,28.8-7.6,43.3c-0.2,0.4-2.9,1.3,0.1,0c-7.8-0.1-15.4-0.1-23-0.1
c-7.6,0-15.2,0-22.8,0.1c-0.6-0.2,0.3,0.4,0.2,0.3c-2.2-14.4-4.7-28.7-7-42.9c-0.7-4.8-2.9-8-8.2-9.5
c-6.4-1.8-12.5-4.3-18.3-7.5c-2.4-2-3.7-1.7-5.8-1.7c-2.5,0-4.7,0.9-6.7,2.4c-11.7,8.4-23.7,16.5-35.5,25
c-0.7,0.5-0.8,0.5-0.2,0.4c0.8,0,1,0.3,0.5-0.2c-10.6-10.9-21.3-21.7-32.2-32.3c-0.5-0.7-0.3,0.2-0.1-0.3
c8.7-11.7,16.9-23.6,25.4-35.3c2.2-3,3.8-6.4,1-11.2c-3.6-6.3-6.3-13.1-8.4-20.1c-1.3-4.7-4.3-6.6-8.5-7.3
c-14.6-2.5-29.1-5.2-43.8-7.7c0.2-0.1-0.4-2.6,0.8,0.8c0.1-15.5,0.1-31,0-46.6c0.2-0.3-0.5,0.6-0.5,0.5
c14.4-2.2,28.6-4.8,42.9-7c7.9-1.2,8-3,9.5-8.2c1.9-6.5,4.4-12.8,7.8-18.7c2.8-4.8,1.8-8.5-0.8-12c-8.4-11.8-16.5-23.7-25-35.6
c-0.3-0.7-0.1,0.4-0.3,0.3c11.1-10.8,22.1-21.8,33-32.9c0.4-0.4,0.1-0.1-0.7-0.1c-0.7,0-0.7-0.1,0,0.3
c11.6,8.4,23.4,16.6,34.8,25.1c3,3.1,4.7,2.8,7.5,2.8c2.3,0,4.4-0.7,6.4-1.9c5.5-3.1,11.6-5.4,17.9-7.2
c5.1-1.4,7.2-4.6,7.8-9.2c2.2-14.3,4.7-28.5,6.9-42.9c0.2-0.4-0.6,0.4-0.4,0.2c7.9,0.1,15.7,0.1,23.5,0.1
c7.6,0,15.2,0,22.7-0.1c0.1,0.2-0.5-0.6-0.3-0.1c2.3,14.4,5.1,28.6,7.3,42.8c0.8,5.6,3.7,8.4,8.7,9.7c6,1.7,11.8,4.1,17.2,7.2
c2.6,2.2,4,1.8,6.2,1.8c3,0,5.4-1.3,7.6-2.9c11.2-8.3,22.7-16.2,34-24.7c0.3,0.7,1.1-0.6,0.6-0.6c-0.7,0-0.5-0.1,0.4,0.9
c10.3,10.7,20.9,21.2,31.6,31.6c0.2,0.4,0.3-0.5-0.2,0.4c-8.5,11.8-16.6,23.8-25.1,35.5c-3.1,4.2-3.2,8-0.7,12.4
c3.1,5.7,5.6,11.6,7.4,17.8c1.3,4.8,4,7.6,9.4,8.3c14.4,2.1,28.9,4.7,43.4,6.9C427.6,234.1,426.9,233.3,427.1,233.7z
M256.9,311c29.8,0,54.1-24.1,54.1-53.8c0.1-29.7-24.1-54-53.9-54.1c-29.8,0-54.1,24.1-54.1,53.8
C203,286.6,227.1,310.9,256.9,311"/>
</g>
<g class="st0">
<defs>
<path id="SVGID_31_" class="st0" d="M86.1,279.6c0-0.1,0-0.2,0.1-0.3c0.1,0,0-0.9,0-1c-0.1,0.1-0.1,0.3-0.1,1
C86.1,279.5,86.1,279.6,86.1,279.6z"/>
</defs>
<clipPath id="SVGID_32_">
<use xlink:href="#SVGID_31_" style="overflow:visible;"/>
</clipPath>
<g class="st43">
<path class="st2" d="M86.1,279.6l0.1-0.3c0.1,0,0-0.9,0-1l-0.3,0.3C85.9,278.7,86.2,279.5,86.1,279.6"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_33_" class="st0" d="M85.9,233c0.1,0.1,0.3,0.3,1,0.4c0,0-0.5,0.6-0.5,0.6c0,0,0,0,0,0
C86.3,233.5,86.1,233.2,85.9,233z"/>
</defs>
<clipPath id="SVGID_34_">
<use xlink:href="#SVGID_33_" style="overflow:visible;"/>
</clipPath>
<g class="st44">
<path class="st2" d="M86,233.3l1,0.2c0,0-0.5,0.6-0.5,0.6l-0.2-1C85.8,233.2,86,232.8,86,233.3"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_35_" class="st0" d="M256.9,311l0-5c27,0,49.1-21.9,49.1-48.9c0.1-27-21.9-49-48.9-49.1
c-27,0-49.1,21.9-49.1,48.9c-0.1,27,21.9,49.1,48.9,49.1L256.9,311c-29.7-0.1-53.9-24.3-53.9-54.1
c0.1-29.7,24.3-53.8,54.1-53.8c29.7,0.1,53.9,24.4,53.9,54.1C310.9,286.8,286.7,311,256.9,311z"/>
</defs>
<clipPath id="SVGID_36_">
<use xlink:href="#SVGID_35_" style="overflow:visible;"/>
</clipPath>
<g class="st45">
<path class="st28" d="M256.9,311l0-5c27,0,49.1-21.9,49.1-48.9c0.1-27-21.9-49-48.9-49.1c-27,0-49.1,21.9-49.1,48.9
c-0.1,27,21.9,49.1,48.9,49.1L256.9,311c-29.7-0.1-53.9-24.3-53.9-54.1c0.1-29.7,24.3-53.8,54.1-53.8
c29.7,0.1,53.9,24.4,53.9,54.1C310.9,286.8,286.7,311,256.9,311"/>
</g>
</g>
<g class="st0">
<defs>
<path id="SVGID_37_" class="st0" d="M361.1,118.4c0,0.5,0,1,0.1,1.8c0-0.1,0-0.1-0.1-0.1c-0.3,0-0.4,0-0.4,0c0,0,0,0,0,0
C360.9,119.6,361.1,119,361.1,118.4z"/>
</defs>
<clipPath id="SVGID_38_">
<use xlink:href="#SVGID_37_" style="overflow:visible;"/>
</clipPath>
<g class="st46">
<path class="st2" d="M361,118.5l0.2,1.7c0-0.1,0-0.1-0.1-0.1c-0.3,0-0.4,0-0.4,0l0.6-1.5c-0.2-0.1-0.2-0.1-0.2-0.1
C361.1,118.4,361,118.4,361,118.5"/>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 680 KiB

View File

@ -0,0 +1,46 @@
<template>
<v-footer
dark
height="auto"
>
<v-card
class="flex"
flat
tile
>
<v-card-title class="teal">
<strong class="subheading">Get connected with us on social networks!</strong>
<v-spacer></v-spacer>
<v-btn
v-for="icon in icons"
:key="icon"
class="mx-3"
dark
icon
>
<v-icon size="24px">{{ icon }}</v-icon>
</v-btn>
</v-card-title>
<v-card-actions class="grey darken-3 justify-center">
&copy;2018 <strong>Vuetify</strong>
</v-card-actions>
</v-card>
</v-footer>
</template>
<script>
export default {
data: () => ({
icons: [
// 'fab fa-facebook',
// 'fab fa-twitter',
// 'fab fa-google-plus',
// 'fab fa-linkedin',
// 'fab fa-instagram'
]
})
}
</script>

View File

@ -0,0 +1,147 @@
<template>
<v-container>
<v-layout
text-xs-center
wrap
>
<v-flex xs12>
<v-img
:src="require('../assets/logo.svg')"
class="my-3"
contain
height="200"
></v-img>
</v-flex>
<v-flex mb-4>
<h1 class="display-2 font-weight-bold mb-3">
Welcome to Vuetify
</h1>
<p class="subheading font-weight-regular">
For help and collaboration with other Vuetify developers,
<br>please join our online
<a href="https://community.vuetifyjs.com" target="_blank">Discord Community</a>
</p>
</v-flex>
<v-flex
mb-5
xs12
>
<h2 class="headline font-weight-bold mb-3">What's next?</h2>
<v-layout justify-center>
<a
v-for="(next, i) in whatsNext"
:key="i"
:href="next.href"
class="subheading mx-3"
target="_blank"
>
{{ next.text }}
</a>
</v-layout>
</v-flex>
<v-flex
xs12
mb-5
>
<h2 class="headline font-weight-bold mb-3">Important Links</h2>
<v-layout justify-center>
<a
v-for="(link, i) in importantLinks"
:key="i"
:href="link.href"
class="subheading mx-3"
target="_blank"
>
{{ link.text }}
</a>
</v-layout>
</v-flex>
<v-flex
xs12
mb-5
>
<h2 class="headline font-weight-bold mb-3">Ecosystem</h2>
<v-layout justify-center>
<a
v-for="(eco, i) in ecosystem"
:key="i"
:href="eco.href"
class="subheading mx-3"
target="_blank"
>
{{ eco.text }}
</a>
</v-layout>
</v-flex>
</v-layout>
</v-container>
</template>
<script>
export default {
data: () => ({
ecosystem: [
{
text: 'vuetify-loader',
href: 'https://github.com/vuetifyjs/vuetify-loader'
},
{
text: 'github',
href: 'https://github.com/vuetifyjs/vuetify'
},
{
text: 'awesome-vuetify',
href: 'https://github.com/vuetifyjs/awesome-vuetify'
}
],
importantLinks: [
{
text: 'Documentation',
href: 'https://vuetifyjs.com'
},
{
text: 'Chat',
href: 'https://community.vuetifyjs.com'
},
{
text: 'Made with Vuetify',
href: 'https://madewithvuetifyjs.com'
},
{
text: 'Twitter',
href: 'https://twitter.com/vuetifyjs'
},
{
text: 'Articles',
href: 'https://medium.com/vuetify'
}
],
whatsNext: [
{
text: 'Explore components',
href: 'https://vuetifyjs.com/components/api-explorer'
},
{
text: 'Select a layout',
href: 'https://vuetifyjs.com/layout/pre-defined'
},
{
text: 'Frequently Asked Questions',
href: 'https://vuetifyjs.com/getting-started/frequently-asked-questions'
}
]
})
}
</script>
<style>
</style>

View File

View File

@ -0,0 +1,97 @@
<template>
<div class="center">
<div class="spinner">
<div class="gear1"></div>
<div class="gear2"></div>
<div class="gear3"></div>
</div>
</div>
</template>
<script>
export default {
name: "Spinner"
};
</script>
<style>
.center {
position: fixed;
top: 50%;
left: 50%;
margin-top: 0px;
margin-left: 0px;
}
.spinner {
position: absolute;
width: 256px;
height: 256px;
top: -128px;
left: -128px;
filter: drop-shadow(10px 10px 2px rgba(0, 0, 0, 1));
}
.gear1,
.gear2,
.gear3 {
position: absolute;
background-repeat: no-repeat;
}
.gear1,
.gear2 {
background-image: url("../assets/spinner.svg");
width: 115px;
height: 115px;
top: 55px;
left: 55px;
animation: sk-cubemove 1.8s infinite cubic-bezier(1, 0, 0, 1) reverse;
}
.gear2 {
top: 118px;
left: 118px;
width: 80px;
height: 80px;
transform: rotate(25deg);
animation: sk-cubemove2 1.8s infinite cubic-bezier(1, 0, 0, 1);
}
.gear3 {
background-image: url("../assets/spinner_outer.svg");
width: 256px;
height: 256px;
animation: sk-cubemove 1.8s infinite cubic-bezier(1, 0, 0, 1);
}
@keyframes sk-cubemove {
25% {
transform: rotate(90deg);
}
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(270deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes sk-cubemove2 {
25% {
transform: rotate(115deg);
}
50% {
transform: rotate(205deg);
}
75% {
transform: rotate(295deg);
}
100% {
transform: rotate(385deg);
}
}
</style>

16
frontend/src/main.js Normal file
View File

@ -0,0 +1,16 @@
import Vue from 'vue';
import './plugins/vuetify';
import App from './App.vue';
import router from './router';
import store from './store';
Vue.config.productionTip = false;
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app');
setTimeout(()=>{store.dispatch('application/setLoadingState', false);}, 1000);

View File

@ -0,0 +1,30 @@
export default {
namespaced: true,
state: {
isLoading: true
},
getters: {
isLoading: state => { //getters, rootState, rootGetters, etc
return state.isLoading;
},
isLoadingString: state => {
return String(state.isLoading);
}
},
mutations: {
setLoadingState: (state, isLoading) => {
state.isLoading = isLoading;
}
},
actions: {
setLoadingState: ({
commit
}, isLoading) => {
commit('setLoadingState', isLoading);
}
}
};

View File

@ -0,0 +1,7 @@
import Vue from 'vue';
import Vuetify from 'vuetify/lib';
import 'vuetify/src/stylus/app.styl';
Vue.use(Vuetify, {
iconfont: 'md',
});

25
frontend/src/router.js Normal file
View File

@ -0,0 +1,25 @@
import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
Vue.use(Router)
export default new Router({
mode: 'history',
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
}
]
})

20
frontend/src/store.js Normal file
View File

@ -0,0 +1,20 @@
import Vue from 'vue';
import Vuex from 'vuex';
import { fstat } from 'fs';
import moduleApplication from './modules/Application';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
modules:{
application:moduleApplication
}
});

View File

@ -0,0 +1,5 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>

View File

@ -0,0 +1,13 @@
<template>
<HelloWorld />
</template>
<script>
import HelloWorld from '../components/HelloWorld'
export default {
components: {
HelloWorld
}
}
</script>

12
frontend/vue.config.js Normal file
View File

@ -0,0 +1,12 @@
module.exports = {
configureWebpack: {
devtool: 'source-map'
},
pluginOptions: {
'style-resources-loader': {
preProcessor: 'stylus',
patterns: []
}
}
}

67
instance/package-lock.json generated Normal file
View File

@ -0,0 +1,67 @@
{
"name": "factorio_hive_instance",
"version": "0.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
},
"convict": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/convict/-/convict-4.4.0.tgz",
"integrity": "sha512-7STJN+UtDR6X+JQdyWo0p6YbOqKNh8KnAeqgPglQTWQYZbClyltp502pyXSPHeDZQT5+j4RD8OdaNNHzX36Lrg==",
"requires": {
"depd": "1.1.2",
"json5": "1.0.1",
"lodash.clonedeep": "4.5.0",
"moment": "2.22.2",
"validator": "10.4.0",
"yargs-parser": "10.1.0"
}
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
"json5": {
"version": "1.0.1",
"resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
"requires": {
"minimist": "^1.2.0"
}
},
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
},
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"moment": {
"version": "2.22.2",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
"integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
},
"validator": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz",
"integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg=="
},
"yargs-parser": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
"integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
"requires": {
"camelcase": "^4.1.0"
}
}
}
}

25
instance/package.json Normal file
View File

@ -0,0 +1,25 @@
{
"name": "factorio_hive_instance",
"version": "0.0.1",
"description": "The instance server which is running the factorio server.",
"main": "index.js",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "http://heia.heikyu.de:8930/HeiaSamahi/HIVE.git"
},
"keywords": [
"factorio"
],
"author": "Heia Samahi",
"license": "MIT",
"engines": {
"node": "^10.14.1"
},
"dependencies": {
"convict": "^4.4.0"
}
}

3
shared/const.1.json Normal file
View File

@ -0,0 +1,3 @@
{
"ApplicationName" : "HIVE"
}

10
shared/const.json Normal file
View File

@ -0,0 +1,10 @@
{
"db": {
"name": "",
"synchro": {
"active": false,
"remote_url": "http://localhost:8080/"
}
},
"secret": "[Sensitive]"
}