From ac9ff13f63d131b882da53e3f01e28cff10459fa Mon Sep 17 00:00:00 2001 From: Anton Franzluebbers Date: Wed, 20 Oct 2021 01:20:52 -0400 Subject: [PATCH] added back flask website version --- velconnect/__init__.py | 4 +- velconnect/routes/api.py | 5 + velconnect/routes/website.py | 8 +- velconnect/static/api_spec.json | 2 +- velconnect/static/css/spectre.min.css | 1 + .../favicons/android-chrome-192x192.png | Bin 0 -> 6078 bytes .../favicons/android-chrome-256x256.png | Bin 0 -> 6563 bytes .../static/favicons/apple-touch-icon.png | Bin 0 -> 1526 bytes velconnect/static/favicons/browserconfig.xml | 9 + velconnect/static/favicons/favicon-16x16.png | Bin 0 -> 815 bytes velconnect/static/favicons/favicon-32x32.png | Bin 0 -> 1294 bytes velconnect/static/favicons/favicon.ico | Bin 0 -> 15086 bytes velconnect/static/favicons/mstile-150x150.png | Bin 0 -> 1727 bytes .../static/favicons/safari-pinned-tab.svg | 20 ++ velconnect/static/favicons/site.webmanifest | 19 ++ .../static/img/pair_code_screenshot.png | Bin 0 -> 12463 bytes velconnect/static/js/util.js | 98 ++++++++ velconnect/templates/api.html | 24 ++ velconnect/templates/failure.html | 35 +++ velconnect/templates/index.html | 210 ++++++++++++++++++ velconnect/templates/pair.html | 91 ++++++++ velconnect/templates/success.html | 35 +++ website/api.html | 24 ++ 23 files changed, 578 insertions(+), 7 deletions(-) create mode 100644 velconnect/static/css/spectre.min.css create mode 100644 velconnect/static/favicons/android-chrome-192x192.png create mode 100644 velconnect/static/favicons/android-chrome-256x256.png create mode 100644 velconnect/static/favicons/apple-touch-icon.png create mode 100644 velconnect/static/favicons/browserconfig.xml create mode 100644 velconnect/static/favicons/favicon-16x16.png create mode 100644 velconnect/static/favicons/favicon-32x32.png create mode 100644 velconnect/static/favicons/favicon.ico create mode 100644 velconnect/static/favicons/mstile-150x150.png create mode 100644 velconnect/static/favicons/safari-pinned-tab.svg create mode 100644 velconnect/static/favicons/site.webmanifest create mode 100644 velconnect/static/img/pair_code_screenshot.png create mode 100644 velconnect/static/js/util.js create mode 100644 velconnect/templates/api.html create mode 100644 velconnect/templates/failure.html create mode 100644 velconnect/templates/index.html create mode 100644 velconnect/templates/pair.html create mode 100644 velconnect/templates/success.html create mode 100644 website/api.html diff --git a/velconnect/__init__.py b/velconnect/__init__.py index 55a5f2e..240a801 100644 --- a/velconnect/__init__.py +++ b/velconnect/__init__.py @@ -17,8 +17,8 @@ def create_app(): from .routes import api app.register_blueprint(api.bp, url_prefix='/api') - # from .routes import website - # app.register_blueprint(website.bp) + from .routes import website + app.register_blueprint(website.bp) # Error handlers app.register_error_handler(404, resource_not_found) diff --git a/velconnect/routes/api.py b/velconnect/routes/api.py index fb75dc4..bc89a9a 100644 --- a/velconnect/routes/api.py +++ b/velconnect/routes/api.py @@ -10,6 +10,11 @@ from random import random bp = Blueprint('api', __name__) +@bp.route('/', methods=['GET']) +def index(): + return render_template('api.html') + + @bp.route('/api_spec.json', methods=['GET']) @require_api_key(0) def api_spec(): diff --git a/velconnect/routes/website.py b/velconnect/routes/website.py index 698520c..fe4bc1c 100644 --- a/velconnect/routes/website.py +++ b/velconnect/routes/website.py @@ -9,19 +9,19 @@ bp = Blueprint('website', __name__, template_folder='templates') @bp.route('/', methods=['GET']) def index(): - return render_template('index.jinja') + return render_template('index.html') @bp.route('/pair', methods=['GET']) def pair(): - return render_template('pair.jinja') + return render_template('pair.html') @bp.route('/success', methods=['GET']) def success(): - return render_template('success.jinja') + return render_template('success.html') @bp.route('/failure', methods=['GET']) def failure(): - return render_template('failure.jinja') + return render_template('failure.html') diff --git a/velconnect/static/api_spec.json b/velconnect/static/api_spec.json index 1b041d3..6bb7048 100644 --- a/velconnect/static/api_spec.json +++ b/velconnect/static/api_spec.json @@ -7,7 +7,7 @@ }, "servers": [ { - "url": "http://3.23.79.32/api/" + "url": "http://3.141.15.55/api/" } ], "tags": [ diff --git a/velconnect/static/css/spectre.min.css b/velconnect/static/css/spectre.min.css new file mode 100644 index 0000000..0fe23d9 --- /dev/null +++ b/velconnect/static/css/spectre.min.css @@ -0,0 +1 @@ +/*! Spectre.css v0.5.9 | MIT License | github.com/picturepan2/spectre */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}address{font-style:normal}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:"SF Mono","Segoe UI Mono","Roboto Mono",Menlo,Courier,monospace;font-size:1em}dfn{font-style:italic}small{font-size:80%;font-weight:400}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}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{border-style:none;padding:0}fieldset{border:0;margin:0;padding:0}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item;outline:0}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:inherit}html{box-sizing:border-box;font-size:20px;line-height:1.5;-webkit-tap-highlight-color:transparent}body{background:#fff;color:#3b4351;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;font-size:.8rem;overflow-x:hidden;text-rendering:optimizeLegibility}a{color:#5755d9;outline:0;text-decoration:none}a:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}a.active,a:active,a:focus,a:hover{color:#302ecd;text-decoration:underline}a:visited{color:#807fe2}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:500;line-height:1.2;margin-bottom:.5em;margin-top:0}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:500}.h1,h1{font-size:2rem}.h2,h2{font-size:1.6rem}.h3,h3{font-size:1.4rem}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.8rem}p{margin:0 0 1.2rem}a,ins,u{-webkit-text-decoration-skip:ink edges;text-decoration-skip:ink edges}abbr[title]{border-bottom:.05rem dotted;cursor:help;text-decoration:none}kbd{background:#303742;border-radius:.1rem;color:#fff;font-size:.7rem;line-height:1.25;padding:.1rem .2rem}mark{background:#ffe9b3;border-bottom:.05rem solid #ffd367;border-radius:.1rem;color:#3b4351;padding:.05rem .1rem 0}blockquote{border-left:.1rem solid #dadee4;margin-left:0;padding:.4rem .8rem}blockquote p:last-child{margin-bottom:0}ol,ul{margin:.8rem 0 .8rem .8rem;padding:0}ol ol,ol ul,ul ol,ul ul{margin:.8rem 0 .8rem .8rem}ol li,ul li{margin-top:.4rem}ul{list-style:disc inside}ul ul{list-style-type:circle}ol{list-style:decimal inside}ol ol{list-style-type:lower-alpha}dl dt{font-weight:700}dl dd{margin:.4rem 0 .8rem 0}.lang-zh,.lang-zh-hans,html:lang(zh),html:lang(zh-Hans){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",sans-serif}.lang-zh-hant,html:lang(zh-Hant){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang TC","Hiragino Sans CNS","Microsoft JhengHei","Helvetica Neue",sans-serif}.lang-ja,html:lang(ja){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Hiragino Sans","Hiragino Kaku Gothic Pro","Yu Gothic",YuGothic,Meiryo,"Helvetica Neue",sans-serif}.lang-ko,html:lang(ko){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Malgun Gothic","Helvetica Neue",sans-serif}.lang-cjk ins,.lang-cjk u,:lang(ja) ins,:lang(ja) u,:lang(zh) ins,:lang(zh) u{border-bottom:.05rem solid;text-decoration:none}.lang-cjk del+del,.lang-cjk del+s,.lang-cjk ins+ins,.lang-cjk ins+u,.lang-cjk s+del,.lang-cjk s+s,.lang-cjk u+ins,.lang-cjk u+u,:lang(ja) del+del,:lang(ja) del+s,:lang(ja) ins+ins,:lang(ja) ins+u,:lang(ja) s+del,:lang(ja) s+s,:lang(ja) u+ins,:lang(ja) u+u,:lang(zh) del+del,:lang(zh) del+s,:lang(zh) ins+ins,:lang(zh) ins+u,:lang(zh) s+del,:lang(zh) s+s,:lang(zh) u+ins,:lang(zh) u+u{margin-left:.125em}.table{border-collapse:collapse;border-spacing:0;text-align:left;width:100%}.table.table-striped tbody tr:nth-of-type(odd){background:#f7f8f9}.table tbody tr.active,.table.table-striped tbody tr.active{background:#eef0f3}.table.table-hover tbody tr:hover{background:#eef0f3}.table.table-scroll{display:block;overflow-x:auto;padding-bottom:.75rem;white-space:nowrap}.table td,.table th{border-bottom:.05rem solid #dadee4;padding:.6rem .4rem}.table th{border-bottom-width:.1rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #5755d9;border-radius:.1rem;color:#5755d9;cursor:pointer;display:inline-block;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;text-align:center;text-decoration:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.btn:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.btn:focus,.btn:hover{background:#f1f1fc;border-color:#4b48d6;text-decoration:none}.btn.active,.btn:active{background:#4b48d6;border-color:#3634d2;color:#fff;text-decoration:none}.btn.active.loading::after,.btn:active.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.disabled,.btn:disabled,.btn[disabled]{cursor:default;opacity:.5;pointer-events:none}.btn.btn-primary{background:#5755d9;border-color:#4b48d6;color:#fff}.btn.btn-primary:focus,.btn.btn-primary:hover{background:#4240d4;border-color:#3634d2;color:#fff}.btn.btn-primary.active,.btn.btn-primary:active{background:#3a38d2;border-color:#302ecd;color:#fff}.btn.btn-primary.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-success{background:#32b643;border-color:#2faa3f;color:#fff}.btn.btn-success:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.btn.btn-success:focus,.btn.btn-success:hover{background:#30ae40;border-color:#2da23c;color:#fff}.btn.btn-success.active,.btn.btn-success:active{background:#2a9a39;border-color:#278e34;color:#fff}.btn.btn-success.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-error{background:#e85600;border-color:#d95000;color:#fff}.btn.btn-error:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.btn.btn-error:focus,.btn.btn-error:hover{background:#de5200;border-color:#cf4d00;color:#fff}.btn.btn-error.active,.btn.btn-error:active{background:#c44900;border-color:#b54300;color:#fff}.btn.btn-error.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-link{background:0 0;border-color:transparent;color:#5755d9}.btn.btn-link.active,.btn.btn-link:active,.btn.btn-link:focus,.btn.btn-link:hover{color:#302ecd}.btn.btn-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.btn.btn-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.btn.btn-block{display:block;width:100%}.btn.btn-action{padding-left:0;padding-right:0;width:1.8rem}.btn.btn-action.btn-sm{width:1.4rem}.btn.btn-action.btn-lg{width:2rem}.btn.btn-clear{background:0 0;border:0;color:currentColor;height:1rem;line-height:.8rem;margin-left:.2rem;margin-right:-2px;opacity:1;padding:.1rem;text-decoration:none;width:1rem}.btn.btn-clear:focus,.btn.btn-clear:hover{background:rgba(247,248,249,.5);opacity:.95}.btn.btn-clear::before{content:"\2715"}.btn-group{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.btn-group .btn{-ms-flex:1 0 auto;flex:1 0 auto}.btn-group .btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.btn-group .btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.btn-group .btn.active,.btn-group .btn:active,.btn-group .btn:focus,.btn-group .btn:hover{z-index:1}.btn-group.btn-group-block{display:-ms-flexbox;display:flex}.btn-group.btn-group-block .btn{-ms-flex:1 0 0;flex:1 0 0}.form-group:not(:last-child){margin-bottom:.4rem}fieldset{margin-bottom:.8rem}legend{font-size:.9rem;font-weight:500;margin-bottom:.8rem}.form-label{display:block;line-height:1.2rem;padding:.3rem 0}.form-label.label-sm{font-size:.7rem;padding:.1rem 0}.form-label.label-lg{font-size:.9rem;padding:.4rem 0}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;background-image:none;border:.05rem solid #bcc3ce;border-radius:.1rem;color:#3b4351;display:block;font-size:.8rem;height:1.8rem;line-height:1.2rem;max-width:100%;outline:0;padding:.25rem .4rem;position:relative;transition:background .2s,border .2s,box-shadow .2s,color .2s;width:100%}.form-input:focus{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-input:-ms-input-placeholder{color:#bcc3ce}.form-input::-ms-input-placeholder{color:#bcc3ce}.form-input::placeholder{color:#bcc3ce}.form-input.input-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.form-input.input-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.form-input.input-inline{display:inline-block;vertical-align:middle;width:auto}.form-input[type=file]{height:auto}textarea.form-input,textarea.form-input.input-lg,textarea.form-input.input-sm{height:auto}.form-input-hint{color:#bcc3ce;font-size:.7rem;margin-top:.2rem}.has-success .form-input-hint,.is-success+.form-input-hint{color:#32b643}.has-error .form-input-hint,.is-error+.form-input-hint{color:#e85600}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #bcc3ce;border-radius:.1rem;color:inherit;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;vertical-align:middle;width:100%}.form-select:focus{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-select::-ms-expand{display:none}.form-select.select-sm{font-size:.7rem;height:1.4rem;padding:.05rem 1.1rem .05rem .3rem}.form-select.select-lg{font-size:.9rem;height:2rem;padding:.35rem 1.4rem .35rem .6rem}.form-select[multiple],.form-select[size]{height:auto;padding:.25rem .4rem}.form-select[multiple] option,.form-select[size] option{padding:.1rem .2rem}.form-select:not([multiple]):not([size]){background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center/.4rem .5rem;padding-right:1.2rem}.has-icon-left,.has-icon-right{position:relative}.has-icon-left .form-icon,.has-icon-right .form-icon{height:.8rem;margin:0 .25rem;position:absolute;top:50%;transform:translateY(-50%);width:.8rem;z-index:2}.has-icon-left .form-icon{left:.05rem}.has-icon-left .form-input{padding-left:1.3rem}.has-icon-right .form-icon{right:.05rem}.has-icon-right .form-input{padding-right:1.3rem}.form-checkbox,.form-radio,.form-switch{display:block;line-height:1.2rem;margin:.2rem 0;min-height:1.4rem;padding:.1rem .4rem .1rem 1.2rem;position:relative}.form-checkbox input,.form-radio input,.form-switch input{clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.form-checkbox input:focus+.form-icon,.form-radio input:focus+.form-icon,.form-switch input:focus+.form-icon{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-checkbox input:checked+.form-icon,.form-radio input:checked+.form-icon,.form-switch input:checked+.form-icon{background:#5755d9;border-color:#5755d9}.form-checkbox .form-icon,.form-radio .form-icon,.form-switch .form-icon{border:.05rem solid #bcc3ce;cursor:pointer;display:inline-block;position:absolute;transition:background .2s,border .2s,box-shadow .2s,color .2s}.form-checkbox.input-sm,.form-radio.input-sm,.form-switch.input-sm{font-size:.7rem;margin:0}.form-checkbox.input-lg,.form-radio.input-lg,.form-switch.input-lg{font-size:.9rem;margin:.3rem 0}.form-checkbox .form-icon,.form-radio .form-icon{background:#fff;height:.8rem;left:0;top:.3rem;width:.8rem}.form-checkbox input:active+.form-icon,.form-radio input:active+.form-icon{background:#eef0f3}.form-checkbox .form-icon{border-radius:.1rem}.form-checkbox input:checked+.form-icon::before{background-clip:padding-box;border:.1rem solid #fff;border-left-width:0;border-top-width:0;content:"";height:9px;left:50%;margin-left:-3px;margin-top:-6px;position:absolute;top:50%;transform:rotate(45deg);width:6px}.form-checkbox input:indeterminate+.form-icon{background:#5755d9;border-color:#5755d9}.form-checkbox input:indeterminate+.form-icon::before{background:#fff;content:"";height:2px;left:50%;margin-left:-5px;margin-top:-1px;position:absolute;top:50%;width:10px}.form-radio .form-icon{border-radius:50%}.form-radio input:checked+.form-icon::before{background:#fff;border-radius:50%;content:"";height:6px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:6px}.form-switch{padding-left:2rem}.form-switch .form-icon{background:#bcc3ce;background-clip:padding-box;border-radius:.45rem;height:.9rem;left:0;top:.25rem;width:1.6rem}.form-switch .form-icon::before{background:#fff;border-radius:50%;content:"";display:block;height:.8rem;left:0;position:absolute;top:0;transition:background .2s,border .2s,box-shadow .2s,color .2s,left .2s;width:.8rem}.form-switch input:checked+.form-icon::before{left:14px}.form-switch input:active+.form-icon::before{background:#f7f8f9}.input-group{display:-ms-flexbox;display:flex}.input-group .input-group-addon{background:#f7f8f9;border:.05rem solid #bcc3ce;border-radius:.1rem;line-height:1.2rem;padding:.25rem .4rem;white-space:nowrap}.input-group .input-group-addon.addon-sm{font-size:.7rem;padding:.05rem .3rem}.input-group .input-group-addon.addon-lg{font-size:.9rem;padding:.35rem .6rem}.input-group .form-input,.input-group .form-select{-ms-flex:1 1 auto;flex:1 1 auto;width:1%}.input-group .input-group-btn{z-index:1}.input-group .form-input:first-child:not(:last-child),.input-group .form-select:first-child:not(:last-child),.input-group .input-group-addon:first-child:not(:last-child),.input-group .input-group-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group .form-input:not(:first-child):not(:last-child),.input-group .form-select:not(:first-child):not(:last-child),.input-group .input-group-addon:not(:first-child):not(:last-child),.input-group .input-group-btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.input-group .form-input:last-child:not(:first-child),.input-group .form-select:last-child:not(:first-child),.input-group .input-group-addon:last-child:not(:first-child),.input-group .input-group-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.input-group .form-input:focus,.input-group .form-select:focus,.input-group .input-group-addon:focus,.input-group .input-group-btn:focus{z-index:2}.input-group .form-select{width:auto}.input-group.input-inline{display:-ms-inline-flexbox;display:inline-flex}.form-input.is-success,.form-select.is-success,.has-success .form-input,.has-success .form-select{background:#f9fdfa;border-color:#32b643}.form-input.is-success:focus,.form-select.is-success:focus,.has-success .form-input:focus,.has-success .form-select:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.form-input.is-error,.form-select.is-error,.has-error .form-input,.has-error .form-select{background:#fffaf7;border-color:#e85600}.form-input.is-error:focus,.form-select.is-error:focus,.has-error .form-input:focus,.has-error .form-select:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error .form-icon,.form-radio.is-error .form-icon,.form-switch.is-error .form-icon,.has-error .form-checkbox .form-icon,.has-error .form-radio .form-icon,.has-error .form-switch .form-icon{border-color:#e85600}.form-checkbox.is-error input:checked+.form-icon,.form-radio.is-error input:checked+.form-icon,.form-switch.is-error input:checked+.form-icon,.has-error .form-checkbox input:checked+.form-icon,.has-error .form-radio input:checked+.form-icon,.has-error .form-switch input:checked+.form-icon{background:#e85600;border-color:#e85600}.form-checkbox.is-error input:focus+.form-icon,.form-radio.is-error input:focus+.form-icon,.form-switch.is-error input:focus+.form-icon,.has-error .form-checkbox input:focus+.form-icon,.has-error .form-radio input:focus+.form-icon,.has-error .form-switch input:focus+.form-icon{border-color:#e85600;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error input:indeterminate+.form-icon,.has-error .form-checkbox input:indeterminate+.form-icon{background:#e85600;border-color:#e85600}.form-input:not(:-ms-input-placeholder):invalid{border-color:#e85600}.form-input:not(:placeholder-shown):invalid{border-color:#e85600}.form-input:not(:-ms-input-placeholder):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:placeholder-shown):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:-ms-input-placeholder):invalid+.form-input-hint{color:#e85600}.form-input:not(:placeholder-shown):invalid+.form-input-hint{color:#e85600}.form-input.disabled,.form-input:disabled,.form-select.disabled,.form-select:disabled{background-color:#eef0f3;cursor:not-allowed;opacity:.5}.form-input[readonly]{background-color:#f7f8f9}input.disabled+.form-icon,input:disabled+.form-icon{background:#eef0f3;cursor:not-allowed;opacity:.5}.form-switch input.disabled+.form-icon::before,.form-switch input:disabled+.form-icon::before{background:#fff}.form-horizontal{padding:.4rem 0}.form-horizontal .form-group{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.form-inline{display:inline-block}.label{background:#eef0f3;border-radius:.1rem;color:#455060;display:inline-block;line-height:1.25;padding:.1rem .2rem}.label.label-rounded{border-radius:5rem;padding-left:.4rem;padding-right:.4rem}.label.label-primary{background:#5755d9;color:#fff}.label.label-secondary{background:#f1f1fc;color:#5755d9}.label.label-success{background:#32b643;color:#fff}.label.label-warning{background:#ffb700;color:#fff}.label.label-error{background:#e85600;color:#fff}code{background:#fcf2f2;border-radius:.1rem;color:#d73e48;font-size:85%;line-height:1.25;padding:.1rem .2rem}.code{border-radius:.1rem;color:#3b4351;position:relative}.code::before{color:#bcc3ce;content:attr(data-lang);font-size:.7rem;position:absolute;right:.4rem;top:.1rem}.code code{background:#f7f8f9;color:inherit;display:block;line-height:1.5;overflow-x:auto;padding:1rem;width:100%}.img-responsive{display:block;height:auto;max-width:100%}.img-fit-cover{object-fit:cover}.img-fit-contain{object-fit:contain}.video-responsive{display:block;overflow:hidden;padding:0;position:relative;width:100%}.video-responsive::before{content:"";display:block;padding-bottom:56.25%}.video-responsive embed,.video-responsive iframe,.video-responsive object{border:0;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}video.video-responsive{height:auto;max-width:100%}video.video-responsive::before{content:none}.video-responsive-4-3::before{padding-bottom:75%}.video-responsive-1-1::before{padding-bottom:100%}.figure{margin:0 0 .4rem 0}.figure .figure-caption{color:#66758c;margin-top:.4rem}.container{margin-left:auto;margin-right:auto;padding-left:.4rem;padding-right:.4rem;width:100%}.container.grid-xl{max-width:1296px}.container.grid-lg{max-width:976px}.container.grid-md{max-width:856px}.container.grid-sm{max-width:616px}.container.grid-xs{max-width:496px}.show-lg,.show-md,.show-sm,.show-xl,.show-xs{display:none!important}.cols,.columns{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-.4rem;margin-right:-.4rem}.cols.col-gapless,.columns.col-gapless{margin-left:0;margin-right:0}.cols.col-gapless>.column,.columns.col-gapless>.column{padding-left:0;padding-right:0}.cols.col-oneline,.columns.col-oneline{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto}.column,[class~=col-]{-ms-flex:1;flex:1;max-width:100%;padding-left:.4rem;padding-right:.4rem}.column.col-1,.column.col-10,.column.col-11,.column.col-12,.column.col-2,.column.col-3,.column.col-4,.column.col-5,.column.col-6,.column.col-7,.column.col-8,.column.col-9,.column.col-auto,[class~=col-].col-1,[class~=col-].col-10,[class~=col-].col-11,[class~=col-].col-12,[class~=col-].col-2,[class~=col-].col-3,[class~=col-].col-4,[class~=col-].col-5,[class~=col-].col-6,[class~=col-].col-7,[class~=col-].col-8,[class~=col-].col-9,[class~=col-].col-auto{-ms-flex:none;flex:none}.col-12{width:100%}.col-11{width:91.66666667%}.col-10{width:83.33333333%}.col-9{width:75%}.col-8{width:66.66666667%}.col-7{width:58.33333333%}.col-6{width:50%}.col-5{width:41.66666667%}.col-4{width:33.33333333%}.col-3{width:25%}.col-2{width:16.66666667%}.col-1{width:8.33333333%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;max-width:none;width:auto}.col-mx-auto{margin-left:auto;margin-right:auto}.col-ml-auto{margin-left:auto}.col-mr-auto{margin-right:auto}@media (max-width:1280px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{-ms-flex:none;flex:none}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-auto{width:auto}.hide-xl{display:none!important}.show-xl{display:block!important}}@media (max-width:960px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto{-ms-flex:none;flex:none}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-auto{width:auto}.hide-lg{display:none!important}.show-lg{display:block!important}}@media (max-width:840px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto{-ms-flex:none;flex:none}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-auto{width:auto}.hide-md{display:none!important}.show-md{display:block!important}}@media (max-width:600px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto{-ms-flex:none;flex:none}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-auto{width:auto}.hide-sm{display:none!important}.show-sm{display:block!important}}@media (max-width:480px){.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-auto{-ms-flex:none;flex:none}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-auto{width:auto}.hide-xs{display:none!important}.show-xs{display:block!important}}.hero{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;padding-bottom:4rem;padding-top:4rem}.hero.hero-sm{padding-bottom:2rem;padding-top:2rem}.hero.hero-lg{padding-bottom:8rem;padding-top:8rem}.hero .hero-body{padding:.4rem}.navbar{align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;-ms-flex-pack:justify;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between}.navbar .navbar-section{align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1 0 0;flex:1 0 0;-ms-flex-align:center}.navbar .navbar-section:not(:first-child):last-child{-ms-flex-pack:end;justify-content:flex-end}.navbar .navbar-center{align-items:center;display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center}.navbar .navbar-brand{font-size:.9rem;text-decoration:none}.accordion input:checked~.accordion-header>.icon:first-child,.accordion[open] .accordion-header>.icon:first-child{transform:rotate(90deg)}.accordion input:checked~.accordion-body,.accordion[open] .accordion-body{max-height:50rem}.accordion .accordion-header{display:block;padding:.2rem .4rem}.accordion .accordion-header .icon{transition:transform .25s}.accordion .accordion-body{margin-bottom:.4rem;max-height:0;overflow:hidden;transition:max-height .25s}summary.accordion-header::-webkit-details-marker{display:none}.avatar{background:#5755d9;border-radius:50%;color:rgba(255,255,255,.85);display:inline-block;font-size:.8rem;font-weight:300;height:1.6rem;line-height:1.25;margin:0;position:relative;vertical-align:middle;width:1.6rem}.avatar.avatar-xs{font-size:.4rem;height:.8rem;width:.8rem}.avatar.avatar-sm{font-size:.6rem;height:1.2rem;width:1.2rem}.avatar.avatar-lg{font-size:1.2rem;height:2.4rem;width:2.4rem}.avatar.avatar-xl{font-size:1.6rem;height:3.2rem;width:3.2rem}.avatar img{border-radius:50%;height:100%;position:relative;width:100%;z-index:1}.avatar .avatar-icon,.avatar .avatar-presence{background:#fff;bottom:14.64%;height:50%;padding:.1rem;position:absolute;right:14.64%;transform:translate(50%,50%);width:50%;z-index:2}.avatar .avatar-presence{background:#bcc3ce;border-radius:50%;box-shadow:0 0 0 .1rem #fff;height:.5em;width:.5em}.avatar .avatar-presence.online{background:#32b643}.avatar .avatar-presence.busy{background:#e85600}.avatar .avatar-presence.away{background:#ffb700}.avatar[data-initial]::before{color:currentColor;content:attr(data-initial);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.badge{position:relative;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge]::after{background:#5755d9;background-clip:padding-box;border-radius:.5rem;box-shadow:0 0 0 .1rem #fff;color:#fff;content:attr(data-badge);display:inline-block;transform:translate(-.05rem,-.5rem)}.badge[data-badge]::after{font-size:.7rem;height:.9rem;line-height:1;min-width:.9rem;padding:.1rem .2rem;text-align:center;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge=""]::after{height:6px;min-width:6px;padding:0;width:6px}.badge.btn::after{position:absolute;right:0;top:0;transform:translate(50%,-50%)}.badge.avatar::after{position:absolute;right:14.64%;top:14.64%;transform:translate(50%,-50%);z-index:100}.breadcrumb{list-style:none;margin:.2rem 0;padding:.2rem 0}.breadcrumb .breadcrumb-item{color:#66758c;display:inline-block;margin:0;padding:.2rem 0}.breadcrumb .breadcrumb-item:not(:last-child){margin-right:.2rem}.breadcrumb .breadcrumb-item:not(:last-child) a{color:#66758c}.breadcrumb .breadcrumb-item:not(:first-child)::before{color:#66758c;content:"/";padding-right:.4rem}.bar{background:#eef0f3;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;height:.8rem;width:100%}.bar.bar-sm{height:.2rem}.bar .bar-item{background:#5755d9;color:#fff;display:block;-ms-flex-negative:0;flex-shrink:0;font-size:.7rem;height:100%;line-height:.8rem;position:relative;text-align:center;width:0}.bar .bar-item:first-child{border-bottom-left-radius:.1rem;border-top-left-radius:.1rem}.bar .bar-item:last-child{border-bottom-right-radius:.1rem;border-top-right-radius:.1rem;-ms-flex-negative:1;flex-shrink:1}.bar-slider{height:.1rem;margin:.4rem 0;position:relative}.bar-slider .bar-item{left:0;padding:0;position:absolute}.bar-slider .bar-item:not(:last-child):first-child{background:#eef0f3;z-index:1}.bar-slider .bar-slider-btn{background:#5755d9;border:0;border-radius:50%;height:.6rem;padding:0;position:absolute;right:0;top:50%;transform:translate(50%,-50%);width:.6rem}.bar-slider .bar-slider-btn:active{box-shadow:0 0 0 .1rem #5755d9}.card{background:#fff;border:.05rem solid #dadee4;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card .card-body,.card .card-footer,.card .card-header{padding:.8rem;padding-bottom:0}.card .card-body:last-child,.card .card-footer:last-child,.card .card-header:last-child{padding-bottom:.8rem}.card .card-body{-ms-flex:1 1 auto;flex:1 1 auto}.card .card-image{padding-top:.8rem}.card .card-image:first-child{padding-top:0}.card .card-image:first-child img{border-top-left-radius:.1rem;border-top-right-radius:.1rem}.card .card-image:last-child img{border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem}.chip{align-items:center;background:#eef0f3;border-radius:5rem;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;font-size:90%;height:1.2rem;line-height:.8rem;margin:.1rem;max-width:320px;overflow:hidden;padding:.2rem .4rem;text-decoration:none;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.chip.active{background:#5755d9;color:#fff}.chip .avatar{margin-left:-.4rem;margin-right:.2rem}.chip .btn-clear{border-radius:50%;transform:scale(.75)}.dropdown{display:inline-block;position:relative}.dropdown .menu{animation:slide-down .15s ease 1;display:none;left:0;max-height:50vh;overflow-y:auto;position:absolute;top:100%}.dropdown.dropdown-right .menu{left:auto;right:0}.dropdown .dropdown-toggle:focus+.menu,.dropdown .menu:hover,.dropdown.active .menu{display:block}.dropdown .btn-group .dropdown-toggle:nth-last-child(2){border-bottom-right-radius:.1rem;border-top-right-radius:.1rem}.empty{background:#f7f8f9;border-radius:.1rem;color:#66758c;padding:3.2rem 1.6rem;text-align:center}.empty .empty-icon{margin-bottom:.8rem}.empty .empty-subtitle,.empty .empty-title{margin:.4rem auto}.empty .empty-action{margin-top:.8rem}.menu{background:#fff;border-radius:.1rem;box-shadow:0 .05rem .2rem rgba(48,55,66,.3);list-style:none;margin:0;min-width:180px;padding:.4rem;transform:translateY(.2rem);z-index:300}.menu.menu-nav{background:0 0;box-shadow:none}.menu .menu-item{margin-top:0;padding:0 .4rem;position:relative;text-decoration:none}.menu .menu-item>a{border-radius:.1rem;color:inherit;display:block;margin:0 -.4rem;padding:.2rem .4rem;text-decoration:none}.menu .menu-item>a:focus,.menu .menu-item>a:hover{background:#f1f1fc;color:#5755d9}.menu .menu-item>a.active,.menu .menu-item>a:active{background:#f1f1fc;color:#5755d9}.menu .menu-item .form-checkbox,.menu .menu-item .form-radio,.menu .menu-item .form-switch{margin:.1rem 0}.menu .menu-item+.menu-item{margin-top:.2rem}.menu .menu-badge{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;height:100%;position:absolute;right:0;top:0}.menu .menu-badge .label{margin-right:.4rem}.modal{align-items:center;bottom:0;display:none;-ms-flex-align:center;-ms-flex-pack:center;justify-content:center;left:0;opacity:0;overflow:hidden;padding:.4rem;position:fixed;right:0;top:0}.modal.active,.modal:target{display:-ms-flexbox;display:flex;opacity:1;z-index:400}.modal.active .modal-overlay,.modal:target .modal-overlay{background:rgba(247,248,249,.75);bottom:0;cursor:default;display:block;left:0;position:absolute;right:0;top:0}.modal.active .modal-container,.modal:target .modal-container{animation:slide-down .2s ease 1;z-index:1}.modal.modal-sm .modal-container{max-width:320px;padding:0 .4rem}.modal.modal-lg .modal-overlay{background:#fff}.modal.modal-lg .modal-container{box-shadow:none;max-width:960px}.modal-container{background:#fff;border-radius:.1rem;box-shadow:0 .2rem .5rem rgba(48,55,66,.3);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:75vh;max-width:640px;padding:0 .8rem;width:100%}.modal-container.modal-fullheight{max-height:100vh}.modal-container .modal-header{color:#303742;padding:.8rem}.modal-container .modal-body{overflow-y:auto;padding:.8rem;position:relative}.modal-container .modal-footer{padding:.8rem;text-align:right}.nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;list-style:none;margin:.2rem 0}.nav .nav-item a{color:#66758c;padding:.2rem .4rem;text-decoration:none}.nav .nav-item a:focus,.nav .nav-item a:hover{color:#5755d9}.nav .nav-item.active>a{color:#505c6e;font-weight:700}.nav .nav-item.active>a:focus,.nav .nav-item.active>a:hover{color:#5755d9}.nav .nav{margin-bottom:.4rem;margin-left:.8rem}.pagination{display:-ms-flexbox;display:flex;list-style:none;margin:.2rem 0;padding:.2rem 0}.pagination .page-item{margin:.2rem .05rem}.pagination .page-item span{display:inline-block;padding:.2rem .2rem}.pagination .page-item a{border-radius:.1rem;display:inline-block;padding:.2rem .4rem;text-decoration:none}.pagination .page-item a:focus,.pagination .page-item a:hover{color:#5755d9}.pagination .page-item.disabled a{cursor:default;opacity:.5;pointer-events:none}.pagination .page-item.active a{background:#5755d9;color:#fff}.pagination .page-item.page-next,.pagination .page-item.page-prev{-ms-flex:1 0 50%;flex:1 0 50%}.pagination .page-item.page-next{text-align:right}.pagination .page-item .page-item-title{margin:0}.pagination .page-item .page-item-subtitle{margin:0;opacity:.5}.panel{border:.05rem solid #dadee4;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.panel .panel-footer,.panel .panel-header{-ms-flex:0 0 auto;flex:0 0 auto;padding:.8rem}.panel .panel-nav{-ms-flex:0 0 auto;flex:0 0 auto}.panel .panel-body{-ms-flex:1 1 auto;flex:1 1 auto;overflow-y:auto;padding:0 .8rem}.popover{display:inline-block;position:relative}.popover .popover-container{left:50%;opacity:0;padding:.4rem;position:absolute;top:0;transform:translate(-50%,-50%) scale(0);transition:transform .2s;width:320px;z-index:300}.popover :focus+.popover-container,.popover:hover .popover-container{display:block;opacity:1;transform:translate(-50%,-100%) scale(1)}.popover.popover-right .popover-container{left:100%;top:50%}.popover.popover-right :focus+.popover-container,.popover.popover-right:hover .popover-container{transform:translate(0,-50%) scale(1)}.popover.popover-bottom .popover-container{left:50%;top:100%}.popover.popover-bottom :focus+.popover-container,.popover.popover-bottom:hover .popover-container{transform:translate(-50%,0) scale(1)}.popover.popover-left .popover-container{left:0;top:50%}.popover.popover-left :focus+.popover-container,.popover.popover-left:hover .popover-container{transform:translate(-100%,-50%) scale(1)}.popover .card{border:0;box-shadow:0 .2rem .5rem rgba(48,55,66,.3)}.step{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;list-style:none;margin:.2rem 0;width:100%}.step .step-item{-ms-flex:1 1 0;flex:1 1 0;margin-top:0;min-height:1rem;position:relative;text-align:center}.step .step-item:not(:first-child)::before{background:#5755d9;content:"";height:2px;left:-50%;position:absolute;top:9px;width:100%}.step .step-item a{color:#5755d9;display:inline-block;padding:20px 10px 0;text-decoration:none}.step .step-item a::before{background:#5755d9;border:.1rem solid #fff;border-radius:50%;content:"";display:block;height:.6rem;left:50%;position:absolute;top:.2rem;transform:translateX(-50%);width:.6rem;z-index:1}.step .step-item.active a::before{background:#fff;border:.1rem solid #5755d9}.step .step-item.active~.step-item::before{background:#dadee4}.step .step-item.active~.step-item a{color:#bcc3ce}.step .step-item.active~.step-item a::before{background:#dadee4}.tab{align-items:center;border-bottom:.05rem solid #dadee4;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:.2rem 0 .15rem 0}.tab .tab-item{margin-top:0}.tab .tab-item a{border-bottom:.1rem solid transparent;color:inherit;display:block;margin:0 .4rem 0 0;padding:.4rem .2rem .3rem .2rem;text-decoration:none}.tab .tab-item a:focus,.tab .tab-item a:hover{color:#5755d9}.tab .tab-item a.active,.tab .tab-item.active a{border-bottom-color:#5755d9;color:#5755d9}.tab .tab-item.tab-action{-ms-flex:1 0 auto;flex:1 0 auto;text-align:right}.tab .tab-item .btn-clear{margin-top:-.2rem}.tab.tab-block .tab-item{-ms-flex:1 0 0;flex:1 0 0;text-align:center}.tab.tab-block .tab-item a{margin:0}.tab.tab-block .tab-item .badge[data-badge]::after{position:absolute;right:.1rem;top:.1rem;transform:translate(0,0)}.tab:not(.tab-block) .badge{padding-right:0}.tile{align-content:space-between;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex-align:start;-ms-flex-line-pack:justify}.tile .tile-action,.tile .tile-icon{-ms-flex:0 0 auto;flex:0 0 auto}.tile .tile-content{-ms-flex:1 1 auto;flex:1 1 auto}.tile .tile-content:not(:first-child){padding-left:.4rem}.tile .tile-content:not(:last-child){padding-right:.4rem}.tile .tile-subtitle,.tile .tile-title{line-height:1.2rem}.tile.tile-centered{align-items:center;-ms-flex-align:center}.tile.tile-centered .tile-content{overflow:hidden}.tile.tile-centered .tile-subtitle,.tile.tile-centered .tile-title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast{background:rgba(48,55,66,.95);border:.05rem solid #303742;border-color:#303742;border-radius:.1rem;color:#fff;display:block;padding:.4rem;width:100%}.toast.toast-primary{background:rgba(87,85,217,.95);border-color:#5755d9}.toast.toast-success{background:rgba(50,182,67,.95);border-color:#32b643}.toast.toast-warning{background:rgba(255,183,0,.95);border-color:#ffb700}.toast.toast-error{background:rgba(232,86,0,.95);border-color:#e85600}.toast a{color:#fff;text-decoration:underline}.toast a.active,.toast a:active,.toast a:focus,.toast a:hover{opacity:.75}.toast .btn-clear{margin:.1rem}.toast p:last-child{margin-bottom:0}.tooltip{position:relative}.tooltip::after{background:rgba(48,55,66,.95);border-radius:.1rem;bottom:100%;color:#fff;content:attr(data-tooltip);display:block;font-size:.7rem;left:50%;max-width:320px;opacity:0;overflow:hidden;padding:.2rem .4rem;pointer-events:none;position:absolute;text-overflow:ellipsis;transform:translate(-50%,.4rem);transition:opacity .2s,transform .2s;white-space:pre;z-index:300}.tooltip:focus::after,.tooltip:hover::after{opacity:1;transform:translate(-50%,-.2rem)}.tooltip.disabled,.tooltip[disabled]{pointer-events:auto}.tooltip.tooltip-right::after{bottom:50%;left:100%;transform:translate(-.2rem,50%)}.tooltip.tooltip-right:focus::after,.tooltip.tooltip-right:hover::after{transform:translate(.2rem,50%)}.tooltip.tooltip-bottom::after{bottom:auto;top:100%;transform:translate(-50%,-.4rem)}.tooltip.tooltip-bottom:focus::after,.tooltip.tooltip-bottom:hover::after{transform:translate(-50%,.2rem)}.tooltip.tooltip-left::after{bottom:50%;left:auto;right:100%;transform:translate(.4rem,50%)}.tooltip.tooltip-left:focus::after,.tooltip.tooltip-left:hover::after{transform:translate(-.2rem,50%)}@keyframes loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-1.6rem)}100%{opacity:1;transform:translateY(0)}}.text-primary{color:#5755d9!important}a.text-primary:focus,a.text-primary:hover{color:#4240d4}a.text-primary:visited{color:#6c6ade}.text-secondary{color:#e5e5f9!important}a.text-secondary:focus,a.text-secondary:hover{color:#d1d0f4}a.text-secondary:visited{color:#fafafe}.text-gray{color:#bcc3ce!important}a.text-gray:focus,a.text-gray:hover{color:#adb6c4}a.text-gray:visited{color:#cbd0d9}.text-light{color:#fff!important}a.text-light:focus,a.text-light:hover{color:#f2f2f2}a.text-light:visited{color:#fff}.text-dark{color:#3b4351!important}a.text-dark:focus,a.text-dark:hover{color:#303742}a.text-dark:visited{color:#455060}.text-success{color:#32b643!important}a.text-success:focus,a.text-success:hover{color:#2da23c}a.text-success:visited{color:#39c94b}.text-warning{color:#ffb700!important}a.text-warning:focus,a.text-warning:hover{color:#e6a500}a.text-warning:visited{color:#ffbe1a}.text-error{color:#e85600!important}a.text-error:focus,a.text-error:hover{color:#cf4d00}a.text-error:visited{color:#ff6003}.bg-primary{background:#5755d9!important;color:#fff}.bg-secondary{background:#f1f1fc!important}.bg-dark{background:#303742!important;color:#fff}.bg-gray{background:#f7f8f9!important}.bg-success{background:#32b643!important;color:#fff}.bg-warning{background:#ffb700!important;color:#fff}.bg-error{background:#e85600!important;color:#fff}.c-hand{cursor:pointer}.c-move{cursor:move}.c-zoom-in{cursor:zoom-in}.c-zoom-out{cursor:zoom-out}.c-not-allowed{cursor:not-allowed}.c-auto{cursor:auto}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.d-hide,.d-none{display:none!important}.d-visible{visibility:visible}.d-invisible{visibility:hidden}.text-hide{background:0 0;border:0;color:transparent;font-size:0;line-height:0;text-shadow:none}.text-assistive{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.divider,.divider-vert{display:block;position:relative}.divider-vert[data-content]::after,.divider[data-content]::after{background:#fff;color:#bcc3ce;content:attr(data-content);display:inline-block;font-size:.7rem;padding:0 .4rem;transform:translateY(-.65rem)}.divider{border-top:.05rem solid #f1f3f5;height:.05rem;margin:.4rem 0}.divider[data-content]{margin:.8rem 0}.divider-vert{display:block;padding:.8rem}.divider-vert::before{border-left:.05rem solid #dadee4;bottom:.4rem;content:"";display:block;left:50%;position:absolute;top:.4rem;transform:translateX(-50%)}.divider-vert[data-content]::after{left:50%;padding:.2rem 0;position:absolute;top:50%;transform:translate(-50%,-50%)}.loading{color:transparent!important;min-height:.8rem;pointer-events:none;position:relative}.loading::after{animation:loading .5s infinite linear;background:0 0;border:.1rem solid #5755d9;border-radius:50%;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:.8rem;left:50%;margin-left:-.4rem;margin-top:-.4rem;opacity:1;padding:0;position:absolute;top:50%;width:.8rem;z-index:1}.loading.loading-lg{min-height:2rem}.loading.loading-lg::after{height:1.6rem;margin-left:-.8rem;margin-top:-.8rem;width:1.6rem}.clearfix::after{clear:both;content:"";display:table}.float-left{float:left!important}.float-right{float:right!important}.p-relative{position:relative!important}.p-absolute{position:absolute!important}.p-fixed{position:fixed!important}.p-sticky{position:-webkit-sticky!important;position:sticky!important}.p-centered{display:block;float:none;margin-left:auto;margin-right:auto}.flex-centered{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-pack:center;justify-content:center}.m-0{margin:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-bottom:0!important;margin-top:0!important}.m-1{margin:.2rem!important}.mb-1{margin-bottom:.2rem!important}.ml-1{margin-left:.2rem!important}.mr-1{margin-right:.2rem!important}.mt-1{margin-top:.2rem!important}.mx-1{margin-left:.2rem!important;margin-right:.2rem!important}.my-1{margin-bottom:.2rem!important;margin-top:.2rem!important}.m-2{margin:.4rem!important}.mb-2{margin-bottom:.4rem!important}.ml-2{margin-left:.4rem!important}.mr-2{margin-right:.4rem!important}.mt-2{margin-top:.4rem!important}.mx-2{margin-left:.4rem!important;margin-right:.4rem!important}.my-2{margin-bottom:.4rem!important;margin-top:.4rem!important}.p-0{padding:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.pr-0{padding-right:0!important}.pt-0{padding-top:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-bottom:0!important;padding-top:0!important}.p-1{padding:.2rem!important}.pb-1{padding-bottom:.2rem!important}.pl-1{padding-left:.2rem!important}.pr-1{padding-right:.2rem!important}.pt-1{padding-top:.2rem!important}.px-1{padding-left:.2rem!important;padding-right:.2rem!important}.py-1{padding-bottom:.2rem!important;padding-top:.2rem!important}.p-2{padding:.4rem!important}.pb-2{padding-bottom:.4rem!important}.pl-2{padding-left:.4rem!important}.pr-2{padding-right:.4rem!important}.pt-2{padding-top:.4rem!important}.px-2{padding-left:.4rem!important;padding-right:.4rem!important}.py-2{padding-bottom:.4rem!important;padding-top:.4rem!important}.s-rounded{border-radius:.1rem}.s-circle{border-radius:50%}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-normal{font-weight:400}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-large{font-size:1.2em}.text-small{font-size:.9em}.text-tiny{font-size:.8em}.text-muted{opacity:.8}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-clip{overflow:hidden;text-overflow:clip;white-space:nowrap}.text-break{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-break:break-word;word-wrap:break-word} \ No newline at end of file diff --git a/velconnect/static/favicons/android-chrome-192x192.png b/velconnect/static/favicons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cd1715955f6ca91ea7ddb65e133f2192c8792c GIT binary patch literal 6078 zcmcIobx_n%*Z#3IEJ#R*lypmXcS%aaN=PH3bcd86sjPH|)Kb#5E3v>*0us^<5=(

SbW#%jog`t%I|h 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 L_0?+b*+%{sHBsEn literal 0 HcmV?d00001 diff --git a/velconnect/static/favicons/apple-touch-icon.png b/velconnect/static/favicons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6f509afbd4953e04ea62e2b18cf67a1c1cd015 GIT binary patch literal 1526 zcmZ`%doLKBK9aWILZ@)27t7a0FZeX0JasUObGzoum%9> zWdMMe0Kn0N(oTOT08nc4^Ts0A*VhFNEz^b6>4&uGqQ`=!)-{Ply0FMEt(GbUE?A+YkoSYmYk;r1PRyc3xY8uwW;`!E>EH|GneMmP1zP7q58XWF9b%t@mMlP4* z@pwfv2n3=~C>*aK>6~D(gTZq3?zV6cz8~(fIm0l73L0BuVq%n)m8Tw*aLxyIn>)x? zrHh>mrupf`PA1D0z4W@9X=abZ;mBliR#uj|xw(~LhLmb!Y_2;ZrK;w47URDSUi^9|F~ZYsZsX=1m;>}4bUCi5P$k^UtmB^V3_i^T>7 z1vNJ}FL(E`&tWF-6|RZIlaxZX2WFD|V7aGn`3;Lor3MBDhJ=I!2M33Rg|)P_Op@+1 zjcu2E*%PD!j%NS|g`FT4tO-TSy_^;H+o8CmE(5ETK8{c*6bJ-j#f*;27MC(JGtJD* zAP@+{7{(2cSz-0}I(qaud9HBYalC{3(INdlAzffghS4b{B_$OVl|E;bkUKO(E$36q z#p4t0?d>EIX{G<&OmXRls+!&1UE}z~dc|{0x#ti=m#^d7Vs3-{pqk zTZRi)-o2uKb4f1WitpeirOs_7qRM~G)pXlyaQDB!Z}4#>OZry~&-Y8)tBA1F>lQ8y zf>V^pLX5MwD;lCkl}yoQbq_noXH>QpckXe~e%VfyX;1DtUZkfG>#F6|ww#q054g(t zY2Vab8Dsfr6LCp1v=>I7;YMjYr#quIFtrQ#P=@sbqxGQty3LK^`=b|llE#QCQwTHKM(;S!CT(`}n)v40ha+%! zZkXHny7Rzhc7E|h*?QbDd3C|)!=Y_#(%B2V?-zL%BN-D;BfPdtSbe`bYQ;`%M@6l% zEPU`Mv}$#zeqzukSFV)OMmxlRP1B+sBufn$2jhb9p=Gic^YTw_0rUP=aX37AyQGZv zGi`gD{hjXvsmd=uT`S?O)>WDQ(Uf;f9C=EnhMf&Ci1z>FaUo{z!+<_IxjIzi z$n4iDq2r09W+aI2B>TQkZ=^L$gI-9pryYL^L(JA2k7($drdw3zlv7|PI<=i?ky?L# zo=HN^jh$(?Y6X$DFJ(K*f=yNF-DPC2W_PB0gA|;OcqF(>c@~Lrhuu4AiwOAGn2kp@ z?xUTXkImKQxiT{;Drojr6i$C&o|b|A9IJcv1jni9>qR}-?Qc3(Tk`bPuO7?3NIAMX zDPt!uUFKUf@;|lHbhDLO&7yQ%k}J_S72P)?AVUaOA_&p&sKjUm0XEh)Pzcl-0=2_h z+rXg?a2q>wYiqc*_2i^v;$McV@mFGTssC?yPWFpc7=qKVAp}fBGB_bI9vAytG?N~T01D}YXmY!J=WjaS)1LqU literal 0 HcmV?d00001 diff --git a/velconnect/static/favicons/browserconfig.xml b/velconnect/static/favicons/browserconfig.xml new file mode 100644 index 0000000..e8b57e5 --- /dev/null +++ b/velconnect/static/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #b91d47 + + + diff --git a/velconnect/static/favicons/favicon-16x16.png b/velconnect/static/favicons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c768a00defd4c298704bcfa6e7f4559304cb96 GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>L3?YlH{-ks~$@7%g|zHjo; z(D>_n_uqZ==+fLp2eXRi&7VJI>eP)hXCIGEzkTWQ`TnU#L*i~6ICOd8(*2o*UESTa zb#+U6`%fff9*symTi3cjt7vKOgxgoI-F@)j{KV-8jO`C*6wIAJe=^XJS#yr~M_!mR z>*Ab+Hx3`YbNkMvISY?Wo}QALI;*e$TvO-ivbxjdb=S6RzkC1Q|NsBHWtRX$gF&<; z$S;^R?%Lm5Y3%WDK4e~f@aN{^&xH@4a{8JIEdwfGO!9Vj37yQc!x+e6FY)wsWq-;g zz$7fkG2u8cco~*?x;TbNTuwdrl33hm%FE^7z5Dj>{Grqd8(KfVugSc{ zl(EI?kK1x_7Xyhv!O4<3E4oB;vK$=Tjz~;8|6ZA=U_pY0%)$(vc^=CyeR5HoeOkP0 zY0=WC)%zP2vrVGk_FZ}V_4Rz&7`DR`ugHE^4^C>xpLtgN^wp}(ci(n0Pe1%o#6EuA z_TSEIdj3Ck1ULOZ{^r#?hJ#Dq_=$I!C8<`) zMX5lF!N|bKP}k5v*U&7)z{twb(#qIC+rYrez@T!?-9i)%x%nxXX_dG&aC}TX3)B!^ z6%tVrlvu7%P?VpRnUkteQdy9ykXcZY%)n4F=kX^Vj>0evjZ^-o&v-r!VqjM0)=TCV zRu=Z2EW#|T;L>1nIE7hxbBMy}8&^&oIdeqj2>a;|^+ew_dS literal 0 HcmV?d00001 diff --git a/velconnect/static/favicons/favicon-32x32.png b/velconnect/static/favicons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5a65ed9421e4ec475a516c54371071840a6078 GIT binary patch literal 1294 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 UeZaz4v0K#8V}S7S$UMyZKZj1H2mk;8 literal 0 HcmV?d00001 diff --git a/velconnect/static/favicons/mstile-150x150.png b/velconnect/static/favicons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..145dcc22c611c548ad15be18a3ab50444c15829c GIT binary patch literal 1727 zcmbtUc~H^`6#gMOo_S=OXh>+~Sq8$kd6g1|7n(|Dhp7SH3MT4L*)cKDER{;hOszJ$ zQ(Cf2vn>xi63ry9Xtfp8)HDOLENgdv`{(|#Gdt7Fd-LXdZ@%x%ym|8#><%EU)HT-y z0AQt$H!&ChUg-~9waS}Y&3m)3-?k%kHSsY+e}0Gc!( zq9+BE&y7eK6go0r^(LvI;1tC}enjUoHktLNg*fEs?@viS6t-*_tH~93>YN=Nw(Gq5 zyS+|(jo*m5iBP03;noKkRa+rkVh)+=56f_@0M{3|Hy=JH%BNpl$b2)z7?nOPcSif1 z+3>v~d!(D0@kh2Q4rO%>Uzln~srZ1b*oT{NZf`(XN$75E3jh3D?^Ek_u)mfMgcN5M zMG(4K)pfPD^9KG4Zu8>v%T%NK7SR$N*Ja^4MYR#IcT9~tj2_k)mLS~mexwoo$d5>N3Y?N#xZv!brssu+jA|jsNBF|>0;@%mB`6GN^FE2gEX>7MnzPCg$Vv< z+1arhWJh)p>9HJ-yx%9xb~}Va)eL1f3fP2=DA;!Ymko)L2!$zm2j8gt5pg|*?Pb9+M<5#0C>+A)&l#bC1$q9gl|dW zhuRUhMI+pIA>H>2(PKHg$HJ<>YU;TfG3L&dZMqbhnPO~Q#?sU!CC!N&liljf_>=aO zZRici7{jAi@HN!qNdb;Ml={Pi)@4~LW}KYJ)9cVzA)*_Fq}qF*rx#e31sxoC^@YKH zDO$2n>v|JawxI9l6u#4?IdE*(=whsZkOzkjA?#`{g%%$->g}EJT_hLwRoEf-g5~oI zqFuLF*Zz}zO-pnt+c*DM;J6lvy%`_^{%BRiF}uo}$HZhCgL%yS5px_3$=kE@(j z#QTP9**S|rrG~s$^SCCn0YxN3crgT*6c8*%)dc0rc-)dSMPDoW&RYIU``Kjr-BXg1 zrsmQrKSQ`=Df5_Xnf-%$L7W2{*E-S33pv5;R~S2Y3SXShLTr$T^AsuN7UhAt;oZyk z9|ZWcz$^=dyKPYL=iY8DkQ9eSjtKe>%vf?YWi9;|6`HKO^h!0T|}| zMBh-+DdvgrG(}2h-}(yK54SmeLJ1=>Q6$^s{g>$((0nRz-}&@ZZG^Nj-z%tv*^S^A ztBcBNg1VR<-U>UbZ`DP5yyXzHUu<+>j3{_UJcT z(W-nnLGYrXO}K)6Sr*`s!Hsu=-%Q}IPSNa*e&qjt>ucVV-~(A8*1EiSk+I}*(S9IA z&FoKi++)x;(zJy^D;@P;x6Bfh%^ZyUs?ke-Yx_hE7V~_AzA!y*wAZfqvi3MBGNt{* zCJ~#HqUGn5j(>Gs)O#%Wj`KU+J{VW9nxmh zJc8f8`4S{_kWVgOF1GRo11G?8FP)?x0`zI34Uv@N;NyZwy<}4($#WN ziC?G*9kn=jR9s>c=4^-Lq&N;FD;H^#ufXu?k@mOP&>mIw6mbbVFZcd_L;61oyie=Q za8V9zVsRy8!5dj#VJun{WFFKbbf^GM7$@vzEM_xyD+S}^f^~MmIXPf3E*Q)^TzA;N z2uTcDTy*At6D}sR#v#JqEJ_$FI4T3pJi>^MOQfS&nM^u5j>)0|09dJ1>uaZk+S+yn zO1pg~f&ut?Jx8jZ$$AsNlGSh%G%*L?N`tSjrJ$w5{hg9-2~wgZ&GEkE>j=!48ne`d R9|h0~z{e|qC?Z7W{tXJ}`_=#e literal 0 HcmV?d00001 diff --git a/velconnect/static/favicons/safari-pinned-tab.svg b/velconnect/static/favicons/safari-pinned-tab.svg new file mode 100644 index 0000000..1cd7cf2 --- /dev/null +++ b/velconnect/static/favicons/safari-pinned-tab.svg @@ -0,0 +1,20 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + diff --git a/velconnect/static/favicons/site.webmanifest b/velconnect/static/favicons/site.webmanifest new file mode 100644 index 0000000..de65106 --- /dev/null +++ b/velconnect/static/favicons/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/velconnect/static/img/pair_code_screenshot.png b/velconnect/static/img/pair_code_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..811ba6752dd05ae690e053a11e95ba6c7c6b1443 GIT binary patch literal 12463 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 DJfl5^ literal 0 HcmV?d00001 diff --git a/velconnect/static/js/util.js b/velconnect/static/js/util.js new file mode 100644 index 0000000..8580903 --- /dev/null +++ b/velconnect/static/js/util.js @@ -0,0 +1,98 @@ + +function httpGetAsync(theUrl, callback, failCallback) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.onreadystatechange = function () { + if (xmlHttp.readyState == 4) { + if (xmlHttp.status == 200) { + callback(xmlHttp.responseText); + } else { + failCallback(xmlHttp.status); + } + } + } + xmlHttp.open("GET", theUrl, true); // true for asynchronous + xmlHttp.send(null); +} + + +function httpPostAsync(theUrl, data, callback, failCallback) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.onreadystatechange = function () { + if (xmlHttp.readyState == 4) { + if (xmlHttp.status == 200) { + callback(xmlHttp.responseText); + } else { + failCallback(xmlHttp.status); + } + } + } + xmlHttp.open("POST", theUrl, true); // true for asynchronous + xmlHttp.setRequestHeader('Content-type', 'application/json'); + xmlHttp.send(JSON.stringify(data)); +} + +function setCookie(cname, cvalue, exdays) { + const d = new Date(); + d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); + let expires = "expires=" + d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; +} + + +function getCookie(cname) { + let name = cname + "="; + let decodedCookie = decodeURIComponent(document.cookie); + let ca = decodedCookie.split(';'); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; +} + +function writeClass(className, data) { + if (data == undefined || data == null || data.toString() == 'undefined') { + data = ""; + } + + let elements = document.getElementsByClassName(className); + Array.from(elements).forEach(e => { + e.innerHTML = data; + }); +} + +function writeId(idName, data) { + if (data == undefined || data == null || data.toString() == 'undefined') { + data = ""; + } + + document.getElementById(idName).innerHTML = data; +} + +function writeValue(className, data) { + if (data == undefined || data == null || data.toString() == 'undefined') { + data = ""; + } + + let elements = document.getElementsByClassName(className); + Array.from(elements).forEach(e => { + e.value = data; + }); +} + + +function writeSrc(className, data) { + if (data == undefined || data == null || data.toString() == 'undefined') { + data = ""; + } + + let elements = document.getElementsByClassName(className); + Array.from(elements).forEach(e => { + e.src = data; + }); +} diff --git a/velconnect/templates/api.html b/velconnect/templates/api.html new file mode 100644 index 0000000..af76e00 --- /dev/null +++ b/velconnect/templates/api.html @@ -0,0 +1,24 @@ + + + + + + + + + + +

+ +
+ + + \ No newline at end of file diff --git a/velconnect/templates/failure.html b/velconnect/templates/failure.html new file mode 100644 index 0000000..b9f3a2f --- /dev/null +++ b/velconnect/templates/failure.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + +
+ 🤮 FAIL 🤡 +
+ + + \ No newline at end of file diff --git a/velconnect/templates/index.html b/velconnect/templates/index.html new file mode 100644 index 0000000..997a169 --- /dev/null +++ b/velconnect/templates/index.html @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + + + diff --git a/velconnect/templates/pair.html b/velconnect/templates/pair.html new file mode 100644 index 0000000..9efee2d --- /dev/null +++ b/velconnect/templates/pair.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ +
+
+
Enter Pairing Code
+
+
+
+ You can find the code in the bottom left of your menu tablet in conVRged. +
+ +
+
+ + + + + \ No newline at end of file diff --git a/velconnect/templates/success.html b/velconnect/templates/success.html new file mode 100644 index 0000000..cd05343 --- /dev/null +++ b/velconnect/templates/success.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + +
+ 🎉 SUCCESS 🎉 +
+ + + \ No newline at end of file diff --git a/website/api.html b/website/api.html new file mode 100644 index 0000000..a5b251b --- /dev/null +++ b/website/api.html @@ -0,0 +1,24 @@ + + + + + + + + + + +
+ +
+
+ + \ No newline at end of file