├── .babelrc ├── .eslintignore ├── .eslintrc.json ├── .github └── workflows │ └── nodejs.yml ├── .gitignore ├── LICENSE ├── README.md ├── api ├── get.js ├── keys.js ├── scan.js ├── server.js └── stats.js ├── app.js ├── components ├── loading.jsx ├── map.jsx ├── menu.jsx ├── page.jsx ├── panel.jsx ├── properties.jsx └── tabs.jsx ├── index.jsx ├── lib ├── http.js └── routie.js ├── package-lock.json ├── package.json ├── pages ├── key.jsx ├── keys.jsx ├── object.jsx └── server.jsx └── wwwroot ├── css ├── style.css ├── style.css.map ├── style.min.css └── style.min.css.map ├── index.html ├── index.min.js └── vendors ├── @coreui ├── coreui │ └── js │ │ ├── coreui.min.js │ │ └── coreui.min.js.map └── icons │ ├── css │ ├── coreui-icons.min.css │ └── coreui-icons.min.css.map │ └── fonts │ ├── CoreUI-Icons-Linear-Free.eot │ ├── CoreUI-Icons-Linear-Free.svg │ ├── CoreUI-Icons-Linear-Free.ttf │ └── CoreUI-Icons-Linear-Free.woff ├── font-awesome ├── css │ └── font-awesome.min.css └── fonts │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 └── simple-line-icons ├── css └── simple-line-icons.css └── fonts ├── Simple-Line-Icons.eot ├── Simple-Line-Icons.svg ├── Simple-Line-Icons.ttf ├── Simple-Line-Icons.woff └── Simple-Line-Icons.woff2 /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-react", "@babel/preset-env"] 3 | } 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | css/* 2 | vs/* 3 | vendors/* 4 | *.min.js 5 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true 5 | }, 6 | "extends": "eslint:recommended", 7 | "parserOptions": { 8 | "ecmaVersion":8, 9 | "ecmaFeatures": { 10 | "experimentalObjectRestSpread": true, 11 | "jsx": true 12 | } 13 | }, 14 | "plugins": [ 15 | "react" 16 | ], 17 | "globals": { 18 | "module": true, 19 | "require": true, 20 | "L": true, 21 | "settings": true, 22 | "define": true, 23 | "Buffer": true, 24 | "google" : true, 25 | "describe": true, 26 | "it":true, 27 | "$":true 28 | }, 29 | "rules": { 30 | "indent": "off", 31 | "linebreak-style": "off", 32 | "quotes": "off", 33 | "semi": "off", 34 | "no-mixed-spaces-and-tabs" : "off", 35 | "no-unused-vars" : "off", 36 | "no-redeclare": "off", 37 | "no-empty": "off", 38 | "no-console":"off", 39 | "no-useless-escape":"off" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | name: Node CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | strategy: 11 | matrix: 12 | node-version: [8.x, 10.x, 12.x] 13 | 14 | steps: 15 | - uses: actions/checkout@v1 16 | - name: Use Node.js ${{ matrix.node-version }} 17 | uses: actions/setup-node@v1 18 | with: 19 | node-version: ${{ matrix.node-version }} 20 | - name: npm install, build, and test 21 | run: | 22 | npm ci 23 | npm run build 24 | env: 25 | CI: true 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Richard Astbury 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](https://github.com/richorama/portal38/workflows/Node%20CI/badge.svg?branch=master) 2 | 3 | # portal38 4 | :bar_chart: An admin portal for tile38 5 | 6 | # License 7 | 8 | MIT 9 | -------------------------------------------------------------------------------- /api/get.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | router.get('/api/get/:key/:id', async (req, res, next) => { 5 | try { 6 | res.json(await req.t38.get(req.params.key, req.params.id)) 7 | } catch (err) { 8 | console.log(err) 9 | next(err) 10 | } 11 | }) 12 | 13 | module.exports = router -------------------------------------------------------------------------------- /api/keys.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | router.get('/api/keys', async (req, res) => { 5 | try { 6 | res.json(await req.t38.keys('*')) 7 | } catch (err) { 8 | console.log(err) 9 | next(err) 10 | } 11 | }) 12 | 13 | module.exports = router -------------------------------------------------------------------------------- /api/scan.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | router.get('/api/scan/:key', async (req, res) => { 5 | try { 6 | const query = req.t38 7 | .scanQuery(req.params.key) 8 | .limit(parseInt(req.query.limit || '100')) 9 | 10 | if (req.query.cursor) { 11 | query.cursor(parseInt(req.query.cursor)) 12 | } 13 | res.json(await query.execute()) 14 | } catch (err) { 15 | console.log(err) 16 | next(err) 17 | } 18 | }) 19 | 20 | module.exports = router 21 | -------------------------------------------------------------------------------- /api/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | router.get('/api/server', async (req, res) => { 5 | try { 6 | res.json(await req.t38.server()) 7 | } catch (err) { 8 | console.log(err) 9 | next(err) 10 | } 11 | }) 12 | 13 | module.exports = router -------------------------------------------------------------------------------- /api/stats.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | router.get('/api/stats/:key', async (req, res) => { 5 | try { 6 | res.json(await req.t38.stats(req.params.key)) 7 | } catch (err) { 8 | console.log(err) 9 | next(err) 10 | } 11 | }) 12 | 13 | module.exports = router -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | const logger = require('morgan') 4 | const Tile38 = require('tile38') 5 | const fs = require('fs') 6 | 7 | const [_, __, t38host, t38port, t38username, t38password] = process.argv 8 | 9 | const t38 = new Tile38({ 10 | host: t38host || '127.0.0.1', 11 | port: parseInt(t38port || '9851'), 12 | debug: false 13 | }) 14 | 15 | console.log('testing connection to tile 38') 16 | 17 | t38 18 | .ping() 19 | .then(() => { 20 | console.log('connected to tile38') 21 | startExpress() 22 | }) 23 | .catch(err => console.log(`error ${err}`)) 24 | 25 | app.use((req, res, next) => { 26 | req.t38 = t38 27 | next() 28 | }) 29 | 30 | app.use(express.static('wwwroot')) 31 | app.use(logger('dev')) 32 | 33 | // require the whole ./api and ./routes directories 34 | const requireDir = dir => { 35 | fs.readdirSync(dir) 36 | .forEach(file => { 37 | console.log(`using ${dir}/${file}`) 38 | app.use('/', require(`./${dir}/${file}`)) 39 | }) 40 | } 41 | 42 | requireDir('api') 43 | 44 | function startExpress() { 45 | const port = process.env.PORT || 8080 46 | app.listen(port) 47 | console.log(`listening on port ${port}`) 48 | } 49 | -------------------------------------------------------------------------------- /components/loading.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | 3 | const Loading = () => { 4 | return Loading... 5 | } 6 | 7 | module.exports = Loading -------------------------------------------------------------------------------- /components/map.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | import Map from 'ol/Map' 3 | import View from 'ol/View' 4 | import XYZ from 'ol/source/XYZ' 5 | import GeoJSON from 'ol/format/GeoJSON' 6 | import { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer.js' 7 | import { Vector as VectorSource } from 'ol/source.js' 8 | import { Circle as CircleStyle, Fill, Stroke, Style } from 'ol/style.js' 9 | 10 | const image = new CircleStyle({ 11 | radius: 5, 12 | fill: null, 13 | stroke: new Stroke({ color: 'red', width: 1 }) 14 | }) 15 | 16 | const MapComponent = class extends React.PureComponent { 17 | styleFunction(feature) { 18 | return new Style({ 19 | stroke: new Stroke({ 20 | color: 'red', 21 | width: 3 22 | }), 23 | fill: new Fill({ 24 | color: 'rgba(255,0,0,0.2)' 25 | }), 26 | image 27 | }) 28 | } 29 | componentDidMount() { 30 | const vectorSource = new VectorSource({ 31 | features: new GeoJSON().readFeatures(this.props.geoJson, { 32 | dataProjection: 'EPSG:4326', 33 | featureProjection: 'EPSG:3857' 34 | }) 35 | }) 36 | 37 | new Map({ 38 | target: this.refs.map, 39 | layers: [ 40 | new TileLayer({ 41 | source: new XYZ({ 42 | url: 'http://{a-c}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png'// 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png' 43 | }) 44 | }), 45 | new VectorLayer({ 46 | source: vectorSource, 47 | style: this.styleFunction 48 | }) 49 | ], 50 | view: new View({ 51 | center: [0, 0], 52 | zoom: 2 53 | }) 54 | }) 55 | } 56 | render() { 57 | return ( 58 |
62 | ) 63 | } 64 | } 65 | 66 | module.exports = MapComponent 67 | -------------------------------------------------------------------------------- /components/menu.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | 3 | const menuItems = [ 4 | { 5 | href: '#/server', 6 | title: 'Server', 7 | icon: 'icon-speedometer' 8 | }, 9 | { 10 | href: '#/keys', 11 | title: 'Keys', 12 | icon: 'icon-layers' 13 | } 14 | ] 15 | 16 | const MenuItem = props => { 17 | return ( 18 |
  • 19 | 20 | {props.title} 21 | 22 |
  • 23 | ) 24 | } 25 | 26 | const Menu = props => { 27 | return ( 28 | 34 | ) 35 | } 36 | 37 | module.exports = Menu -------------------------------------------------------------------------------- /components/page.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | const Fragment = React.Fragment 3 | const Menu = require('./menu.jsx') 4 | 5 | const Page = props => { 6 | return ( 7 | 8 |
    9 | 12 |
    13 | 14 |
    15 |
    16 |
    17 |
    {props.children}
    18 |
    19 |
    20 |
    21 |
    22 | ) 23 | } 24 | 25 | module.exports = Page -------------------------------------------------------------------------------- /components/panel.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | 3 | module.exports = props => { 4 | if (props.children.length) { 5 | var body = props.children[0] 6 | var footer =
    {props.children[1]}
    7 | } else { 8 | var body = props.children 9 | var footer = null 10 | } 11 | 12 | return ( 13 |
    14 |
    {props.title}
    15 |
    16 | {body} 17 |
    18 | {footer} 19 |
    20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /components/properties.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | 3 | const PropertyItem = props => { 4 | const { keyName, value } = props 5 | return ( 6 | 7 | {keyName} 8 | {value} 9 | 10 | ) 11 | } 12 | 13 | const Properties = props => { 14 | return ( 15 | 16 | 17 | {Object.keys(props.value).map(key => ( 18 | 19 | ))} 20 | 21 |
    22 | ) 23 | } 24 | 25 | module.exports = Properties 26 | -------------------------------------------------------------------------------- /components/tabs.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | 3 | const Tab = props => { 4 | return ( 5 |
  • 6 | 11 | {props.title} 12 | 13 |
  • 14 | ) 15 | } 16 | 17 | const Tabs = class extends React.Component { 18 | constructor(props) { 19 | super(props) 20 | this.state = { active: 0 } 21 | this.handleClick = this.handleClick.bind(this) 22 | } 23 | 24 | handleClick(index) { 25 | this.setState({ active: index }) 26 | if (this.props.onClick) this.props.onClick(this.props.tabs[index]) 27 | } 28 | 29 | render() { 30 | return ( 31 |
      32 | {this.props.tabs.map((tab, index) => ( 33 | 40 | ))} 41 |
    42 | ) 43 | } 44 | } 45 | 46 | module.exports = Tabs 47 | -------------------------------------------------------------------------------- /index.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | const ReactDOM = require('react-dom') 3 | const Page = require('./components/page.jsx') 4 | const Panel = require('./components/panel.jsx') 5 | const routie = require('./lib/routie') 6 | const Server = require('./pages/server.jsx') 7 | const Keys = require('./pages/keys.jsx') 8 | const Key = require('./pages/key.jsx') 9 | const Object = require('./pages/object.jsx') 10 | 11 | const contentElement = document.getElementById('content') 12 | function render(jsx) { 13 | ReactDOM.render(jsx, contentElement) 14 | } 15 | 16 | render( 17 | 18 | 19 |
    Hello World
    20 |
    21 |
    22 | ) 23 | 24 | routie('/server', () => { 25 | render( 26 | 27 | 28 | 29 | ) 30 | }) 31 | 32 | routie('/keys', () => { 33 | render( 34 | 35 | 36 | 37 | ) 38 | }) 39 | 40 | routie('/keys/:key', key => { 41 | render( 42 | 43 | 44 | 45 | ) 46 | }) 47 | 48 | routie('/object/:key/:id', (key, id) => { 49 | render( 50 | 51 | 52 | 53 | ) 54 | }) 55 | 56 | routie.reload() 57 | -------------------------------------------------------------------------------- /lib/http.js: -------------------------------------------------------------------------------- 1 | function makeRequest(method, uri, body, cb) { 2 | var xhr = new XMLHttpRequest() 3 | xhr.open(method, uri, true) 4 | xhr.onreadystatechange = function() { 5 | if (xhr.readyState !== 4) return 6 | if (xhr.status < 400 && xhr.status > 0) 7 | return cb(null, JSON.parse(xhr.responseText || '{}')) 8 | var errorMessage = 9 | 'Error connecting to server. Status code: ' + 10 | (xhr.status || 'NO_CONNECTION') 11 | errorHandlers.forEach(x => x(errorMessage)) 12 | } 13 | xhr.setRequestHeader('Content-Type', 'application/json') 14 | xhr.setRequestHeader('Accept', 'application/json') 15 | xhr.send(body) 16 | } 17 | 18 | module.exports.get = url => { 19 | return new Promise((resolve, reject) => { 20 | makeRequest('GET', url, null, (err, body) => { 21 | if (err) return reject(err) 22 | resolve(body) 23 | }) 24 | }) 25 | } -------------------------------------------------------------------------------- /lib/routie.js: -------------------------------------------------------------------------------- 1 | (function(root, factory) { 2 | if (typeof exports === 'object') { 3 | module.exports = factory(window) 4 | } else if (typeof define === 'function' && define.amd) { 5 | define([], function() { 6 | return (root.routie = factory(window)) 7 | }) 8 | } else { 9 | root.routie = factory(window) 10 | } 11 | })(this, function(w) { 12 | var routes = [] 13 | var map = {} 14 | var reference = 'routie' 15 | var oldReference = w[reference] 16 | 17 | var Route = function(path, name) { 18 | this.name = name 19 | this.path = path 20 | this.keys = [] 21 | this.fns = [] 22 | this.params = {} 23 | this.regex = pathToRegexp(this.path, this.keys, false, false) 24 | } 25 | 26 | Route.prototype.addHandler = function(fn) { 27 | this.fns.push(fn) 28 | } 29 | 30 | Route.prototype.removeHandler = function(fn) { 31 | for (var i = 0, c = this.fns.length; i < c; i++) { 32 | var f = this.fns[i] 33 | if (fn == f) { 34 | this.fns.splice(i, 1) 35 | return 36 | } 37 | } 38 | } 39 | 40 | Route.prototype.run = function(params) { 41 | for (var i = 0, c = this.fns.length; i < c; i++) { 42 | this.fns[i].apply(this, params) 43 | } 44 | } 45 | 46 | Route.prototype.match = function(path, params) { 47 | var m = this.regex.exec(path) 48 | 49 | if (!m) return false 50 | 51 | for (var i = 1, len = m.length; i < len; ++i) { 52 | var key = this.keys[i - 1] 53 | 54 | var val = 'string' == typeof m[i] ? decodeURIComponent(m[i]) : m[i] 55 | 56 | if (key) { 57 | this.params[key.name] = val 58 | } 59 | params.push(val) 60 | } 61 | 62 | return true 63 | } 64 | 65 | Route.prototype.toURL = function(params) { 66 | var path = this.path 67 | for (var param in params) { 68 | path = path.replace('/:' + param, '/' + params[param]) 69 | } 70 | path = path.replace(/\/:.*\?/g, '/').replace(/\?/g, '') 71 | if (path.indexOf(':') != -1) { 72 | throw new Error('missing parameters for url: ' + path) 73 | } 74 | return path 75 | } 76 | 77 | var pathToRegexp = function(path, keys, sensitive, strict) { 78 | if (path instanceof RegExp) return path 79 | if (path instanceof Array) path = '(' + path.join('|') + ')' 80 | path = path 81 | .concat(strict ? '' : '/?') 82 | .replace(/\/\(/g, '(?:/') 83 | .replace(/\+/g, '__plus__') 84 | .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g, function( 85 | _, 86 | slash, 87 | format, 88 | key, 89 | capture, 90 | optional 91 | ) { 92 | keys.push({ name: key, optional: !!optional }) 93 | slash = slash || '' 94 | return ( 95 | '' + 96 | (optional ? '' : slash) + 97 | '(?:' + 98 | (optional ? slash : '') + 99 | (format || '') + 100 | (capture || ((format && '([^/.]+?)') || '([^/]+?)')) + 101 | ')' + 102 | (optional || '') 103 | ) 104 | }) 105 | .replace(/([\/.])/g, '\\$1') 106 | .replace(/__plus__/g, '(.+)') 107 | .replace(/\*/g, '(.*)') 108 | return new RegExp('^' + path + '$', sensitive ? '' : 'i') 109 | } 110 | 111 | var addHandler = function(path, fn) { 112 | var s = path.split(' ') 113 | var name = s.length == 2 ? s[0] : null 114 | path = s.length == 2 ? s[1] : s[0] 115 | 116 | if (!map[path]) { 117 | map[path] = new Route(path, name) 118 | routes.push(map[path]) 119 | } 120 | map[path].addHandler(fn) 121 | } 122 | 123 | var routie = function(path, fn) { 124 | if (typeof fn == 'function') { 125 | addHandler(path, fn) 126 | //routie.reload(); 127 | } else if (typeof path == 'object') { 128 | for (var p in path) { 129 | addHandler(p, path[p]) 130 | } 131 | //routie.reload(); 132 | } else if (typeof fn === 'undefined') { 133 | routie.navigate(path) 134 | } 135 | } 136 | 137 | routie.lookup = function(name, obj) { 138 | for (var i = 0, c = routes.length; i < c; i++) { 139 | var route = routes[i] 140 | if (route.name == name) { 141 | return route.toURL(obj) 142 | } 143 | } 144 | } 145 | 146 | routie.remove = function(path, fn) { 147 | var route = map[path] 148 | if (!route) return 149 | route.removeHandler(fn) 150 | } 151 | 152 | routie.removeAll = function() { 153 | map = {} 154 | routes = [] 155 | } 156 | 157 | routie.navigate = function(path, options) { 158 | options = options || {} 159 | var silent = options.silent || false 160 | 161 | if (silent) { 162 | removeListener() 163 | } 164 | setTimeout(function() { 165 | window.location.hash = path 166 | 167 | if (silent) { 168 | setTimeout(function() { 169 | addListener() 170 | }, 1) 171 | } 172 | }, 1) 173 | } 174 | 175 | routie.noConflict = function() { 176 | w[reference] = oldReference 177 | return routie 178 | } 179 | 180 | var getHash = function() { 181 | return window.location.hash.substring(1) 182 | } 183 | 184 | var checkRoute = function(hash, route) { 185 | var params = [] 186 | if (route.match(hash, params)) { 187 | route.run(params) 188 | return true 189 | } 190 | return false 191 | } 192 | 193 | var hashChanged = (routie.reload = function() { 194 | var hash = getHash() 195 | for (var i = 0, c = routes.length; i < c; i++) { 196 | var route = routes[i] 197 | if (checkRoute(hash, route)) { 198 | return 199 | } 200 | } 201 | }) 202 | 203 | var addListener = function() { 204 | if (w.addEventListener) { 205 | w.addEventListener('hashchange', hashChanged, false) 206 | } else { 207 | w.attachEvent('onhashchange', hashChanged) 208 | } 209 | } 210 | 211 | var removeListener = function() { 212 | if (w.removeEventListener) { 213 | w.removeEventListener('hashchange', hashChanged) 214 | } else { 215 | w.detachEvent('onhashchange', hashChanged) 216 | } 217 | } 218 | addListener() 219 | 220 | return routie 221 | }) 222 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "portal38", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "start": "npm run watch & node app.js", 8 | "example": "browserify -g [ babelify --presets [ \"@babel/preset-env\" ] ] --entry index.jsx > bundle.js", 9 | "watch": "watchify -v -g [ babelify --presets [ \"@babel/preset-env\" ] ] index.jsx -g [ envify --NODE_ENV development ] -o ./wwwroot/index.min.js", 10 | "build": "npm run browserify", 11 | "lint": "eslint . --ext .js --ext .jsx", 12 | "test": "mocha", 13 | "browserify": "browserify -g babelify index.jsx -g [ envify --NODE_ENV production ] -g uglifyify | uglifyjs --compress warnings=false --mangle > ./wwwroot/index.min.js" 14 | }, 15 | "author": "Richard Astbury", 16 | "license": "MIT", 17 | "dependencies": { 18 | "express": "^4.18.2", 19 | "morgan": "^1.9.1", 20 | "tile38": "^0.6.6" 21 | }, 22 | "devDependencies": { 23 | "@babel/core": "^7.4.0", 24 | "@babel/preset-env": "^7.4.2", 25 | "@babel/preset-react": "^7.0.0", 26 | "babelify": "^9.0.0", 27 | "browserify": "^16.2.3", 28 | "envify": "^4.1.0", 29 | "eslint-plugin-react": "^7.12.4", 30 | "ol": "^5.3.1", 31 | "react": "^16.8.5", 32 | "react-dom": "^16.8.5", 33 | "uglify-js": "^3.5.2", 34 | "uglifyify": "^5.0.2", 35 | "watchify": "^3.11.1" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /pages/key.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | const { Component, Fragment } = React 3 | const Panel = require('../components/panel.jsx') 4 | const Loading = require('../components/loading.jsx') 5 | const http = require('../lib/http') 6 | const Tabs = require('../components/tabs.jsx') 7 | const Properties = require('../components/properties.jsx') 8 | const Map = require('../components/map.jsx') 9 | 10 | const tabs = [ 11 | { 12 | icon: 'icon-docs', 13 | title: 'Objects' 14 | }, 15 | { 16 | icon: 'icon-map', 17 | title: 'Map' 18 | }, 19 | { 20 | icon: 'icon-speedometer', 21 | title: 'Stats' 22 | } 23 | ] 24 | 25 | const [OBJECTS, MAP, STATS] = tabs 26 | 27 | const Key = class extends Component { 28 | constructor(props) { 29 | super(props) 30 | this.state = { loading: true, data: null, activeTab: tabs[0], stats: null } 31 | 32 | this.handleScanResponse = this.handleScanResponse.bind(this) 33 | this.handleStatsResponse = this.handleStatsResponse.bind(this) 34 | this.handleClick = this.handleClick.bind(this) 35 | } 36 | 37 | componentDidMount() { 38 | http.get(`/api/scan/${this.props.keyName}`).then(this.handleScanResponse) 39 | } 40 | 41 | handleScanResponse(data) { 42 | this.setState({ data, loading: false }) 43 | } 44 | 45 | handleClick(activeTab) { 46 | this.setState({ activeTab }) 47 | if (activeTab === STATS) { 48 | http 49 | .get(`/api/stats/${this.props.keyName}`) 50 | .then(this.handleStatsResponse) 51 | } 52 | } 53 | 54 | handleStatsResponse(data) { 55 | this.setState({ stats: data[0] }) 56 | } 57 | 58 | renderItem(item) { 59 | return ( 60 | 65 | {item.id} 66 | 67 | ) 68 | } 69 | 70 | renderList() { 71 | return ( 72 |
    73 | {this.state.data.objects.map(x => this.renderItem(x))} 74 |
    75 | ) 76 | } 77 | 78 | renderMap() { 79 | return ( 80 | x.object) 84 | }} 85 | /> 86 | ) 87 | } 88 | 89 | renderStats() { 90 | if (!this.state.stats) { 91 | return 92 | } 93 | return 94 | } 95 | 96 | renderBody() { 97 | switch (this.state.activeTab) { 98 | case OBJECTS: 99 | return this.renderList() 100 | case MAP: 101 | return this.renderMap() 102 | case STATS: 103 | return this.renderStats() 104 | } 105 | } 106 | 107 | renderTabControl() { 108 | if (this.state.loading) { 109 | return 110 | } 111 | return ( 112 | 113 | 114 |
    115 | {this.renderBody()} 116 | 117 | ) 118 | } 119 | render() { 120 | return {this.renderTabControl()} 121 | } 122 | } 123 | 124 | module.exports = Key 125 | -------------------------------------------------------------------------------- /pages/keys.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | const Component = React.Component 3 | const Panel = require('../components/panel.jsx') 4 | const Loading = require('../components/loading.jsx') 5 | const http = require('../lib/http') 6 | 7 | const Keys = class extends Component { 8 | constructor(props) { 9 | super(props) 10 | this.state = { loading: true, data: null } 11 | 12 | this.handleServerResponse = this.handleServerResponse.bind(this) 13 | } 14 | 15 | componentDidMount() { 16 | http.get('/api/keys').then(this.handleServerResponse) 17 | } 18 | 19 | handleServerResponse(data) { 20 | this.setState({ data, loading: false }) 21 | } 22 | 23 | renderItem(key) { 24 | return ( 25 | 26 | {key} 27 | 28 | ) 29 | } 30 | 31 | renderBody() { 32 | if (this.state.loading) { 33 | return 34 | } 35 | return ( 36 |
    37 | {this.state.data.map(x => this.renderItem(x))} 38 |
    39 | ) 40 | } 41 | render() { 42 | return {this.renderBody()} 43 | } 44 | } 45 | 46 | module.exports = Keys 47 | -------------------------------------------------------------------------------- /pages/object.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | const { Component, Fragment } = React 3 | const Panel = require('../components/panel.jsx') 4 | const Loading = require('../components/loading.jsx') 5 | const http = require('../lib/http') 6 | const Tabs = require('../components/tabs.jsx') 7 | const Properties = require('../components/properties.jsx') 8 | const Map = require('../components/map.jsx') 9 | 10 | const tabs = [ 11 | { 12 | icon: 'icon-list', 13 | title: 'Properties' 14 | }, 15 | { 16 | icon: 'icon-map', 17 | title: 'Map' 18 | }, 19 | { 20 | icon: 'icon-note', 21 | title: 'JSON' 22 | } 23 | ] 24 | 25 | const [OBJECT, MAP, JSONTAB] = tabs 26 | 27 | const Object = class extends Component { 28 | constructor(props) { 29 | super(props) 30 | this.state = { loading: true, data: null, activeTab: tabs[0], stats: null } 31 | 32 | this.handleGetResponse = this.handleGetResponse.bind(this) 33 | this.handleClick = this.handleClick.bind(this) 34 | } 35 | 36 | componentDidMount() { 37 | http 38 | .get(`/api/get/${this.props.keyName}/${this.props.id}`) 39 | .then(this.handleGetResponse) 40 | } 41 | 42 | handleGetResponse(data) { 43 | this.setState({ data: data.object, loading: false }) 44 | } 45 | 46 | handleClick(activeTab) { 47 | this.setState({ activeTab }) 48 | } 49 | 50 | renderObject() { 51 | return 52 | } 53 | 54 | renderMap() { 55 | return 56 | } 57 | 58 | renderJson() { 59 | return ( 60 |
    61 |
    {JSON.stringify(this.state.data, null, 2)}
    62 |
    63 | ) 64 | } 65 | 66 | renderBody() { 67 | switch (this.state.activeTab) { 68 | case OBJECT: 69 | return this.renderObject() 70 | case MAP: 71 | return this.renderMap() 72 | case JSONTAB: 73 | return this.renderJson() 74 | } 75 | } 76 | 77 | renderTabControl() { 78 | if (this.state.loading) { 79 | return 80 | } 81 | return ( 82 | 83 | 84 |
    85 | {this.renderBody()} 86 | 87 | ) 88 | } 89 | render() { 90 | return {this.renderTabControl()} 91 | } 92 | } 93 | 94 | module.exports = Object 95 | -------------------------------------------------------------------------------- /pages/server.jsx: -------------------------------------------------------------------------------- 1 | const React = require('react') 2 | const Component = React.Component 3 | const Panel = require('../components/panel.jsx') 4 | const Loading = require('../components/loading.jsx') 5 | const http = require('../lib/http') 6 | const Properties = require('../components/properties.jsx') 7 | 8 | const Server = class extends Component { 9 | constructor(props) { 10 | super(props) 11 | this.state = { loading: true, data: null } 12 | 13 | this.handleServerResponse = this.handleServerResponse.bind(this) 14 | } 15 | 16 | componentDidMount() { 17 | http.get('/api/server').then(this.handleServerResponse) 18 | } 19 | 20 | handleServerResponse(data) { 21 | this.setState({ data, loading: false }) 22 | } 23 | 24 | renderBody() { 25 | if (this.state.loading) { 26 | return 27 | } 28 | return ( 29 | 30 | ) 31 | } 32 | render() { 33 | return {this.renderBody()} 34 | } 35 | } 36 | 37 | module.exports = Server 38 | -------------------------------------------------------------------------------- /wwwroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | Portal38 12 | 13 | 14 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 42 |
    43 | 44 | 49 | 50 |
    51 | 52 |
    53 |
    54 |
    55 | Loading... 56 |
    57 |
    58 |
    59 | 60 |
    61 |
    62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/coreui/js/coreui.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * CoreUI v2.1.5 (https://coreui.io) 3 | * Copyright 2019 Łukasz Holeczek 4 | * Licensed under MIT (https://coreui.io) 5 | */ 6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("perfect-scrollbar")):"function"==typeof define&&define.amd?define(["exports","jquery","perfect-scrollbar"],e):e((t=t||self).coreui={},t.jQuery,t.PerfectScrollbar)}(this,function(t,e,r){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e,r=r&&r.hasOwnProperty("default")?r.default:r;var p=function(t){return"object"==typeof t?null!==t:"function"==typeof t},n={}.toString,h=function(t){return n.call(t).slice(8,-1)};function i(t,e){return t(e={exports:{}},e.exports),e.exports}var o,a,v=i(function(t){var e=t.exports={version:"2.6.1"};"number"==typeof __e&&(__e=e)}),g=(v.version,i(function(t){var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)})),u=i(function(t){var e="__core-js_shared__",n=g[e]||(g[e]={});(t.exports=function(t,e){return n[t]||(n[t]=void 0!==e?e:{})})("versions",[]).push({version:v.version,mode:"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})}),c=0,s=Math.random(),l=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++c+s).toString(36))},f=i(function(t){var e=u("wks"),n=g.Symbol,r="function"==typeof n;(t.exports=function(t){return e[t]||(e[t]=r&&n[t]||(r?n:l)("Symbol."+t))}).store=e}),y=f("match"),L=function(t){if(!p(t))throw TypeError(t+" is not an object!");return t},_=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t},x=f("species"),d=Math.ceil,m=Math.floor,I=function(t){return isNaN(t=+t)?0:(0")}),ut=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}(),ct=function(n,t,e){var r=f(n),o=!q(function(){var t={};return t[r]=function(){return 7},7!=""[n](t)}),i=o?!q(function(){var t=!1,e=/a/;return e.exec=function(){return t=!0,null},"split"===n&&(e.constructor={},e.constructor[ot]=function(){return e}),e[r](""),!t}):void 0;if(!o||!i||"replace"===n&&!at||"split"===n&&!ut){var a=/./[r],u=e(b,r,""[n],function(t,e,n,r,i){return e.exec===F?o&&!i?{done:!0,value:a.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),c=u[0],s=u[1];tt(String.prototype,n,c),Y(RegExp.prototype,r,2==t?function(t,e){return s.call(t,this,e)}:function(t){return s.call(t,this)})}},st=Math.min,lt=[].push,ft="split",dt="length",pt="lastIndex",ht=!!function(){try{return new RegExp("x","y")}catch(t){}}();ct("split",2,function(i,o,b,w){var S;return S="c"=="abbc"[ft](/(b)*/)[1]||4!="test"[ft](/(?:)/,-1)[dt]||2!="ab"[ft](/(?:ab)*/)[dt]||4!="."[ft](/(.?)(.?)/)[dt]||1<"."[ft](/()()/)[dt]||""[ft](/.?/)[dt]?function(t,e){var n,r,i=String(this);if(void 0===t&&0===e)return[];if(!p(n=t)||(void 0!==(r=n[y])?!r:"RegExp"!=h(n)))return b.call(i,t,e);for(var o,a,u,c=[],s=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),l=0,f=void 0===e?4294967295:e>>>0,d=new RegExp(t.source,s+"g");(o=F.call(d,i))&&!(l<(a=d[pt])&&(c.push(i.slice(l,o.index)),1=f));)d[pt]===o.index&&d[pt]++;return l===i[dt]?!u&&d.test("")||c.push(""):c.push(i.slice(l)),c[dt]>f?c.slice(0,f):c}:"0"[ft](void 0,0)[dt]?function(t,e){return void 0===t&&0===e?[]:b.call(this,t,e)}:b,[function(t,e){var n=i(this),r=null==t?void 0:t[o];return void 0!==r?r.call(t,n,e):S.call(String(n),t,e)},function(t,e){var n=w(S,t,this,e,S!==b);if(n.done)return n.value;var r,i,o,a=L(t),u=String(this),c=(r=RegExp,void 0===(o=L(a).constructor)||null==(i=L(o)[x])?r:_(i)),s=a.unicode,l=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(ht?"y":"g"),f=new c(ht?a:"^(?:"+a.source+")",l),d=void 0===e?4294967295:e>>>0;if(0===d)return[];if(0===u.length)return null===P(f,u)?[u]:[];for(var p=0,h=0,v=[];hi;)Z(r,n=e[i++])&&(~Et(o,n)||o.push(n));return o}(t,Ct)},jt=V?Object.defineProperties:function(t,e){L(t);for(var n,r=kt(e),i=r.length,o=0;odocument.F=Object<\/script>"),t.close(),Nt=t.F;n--;)delete Nt[Dt][Ct[n]];return Nt()},Gt=Object.create||function(t,e){var n;return null!==t?(Rt[Dt]=L(t),n=new Rt,Rt[Dt]=null,n[Mt]=t):n=Nt(),void 0===e?n:jt(n,e)},Qt=J.f,Ut=f("toStringTag"),Ft=function(t,e,n){t&&!Z(t=n?t:t.prototype,Ut)&&Qt(t,Ut,{configurable:!0,value:e})},qt={};Y(qt,f("iterator"),function(){return this});var Vt=function(t){return Object(b(t))},Kt=Ot("IE_PROTO"),$t=Object.prototype,Ht=Object.getPrototypeOf||function(t){return t=Vt(t),Z(t,Kt)?t[Kt]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?$t:null},Bt=f("iterator"),zt=!([].keys&&"next"in[].keys()),Jt="values",Wt=function(){return this},Yt=function(t,e,n,r,i,o,a){var u,c,s;c=e,s=r,(u=n).prototype=Gt(qt,{next:W(1,s)}),Ft(u,c+" Iterator");var l,f,d,p=function(t){if(!zt&&t in y)return y[t];switch(t){case"keys":case Jt:return function(){return new n(this,t)}}return function(){return new n(this,t)}},h=e+" Iterator",v=i==Jt,g=!1,y=t.prototype,m=y[Bt]||y["@@iterator"]||i&&y[i],b=m||p(i),w=i?v?p("entries"):b:void 0,S="Array"==e&&y.entries||m;if(S&&(d=Ht(S.call(new t)))!==Object.prototype&&d.next&&(Ft(d,h,!0),"function"!=typeof d[Bt]&&Y(d,Bt,Wt)),v&&m&&m.name!==Jt&&(g=!0,b=function(){return m.call(this)}),(zt||g||!y[Bt])&&Y(y,Bt,b),wt[e]=b,wt[h]=Wt,i)if(l={values:v?b:p(Jt),keys:o?b:p("keys"),entries:w},a)for(f in l)f in y||tt(y,f,l[f]);else it(it.P+it.F*(zt||g),e,l);return l},Xt=Yt(Array,"Array",function(t,e){this._t=_t(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,bt(1)):bt(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values");wt.Arguments=wt.Array,mt("keys"),mt("values"),mt("entries");for(var Zt=f("iterator"),te=f("toStringTag"),ee=wt.Array,ne={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},re=kt(ne),ie=0;ie=e.length?{value:void 0,done:!0}:(t=he(e,n),this._i+=t.length,{value:t,done:!1})});var ve=function(e,t,n,r){try{return r?t(L(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&L(i.call(e)),t}},ge=f("iterator"),ye=Array.prototype,me=function(t,e,n){e in t?J.f(t,e,W(0,n)):t[e]=n},be=f("iterator"),we=v.getIteratorMethod=function(t){if(null!=t)return t[be]||t["@@iterator"]||wt[j(t)]},Se=f("iterator"),_e=!1;try{[7][Se]().return=function(){_e=!0}}catch(t){}it(it.S+it.F*!function(t,e){if(!e&&!_e)return!1;var n=!1;try{var r=[7],i=r[Se]();i.next=function(){return{done:n=!0}},r[Se]=function(){return i},t(r)}catch(t){}return n}(function(t){}),"Array",{from:function(t){var e,n,r,i,o,a=Vt(t),u="function"==typeof this?this:Array,c=arguments.length,s=1]*>)/g,Ee=/\$([$&`']|\d\d?)/g;function Te(t,e){for(var n=0;nn+1&&t(e,n+1)},document.getElementsByTagName("body")[0].appendChild(r)}(n),window.location.hash=r},error:function(){window.location.href=t.errorPage}})},t.setUpUrl=function(t){ke(Qe).removeClass(Me),ke(Ge).removeClass(Re),ke(Ge+':has(a[href="'+t.replace(/^\//,"").split("?")[0]+'"])').addClass(Re),ke(Ue+' a[href="'+t.replace(/^\//,"").split("?")[0]+'"]').addClass(Me),this.loadPage(t)},t.loadBlank=function(t){window.open(t)},t.loadTop=function(t){window.location=t},t._getConfig=function(t){return t=Object.assign({},qe,t)},t._addEventListeners=function(){var e=this;ke(document).on(Ne,Qe+'[href!="#"]',function(t){t.preventDefault(),t.stopPropagation(),"_top"===t.currentTarget.target?e.loadTop(t.currentTarget.href):"_blank"===t.currentTarget.target?e.loadBlank(t.currentTarget.href):e.setUpUrl(t.currentTarget.getAttribute("href"))})},n._jQueryInterface=function(e){return this.each(function(){var t=ke(this).data(Ae);t||(t=new n(this,"object"==typeof e&&e),ke(this).data(Ae,t))})},Ce(n,null,[{key:"VERSION",get:function(){return"2.1.5"}},{key:"Default",get:function(){return qe}}]),n}(),ke.fn[je]=Ve._jQueryInterface,ke.fn[je].Constructor=Ve,ke.fn[je].noConflict=function(){return ke.fn[je]=Pe,Ve._jQueryInterface},Ve),ln=function(t,e){var n=e.indexOf(t),r=e.slice(0,n+1);-1!==r.map(function(t){return document.body.classList.contains(t)}).indexOf(!0)?r.map(function(t){return document.body.classList.remove(t)}):document.body.classList.add(t)},fn=($e="aside-menu",He="coreui.aside-menu",Be=(Ke=e).fn[$e],ze={CLICK:"click",LOAD_DATA_API:"load.coreui.aside-menu.data-api",TOGGLE:"toggle"},Je=".aside-menu",We=".aside-menu-toggler",Ye=["aside-menu-show","aside-menu-sm-show","aside-menu-md-show","aside-menu-lg-show","aside-menu-xl-show"],Xe=function(){function n(t){this._element=t,this._addEventListeners()}return n.prototype._addEventListeners=function(){Ke(document).on(ze.CLICK,We,function(t){t.preventDefault(),t.stopPropagation();var e=t.currentTarget.dataset?t.currentTarget.dataset.toggle:Ke(t.currentTarget).data("toggle");ln(e,Ye)})},n._jQueryInterface=function(){return this.each(function(){var t=Ke(this),e=t.data(He);e||(e=new n(this),t.data(He,e))})},Ce(n,null,[{key:"VERSION",get:function(){return"2.1.5"}}]),n}(),Ke(window).on(ze.LOAD_DATA_API,function(){var t=Ke(Je);Xe._jQueryInterface.call(t)}),Ke.fn[$e]=Xe._jQueryInterface,Ke.fn[$e].Constructor=Xe,Ke.fn[$e].noConflict=function(){return Ke.fn[$e]=Be,Xe._jQueryInterface},Xe),dn=Array.isArray||function(t){return"Array"==h(t)},pn=f("species"),hn=(en=1==(Ze=5),nn=2==Ze,rn=3==Ze,on=4==Ze,an=6==Ze,un=5==Ze||an,cn=tn||function(t,e){return dn(n=t)&&("function"!=typeof(r=n.constructor)||r!==Array&&!dn(r.prototype)||(r=void 0),p(r)&&null===(r=r[pn])&&(r=void 0)),new(void 0===r?Array:r)(e);var n,r},function(t,e,n){for(var r,i,o=Vt(t),a=St(o),u=et(e,n,3),c=T(a.length),s=0,l=en?cn(t,c):nn?cn(t,0):void 0;s .nav",Dn=".sidebar",Nn=".sidebar-minimizer",Gn=".sidebar-toggler",Qn=["sidebar-show","sidebar-sm-show","sidebar-md-show","sidebar-lg-show","sidebar-xl-show"],Un=function(){function n(t){this._element=t,this.mobile=!1,this.ps=null,this.perfectScrollbar(On.INIT),this.setActiveLink(),this._breakpointTest=this._breakpointTest.bind(this),this._clickOutListener=this._clickOutListener.bind(this),this._addEventListeners(),this._addMediaQuery()}var t=n.prototype;return t.perfectScrollbar=function(t){var e=this;if("undefined"!=typeof r){var n=document.body.classList;t!==On.INIT||n.contains(In)||(this.ps=this.makeScrollbar()),t===On.DESTROY&&this.destroyScrollbar(),t===On.TOGGLE&&(n.contains(In)?this.destroyScrollbar():(this.destroyScrollbar(),this.ps=this.makeScrollbar())),t!==On.UPDATE||n.contains(In)||setTimeout(function(){e.destroyScrollbar(),e.ps=e.makeScrollbar()},Sn)}},t.makeScrollbar=function(t){void 0===t&&(t=Mn);var e=new r(document.querySelector(t),{suppressScrollX:!0});return e.isRtl=!1,e},t.destroyScrollbar=function(){this.ps&&(this.ps.destroy(),this.ps=null)},t.setActiveLink=function(){yn(Rn).find(An).each(function(t,e){var n,r=e;"#"===(n=r.classList.contains(Pn)?String(window.location):String(window.location).split("?")[0]).substr(n.length-1)&&(n=n.slice(0,-1)),yn(yn(r))[0].href===n&&yn(r).addClass(_n).parents(kn).add(r).each(function(t,e){yn(r=e).parent().addClass(Ln)})})},t._addMediaQuery=function(){var t=Fn("--breakpoint-sm");if(t){var e=parseInt(t,10)-1,n=window.matchMedia("(max-width: "+e+"px)");this._breakpointTest(n),n.addListener(this._breakpointTest)}},t._breakpointTest=function(t){this.mobile=Boolean(t.matches),this._toggleClickOut()},t._clickOutListener=function(t){this._element.contains(t.target)||(t.preventDefault(),t.stopPropagation(),this._removeClickOut(),document.body.classList.remove("sidebar-show"))},t._addClickOut=function(){document.addEventListener(On.CLICK,this._clickOutListener,!0)},t._removeClickOut=function(){document.removeEventListener(On.CLICK,this._clickOutListener,!0)},t._toggleClickOut=function(){this.mobile&&document.body.classList.contains("sidebar-show")?(document.body.classList.remove("aside-menu-show"),this._addClickOut()):this._removeClickOut()},t._addEventListeners=function(){var n=this;yn(document).on(On.CLICK,Tn,function(t){t.preventDefault(),t.stopPropagation(),yn(En).toggleClass(xn)}),yn(document).on(On.CLICK,Cn,function(t){t.preventDefault(),t.stopPropagation();var e=t.target;yn(e).parent().toggleClass(Ln),n.perfectScrollbar(On.UPDATE)}),yn(document).on(On.CLICK,Nn,function(t){t.preventDefault(),t.stopPropagation(),yn(En).toggleClass(In),n.perfectScrollbar(On.TOGGLE)}),yn(document).on(On.CLICK,Gn,function(t){t.preventDefault(),t.stopPropagation();var e=t.currentTarget.dataset?t.currentTarget.dataset.toggle:yn(t.currentTarget).data("toggle");ln(e,Qn),n._toggleClickOut()}),yn(Rn+" > "+jn+" "+An+":not("+Cn+")").on(On.CLICK,function(){n._removeClickOut(),document.body.classList.remove("sidebar-show")})},n._jQueryInterface=function(){return this.each(function(){var t=yn(this),e=t.data(bn);e||(e=new n(this),t.data(bn,e))})},Ce(n,null,[{key:"VERSION",get:function(){return"2.1.5"}}]),n}(),yn(window).on(On.LOAD_DATA_API,function(){var t=yn(Dn);Un._jQueryInterface.call(t)}),yn.fn[mn]=Un._jQueryInterface,yn.fn[mn].Constructor=Un,yn.fn[mn].noConflict=function(){return yn.fn[mn]=wn,Un._jQueryInterface},Un);V&&"g"!=/./g.flags&&J.f(RegExp.prototype,"flags",{configurable:!0,get:M});var Vn="toString",Kn=/./[Vn],$n=function(t){tt(RegExp.prototype,Vn,t,!0)};q(function(){return"/a/b"!=Kn.call({source:"a",flags:"b"})})?$n(function(){var t=L(this);return"/".concat(t.source,"/","flags"in t?t.flags:!V&&t instanceof RegExp?M.call(t):void 0)}):Kn.name!=Vn&&$n(function(){return Kn.call(this)});!function(t){if("undefined"==typeof t)throw new TypeError("CoreUI's JavaScript requires jQuery. jQuery must be included before CoreUI's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("CoreUI's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),window.getStyle=Fn,window.hexToRgb=function(t){if("undefined"==typeof t)throw new Error("Hex color is not defined");var e,n,r;if(!t.match(/^#(?:[0-9a-f]{3}){1,2}$/i))throw new Error(t+" is not a valid hex color");return r=7===t.length?(e=parseInt(t.substring(1,3),16),n=parseInt(t.substring(3,5),16),parseInt(t.substring(5,7),16)):(e=parseInt(t.substring(1,2),16),n=parseInt(t.substring(2,3),16),parseInt(t.substring(3,5),16)),"rgba("+e+", "+n+", "+r+")"},window.hexToRgba=function(t,e){if(void 0===e&&(e=100),"undefined"==typeof t)throw new Error("Hex color is not defined");var n,r,i;if(!t.match(/^#(?:[0-9a-f]{3}){1,2}$/i))throw new Error(t+" is not a valid hex color");return i=7===t.length?(n=parseInt(t.substring(1,3),16),r=parseInt(t.substring(3,5),16),parseInt(t.substring(5,7),16)):(n=parseInt(t.substring(1,2),16),r=parseInt(t.substring(2,3),16),parseInt(t.substring(3,5),16)),"rgba("+n+", "+r+", "+i+", "+e/100+")"},window.rgbToHex=function(t){if("undefined"==typeof t)throw new Error("Hex color is not defined");if("transparent"===t)return"#00000000";var e=t.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(!e)throw new Error(t+" is not a valid rgb color");var n="0"+parseInt(e[1],10).toString(16),r="0"+parseInt(e[2],10).toString(16),i="0"+parseInt(e[3],10).toString(16);return"#"+n.slice(-2)+r.slice(-2)+i.slice(-2)},t.AjaxLoad=sn,t.AsideMenu=fn,t.Sidebar=qn,Object.defineProperty(t,"__esModule",{value:!0})}); 7 | //# sourceMappingURL=coreui.min.js.map -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/icons/css/coreui-icons.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";/*! 2 | * CoreUI Icons - Open Source Icons 3 | * @version v0.3.0 4 | * @link https://coreui.io/icons 5 | * Copyright (c) 2018 creativeLabs Łukasz Holeczek 6 | * Licensed under MIT (https://coreui.io/icons/license) 7 | */@font-face{font-family:CoreUI-Icons-Linear-Free;src:url(../fonts/CoreUI-Icons-Linear-Free.eot?64h6xh);src:url(../fonts/CoreUI-Icons-Linear-Free.eot?64h6xh#iefix) format("embedded-opentype"),url(../fonts/CoreUI-Icons-Linear-Free.ttf?64h6xh) format("truetype"),url(../fonts/CoreUI-Icons-Linear-Free.woff?64h6xh) format("woff"),url(../fonts/CoreUI-Icons-Linear-Free.svg?64h6xh#CoreUI-Icons-Linear) format("svg");font-weight:400;font-style:normal}[class*=" cui-"],[class^=cui-]{font-family:CoreUI-Icons-Linear-Free!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cui-account-logout:before{content:"\e900"}.cui-action-redo:before{content:"\e901"}.cui-action-undo:before{content:"\e902"}.cui-align-center:before{content:"\e903"}.cui-align-left:before{content:"\e904"}.cui-align-right:before{content:"\e905"}.cui-arrow-bottom:before{content:"\e906"}.cui-arrow-left:before{content:"\e907"}.cui-arrow-right:before{content:"\e908"}.cui-arrow-top:before{content:"\e909"}.cui-ban:before{content:"\e90a"}.cui-basket-loaded:before{content:"\e90b"}.cui-bell:before{content:"\e90c"}.cui-bold:before{content:"\e90d"}.cui-bookmark:before{content:"\e90e"}.cui-briefcase:before{content:"\e960"}.cui-british-pound:before{content:"\e961"}.cui-brush:before{content:"\e90f"}.cui-calculator:before{content:"\e910"}.cui-calendar:before{content:"\e911"}.cui-cart:before{content:"\e912"}.cui-chart:before{content:"\e913"}.cui-check:before{content:"\e914"}.cui-chevron-bottom:before{content:"\e915"}.cui-chevron-left:before{content:"\e916"}.cui-chevron-right:before{content:"\e917"}.cui-chevron-top:before{content:"\e918"}.cui-circle-check:before{content:"\e919"}.cui-circle-x:before{content:"\e91a"}.cui-cloud:before{content:"\e91b"}.cui-cloud-download:before{content:"\e91c"}.cui-cloud-upload:before{content:"\e91d"}.cui-code:before{content:"\e91e"}.cui-cog:before{content:"\e91f"}.cui-comment-square:before{content:"\e920"}.cui-credit-card:before{content:"\e921"}.cui-cursor:before{content:"\e922"}.cui-dashboard:before{content:"\e923"}.cui-delete:before{content:"\e924"}.cui-dollar:before{content:"\e925"}.cui-drop:before{content:"\e926"}.cui-envelope-closed:before{content:"\e927"}.cui-envelope-letter:before{content:"\e928"}.cui-envelope-open:before{content:"\e929"}.cui-euro:before{content:"\e92a"}.cui-file:before{content:"\e92b"}.cui-globe:before{content:"\e92c"}.cui-graph:before{content:"\e92d"}.cui-home:before{content:"\e92e"}.cui-inbox:before{content:"\e92f"}.cui-info:before{content:"\e930"}.cui-italic:before{content:"\e931"}.cui-justify-center:before{content:"\e932"}.cui-justify-left:before{content:"\e933"}.cui-justify-right:before{content:"\e934"}.cui-laptop:before{content:"\e935"}.cui-layers:before{content:"\e936"}.cui-lightbulb:before{content:"\e937"}.cui-list:before{content:"\e938"}.cui-location-pin:before{content:"\e939"}.cui-lock-locked:before{content:"\e93a"}.cui-lock-unlocked:before{content:"\e93b"}.cui-magnifying-glass:before{content:"\e93c"}.cui-map:before{content:"\e93d"}.cui-monitor:before{content:"\e962"}.cui-moon:before{content:"\e93e"}.cui-note:before{content:"\e93f"}.cui-options:before{content:"\e940"}.cui-paperclip:before{content:"\e941"}.cui-pencil:before{content:"\e942"}.cui-people:before{content:"\e943"}.cui-phone:before{content:"\e944"}.cui-pie-chart:before{content:"\e945"}.cui-print:before{content:"\e946"}.cui-puzzle:before{content:"\e947"}.cui-rss:before{content:"\e963"}.cui-screen-desktop:before{content:"\e948"}.cui-screen-smartphone:before{content:"\e949"}.cui-settings:before{content:"\e94a"}.cui-share:before{content:"\e94b"}.cui-shield:before{content:"\e94c"}.cui-sort-ascending:before{content:"\e94d"}.cui-sort-descending:before{content:"\e94e"}.cui-speech:before{content:"\e94f"}.cui-speedometer:before{content:"\e950"}.cui-star:before{content:"\e951"}.cui-sun:before{content:"\e952"}.cui-tablet:before{content:"\e953"}.cui-tags:before{content:"\e954"}.cui-task:before{content:"\e955"}.cui-thumb-down:before{content:"\e956"}.cui-thumb-up:before{content:"\e957"}.cui-trash:before{content:"\e958"}.cui-underline:before{content:"\e959"}.cui-user:before{content:"\e95a"}.cui-user-female:before{content:"\e95b"}.cui-user-follow:before{content:"\e95c"}.cui-user-unfollow:before{content:"\e95d"}.cui-wrench:before{content:"\e95e"}.cui-yen:before{content:"\e95f "} 8 | /*# sourceMappingURL=coreui-icons.min.css.map */ -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/icons/css/coreui-icons.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../scss/coreui-icons.scss","../scss/_core.scss","coreui-icons.css"],"names":[],"mappings":"iBAAA;;;;;;ACAA,WACE,YAAA,yBACA,IAAA,kDACA,IAAA,wDAAA,2BAAA,CAAA,kDAAA,kBAAA,CAAA,mDAAA,cAAA,CAAA,sEAAA,cAIA,YAAA,IACA,WAAA,OCQF,iBAAA,cDHE,YAAA,mCACA,MAAA,KACA,WAAA,OACA,YAAA,IACA,aAAA,OACA,eAAA,KACA,YAAA,EAGA,uBAAA,YACA,wBAAA,UAIA,2BAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,uBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,uBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,gBAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,qBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,uBAEI,QAAA,QAFJ,qBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,2BAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,qBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,2BAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,gBAEI,QAAA,QAFJ,2BAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,4BAEI,QAAA,QAFJ,4BAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,2BAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,yBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,6BAEI,QAAA,QAFJ,gBAEI,QAAA,QAFJ,oBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,oBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,gBAEI,QAAA,QAFJ,2BAEI,QAAA,QAFJ,8BAEI,QAAA,QAFJ,qBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,2BAEI,QAAA,QAFJ,4BAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,gBAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,uBAEI,QAAA,QAFJ,qBAEI,QAAA,QAFJ,kBAEI,QAAA,QAFJ,sBAEI,QAAA,QAFJ,iBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,wBAEI,QAAA,QAFJ,0BAEI,QAAA,QAFJ,mBAEI,QAAA,QAFJ,gBAEI,QAAA","sourcesContent":["/*!\n * CoreUI Icons - Open Source Icons\n * @version v0.3.0\n * @link https://coreui.io/icons\n * Copyright (c) 2018 creativeLabs Łukasz Holeczek\n * Licensed under MIT (https://coreui.io/icons/license)\n */\n\n@import \"variables\";\n@import \"functions\";\n@import \"core\";\n","@font-face {\n font-family: 'CoreUI-Icons-Linear-Free';\n src: url('#{$coreui-icons-font-path}/CoreUI-Icons-Linear-Free.eot?64h6xh');\n src: url('#{$coreui-icons-font-path}/CoreUI-Icons-Linear-Free.eot?64h6xh#iefix') format('embedded-opentype'),\n url('#{$coreui-icons-font-path}/CoreUI-Icons-Linear-Free.ttf?64h6xh') format('truetype'),\n url('#{$coreui-icons-font-path}/CoreUI-Icons-Linear-Free.woff?64h6xh') format('woff'),\n url('#{$coreui-icons-font-path}/CoreUI-Icons-Linear-Free.svg?64h6xh#CoreUI-Icons-Linear') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n\n[class^=\"#{$coreui-icons-prefix}\"], [class*=\" #{$coreui-icons-prefix}\"] {\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'CoreUI-Icons-Linear-Free' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n@each $icon, $unicode in $icons {\n .#{$coreui-icons-prefix}#{$icon} {\n &:before {\n content: unicode($unicode);\n }\n }\n}\n","@charset \"UTF-8\";\n/*!\n * CoreUI Icons - Open Source Icons\n * @version v0.3.0\n * @link https://coreui.io/icons\n * Copyright (c) 2018 creativeLabs Łukasz Holeczek\n * Licensed under MIT (https://coreui.io/icons/license)\n */\n@font-face {\n font-family: 'CoreUI-Icons-Linear-Free';\n src: url(\"../fonts/CoreUI-Icons-Linear-Free.eot?64h6xh\");\n src: url(\"../fonts/CoreUI-Icons-Linear-Free.eot?64h6xh#iefix\") format(\"embedded-opentype\"), url(\"../fonts/CoreUI-Icons-Linear-Free.ttf?64h6xh\") format(\"truetype\"), url(\"../fonts/CoreUI-Icons-Linear-Free.woff?64h6xh\") format(\"woff\"), url(\"../fonts/CoreUI-Icons-Linear-Free.svg?64h6xh#CoreUI-Icons-Linear\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n[class^=\"cui-\"], [class*=\" cui-\"] {\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'CoreUI-Icons-Linear-Free' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.cui-account-logout:before {\n content: \"\\e900\";\n}\n\n.cui-action-redo:before {\n content: \"\\e901\";\n}\n\n.cui-action-undo:before {\n content: \"\\e902\";\n}\n\n.cui-align-center:before {\n content: \"\\e903\";\n}\n\n.cui-align-left:before {\n content: \"\\e904\";\n}\n\n.cui-align-right:before {\n content: \"\\e905\";\n}\n\n.cui-arrow-bottom:before {\n content: \"\\e906\";\n}\n\n.cui-arrow-left:before {\n content: \"\\e907\";\n}\n\n.cui-arrow-right:before {\n content: \"\\e908\";\n}\n\n.cui-arrow-top:before {\n content: \"\\e909\";\n}\n\n.cui-ban:before {\n content: \"\\e90a\";\n}\n\n.cui-basket-loaded:before {\n content: \"\\e90b\";\n}\n\n.cui-bell:before {\n content: \"\\e90c\";\n}\n\n.cui-bold:before {\n content: \"\\e90d\";\n}\n\n.cui-bookmark:before {\n content: \"\\e90e\";\n}\n\n.cui-briefcase:before {\n content: \"\\e960\";\n}\n\n.cui-british-pound:before {\n content: \"\\e961\";\n}\n\n.cui-brush:before {\n content: \"\\e90f\";\n}\n\n.cui-calculator:before {\n content: \"\\e910\";\n}\n\n.cui-calendar:before {\n content: \"\\e911\";\n}\n\n.cui-cart:before {\n content: \"\\e912\";\n}\n\n.cui-chart:before {\n content: \"\\e913\";\n}\n\n.cui-check:before {\n content: \"\\e914\";\n}\n\n.cui-chevron-bottom:before {\n content: \"\\e915\";\n}\n\n.cui-chevron-left:before {\n content: \"\\e916\";\n}\n\n.cui-chevron-right:before {\n content: \"\\e917\";\n}\n\n.cui-chevron-top:before {\n content: \"\\e918\";\n}\n\n.cui-circle-check:before {\n content: \"\\e919\";\n}\n\n.cui-circle-x:before {\n content: \"\\e91a\";\n}\n\n.cui-cloud:before {\n content: \"\\e91b\";\n}\n\n.cui-cloud-download:before {\n content: \"\\e91c\";\n}\n\n.cui-cloud-upload:before {\n content: \"\\e91d\";\n}\n\n.cui-code:before {\n content: \"\\e91e\";\n}\n\n.cui-cog:before {\n content: \"\\e91f\";\n}\n\n.cui-comment-square:before {\n content: \"\\e920\";\n}\n\n.cui-credit-card:before {\n content: \"\\e921\";\n}\n\n.cui-cursor:before {\n content: \"\\e922\";\n}\n\n.cui-dashboard:before {\n content: \"\\e923\";\n}\n\n.cui-delete:before {\n content: \"\\e924\";\n}\n\n.cui-dollar:before {\n content: \"\\e925\";\n}\n\n.cui-drop:before {\n content: \"\\e926\";\n}\n\n.cui-envelope-closed:before {\n content: \"\\e927\";\n}\n\n.cui-envelope-letter:before {\n content: \"\\e928\";\n}\n\n.cui-envelope-open:before {\n content: \"\\e929\";\n}\n\n.cui-euro:before {\n content: \"\\e92a\";\n}\n\n.cui-file:before {\n content: \"\\e92b\";\n}\n\n.cui-globe:before {\n content: \"\\e92c\";\n}\n\n.cui-graph:before {\n content: \"\\e92d\";\n}\n\n.cui-home:before {\n content: \"\\e92e\";\n}\n\n.cui-inbox:before {\n content: \"\\e92f\";\n}\n\n.cui-info:before {\n content: \"\\e930\";\n}\n\n.cui-italic:before {\n content: \"\\e931\";\n}\n\n.cui-justify-center:before {\n content: \"\\e932\";\n}\n\n.cui-justify-left:before {\n content: \"\\e933\";\n}\n\n.cui-justify-right:before {\n content: \"\\e934\";\n}\n\n.cui-laptop:before {\n content: \"\\e935\";\n}\n\n.cui-layers:before {\n content: \"\\e936\";\n}\n\n.cui-lightbulb:before {\n content: \"\\e937\";\n}\n\n.cui-list:before {\n content: \"\\e938\";\n}\n\n.cui-location-pin:before {\n content: \"\\e939\";\n}\n\n.cui-lock-locked:before {\n content: \"\\e93a\";\n}\n\n.cui-lock-unlocked:before {\n content: \"\\e93b\";\n}\n\n.cui-magnifying-glass:before {\n content: \"\\e93c\";\n}\n\n.cui-map:before {\n content: \"\\e93d\";\n}\n\n.cui-monitor:before {\n content: \"\\e962\";\n}\n\n.cui-moon:before {\n content: \"\\e93e\";\n}\n\n.cui-note:before {\n content: \"\\e93f\";\n}\n\n.cui-options:before {\n content: \"\\e940\";\n}\n\n.cui-paperclip:before {\n content: \"\\e941\";\n}\n\n.cui-pencil:before {\n content: \"\\e942\";\n}\n\n.cui-people:before {\n content: \"\\e943\";\n}\n\n.cui-phone:before {\n content: \"\\e944\";\n}\n\n.cui-pie-chart:before {\n content: \"\\e945\";\n}\n\n.cui-print:before {\n content: \"\\e946\";\n}\n\n.cui-puzzle:before {\n content: \"\\e947\";\n}\n\n.cui-rss:before {\n content: \"\\e963\";\n}\n\n.cui-screen-desktop:before {\n content: \"\\e948\";\n}\n\n.cui-screen-smartphone:before {\n content: \"\\e949\";\n}\n\n.cui-settings:before {\n content: \"\\e94a\";\n}\n\n.cui-share:before {\n content: \"\\e94b\";\n}\n\n.cui-shield:before {\n content: \"\\e94c\";\n}\n\n.cui-sort-ascending:before {\n content: \"\\e94d\";\n}\n\n.cui-sort-descending:before {\n content: \"\\e94e\";\n}\n\n.cui-speech:before {\n content: \"\\e94f\";\n}\n\n.cui-speedometer:before {\n content: \"\\e950\";\n}\n\n.cui-star:before {\n content: \"\\e951\";\n}\n\n.cui-sun:before {\n content: \"\\e952\";\n}\n\n.cui-tablet:before {\n content: \"\\e953\";\n}\n\n.cui-tags:before {\n content: \"\\e954\";\n}\n\n.cui-task:before {\n content: \"\\e955\";\n}\n\n.cui-thumb-down:before {\n content: \"\\e956\";\n}\n\n.cui-thumb-up:before {\n content: \"\\e957\";\n}\n\n.cui-trash:before {\n content: \"\\e958\";\n}\n\n.cui-underline:before {\n content: \"\\e959\";\n}\n\n.cui-user:before {\n content: \"\\e95a\";\n}\n\n.cui-user-female:before {\n content: \"\\e95b\";\n}\n\n.cui-user-follow:before {\n content: \"\\e95c\";\n}\n\n.cui-user-unfollow:before {\n content: \"\\e95d\";\n}\n\n.cui-wrench:before {\n content: \"\\e95e\";\n}\n\n.cui-yen:before {\n content: \"\\e95f \";\n}\n\n/*# sourceMappingURL=coreui-icons.css.map */"]} -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.eot -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.ttf -------------------------------------------------------------------------------- /wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/@coreui/icons/fonts/CoreUI-Icons-Linear-Free.woff -------------------------------------------------------------------------------- /wwwroot/vendors/font-awesome/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} 5 | -------------------------------------------------------------------------------- /wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /wwwroot/vendors/simple-line-icons/css/simple-line-icons.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'simple-line-icons'; 3 | src: url('../fonts/Simple-Line-Icons.eot?v=2.4.0'); 4 | src: url('../fonts/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'), url('../fonts/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'), url('../fonts/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'), url('../fonts/Simple-Line-Icons.woff?v=2.4.0') format('woff'), url('../fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg'); 5 | font-weight: normal; 6 | font-style: normal; 7 | } 8 | /* 9 | Use the following CSS code if you want to have a class per icon. 10 | Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: 11 | */ 12 | .icon-user, 13 | .icon-people, 14 | .icon-user-female, 15 | .icon-user-follow, 16 | .icon-user-following, 17 | .icon-user-unfollow, 18 | .icon-login, 19 | .icon-logout, 20 | .icon-emotsmile, 21 | .icon-phone, 22 | .icon-call-end, 23 | .icon-call-in, 24 | .icon-call-out, 25 | .icon-map, 26 | .icon-location-pin, 27 | .icon-direction, 28 | .icon-directions, 29 | .icon-compass, 30 | .icon-layers, 31 | .icon-menu, 32 | .icon-list, 33 | .icon-options-vertical, 34 | .icon-options, 35 | .icon-arrow-down, 36 | .icon-arrow-left, 37 | .icon-arrow-right, 38 | .icon-arrow-up, 39 | .icon-arrow-up-circle, 40 | .icon-arrow-left-circle, 41 | .icon-arrow-right-circle, 42 | .icon-arrow-down-circle, 43 | .icon-check, 44 | .icon-clock, 45 | .icon-plus, 46 | .icon-minus, 47 | .icon-close, 48 | .icon-event, 49 | .icon-exclamation, 50 | .icon-organization, 51 | .icon-trophy, 52 | .icon-screen-smartphone, 53 | .icon-screen-desktop, 54 | .icon-plane, 55 | .icon-notebook, 56 | .icon-mustache, 57 | .icon-mouse, 58 | .icon-magnet, 59 | .icon-energy, 60 | .icon-disc, 61 | .icon-cursor, 62 | .icon-cursor-move, 63 | .icon-crop, 64 | .icon-chemistry, 65 | .icon-speedometer, 66 | .icon-shield, 67 | .icon-screen-tablet, 68 | .icon-magic-wand, 69 | .icon-hourglass, 70 | .icon-graduation, 71 | .icon-ghost, 72 | .icon-game-controller, 73 | .icon-fire, 74 | .icon-eyeglass, 75 | .icon-envelope-open, 76 | .icon-envelope-letter, 77 | .icon-bell, 78 | .icon-badge, 79 | .icon-anchor, 80 | .icon-wallet, 81 | .icon-vector, 82 | .icon-speech, 83 | .icon-puzzle, 84 | .icon-printer, 85 | .icon-present, 86 | .icon-playlist, 87 | .icon-pin, 88 | .icon-picture, 89 | .icon-handbag, 90 | .icon-globe-alt, 91 | .icon-globe, 92 | .icon-folder-alt-alt, 93 | .icon-folder-alt, 94 | .icon-film, 95 | .icon-feed, 96 | .icon-drop, 97 | .icon-drawer, 98 | .icon-docs, 99 | .icon-doc, 100 | .icon-diamond, 101 | .icon-cup, 102 | .icon-calculator, 103 | .icon-bubbles, 104 | .icon-briefcase, 105 | .icon-book-open, 106 | .icon-basket-loaded, 107 | .icon-basket, 108 | .icon-bag, 109 | .icon-action-undo, 110 | .icon-action-redo, 111 | .icon-wrench, 112 | .icon-umbrella, 113 | .icon-trash, 114 | .icon-tag, 115 | .icon-support, 116 | .icon-frame, 117 | .icon-size-fullscreen, 118 | .icon-size-actual, 119 | .icon-shuffle, 120 | .icon-share-alt, 121 | .icon-share, 122 | .icon-rocket, 123 | .icon-question, 124 | .icon-pie-chart, 125 | .icon-pencil, 126 | .icon-note, 127 | .icon-loop, 128 | .icon-home, 129 | .icon-grid, 130 | .icon-graph, 131 | .icon-microphone, 132 | .icon-music-tone-alt, 133 | .icon-music-tone, 134 | .icon-earphones-alt, 135 | .icon-earphones, 136 | .icon-equalizer, 137 | .icon-like, 138 | .icon-dislike, 139 | .icon-control-start, 140 | .icon-control-rewind, 141 | .icon-control-play, 142 | .icon-control-pause, 143 | .icon-control-forward, 144 | .icon-control-end, 145 | .icon-volume-1, 146 | .icon-volume-2, 147 | .icon-volume-off, 148 | .icon-calendar, 149 | .icon-bulb, 150 | .icon-chart, 151 | .icon-ban, 152 | .icon-bubble, 153 | .icon-camrecorder, 154 | .icon-camera, 155 | .icon-cloud-download, 156 | .icon-cloud-upload, 157 | .icon-envelope, 158 | .icon-eye, 159 | .icon-flag, 160 | .icon-heart, 161 | .icon-info, 162 | .icon-key, 163 | .icon-link, 164 | .icon-lock, 165 | .icon-lock-open, 166 | .icon-magnifier, 167 | .icon-magnifier-add, 168 | .icon-magnifier-remove, 169 | .icon-paper-clip, 170 | .icon-paper-plane, 171 | .icon-power, 172 | .icon-refresh, 173 | .icon-reload, 174 | .icon-settings, 175 | .icon-star, 176 | .icon-symbol-female, 177 | .icon-symbol-male, 178 | .icon-target, 179 | .icon-credit-card, 180 | .icon-paypal, 181 | .icon-social-tumblr, 182 | .icon-social-twitter, 183 | .icon-social-facebook, 184 | .icon-social-instagram, 185 | .icon-social-linkedin, 186 | .icon-social-pinterest, 187 | .icon-social-github, 188 | .icon-social-google, 189 | .icon-social-reddit, 190 | .icon-social-skype, 191 | .icon-social-dribbble, 192 | .icon-social-behance, 193 | .icon-social-foursqare, 194 | .icon-social-soundcloud, 195 | .icon-social-spotify, 196 | .icon-social-stumbleupon, 197 | .icon-social-youtube, 198 | .icon-social-dropbox, 199 | .icon-social-vkontakte, 200 | .icon-social-steam { 201 | font-family: 'simple-line-icons'; 202 | speak: none; 203 | font-style: normal; 204 | font-weight: normal; 205 | font-variant: normal; 206 | text-transform: none; 207 | line-height: 1; 208 | /* Better Font Rendering =========== */ 209 | -webkit-font-smoothing: antialiased; 210 | -moz-osx-font-smoothing: grayscale; 211 | } 212 | .icon-user:before { 213 | content: "\e005"; 214 | } 215 | .icon-people:before { 216 | content: "\e001"; 217 | } 218 | .icon-user-female:before { 219 | content: "\e000"; 220 | } 221 | .icon-user-follow:before { 222 | content: "\e002"; 223 | } 224 | .icon-user-following:before { 225 | content: "\e003"; 226 | } 227 | .icon-user-unfollow:before { 228 | content: "\e004"; 229 | } 230 | .icon-login:before { 231 | content: "\e066"; 232 | } 233 | .icon-logout:before { 234 | content: "\e065"; 235 | } 236 | .icon-emotsmile:before { 237 | content: "\e021"; 238 | } 239 | .icon-phone:before { 240 | content: "\e600"; 241 | } 242 | .icon-call-end:before { 243 | content: "\e048"; 244 | } 245 | .icon-call-in:before { 246 | content: "\e047"; 247 | } 248 | .icon-call-out:before { 249 | content: "\e046"; 250 | } 251 | .icon-map:before { 252 | content: "\e033"; 253 | } 254 | .icon-location-pin:before { 255 | content: "\e096"; 256 | } 257 | .icon-direction:before { 258 | content: "\e042"; 259 | } 260 | .icon-directions:before { 261 | content: "\e041"; 262 | } 263 | .icon-compass:before { 264 | content: "\e045"; 265 | } 266 | .icon-layers:before { 267 | content: "\e034"; 268 | } 269 | .icon-menu:before { 270 | content: "\e601"; 271 | } 272 | .icon-list:before { 273 | content: "\e067"; 274 | } 275 | .icon-options-vertical:before { 276 | content: "\e602"; 277 | } 278 | .icon-options:before { 279 | content: "\e603"; 280 | } 281 | .icon-arrow-down:before { 282 | content: "\e604"; 283 | } 284 | .icon-arrow-left:before { 285 | content: "\e605"; 286 | } 287 | .icon-arrow-right:before { 288 | content: "\e606"; 289 | } 290 | .icon-arrow-up:before { 291 | content: "\e607"; 292 | } 293 | .icon-arrow-up-circle:before { 294 | content: "\e078"; 295 | } 296 | .icon-arrow-left-circle:before { 297 | content: "\e07a"; 298 | } 299 | .icon-arrow-right-circle:before { 300 | content: "\e079"; 301 | } 302 | .icon-arrow-down-circle:before { 303 | content: "\e07b"; 304 | } 305 | .icon-check:before { 306 | content: "\e080"; 307 | } 308 | .icon-clock:before { 309 | content: "\e081"; 310 | } 311 | .icon-plus:before { 312 | content: "\e095"; 313 | } 314 | .icon-minus:before { 315 | content: "\e615"; 316 | } 317 | .icon-close:before { 318 | content: "\e082"; 319 | } 320 | .icon-event:before { 321 | content: "\e619"; 322 | } 323 | .icon-exclamation:before { 324 | content: "\e617"; 325 | } 326 | .icon-organization:before { 327 | content: "\e616"; 328 | } 329 | .icon-trophy:before { 330 | content: "\e006"; 331 | } 332 | .icon-screen-smartphone:before { 333 | content: "\e010"; 334 | } 335 | .icon-screen-desktop:before { 336 | content: "\e011"; 337 | } 338 | .icon-plane:before { 339 | content: "\e012"; 340 | } 341 | .icon-notebook:before { 342 | content: "\e013"; 343 | } 344 | .icon-mustache:before { 345 | content: "\e014"; 346 | } 347 | .icon-mouse:before { 348 | content: "\e015"; 349 | } 350 | .icon-magnet:before { 351 | content: "\e016"; 352 | } 353 | .icon-energy:before { 354 | content: "\e020"; 355 | } 356 | .icon-disc:before { 357 | content: "\e022"; 358 | } 359 | .icon-cursor:before { 360 | content: "\e06e"; 361 | } 362 | .icon-cursor-move:before { 363 | content: "\e023"; 364 | } 365 | .icon-crop:before { 366 | content: "\e024"; 367 | } 368 | .icon-chemistry:before { 369 | content: "\e026"; 370 | } 371 | .icon-speedometer:before { 372 | content: "\e007"; 373 | } 374 | .icon-shield:before { 375 | content: "\e00e"; 376 | } 377 | .icon-screen-tablet:before { 378 | content: "\e00f"; 379 | } 380 | .icon-magic-wand:before { 381 | content: "\e017"; 382 | } 383 | .icon-hourglass:before { 384 | content: "\e018"; 385 | } 386 | .icon-graduation:before { 387 | content: "\e019"; 388 | } 389 | .icon-ghost:before { 390 | content: "\e01a"; 391 | } 392 | .icon-game-controller:before { 393 | content: "\e01b"; 394 | } 395 | .icon-fire:before { 396 | content: "\e01c"; 397 | } 398 | .icon-eyeglass:before { 399 | content: "\e01d"; 400 | } 401 | .icon-envelope-open:before { 402 | content: "\e01e"; 403 | } 404 | .icon-envelope-letter:before { 405 | content: "\e01f"; 406 | } 407 | .icon-bell:before { 408 | content: "\e027"; 409 | } 410 | .icon-badge:before { 411 | content: "\e028"; 412 | } 413 | .icon-anchor:before { 414 | content: "\e029"; 415 | } 416 | .icon-wallet:before { 417 | content: "\e02a"; 418 | } 419 | .icon-vector:before { 420 | content: "\e02b"; 421 | } 422 | .icon-speech:before { 423 | content: "\e02c"; 424 | } 425 | .icon-puzzle:before { 426 | content: "\e02d"; 427 | } 428 | .icon-printer:before { 429 | content: "\e02e"; 430 | } 431 | .icon-present:before { 432 | content: "\e02f"; 433 | } 434 | .icon-playlist:before { 435 | content: "\e030"; 436 | } 437 | .icon-pin:before { 438 | content: "\e031"; 439 | } 440 | .icon-picture:before { 441 | content: "\e032"; 442 | } 443 | .icon-handbag:before { 444 | content: "\e035"; 445 | } 446 | .icon-globe-alt:before { 447 | content: "\e036"; 448 | } 449 | .icon-globe:before { 450 | content: "\e037"; 451 | } 452 | .icon-folder-alt-alt:before { 453 | content: "\e039"; 454 | } 455 | .icon-folder-alt:before { 456 | content: "\e089"; 457 | } 458 | .icon-film:before { 459 | content: "\e03a"; 460 | } 461 | .icon-feed:before { 462 | content: "\e03b"; 463 | } 464 | .icon-drop:before { 465 | content: "\e03e"; 466 | } 467 | .icon-drawer:before { 468 | content: "\e03f"; 469 | } 470 | .icon-docs:before { 471 | content: "\e040"; 472 | } 473 | .icon-doc:before { 474 | content: "\e085"; 475 | } 476 | .icon-diamond:before { 477 | content: "\e043"; 478 | } 479 | .icon-cup:before { 480 | content: "\e044"; 481 | } 482 | .icon-calculator:before { 483 | content: "\e049"; 484 | } 485 | .icon-bubbles:before { 486 | content: "\e04a"; 487 | } 488 | .icon-briefcase:before { 489 | content: "\e04b"; 490 | } 491 | .icon-book-open:before { 492 | content: "\e04c"; 493 | } 494 | .icon-basket-loaded:before { 495 | content: "\e04d"; 496 | } 497 | .icon-basket:before { 498 | content: "\e04e"; 499 | } 500 | .icon-bag:before { 501 | content: "\e04f"; 502 | } 503 | .icon-action-undo:before { 504 | content: "\e050"; 505 | } 506 | .icon-action-redo:before { 507 | content: "\e051"; 508 | } 509 | .icon-wrench:before { 510 | content: "\e052"; 511 | } 512 | .icon-umbrella:before { 513 | content: "\e053"; 514 | } 515 | .icon-trash:before { 516 | content: "\e054"; 517 | } 518 | .icon-tag:before { 519 | content: "\e055"; 520 | } 521 | .icon-support:before { 522 | content: "\e056"; 523 | } 524 | .icon-frame:before { 525 | content: "\e038"; 526 | } 527 | .icon-size-fullscreen:before { 528 | content: "\e057"; 529 | } 530 | .icon-size-actual:before { 531 | content: "\e058"; 532 | } 533 | .icon-shuffle:before { 534 | content: "\e059"; 535 | } 536 | .icon-share-alt:before { 537 | content: "\e05a"; 538 | } 539 | .icon-share:before { 540 | content: "\e05b"; 541 | } 542 | .icon-rocket:before { 543 | content: "\e05c"; 544 | } 545 | .icon-question:before { 546 | content: "\e05d"; 547 | } 548 | .icon-pie-chart:before { 549 | content: "\e05e"; 550 | } 551 | .icon-pencil:before { 552 | content: "\e05f"; 553 | } 554 | .icon-note:before { 555 | content: "\e060"; 556 | } 557 | .icon-loop:before { 558 | content: "\e064"; 559 | } 560 | .icon-home:before { 561 | content: "\e069"; 562 | } 563 | .icon-grid:before { 564 | content: "\e06a"; 565 | } 566 | .icon-graph:before { 567 | content: "\e06b"; 568 | } 569 | .icon-microphone:before { 570 | content: "\e063"; 571 | } 572 | .icon-music-tone-alt:before { 573 | content: "\e061"; 574 | } 575 | .icon-music-tone:before { 576 | content: "\e062"; 577 | } 578 | .icon-earphones-alt:before { 579 | content: "\e03c"; 580 | } 581 | .icon-earphones:before { 582 | content: "\e03d"; 583 | } 584 | .icon-equalizer:before { 585 | content: "\e06c"; 586 | } 587 | .icon-like:before { 588 | content: "\e068"; 589 | } 590 | .icon-dislike:before { 591 | content: "\e06d"; 592 | } 593 | .icon-control-start:before { 594 | content: "\e06f"; 595 | } 596 | .icon-control-rewind:before { 597 | content: "\e070"; 598 | } 599 | .icon-control-play:before { 600 | content: "\e071"; 601 | } 602 | .icon-control-pause:before { 603 | content: "\e072"; 604 | } 605 | .icon-control-forward:before { 606 | content: "\e073"; 607 | } 608 | .icon-control-end:before { 609 | content: "\e074"; 610 | } 611 | .icon-volume-1:before { 612 | content: "\e09f"; 613 | } 614 | .icon-volume-2:before { 615 | content: "\e0a0"; 616 | } 617 | .icon-volume-off:before { 618 | content: "\e0a1"; 619 | } 620 | .icon-calendar:before { 621 | content: "\e075"; 622 | } 623 | .icon-bulb:before { 624 | content: "\e076"; 625 | } 626 | .icon-chart:before { 627 | content: "\e077"; 628 | } 629 | .icon-ban:before { 630 | content: "\e07c"; 631 | } 632 | .icon-bubble:before { 633 | content: "\e07d"; 634 | } 635 | .icon-camrecorder:before { 636 | content: "\e07e"; 637 | } 638 | .icon-camera:before { 639 | content: "\e07f"; 640 | } 641 | .icon-cloud-download:before { 642 | content: "\e083"; 643 | } 644 | .icon-cloud-upload:before { 645 | content: "\e084"; 646 | } 647 | .icon-envelope:before { 648 | content: "\e086"; 649 | } 650 | .icon-eye:before { 651 | content: "\e087"; 652 | } 653 | .icon-flag:before { 654 | content: "\e088"; 655 | } 656 | .icon-heart:before { 657 | content: "\e08a"; 658 | } 659 | .icon-info:before { 660 | content: "\e08b"; 661 | } 662 | .icon-key:before { 663 | content: "\e08c"; 664 | } 665 | .icon-link:before { 666 | content: "\e08d"; 667 | } 668 | .icon-lock:before { 669 | content: "\e08e"; 670 | } 671 | .icon-lock-open:before { 672 | content: "\e08f"; 673 | } 674 | .icon-magnifier:before { 675 | content: "\e090"; 676 | } 677 | .icon-magnifier-add:before { 678 | content: "\e091"; 679 | } 680 | .icon-magnifier-remove:before { 681 | content: "\e092"; 682 | } 683 | .icon-paper-clip:before { 684 | content: "\e093"; 685 | } 686 | .icon-paper-plane:before { 687 | content: "\e094"; 688 | } 689 | .icon-power:before { 690 | content: "\e097"; 691 | } 692 | .icon-refresh:before { 693 | content: "\e098"; 694 | } 695 | .icon-reload:before { 696 | content: "\e099"; 697 | } 698 | .icon-settings:before { 699 | content: "\e09a"; 700 | } 701 | .icon-star:before { 702 | content: "\e09b"; 703 | } 704 | .icon-symbol-female:before { 705 | content: "\e09c"; 706 | } 707 | .icon-symbol-male:before { 708 | content: "\e09d"; 709 | } 710 | .icon-target:before { 711 | content: "\e09e"; 712 | } 713 | .icon-credit-card:before { 714 | content: "\e025"; 715 | } 716 | .icon-paypal:before { 717 | content: "\e608"; 718 | } 719 | .icon-social-tumblr:before { 720 | content: "\e00a"; 721 | } 722 | .icon-social-twitter:before { 723 | content: "\e009"; 724 | } 725 | .icon-social-facebook:before { 726 | content: "\e00b"; 727 | } 728 | .icon-social-instagram:before { 729 | content: "\e609"; 730 | } 731 | .icon-social-linkedin:before { 732 | content: "\e60a"; 733 | } 734 | .icon-social-pinterest:before { 735 | content: "\e60b"; 736 | } 737 | .icon-social-github:before { 738 | content: "\e60c"; 739 | } 740 | .icon-social-google:before { 741 | content: "\e60d"; 742 | } 743 | .icon-social-reddit:before { 744 | content: "\e60e"; 745 | } 746 | .icon-social-skype:before { 747 | content: "\e60f"; 748 | } 749 | .icon-social-dribbble:before { 750 | content: "\e00d"; 751 | } 752 | .icon-social-behance:before { 753 | content: "\e610"; 754 | } 755 | .icon-social-foursqare:before { 756 | content: "\e611"; 757 | } 758 | .icon-social-soundcloud:before { 759 | content: "\e612"; 760 | } 761 | .icon-social-spotify:before { 762 | content: "\e613"; 763 | } 764 | .icon-social-stumbleupon:before { 765 | content: "\e614"; 766 | } 767 | .icon-social-youtube:before { 768 | content: "\e008"; 769 | } 770 | .icon-social-dropbox:before { 771 | content: "\e00c"; 772 | } 773 | .icon-social-vkontakte:before { 774 | content: "\e618"; 775 | } 776 | .icon-social-steam:before { 777 | content: "\e620"; 778 | } 779 | -------------------------------------------------------------------------------- /wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.eot -------------------------------------------------------------------------------- /wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.ttf -------------------------------------------------------------------------------- /wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.woff -------------------------------------------------------------------------------- /wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/richorama/portal38/d029cbfa766935e5522660bfeba52e916e33ce21/wwwroot/vendors/simple-line-icons/fonts/Simple-Line-Icons.woff2 --------------------------------------------------------------------------------