web UPDATED

This commit is contained in:
Kai Wansart 2018-02-03 23:02:02 +01:00
parent 842f703a05
commit 179861a133
37 changed files with 40198 additions and 30 deletions

View File

@ -19,10 +19,12 @@ class SSH(object):
if device in self.devices: if device in self.devices:
ip = self.devices[device]['ip'] ip = self.devices[device]['ip']
user = self.devices[device]['user'] user = self.devices[device]['user']
print(ip)
print(user)
try: try:
client = SSHClient() client = SSHClient()
client.load_system_host_keys() client.load_system_host_keys()
client.connect(ip = ip, user = user) client.connect(ip = "192.168.178.81", user = "root")
except: except:
print("Server nicht erreichbar") print("Server nicht erreichbar")
finally: finally:

23
www/css/4-col-portfolio.css Executable file
View File

@ -0,0 +1,23 @@
/*!
* Start Bootstrap - 4 Col Portfolio (https://startbootstrap.com/template-overviews/4-col-portfolio)
* Copyright 2013-2017 Start Bootstrap
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-4-col-portfolio/blob/master/LICENSE)
*/
body {
padding-top: 54px;
}
@media (min-width: 992px) {
body {
padding-top: 56px;
}
}
.portfolio-item {
margin-bottom: 30px;
}
.pagination {
margin-bottom: 30px;
}

73
www/index.html Normal file → Executable file
View File

@ -1,36 +1,59 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="de">
<head>
<!-- Theme Made By www.w3schools.com - No Copyright -->
<title>HomeControl</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/cm.js"></script>
<link href="css/main.css" rel="stylesheet">
</head>
<body>
<!-- Navbar --> <head>
<nav class="navbar navbar-expand-sm bg-light navbar-light">
<ul id="navbarBtn" class="navbar-nav"> <meta charset="utf-8">
<li class="navbar-brand">HomeControl</li> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!--<li id="pageDevices" class="nav-item active"><a class="nav-link">Geräte</a></li>--> <meta name="description" content="">
<li><button id="pageDevices" type="button" class="btn btn-outline-light text-dark active">Geräte</button></li> <meta name="author" content="">
<li><button id="pageSettings" type="button" class="btn btn-outline-light text-dark">Einstellungen</button></li>
<title>HomeControl</title>
<!-- Bootstrap core CSS -->
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/4-col-portfolio.css" rel="stylesheet">
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="js/engine.js"></script>
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="">HomeControl</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul id="menuBtn" class="navbar-nav ml-auto">
<li class="nav-item">
<a id ="pageDevices" class="nav-link active" href="#">Geräte</a>
</li>
<li class="nav-item">
<a id="pageSettings" class="nav-link" href="#">Einstellungen</a>
</li>
</ul> </ul>
</div>
</div>
</nav> </nav>
<div class="content" id="content"> <div class="rendered container"></div>
</div>
<!-- Footer --> <!-- Footer -->
<footer class="container-fluid bg-4 text-center"> <footer class="py-5 bg-dark">
<div class="container">
<p class="m-0 text-center text-white">Copyright &copy; darthsandmann 2018</p>
</div>
<!-- /.container -->
</footer> </footer>
</body> </body>
</html> </html>

241
www/js/engine.js Normal file
View File

@ -0,0 +1,241 @@
//------------------------------------------------------------------------------
// Engine - Hauptfunktion
//------------------------------------------------------------------------------
var config = {}
//-----------------------------------------------------------------------------------//
function bodyDataAction ()
//-----------------------------------------------------------------------------------//
{
var menuButtons = document.getElementById("menuBtn").
getElementsByTagName("A");
for (var i = 0; i < menuButtons.length; i++) {
menuButtons[i].onclick = function(evt) {
console.log("Menu");
var res = evt.target.id;
menu(res);
};
}
var contentButtons = document.getElementsByTagName("button");
for (var i = 0; i < contentButtons.length; i++) {
contentButtons[i].onclick = function(evt) {
console.log("Button");
var res = evt.target.id;
menu('switchRequest', res);
};
}
}
//-----------------------------------------------------------------------------------//
function menu (message, request=null)
//-----------------------------------------------------------------------------------//
{
var selectedId = $(".selected").attr('id');
switch (message)
{
case 'pageDevices':
console.log( "pageDevices")
$( ".rendered" ).empty();
generateDevices();
document.getElementById('pageDevices').className = "nav-link active";
document.getElementById('pageSettings').className = "nav-link";
break;
case 'pageSettings':
console.log( "pageSettings")
$( ".rendered" ).empty();
document.getElementById('pageDevices').className = "nav-link";
document.getElementById('pageSettings').className = "nav-link active";
break;
case 'switchRequest':
console.log( request )
switchRequest(request);
break;
default:
alert ('[Engine] Unbekannte Anfrage: ' + message);
}
}
//-----------------------------------------------------------------------------------//
function switchRequest (request)
//-----------------------------------------------------------------------------------//
{
var req = request.split(".");
switch (req[0])
{
case 'yeelight':
var bulb = req[1]
var type = req[2]
var value = req[3]
var cmd = {};
cmd[bulb] = {};
cmd[bulb][type] = value;
postYeelight(cmd);
break;
default:
alert ('[POST] Unbekannte Anfrage: ' + req[0]);
}
}
//-----------------------------------------------------------------------------------//
function generateYeelightBulbs ( data , type)
//-----------------------------------------------------------------------------------//
{
$( ".rendered" ).append($('<div class="yeelight'+type+' container-fluid text-center bg-grey">'));
$( ".yeelight"+type ).append($("<h3></h3>").text("Yeelight " + type));
$( ".yeelight"+type ).append($('<div class="yeelight'+type+'row row text-center">'));
for (bulb in data)
{
$( ".yeelight"+type+"row" ).append($('<div class="'+ bulb + 'col col-sm-3 bg-grey">'));
$( "." + bulb + "col" ).append($("<p></p>").text(bulb));
$( "." + bulb + "col" ).append($('<div class="' + bulb + 'btn btn-group">'));
var configBulb = data[bulb]['config']
for (setting in configBulb)
{
if (configBulb[setting]['state'] == "switch")
{
var command = "on";
$( "." + bulb + "btn" ).append($('<button '+
'id="yeelight.'+bulb+'.'+setting+'.on" ' +
'type="button" class="' + bulb + 'btnAn btn btn-primary">An</button>'));
var buttonOn = document.getElementById('yeelight.'+bulb+'.'+setting+'.on');
buttonOn.onclick = function(evt) {
var res = evt.target.id;
menu('switchRequest', res);}
var command = "off";
$( "." + bulb + "btn" ).append($('<button '+
'id="yeelight.'+bulb+'.'+setting+'.off" ' +
'type="button" class="' + bulb + 'btnAn btn btn-primary">Aus</button>'));
var buttonOff = document.getElementById('yeelight.'+bulb+'.'+setting+'.off');
buttonOff.onclick = function(evt) {
var res = evt.target.id;
menu('switchRequest', res);}
}
}
}
}
//-----------------------------------------------------------------------------------//
function renderYeelightGroups ( data )
//-----------------------------------------------------------------------------------//
{
$( ".rendered" ).append('<h1 class="grp my-4">Yeelight<small>Gruppen</small></h1>');
$( ".rendered" ).append('<div class="rowGrp row">');
for(group in data)
{
var devicesString = ""
for (device in data[group]['devices'])
{
if(devicesString == "")
{
devicesString = device;
}
else
{
devicesString = devicesString + ', ' + device;
}
}
$( ".rowGrp" ).append(' <div class="col-lg-3 col-md-4 col-sm-6 portfolio-item">'+
'<div class="card h-100">'+
'<div class="card-body">'+
'<h4 class="card-title">'+
'<a href="#">'+ group + '</a>'+
'</h4>'+
'<div class="card-text">'+
'<div class="btn-group">'+
'<button id="yeelight.'+group+'.power.on" type="button" class="btn btn-primary">An</button>'+
'<button id="yeelight.'+group+'.power.off" type="button" class="btn btn-primary">Aus</button>'+
'</div>'+
'</div>'+
'<p class="card-text"></p>'+
'<p class="card-text"></p>'+
'<h5 class="card-title">'+
'<a href="#">Geräte</a>'+
'</h5>'+
'<p class="card-text">'+devicesString+'</p>'+
'</div>'+
'</div>');
}
}
//-----------------------------------------------------------------------------------//
function loadYeelightGroups ( data )
//-----------------------------------------------------------------------------------//
{
var groups = {}
for (bulb in data)
{
for (group in data[bulb]['groups'])
{
if (group in groups)
{
groups[group]['devices'][bulb] = "";
}
else
{
groups[group] = {};
groups[group] = data[bulb];
groups[group]['devices'] = {};
groups[group]['devices'][bulb] = "";
}
}
}
return groups;
}
//-----------------------------------------------------------------------------------//
function generateDevices ( )
//-----------------------------------------------------------------------------------//
{
for (module in config)
{
if(module.localeCompare("yeelight") == 0)
{
yeelightGroups = loadYeelightGroups(config[module]);
renderYeelightGroups(yeelightGroups);
}
}
bodyDataAction();
return 0;
}
//-----------------------------------------------------------------------------------//
function getConfig ( )
//-----------------------------------------------------------------------------------//
{
$.ajax('/rest/config', {
type : 'GET',
dataType: "json",
success : function(data) {
config = data;
bodyDataAction();
menu("pageDevices");
}
});
}
//-----------------------------------------------------------------------------------//
function postYeelight ( cmd )
//-----------------------------------------------------------------------------------//
{
$.ajax('/rest/yeelight', {
type : 'POST',
dataType: "json",
contentType: 'application/json',
data : JSON.stringify(cmd),
success : function(data) {
console.log(data);
}
});
}
//-----------------------------------------------------------------------------------//
$(function() {
console.log("ONLOAD");
getConfig();
console.log("Engine LOADED");
});
//-----------------------------------------------------------------------------------//

View File

@ -0,0 +1,21 @@
<div class="col-lg-3 col-md-4 col-sm-6 portfolio-item">
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">__NAME__</a>
</h4>
<div class="card-text">
<div class="btn-group">
<button type="button" class="btn btn-primary">An</button>
<button type="button" class="btn btn-primary">Aus</button>
</div>
</div>
<p class="card-text"></p>
<p class="card-text"></p>
<h5 class="card-title">
<a href="#">Geräte</a>
</h5>
<p class="card-text">__GERAETE__</p>
</div>
</div>
</div>

View File

@ -0,0 +1,3 @@
<h1 class="my-4">__DEVICE__
<small>__SUBDEVICE__</small>
</h1>

View File

@ -0,0 +1,30 @@
<!-- Page Content -->
<div class="container">
<!-- Pagination -->
<ul class="pagination justify-content-center">
<li class="page-item">
<a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="#">1</a>
</li>
<li class="page-item">
<a class="page-link" href="#">2</a>
</li>
<li class="page-item">
<a class="page-link" href="#">3</a>
</li>
<li class="page-item">
<a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span>
</a>
</li>
</ul>
</div>
<!-- /.container -->

View File

@ -0,0 +1 @@
<div class="row"></div>

View File

@ -0,0 +1 @@
</div>

36
www/test/index.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Theme Made By www.w3schools.com - No Copyright -->
<title>HomeControl</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/cm.js"></script>
<link href="css/main.css" rel="stylesheet">
</head>
<body>
<!-- Navbar -->
<nav class="navbar navbar-expand-sm bg-light navbar-light">
<ul id="navbarBtn" class="navbar-nav">
<li class="navbar-brand">HomeControl</li>
<!--<li id="pageDevices" class="nav-item active"><a class="nav-link">Geräte</a></li>-->
<li><button id="pageDevices" type="button" class="btn btn-outline-light text-dark active">Geräte</button></li>
<li><button id="pageSettings" type="button" class="btn btn-outline-light text-dark">Einstellungen</button></li>
</ul>
</nav>
<div class="content" id="content">
</div>
<!-- Footer -->
<footer class="container-fluid bg-4 text-center">
</footer>
</body>
</html>

1567
www/vendor/bootstrap/css/bootstrap-grid.css vendored Executable file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

342
www/vendor/bootstrap/css/bootstrap-reboot.css vendored Executable file
View File

@ -0,0 +1,342 @@
/*!
* Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
}
@-ms-viewport {
width: device-width;
}
article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: none !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
a,
area,
button,
[role="button"],
input:not([type="range"]),
label,
select,
summary,
textarea {
-ms-touch-action: manipulation;
touch-action: manipulation;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #868e96;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

View File

@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

8975
www/vendor/bootstrap/css/bootstrap.css vendored Executable file

File diff suppressed because it is too large Load Diff

1
www/vendor/bootstrap/css/bootstrap.css.map vendored Executable file

File diff suppressed because one or more lines are too long

7
www/vendor/bootstrap/css/bootstrap.min.css vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6328
www/vendor/bootstrap/js/bootstrap.bundle.js vendored Executable file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3894
www/vendor/bootstrap/js/bootstrap.js vendored Executable file

File diff suppressed because it is too large Load Diff

1
www/vendor/bootstrap/js/bootstrap.js.map vendored Executable file

File diff suppressed because one or more lines are too long

7
www/vendor/bootstrap/js/bootstrap.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10364
www/vendor/jquery/jquery.js vendored Executable file

File diff suppressed because it is too large Load Diff

2
www/vendor/jquery/jquery.min.js vendored Executable file

File diff suppressed because one or more lines are too long

1
www/vendor/jquery/jquery.min.map vendored Executable file

File diff suppressed because one or more lines are too long

8269
www/vendor/jquery/jquery.slim.js vendored Executable file

File diff suppressed because it is too large Load Diff

2
www/vendor/jquery/jquery.slim.min.js vendored Executable file

File diff suppressed because one or more lines are too long

1
www/vendor/jquery/jquery.slim.min.map vendored Executable file

File diff suppressed because one or more lines are too long