├── .gitignore ├── public ├── test_ip.txt ├── jquery-ui-1.12.1 │ ├── images │ │ ├── ui-icons_666666_256x240.png │ │ ├── ui-icons_777777_256x240.png │ │ ├── ui-icons_aaaaaa_256x240.png │ │ ├── ui-icons_c98000_256x240.png │ │ ├── ui-icons_cccccc_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ ├── ui-icons_f29a00_256x240.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_inset-soft_15_121212_1x100.png │ │ ├── ui-bg_gloss-wave_16_121212_500x100.png │ │ ├── ui-bg_highlight-hard_15_888888_1x100.png │ │ ├── ui-bg_highlight-hard_55_555555_1x100.png │ │ ├── ui-bg_highlight-soft_35_adadad_1x100.png │ │ └── ui-bg_highlight-soft_60_dddddd_1x100.png │ ├── LICENSE.txt │ ├── package.json │ ├── jquery-ui.theme.min.css │ ├── jquery-ui.structure.min.css │ ├── jquery-ui.theme.css │ ├── jquery-ui.structure.css │ ├── jquery-ui.min.css │ └── index.html ├── index.html ├── map.html ├── d3 │ └── topojson.js └── ips.txt ├── knexfile.js.example ├── migrations ├── 20170709222923_identifiers.js ├── 20170809224358_locations.js └── 20170709222933_ip_ranges.js ├── legacy-scripts ├── parsy.py ├── mapdraw.py └── ip_lookup.py ├── package.json ├── README.md ├── app.js └── setup.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | auth.* 4 | knexfile.js 5 | csv -------------------------------------------------------------------------------- /public/test_ip.txt: -------------------------------------------------------------------------------- 1 | 101.128.192.30 2 | 101.68.108.117 3 | 100.110.68 4 | 100.45.asdf.50 -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_666666_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_666666_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_aaaaaa_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_aaaaaa_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_c98000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_c98000_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_cccccc_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_cccccc_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-icons_f29a00_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-icons_f29a00_256x240.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_inset-soft_15_121212_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_inset-soft_15_121212_1x100.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_gloss-wave_16_121212_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_gloss-wave_16_121212_500x100.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_highlight-hard_15_888888_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_highlight-hard_15_888888_1x100.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_highlight-hard_55_555555_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_highlight-hard_55_555555_1x100.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_highlight-soft_35_adadad_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_highlight-soft_35_adadad_1x100.png -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/images/ui-bg_highlight-soft_60_dddddd_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarinMakers/botmap/HEAD/public/jquery-ui-1.12.1/images/ui-bg_highlight-soft_60_dddddd_1x100.png -------------------------------------------------------------------------------- /knexfile.js.example: -------------------------------------------------------------------------------- 1 | // Update with your config settings. 2 | 3 | module.exports = { 4 | client: 'postgresql', 5 | connection: { 6 | host: 'localhost', 7 | database: 'botmap', 8 | user: 'botmap_user', 9 | password: '' 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /migrations/20170709222923_identifiers.js: -------------------------------------------------------------------------------- 1 | 2 | exports.up = function(knex, Promise) { 3 | return knex.schema.createTable("identifiers", function(table) { 4 | table.increments("id").primary(); 5 | table.string("user_id"); 6 | table.integer("loc_id"); 7 | //table.foreign("loc_id").references("id").inTable("locations"); 8 | }) 9 | }; 10 | 11 | exports.down = function(knex, Promise) { 12 | return knex.schema.dropTable("identifiers") 13 | //.dropTable("locations"); 14 | }; 15 | -------------------------------------------------------------------------------- /migrations/20170809224358_locations.js: -------------------------------------------------------------------------------- 1 | exports.up = function(knex, Promise) { 2 | return knex.schema.createTable("locations", function(table) { 3 | //table.increments("id"); 4 | table.string("geoname_id").index(); 5 | table.string("locale_code"); 6 | table.string("continent_code"); 7 | table.string("continent_name"); 8 | table.string("country_iso_code"); 9 | table.string("country_name"); 10 | }) 11 | }; 12 | 13 | exports.down = function(knex, Promise) { 14 | return knex.schema.dropTable("locations"); 15 | }; 16 | -------------------------------------------------------------------------------- /legacy-scripts/parsy.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # CSV => JSON 3 | # Welcome to the hodgiest podgiest parse 4 | import json 5 | 6 | if __name__ == "__main__": 7 | sourcefile = open("ip_coordinates.csv","r") 8 | outfile = open("ip_coordinates.json","w") 9 | outfile.truncate() 10 | string = "[" 11 | for i, data in enumerate(sourcefile): 12 | [lat,lng,city,ip] = data.split(',') 13 | ip = "".join(ip.split("\n")) 14 | string+= '{"latitude":'+lat+',"longitude":'+lng+',"city":"'+city+'","ip":"'+ip+'"},\n' 15 | string=string[:-2]+"]" 16 | outfile.write(string) 17 | -------------------------------------------------------------------------------- /migrations/20170709222933_ip_ranges.js: -------------------------------------------------------------------------------- 1 | 2 | exports.up = function(knex, Promise) { 3 | return knex.schema.createTable("ip_ranges", function(table) { 4 | table.increments("id").primary(); 5 | table.string("network"); 6 | table.integer("start_ip_int"); 7 | table.integer("end_ip_int"); 8 | table.string("geoname_id"); 9 | table.string("registered_country_geoname_id"); 10 | table.string("represented_country_geoname_id"); 11 | table.boolean("is_anonymous_proxy"); 12 | table.boolean("is_satellite_provider"); 13 | table.string("postal_code"); 14 | table.float("latitude"); 15 | table.float("longitude"); 16 | table.integer("accuracy_radius"); 17 | }) 18 | }; 19 | 20 | exports.down = function(knex, Promise) { 21 | return knex.schema.dropTable("ip_ranges"); 22 | }; 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "botmap", 3 | "version": "1.0.0", 4 | "description": "Hacker map", 5 | "main": "jquery-3.2.1.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/MarinMakers/botmap.git" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/MarinMakers/botmap/issues" 17 | }, 18 | "homepage": "https://github.com/MarinMakers/botmap#readme", 19 | "dependencies": { 20 | "body-parser": "^1.17.2", 21 | "express": "^4.15.3", 22 | "knex": "^0.13.0", 23 | "line-by-line": "^0.1.5", 24 | "method-override": "^2.3.9", 25 | "pg": "^6.4.0", 26 | "uuid": "^3.1.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Botmap 5 | 33 | 34 | 35 |
36 |

Welcome to Botmap

37 |

Botmap is an application that will allow you to view multiple IP addressess on a map. It is recommended that you use a CSV of IP addresses separated by a consistant character, such as spaces, commas, or newlines.

38 |
39 | 40 |
41 | 42 |
43 |
44 | 45 | -------------------------------------------------------------------------------- /legacy-scripts/mapdraw.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from mpl_toolkits.basemap import Basemap 3 | import matplotlib.pyplot as plt 4 | from datetime import datetime 5 | # mercator projection 6 | 7 | def Datapoint(self,test): 8 | return "Hello" 9 | 10 | 11 | map = Basemap(projection='merc',llcrnrlat=-80,urcrnrlat=80,\ 12 | llcrnrlon=-180,urcrnrlon=180,lat_ts=20,resolution='c') 13 | # plot coastlines, draw label meridians and parallels. 14 | map.fillcontinents(color='#0F0F0F',lake_color='#007AE2') 15 | map.drawcoastlines() 16 | map.drawcountries(linewidth=0.5, linestyle='solid', color='#E6E6E6', antialiased=1, ax=None, zorder=None) 17 | map.drawparallels(np.arange(-90,90,30),labels=[1,0,0,0]) 18 | map.drawmeridians(np.arange(map.lonmin,map.lonmax+30,60),labels=[0,0,0,1]) 19 | # fill continents 'coral' (with zorder=0), color wet areas 'aqua' 20 | map.drawmapboundary(fill_color='#007AE2') 21 | # shade the night areas, with alpha transparency so the 22 | # map shows through. Use current time in UTC. 23 | 24 | with open("ip_coordinates.csv") as f: 25 | for line in f: 26 | points = line.split(",") 27 | lat = float(points[1]) 28 | lng = float(points[0]) 29 | x,y = map(lat,lng) 30 | point = map.plot(x,y,'ro',markersize=4, color="#ffc700") 31 | # plt.annotate(line,(x,y)) 32 | 33 | 34 | date = datetime.now() 35 | plt.title('Current Assailant Map for %s' % date.strftime("%d %b %Y %H:%M:%S")) 36 | plt.show() 37 | 38 | # m = Basemap(width=12000000,height=9000000,projection='lcc', 39 | # resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.) 40 | # m.shadedrelief() 41 | # plt.show() 42 | -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright jQuery Foundation and other contributors, https://jquery.org/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery-ui 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | Copyright and related rights for sample code are waived via CC0. Sample 34 | code is defined as all source code contained within the demos directory. 35 | 36 | CC0: http://creativecommons.org/publicdomain/zero/1.0/ 37 | 38 | ==== 39 | 40 | All files located in the node_modules and external directories are 41 | externally maintained libraries used by this software which have their 42 | own licenses; we recommend you read them, as their terms may differ from 43 | the terms above. 44 | -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-ui", 3 | "title": "jQuery UI", 4 | "description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.", 5 | "version": "1.12.1", 6 | "homepage": "http://jqueryui.com", 7 | "author": { 8 | "name": "jQuery Foundation and other contributors", 9 | "url": "https://github.com/jquery/jquery-ui/blob/1.12.1/AUTHORS.txt" 10 | }, 11 | "main": "ui/widget.js", 12 | "maintainers": [ 13 | { 14 | "name": "Scott González", 15 | "email": "scott.gonzalez@gmail.com", 16 | "url": "http://scottgonzalez.com" 17 | }, 18 | { 19 | "name": "Jörn Zaefferer", 20 | "email": "joern.zaefferer@gmail.com", 21 | "url": "http://bassistance.de" 22 | }, 23 | { 24 | "name": "Mike Sherov", 25 | "email": "mike.sherov@gmail.com", 26 | "url": "http://mike.sherov.com" 27 | }, 28 | { 29 | "name": "TJ VanToll", 30 | "email": "tj.vantoll@gmail.com", 31 | "url": "http://tjvantoll.com" 32 | }, 33 | { 34 | "name": "Felix Nagel", 35 | "email": "info@felixnagel.com", 36 | "url": "http://www.felixnagel.com" 37 | }, 38 | { 39 | "name": "Alex Schmitz", 40 | "email": "arschmitz@gmail.com", 41 | "url": "https://github.com/arschmitz" 42 | } 43 | ], 44 | "repository": { 45 | "type": "git", 46 | "url": "git://github.com/jquery/jquery-ui.git" 47 | }, 48 | "bugs": "https://bugs.jqueryui.com/", 49 | "license": "MIT", 50 | "scripts": { 51 | "test": "grunt" 52 | }, 53 | "dependencies": {}, 54 | "devDependencies": { 55 | "commitplease": "2.3.0", 56 | "grunt": "0.4.5", 57 | "grunt-bowercopy": "1.2.4", 58 | "grunt-cli": "0.1.13", 59 | "grunt-compare-size": "0.4.0", 60 | "grunt-contrib-concat": "0.5.1", 61 | "grunt-contrib-csslint": "0.5.0", 62 | "grunt-contrib-jshint": "0.12.0", 63 | "grunt-contrib-qunit": "1.0.1", 64 | "grunt-contrib-requirejs": "0.4.4", 65 | "grunt-contrib-uglify": "0.11.1", 66 | "grunt-git-authors": "3.1.0", 67 | "grunt-html": "6.0.0", 68 | "grunt-jscs": "2.1.0", 69 | "load-grunt-tasks": "3.4.0", 70 | "rimraf": "2.5.1", 71 | "testswarm": "1.1.0" 72 | }, 73 | "keywords": [] 74 | } 75 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BotMap 2 | ###### A map of the 🤖net attacking our server 3 | 4 | ![latest map](http://i.imgur.com/478C0NJ.png) 5 | 6 | ## Premise 7 | 8 | So my friends and I have been managing CentOS for the past couple of years in an effort to save money and have autonomy from private hosting services. After being port-forwarded, our most recent server quickly caught the attention of a scraper. Brute-force attacks soon followed, and `su -` reports like this were a **daily** occurance: 9 | 10 | ![too many attacks](https://cdn.discordapp.com/attachments/210674878297145344/292148277456011264/image.jpg) 11 | 12 | I implemented fail2ban ASAP (as everyone should), and before long the daily attacks began to diminish, flooring at ~10 a week. I concluded that this botnet must be astronomical, and I wanted to see just where these attacks were being distributed from. 13 | 14 | Sean and I began to whip up a means to find this out. 15 | 16 | ## Pythonic Approach 17 | 18 | #### Our first model used MatPlotLib, a Python 2.x data plotting library, to create our map. 19 | 20 | Pipng the list of banned IPs from `fail2ban-client status sshd`, we wrote a [simple script](https://github.com/MarinMakers/botmap/blob/master/ip_lookup.py) to convert these IPv4 addresses to geolocation using the [freegeoip API](freegeoip.net). This data was then parsed by [mapdraw](https://github.com/MarinMakers/botmap/blob/master/mapdraw.py) to populate a navigatible map. 21 | 22 | ![first map](http://i.imgur.com/NmBSpyH.png) 23 | 24 | Then again with a month and a half worth of data and fresh coat of paint. . . 25 | 26 | ![second map](http://i.imgur.com/c5YulOD.png) 27 | 28 | ## HTML 29 | #### Python is well and good for afternoon-sprint projects, but having to install huge dependencies on everyone's machine is a hastle. Better to move towards a Web stack. 30 | 31 | ![third map](http://i.imgur.com/BGB4Eb1.png) 32 | 33 | This employed a FrontEnd D3js library, [DataMaps](http://datamaps.github.io/). Its cross-platform accessability, high resolution SVG map and plot labels(!!!) were significant improvements over the previous implementation. This also featured a cleaner, low-light color scheme. 34 | 35 | 36 | ## Conclusion 37 | 38 | ### Of the 1,430 different attack sites, the top two highest-concentrated cities were: 39 | # Buenos Aires 40 | 41 | ![BA](http://i.imgur.com/fy6nUyz.png) 42 | 43 | # Shanghai 44 | 45 | ![CHI](http://i.imgur.com/VHz18Ir.png) 46 | 47 | Will continue to post more information as it comes. 48 | -------------------------------------------------------------------------------- /legacy-scripts/ip_lookup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | from urllib.request import urlopen 4 | from contextlib import closing 5 | from pprint import pprint 6 | import json 7 | import math 8 | import sys 9 | 10 | 11 | def loadingBar(current_item, max_items): 12 | bar_length = 30 13 | # Fixes spacing of the fraction counter 14 | space_difference = len(str(max_items)) - len(str(current_item)) 15 | padding = "" 16 | for i in range(space_difference): 17 | padding += " " 18 | output_string = "(" + str(current_item) + padding + "/" + str(max_items) + ") " 19 | current_place = math.ceil(float(current_item) / float(max_items) * bar_length) 20 | loading_section = "[" 21 | for i in range (current_place): # Yes this is horrific. Don't judge me please. 22 | loading_section += "#" 23 | for i in range (bar_length - current_place): 24 | loading_section += " " 25 | loading_section += "]" 26 | 27 | return output_string + loading_section + " " 28 | 29 | # Returns bool if string is [0-255].[0-255].[0-255].[0-255] formatted 30 | def validIPv4(ip): 31 | ipArr = ip.split(".") 32 | if len(ipArr) != 4: 33 | return False 34 | for i in ipArr: 35 | try: 36 | i = int(i) 37 | except ValueError: 38 | return False 39 | if not 0<=i<=255: 40 | return False 41 | return True 42 | 43 | # Automatically geolocate the connecting IP 44 | source_url = 'http://freegeoip.net/json/' 45 | 46 | # Define input file with CLI argument or fallback value of ips.txt 47 | try: 48 | source_filename = sys.argv[1] 49 | except IndexError: 50 | source_filename = "ips.txt" 51 | 52 | # Output file 53 | destination_filename = "ip_coordinates.csv" 54 | 55 | 56 | try: 57 | ip_file = open(source_filename, "r") 58 | except: 59 | raise FileNotFoundError("Invalid source file name `{0}`. Exiting..".format(source_filename)) 60 | 61 | coordinate_file = open(destination_filename, "w") 62 | 63 | ip_list = [] 64 | for i, ip in enumerate(ip_file): 65 | if validIPv4(ip): 66 | url = source_url + ip 67 | with closing(urlopen(url)) as response: 68 | location = json.loads(response.read().decode("UTF-8")) 69 | location_latitude = location['latitude'] 70 | location_longitude = location['longitude'] 71 | location_city = location['city'] 72 | output_string = str(location_latitude) + "," + str(location_longitude) + "," + location_city + "," + ip 73 | 74 | ### Something is wrong with the Loading bar feature. Revisit. For now, printing iterator on line below. 75 | # print("\r" + loadingBar(i + 1, len(ip_list)), end="") 76 | print(i+1) 77 | coordinate_file.write(output_string) 78 | else: 79 | print( "Invalid IP - Line {0}: {1}".format(i+1,ip) , end="" ) 80 | print("\nComplete!") 81 | 82 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const express = require('express'); 4 | const path = require('path'); 5 | const knex = require("knex")(require("./knexfile.js")) 6 | const bodyParser = require('body-parser'); 7 | const methodOverride = require('method-override'); 8 | const uuid = require('uuid'); 9 | 10 | const PORT = 1337; 11 | 12 | var app = express() 13 | 14 | app.set("title","Botmap"); 15 | app.use(bodyParser.urlencoded({ extended: false })); 16 | app.use(bodyParser.json()); 17 | //app.use(methodOverride()) 18 | 19 | var ipFormat = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/ 20 | 21 | 22 | //Error handler 23 | function errorHandler(req, res, next) { 24 | var err = new Error('Not Found'); 25 | err.status = 404; 26 | res.send("File Not Found") 27 | next(err); 28 | } 29 | 30 | 31 | function validIPArr(arr) { 32 | for (i in arr) { 33 | if (!arr[i].match(ipFormat)) return false 34 | } 35 | return true 36 | } 37 | function intToIP(int) { 38 | var part1 = int & 255; 39 | var part2 = ((int >> 8) & 255); 40 | var part3 = ((int >> 16) & 255); 41 | var part4 = ((int >> 24) & 255); 42 | 43 | return part4 + "." + part3 + "." + part2 + "." + part1; 44 | } 45 | 46 | function iPToInt(ipaddr) { 47 | var octets = ipaddr.split("/")[0].split(".").map(function(x){ 48 | return parseInt(x) 49 | }) 50 | 51 | return (octets[0] * 16777216) + (octets[1] * 65536) + (octets[2] * 256) + (octets[3]) -2147483648; 52 | } 53 | 54 | function getIPRange(ipaddr) { 55 | var bitCount = parseInt(ipaddr.split("/").pop()) 56 | 57 | var min = iPToInt(ipaddr); 58 | var max = min + Math.pow(2, 32-bitCount) - 1; 59 | return {min,max}; 60 | } 61 | 62 | 63 | //Routes 64 | app.get("/", function (req,res,next) { 65 | console.log(req.query) 66 | next() 67 | }) 68 | 69 | app.get("/map", function (req,res) { 70 | console.log(`GET map with`, req.query) 71 | if (req.query.id) { 72 | res.sendFile(__dirname+"/public/map.html") 73 | } 74 | //next() 75 | }) 76 | app.post("/submit", function (req,res) { 77 | var ipArr = req.body.iplist.split(/[\r\n\,\ \|_-]/).filter(function(n){ 78 | if (n==="") return false 79 | return n != undefined 80 | }); 81 | if (validIPArr(ipArr)) { 82 | var userID = uuid.v1(); 83 | (function() { 84 | while(ipArr.length>0){ 85 | 86 | ipInt = iPToInt(ipArr.pop()) 87 | knex("ip_ranges").select("id").where('start_ip_int', '<', ipInt).andWhere('end_ip_int', '>',ipInt).then((data)=>{ 88 | locationID = data[0].id 89 | knex("identifiers").insert({ 90 | "user_id": userID, 91 | "loc_id": locationID 92 | }).then() 93 | }).catch(e=>console.log(e)) 94 | } 95 | })() 96 | 97 | 98 | 99 | res.redirect("/map?id="+userID) 100 | } else { 101 | res.send("Bad POST request") 102 | } 103 | 104 | 105 | //next() 106 | }) 107 | 108 | app.get("/lookup", function(req,res) { 109 | if (req.query.id.match(/([a-f\d]{8}(-[a-f\d]{4}){3}-[a-f\d]{12}?)/i)){ 110 | // TODO: Trim this up to the essentials. 111 | knex("identifiers") 112 | .select("*") 113 | .join("ip_ranges",function(){ 114 | this.on("identifiers.loc_id","=","ip_ranges.id") 115 | }).join("locations",function(){ 116 | this.on("ip_ranges.geoname_id", "=", "locations.geoname_id") 117 | }) 118 | .where("user_id",req.query.id).then((data)=>{ 119 | res.json(data) 120 | }) 121 | } else { 122 | res.send("Nope") 123 | } 124 | }) 125 | 126 | app.use("/",express.static("public")); 127 | 128 | 129 | //This MUST be the last route 130 | // app.use(errorHandler); 131 | app.listen(PORT, ()=> { 132 | console.log(`Server is live at port ${PORT}`) 133 | }); 134 | 135 | 136 | -------------------------------------------------------------------------------- /setup.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const knex = require("knex")(require("./knexfile.js")); 3 | const fs = require("fs"); 4 | const LineByLineReader = require("line-by-line"); 5 | 6 | function iPToInt(ipaddr) { 7 | var octets = ipaddr.split("/")[0].split(".").map(function(x){ 8 | return parseInt(x) 9 | }) 10 | 11 | return (octets[0] * 16777216) + (octets[1] * 65536) + (octets[2] * 256) + (octets[3]) -2147483648; 12 | } 13 | 14 | function getIPRange(ipaddr) { 15 | var bitCount = parseInt(ipaddr.split("/").pop()) 16 | 17 | var min = iPToInt(ipaddr); 18 | var max = min + Math.pow(2, 32-bitCount) - 1; 19 | return {min,max}; 20 | } 21 | 22 | 23 | function intToIP(int) { 24 | var part1 = int & 255; 25 | var part2 = ((int >> 8) & 255); 26 | var part3 = ((int >> 16) & 255); 27 | var part4 = ((int >> 24) & 255); 28 | 29 | return part4 + "." + part3 + "." + part2 + "." + part1; 30 | } 31 | 32 | 33 | new Promise((resolve, reject)=> { 34 | var lr = new LineByLineReader('./csv/GeoLite2-Country-Locations-en.csv'), 35 | promiseArr = []; 36 | 37 | //On Line 38 | lr.on('line', function (line) { 39 | //Ignore first line 40 | if (line.startsWith("geoname")) return; 41 | 42 | var data = line.split(",") 43 | 44 | //Digest CSV in reliable, JS-proof way. 45 | var geoname_id = data.shift(), 46 | locale_code = data.shift(), 47 | continent_code = data.shift(), 48 | continent_name = data.shift(), 49 | country_iso_code = data.shift(), 50 | country_name = data.shift() 51 | // Create table insert data 52 | var obj = { 53 | geoname_id, 54 | locale_code, 55 | continent_code, 56 | continent_name, 57 | country_iso_code, 58 | country_name 59 | } 60 | 61 | //Populate array of promises. 62 | promiseArr.push( 63 | //Hacky upsert. I will fight a PSQL dev if I ever see one IRL. It's 2017 ffs; where's our upsert, guy. 64 | 65 | new Promise ((resolve, reject) => 66 | knex("locations").del().where("geoname_id", geoname_id) 67 | .then( 68 | knex("locations").insert(obj).returning("*").then(data => { 69 | //console.log(data); 70 | resolve(); 71 | }) 72 | ) 73 | ) 74 | ); 75 | }); 76 | 77 | //On Close 78 | lr.on("end", function() { 79 | //Resolve all database inserts, then move on to next step. 80 | Promise.all(promiseArr).then(()=>{ 81 | console.log("Location reader finished.") 82 | resolve() 83 | }) 84 | }) 85 | }) 86 | .then(new Promise ((resolve, reject)=> { 87 | console.log("Firing IP table generator"); 88 | 89 | var db = knex("ip_ranges"), 90 | lr = new LineByLineReader("./csv/GeoLite2-City-Blocks-IPv4.csv"), 91 | i = 0, 92 | batch = 0, 93 | insertString = ""; 94 | 95 | 96 | db.truncate(); 97 | 98 | lr.on('line', function (line) { 99 | if (line.startsWith("network")) return; 100 | lr.pause(); 101 | 102 | var line = line.split(","); 103 | var backup = line; 104 | 105 | // Object is defined in the following way to prevent JS from freaking out. 106 | var d = {}; 107 | d.network = line.shift(); 108 | d.geoname_id = line.shift(); 109 | d.registered_country_geoname_id = line.shift(); 110 | d.represented_country_geoname_id = line.shift(); 111 | d.is_anonymous_proxy = (parseInt(line.shift()) === 1); 112 | d.is_satellite_provider = (parseInt(line.shift()) === 1); 113 | d.postal_code = line.shift(); 114 | d.latitude = parseFloat(line.shift()); 115 | d.longitude = parseFloat(line.shift()); 116 | d.accuracy_radius = parseInt(line.shift()); 117 | 118 | var ranges = getIPRange(d.network); 119 | d.start_ip_int = ranges.min; 120 | d.end_ip_int = ranges.max; 121 | 122 | 123 | 124 | if (isNaN(d.latitude) || isNaN(d.longitude) || isNaN(d.accuracy_radius)) { 125 | return lr.resume(); 126 | } else { 127 | 128 | 129 | if (i < 10000) { 130 | data = db.insert({ 131 | "network": d.network, 132 | "start_ip_int": d.start_ip_int, 133 | "end_ip_int": (d.end_ip_int<2147483647?d.end_ip_int:2147483647), 134 | "geoname_id": d.geoname_id, 135 | "registered_country_geoname_id": d.registered_country_geoname_id, 136 | "represented_country_geoname_id": d.represented_country_geoname_id, 137 | "is_anonymous_proxy": d.is_anonymous_proxy, 138 | "is_satellite_provider": d.is_satellite_provider, 139 | "postal_code": d.postal_code, 140 | "latitude": d.latitude, 141 | "longitude": d.longitude, 142 | "accuracy_radius": d.accuracy_radius 143 | }).toString(); 144 | insertString+=data+";"; 145 | 146 | i++; 147 | lr.resume(); 148 | } else { 149 | knex.raw(insertString).then(()=>{ 150 | console.log("Handling batch ", batch); 151 | i = 0; 152 | batch++; 153 | insertString = ""; 154 | lr.resume(); 155 | }).catch(e=>console.log(e,d)) 156 | } 157 | 158 | } 159 | }); 160 | lr.on("end",function() { 161 | if (insertString.length > 0) { 162 | knex.raw(insertString).then(()=> { 163 | console.log("test") 164 | }) 165 | } 166 | }) 167 | })).then(()=>{ 168 | console.log("Setup complete."); 169 | }); 170 | -------------------------------------------------------------------------------- /public/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BotMap 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 55 | 56 | 57 |
58 |
59 |
60 |
61 |
62 |
63 | 212 | 213 | -------------------------------------------------------------------------------- /public/d3/topojson.js: -------------------------------------------------------------------------------- 1 | // https://github.com/topojson/topojson-client Version 1.8.0. Copyright 2016 Mike Bostock. 2 | !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.topojson=n.topojson||{})}(this,function(n){"use strict";function t(n){if(!n)return h;var t,r,e=n.scale[0],o=n.scale[1],i=n.translate[0],u=n.translate[1];return function(n,f){f||(t=r=0),n[0]=(t+=n[0])*e+i,n[1]=(r+=n[1])*o+u}}function r(n){if(!n)return h;var t,r,e=n.scale[0],o=n.scale[1],i=n.translate[0],u=n.translate[1];return function(n,f){f||(t=r=0);var c=Math.round((n[0]-i)/e),a=Math.round((n[1]-u)/o);n[0]=c-t,n[1]=a-r,t=c,r=a}}function e(n,t){for(var r,e=n.length,o=e-t;o<--e;)r=n[o],n[o++]=n[e],n[e]=r}function o(n,t){for(var r=0,e=n.length;r>>1;n[o]1){var c,a=[],s={LineString:o,MultiLineString:i,Polygon:i,MultiPolygon:function(n){n.forEach(i)}};u(t),a.forEach(arguments.length<3?function(n){f.push(n[0].i)}:function(n){r(n[0].g,n[n.length-1].g)&&f.push(n[0].i)})}else for(var l=0,h=n.arcs.length;l1)for(var u,f,c=1,a=e(i[0]);ca&&(f=i[0],i[0]=i[c],i[c]=f,a=u);return i})}}function l(n,t){return n[1][2]-t[1][2]}var h=function(){},p=function(n,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return i(n,t)})}:i(n,t)},v=function(n,t){function r(t){var r,e=n.arcs[t<0?~t:t],o=e[0];return n.transform?(r=[0,0],e.forEach(function(n){r[0]+=n[0],r[1]+=n[1]})):r=e[e.length-1],t<0?[r,o]:[o,r]}function e(n,t){for(var r in n){var e=n[r];delete t[e.start],delete e.start,delete e.end,e.forEach(function(n){o[n<0?~n:n]=1}),f.push(e)}}var o={},i={},u={},f=[],c=-1;return t.forEach(function(r,e){var o,i=n.arcs[r<0?~r:r];i.length<3&&!i[1][0]&&!i[1][1]&&(o=t[++c],t[c]=r,t[e]=o)}),t.forEach(function(n){var t,e,o=r(n),f=o[0],c=o[1];if(t=u[f])if(delete u[t.end],t.push(n),t.end=c,e=i[c]){delete i[e.start];var a=e===t?t:t.concat(e);i[a.start=t.start]=u[a.end=e.end]=a}else i[t.start]=u[t.end]=t;else if(t=i[c])if(delete i[t.start],t.unshift(n),t.start=f,e=u[f]){delete u[e.end];var s=e===t?t:e.concat(t);i[s.start=e.start]=u[s.end=t.end]=s}else i[t.start]=u[t.end]=t;else t=[n],i[t.start=f]=u[t.end=c]=t}),e(u,i),e(i,u),t.forEach(function(n){o[n<0?~n:n]||f.push([n])}),f},g=function(n){return u(n,f.apply(this,arguments))},d=function(n){return u(n,s.apply(this,arguments))},y=function(n){function t(n,t){n.forEach(function(n){n<0&&(n=~n);var r=i[n];r?r.push(t):i[n]=[t]})}function r(n,r){n.forEach(function(n){t(n,r)})}function e(n,t){"GeometryCollection"===n.type?n.geometries.forEach(function(n){e(n,t)}):n.type in f&&f[n.type](n.arcs,t)}var i={},u=n.map(function(){return[]}),f={LineString:t,MultiLineString:r,Polygon:r,MultiPolygon:function(n,t){n.forEach(function(n){r(n,t)})}};n.forEach(e);for(var c in i)for(var a=i[c],s=a.length,l=0;l0;){var r=(t+1>>1)-1,o=e[r];if(l(n,o)>=0)break;e[o._=t]=o,e[n._=t=r]=n}}function t(n,t){for(;;){var r=t+1<<1,i=r-1,u=t,f=e[u];if(i0&&(n=e[o],t(e[n._=0]=n,0)),r}},r.remove=function(r){var i,u=r._;if(e[u]===r)return u!==--o&&(i=e[o],(l(i,r)<0?n:t)(e[i._=u]=i,u)),u},r},E=function(n,e){function o(n){f.remove(n),n[1][2]=e(n),f.push(n)}var i=t(n.transform),u=r(n.transform),f=m();return null==e&&(e=c),n.arcs.forEach(function(n){var t,r,c,a,s=[],l=0;for(r=0,c=n.length;r .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px} -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/jquery-ui.theme.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.12.1 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | * 11 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=vader&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=aaaaaa&fcHighlight=cccccc&borderColorHighlight=404040&bgImgOpacityHighlight=55&bgTextureHighlight=highlight_hard&bgColorHighlight=555555&iconColorActive=f29a00&fcActive=ffffff&borderColorActive=000000&bgImgOpacityActive=15&bgTextureActive=inset_soft&bgColorActive=121212&iconColorHover=c98000&fcHover=000000&borderColorHover=dddddd&bgImgOpacityHover=60&bgTextureHover=highlight_soft&bgColorHover=dddddd&iconColorDefault=666666&fcDefault=333333&borderColorDefault=cccccc&bgImgOpacityDefault=35&bgTextureDefault=highlight_soft&bgColorDefault=adadad&iconColorContent=777777&fcContent=eeeeee&borderColorContent=404040&bgImgOpacityContent=16&bgTextureContent=gloss_wave&bgColorContent=121212&iconColorHeader=cccccc&fcHeader=ffffff&borderColorHeader=404040&bgImgOpacityHeader=15&bgTextureHeader=highlight_hard&bgColorHeader=888888&cornerRadius=5px&fsDefault=1.1em&fwDefault=normal&ffDefault=Helvetica%2CArial%2Csans-serif 12 | */ 13 | 14 | 15 | /* Component containers 16 | ----------------------------------*/ 17 | .ui-widget { 18 | font-family: Helvetica,Arial,sans-serif; 19 | font-size: 1.1em; 20 | } 21 | .ui-widget .ui-widget { 22 | font-size: 1em; 23 | } 24 | .ui-widget input, 25 | .ui-widget select, 26 | .ui-widget textarea, 27 | .ui-widget button { 28 | font-family: Helvetica,Arial,sans-serif; 29 | font-size: 1em; 30 | } 31 | .ui-widget.ui-widget-content { 32 | border: 1px solid #cccccc; 33 | } 34 | .ui-widget-content { 35 | border: 1px solid #404040; 36 | background: #121212 url("images/ui-bg_gloss-wave_16_121212_500x100.png") 50% top repeat-x; 37 | color: #eeeeee; 38 | } 39 | .ui-widget-content a { 40 | color: #eeeeee; 41 | } 42 | .ui-widget-header { 43 | border: 1px solid #404040; 44 | background: #888888 url("images/ui-bg_highlight-hard_15_888888_1x100.png") 50% 50% repeat-x; 45 | color: #ffffff; 46 | font-weight: bold; 47 | } 48 | .ui-widget-header a { 49 | color: #ffffff; 50 | } 51 | 52 | /* Interaction states 53 | ----------------------------------*/ 54 | .ui-state-default, 55 | .ui-widget-content .ui-state-default, 56 | .ui-widget-header .ui-state-default, 57 | .ui-button, 58 | 59 | /* We use html here because we need a greater specificity to make sure disabled 60 | works properly when clicked or hovered */ 61 | html .ui-button.ui-state-disabled:hover, 62 | html .ui-button.ui-state-disabled:active { 63 | border: 1px solid #cccccc; 64 | background: #adadad url("images/ui-bg_highlight-soft_35_adadad_1x100.png") 50% 50% repeat-x; 65 | font-weight: normal; 66 | color: #333333; 67 | } 68 | .ui-state-default a, 69 | .ui-state-default a:link, 70 | .ui-state-default a:visited, 71 | a.ui-button, 72 | a:link.ui-button, 73 | a:visited.ui-button, 74 | .ui-button { 75 | color: #333333; 76 | text-decoration: none; 77 | } 78 | .ui-state-hover, 79 | .ui-widget-content .ui-state-hover, 80 | .ui-widget-header .ui-state-hover, 81 | .ui-state-focus, 82 | .ui-widget-content .ui-state-focus, 83 | .ui-widget-header .ui-state-focus, 84 | .ui-button:hover, 85 | .ui-button:focus { 86 | border: 1px solid #dddddd; 87 | background: #dddddd url("images/ui-bg_highlight-soft_60_dddddd_1x100.png") 50% 50% repeat-x; 88 | font-weight: normal; 89 | color: #000000; 90 | } 91 | .ui-state-hover a, 92 | .ui-state-hover a:hover, 93 | .ui-state-hover a:link, 94 | .ui-state-hover a:visited, 95 | .ui-state-focus a, 96 | .ui-state-focus a:hover, 97 | .ui-state-focus a:link, 98 | .ui-state-focus a:visited, 99 | a.ui-button:hover, 100 | a.ui-button:focus { 101 | color: #000000; 102 | text-decoration: none; 103 | } 104 | 105 | .ui-visual-focus { 106 | box-shadow: 0 0 3px 1px rgb(94, 158, 214); 107 | } 108 | .ui-state-active, 109 | .ui-widget-content .ui-state-active, 110 | .ui-widget-header .ui-state-active, 111 | a.ui-button:active, 112 | .ui-button:active, 113 | .ui-button.ui-state-active:hover { 114 | border: 1px solid #000000; 115 | background: #121212 url("images/ui-bg_inset-soft_15_121212_1x100.png") 50% 50% repeat-x; 116 | font-weight: normal; 117 | color: #ffffff; 118 | } 119 | .ui-icon-background, 120 | .ui-state-active .ui-icon-background { 121 | border: #000000; 122 | background-color: #ffffff; 123 | } 124 | .ui-state-active a, 125 | .ui-state-active a:link, 126 | .ui-state-active a:visited { 127 | color: #ffffff; 128 | text-decoration: none; 129 | } 130 | 131 | /* Interaction Cues 132 | ----------------------------------*/ 133 | .ui-state-highlight, 134 | .ui-widget-content .ui-state-highlight, 135 | .ui-widget-header .ui-state-highlight { 136 | border: 1px solid #404040; 137 | background: #555555 url("images/ui-bg_highlight-hard_55_555555_1x100.png") 50% top repeat-x; 138 | color: #cccccc; 139 | } 140 | .ui-state-checked { 141 | border: 1px solid #404040; 142 | background: #555555; 143 | } 144 | .ui-state-highlight a, 145 | .ui-widget-content .ui-state-highlight a, 146 | .ui-widget-header .ui-state-highlight a { 147 | color: #cccccc; 148 | } 149 | .ui-state-error, 150 | .ui-widget-content .ui-state-error, 151 | .ui-widget-header .ui-state-error { 152 | border: 1px solid #cd0a0a; 153 | background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; 154 | color: #cd0a0a; 155 | } 156 | .ui-state-error a, 157 | .ui-widget-content .ui-state-error a, 158 | .ui-widget-header .ui-state-error a { 159 | color: #cd0a0a; 160 | } 161 | .ui-state-error-text, 162 | .ui-widget-content .ui-state-error-text, 163 | .ui-widget-header .ui-state-error-text { 164 | color: #cd0a0a; 165 | } 166 | .ui-priority-primary, 167 | .ui-widget-content .ui-priority-primary, 168 | .ui-widget-header .ui-priority-primary { 169 | font-weight: bold; 170 | } 171 | .ui-priority-secondary, 172 | .ui-widget-content .ui-priority-secondary, 173 | .ui-widget-header .ui-priority-secondary { 174 | opacity: .7; 175 | filter:Alpha(Opacity=70); /* support: IE8 */ 176 | font-weight: normal; 177 | } 178 | .ui-state-disabled, 179 | .ui-widget-content .ui-state-disabled, 180 | .ui-widget-header .ui-state-disabled { 181 | opacity: .35; 182 | filter:Alpha(Opacity=35); /* support: IE8 */ 183 | background-image: none; 184 | } 185 | .ui-state-disabled .ui-icon { 186 | filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ 187 | } 188 | 189 | /* Icons 190 | ----------------------------------*/ 191 | 192 | /* states and images */ 193 | .ui-icon { 194 | width: 16px; 195 | height: 16px; 196 | } 197 | .ui-icon, 198 | .ui-widget-content .ui-icon { 199 | background-image: url("images/ui-icons_777777_256x240.png"); 200 | } 201 | .ui-widget-header .ui-icon { 202 | background-image: url("images/ui-icons_cccccc_256x240.png"); 203 | } 204 | .ui-state-hover .ui-icon, 205 | .ui-state-focus .ui-icon, 206 | .ui-button:hover .ui-icon, 207 | .ui-button:focus .ui-icon { 208 | background-image: url("images/ui-icons_c98000_256x240.png"); 209 | } 210 | .ui-state-active .ui-icon, 211 | .ui-button:active .ui-icon { 212 | background-image: url("images/ui-icons_f29a00_256x240.png"); 213 | } 214 | .ui-state-highlight .ui-icon, 215 | .ui-button .ui-state-highlight.ui-icon { 216 | background-image: url("images/ui-icons_aaaaaa_256x240.png"); 217 | } 218 | .ui-state-error .ui-icon, 219 | .ui-state-error-text .ui-icon { 220 | background-image: url("images/ui-icons_cd0a0a_256x240.png"); 221 | } 222 | .ui-button .ui-icon { 223 | background-image: url("images/ui-icons_666666_256x240.png"); 224 | } 225 | 226 | /* positioning */ 227 | .ui-icon-blank { background-position: 16px 16px; } 228 | .ui-icon-caret-1-n { background-position: 0 0; } 229 | .ui-icon-caret-1-ne { background-position: -16px 0; } 230 | .ui-icon-caret-1-e { background-position: -32px 0; } 231 | .ui-icon-caret-1-se { background-position: -48px 0; } 232 | .ui-icon-caret-1-s { background-position: -65px 0; } 233 | .ui-icon-caret-1-sw { background-position: -80px 0; } 234 | .ui-icon-caret-1-w { background-position: -96px 0; } 235 | .ui-icon-caret-1-nw { background-position: -112px 0; } 236 | .ui-icon-caret-2-n-s { background-position: -128px 0; } 237 | .ui-icon-caret-2-e-w { background-position: -144px 0; } 238 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 239 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 240 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 241 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 242 | .ui-icon-triangle-1-s { background-position: -65px -16px; } 243 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 244 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 245 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 246 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 247 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 248 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 249 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 250 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 251 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 252 | .ui-icon-arrow-1-s { background-position: -65px -32px; } 253 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 254 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 255 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 256 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 257 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 258 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 259 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 260 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 261 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 262 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 263 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 264 | .ui-icon-arrowthick-1-n { background-position: 1px -48px; } 265 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 266 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 267 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 268 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 269 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 270 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 271 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 272 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 273 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 274 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 275 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 276 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 277 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 278 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 279 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 280 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 281 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 282 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 283 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 284 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 285 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 286 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 287 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 288 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 289 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 290 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 291 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 292 | .ui-icon-arrow-4 { background-position: 0 -80px; } 293 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 294 | .ui-icon-extlink { background-position: -32px -80px; } 295 | .ui-icon-newwin { background-position: -48px -80px; } 296 | .ui-icon-refresh { background-position: -64px -80px; } 297 | .ui-icon-shuffle { background-position: -80px -80px; } 298 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 299 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 300 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 301 | .ui-icon-folder-open { background-position: -16px -96px; } 302 | .ui-icon-document { background-position: -32px -96px; } 303 | .ui-icon-document-b { background-position: -48px -96px; } 304 | .ui-icon-note { background-position: -64px -96px; } 305 | .ui-icon-mail-closed { background-position: -80px -96px; } 306 | .ui-icon-mail-open { background-position: -96px -96px; } 307 | .ui-icon-suitcase { background-position: -112px -96px; } 308 | .ui-icon-comment { background-position: -128px -96px; } 309 | .ui-icon-person { background-position: -144px -96px; } 310 | .ui-icon-print { background-position: -160px -96px; } 311 | .ui-icon-trash { background-position: -176px -96px; } 312 | .ui-icon-locked { background-position: -192px -96px; } 313 | .ui-icon-unlocked { background-position: -208px -96px; } 314 | .ui-icon-bookmark { background-position: -224px -96px; } 315 | .ui-icon-tag { background-position: -240px -96px; } 316 | .ui-icon-home { background-position: 0 -112px; } 317 | .ui-icon-flag { background-position: -16px -112px; } 318 | .ui-icon-calendar { background-position: -32px -112px; } 319 | .ui-icon-cart { background-position: -48px -112px; } 320 | .ui-icon-pencil { background-position: -64px -112px; } 321 | .ui-icon-clock { background-position: -80px -112px; } 322 | .ui-icon-disk { background-position: -96px -112px; } 323 | .ui-icon-calculator { background-position: -112px -112px; } 324 | .ui-icon-zoomin { background-position: -128px -112px; } 325 | .ui-icon-zoomout { background-position: -144px -112px; } 326 | .ui-icon-search { background-position: -160px -112px; } 327 | .ui-icon-wrench { background-position: -176px -112px; } 328 | .ui-icon-gear { background-position: -192px -112px; } 329 | .ui-icon-heart { background-position: -208px -112px; } 330 | .ui-icon-star { background-position: -224px -112px; } 331 | .ui-icon-link { background-position: -240px -112px; } 332 | .ui-icon-cancel { background-position: 0 -128px; } 333 | .ui-icon-plus { background-position: -16px -128px; } 334 | .ui-icon-plusthick { background-position: -32px -128px; } 335 | .ui-icon-minus { background-position: -48px -128px; } 336 | .ui-icon-minusthick { background-position: -64px -128px; } 337 | .ui-icon-close { background-position: -80px -128px; } 338 | .ui-icon-closethick { background-position: -96px -128px; } 339 | .ui-icon-key { background-position: -112px -128px; } 340 | .ui-icon-lightbulb { background-position: -128px -128px; } 341 | .ui-icon-scissors { background-position: -144px -128px; } 342 | .ui-icon-clipboard { background-position: -160px -128px; } 343 | .ui-icon-copy { background-position: -176px -128px; } 344 | .ui-icon-contact { background-position: -192px -128px; } 345 | .ui-icon-image { background-position: -208px -128px; } 346 | .ui-icon-video { background-position: -224px -128px; } 347 | .ui-icon-script { background-position: -240px -128px; } 348 | .ui-icon-alert { background-position: 0 -144px; } 349 | .ui-icon-info { background-position: -16px -144px; } 350 | .ui-icon-notice { background-position: -32px -144px; } 351 | .ui-icon-help { background-position: -48px -144px; } 352 | .ui-icon-check { background-position: -64px -144px; } 353 | .ui-icon-bullet { background-position: -80px -144px; } 354 | .ui-icon-radio-on { background-position: -96px -144px; } 355 | .ui-icon-radio-off { background-position: -112px -144px; } 356 | .ui-icon-pin-w { background-position: -128px -144px; } 357 | .ui-icon-pin-s { background-position: -144px -144px; } 358 | .ui-icon-play { background-position: 0 -160px; } 359 | .ui-icon-pause { background-position: -16px -160px; } 360 | .ui-icon-seek-next { background-position: -32px -160px; } 361 | .ui-icon-seek-prev { background-position: -48px -160px; } 362 | .ui-icon-seek-end { background-position: -64px -160px; } 363 | .ui-icon-seek-start { background-position: -80px -160px; } 364 | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ 365 | .ui-icon-seek-first { background-position: -80px -160px; } 366 | .ui-icon-stop { background-position: -96px -160px; } 367 | .ui-icon-eject { background-position: -112px -160px; } 368 | .ui-icon-volume-off { background-position: -128px -160px; } 369 | .ui-icon-volume-on { background-position: -144px -160px; } 370 | .ui-icon-power { background-position: 0 -176px; } 371 | .ui-icon-signal-diag { background-position: -16px -176px; } 372 | .ui-icon-signal { background-position: -32px -176px; } 373 | .ui-icon-battery-0 { background-position: -48px -176px; } 374 | .ui-icon-battery-1 { background-position: -64px -176px; } 375 | .ui-icon-battery-2 { background-position: -80px -176px; } 376 | .ui-icon-battery-3 { background-position: -96px -176px; } 377 | .ui-icon-circle-plus { background-position: 0 -192px; } 378 | .ui-icon-circle-minus { background-position: -16px -192px; } 379 | .ui-icon-circle-close { background-position: -32px -192px; } 380 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 381 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 382 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 383 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 384 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 385 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 386 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 387 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 388 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 389 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 390 | .ui-icon-circle-check { background-position: -208px -192px; } 391 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 392 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 393 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 394 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 395 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 396 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 397 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 398 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 399 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 400 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 401 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 402 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 403 | 404 | 405 | /* Misc visuals 406 | ----------------------------------*/ 407 | 408 | /* Corner radius */ 409 | .ui-corner-all, 410 | .ui-corner-top, 411 | .ui-corner-left, 412 | .ui-corner-tl { 413 | border-top-left-radius: 5px; 414 | } 415 | .ui-corner-all, 416 | .ui-corner-top, 417 | .ui-corner-right, 418 | .ui-corner-tr { 419 | border-top-right-radius: 5px; 420 | } 421 | .ui-corner-all, 422 | .ui-corner-bottom, 423 | .ui-corner-left, 424 | .ui-corner-bl { 425 | border-bottom-left-radius: 5px; 426 | } 427 | .ui-corner-all, 428 | .ui-corner-bottom, 429 | .ui-corner-right, 430 | .ui-corner-br { 431 | border-bottom-right-radius: 5px; 432 | } 433 | 434 | /* Overlays */ 435 | .ui-widget-overlay { 436 | background: #aaaaaa; 437 | opacity: .3; 438 | filter: Alpha(Opacity=30); /* support: IE8 */ 439 | } 440 | .ui-widget-shadow { 441 | -webkit-box-shadow: 0px 0px 5px #666666; 442 | box-shadow: 0px 0px 5px #666666; 443 | } 444 | -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/jquery-ui.structure.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.12.1 3 | * http://jqueryui.com 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license. 7 | * http://jquery.org/license 8 | * 9 | * http://api.jqueryui.com/category/theming/ 10 | */ 11 | .ui-draggable-handle { 12 | -ms-touch-action: none; 13 | touch-action: none; 14 | } 15 | /* Layout helpers 16 | ----------------------------------*/ 17 | .ui-helper-hidden { 18 | display: none; 19 | } 20 | .ui-helper-hidden-accessible { 21 | border: 0; 22 | clip: rect(0 0 0 0); 23 | height: 1px; 24 | margin: -1px; 25 | overflow: hidden; 26 | padding: 0; 27 | position: absolute; 28 | width: 1px; 29 | } 30 | .ui-helper-reset { 31 | margin: 0; 32 | padding: 0; 33 | border: 0; 34 | outline: 0; 35 | line-height: 1.3; 36 | text-decoration: none; 37 | font-size: 100%; 38 | list-style: none; 39 | } 40 | .ui-helper-clearfix:before, 41 | .ui-helper-clearfix:after { 42 | content: ""; 43 | display: table; 44 | border-collapse: collapse; 45 | } 46 | .ui-helper-clearfix:after { 47 | clear: both; 48 | } 49 | .ui-helper-zfix { 50 | width: 100%; 51 | height: 100%; 52 | top: 0; 53 | left: 0; 54 | position: absolute; 55 | opacity: 0; 56 | filter:Alpha(Opacity=0); /* support: IE8 */ 57 | } 58 | 59 | .ui-front { 60 | z-index: 100; 61 | } 62 | 63 | 64 | /* Interaction Cues 65 | ----------------------------------*/ 66 | .ui-state-disabled { 67 | cursor: default !important; 68 | pointer-events: none; 69 | } 70 | 71 | 72 | /* Icons 73 | ----------------------------------*/ 74 | .ui-icon { 75 | display: inline-block; 76 | vertical-align: middle; 77 | margin-top: -.25em; 78 | position: relative; 79 | text-indent: -99999px; 80 | overflow: hidden; 81 | background-repeat: no-repeat; 82 | } 83 | 84 | .ui-widget-icon-block { 85 | left: 50%; 86 | margin-left: -8px; 87 | display: block; 88 | } 89 | 90 | /* Misc visuals 91 | ----------------------------------*/ 92 | 93 | /* Overlays */ 94 | .ui-widget-overlay { 95 | position: fixed; 96 | top: 0; 97 | left: 0; 98 | width: 100%; 99 | height: 100%; 100 | } 101 | .ui-resizable { 102 | position: relative; 103 | } 104 | .ui-resizable-handle { 105 | position: absolute; 106 | font-size: 0.1px; 107 | display: block; 108 | -ms-touch-action: none; 109 | touch-action: none; 110 | } 111 | .ui-resizable-disabled .ui-resizable-handle, 112 | .ui-resizable-autohide .ui-resizable-handle { 113 | display: none; 114 | } 115 | .ui-resizable-n { 116 | cursor: n-resize; 117 | height: 7px; 118 | width: 100%; 119 | top: -5px; 120 | left: 0; 121 | } 122 | .ui-resizable-s { 123 | cursor: s-resize; 124 | height: 7px; 125 | width: 100%; 126 | bottom: -5px; 127 | left: 0; 128 | } 129 | .ui-resizable-e { 130 | cursor: e-resize; 131 | width: 7px; 132 | right: -5px; 133 | top: 0; 134 | height: 100%; 135 | } 136 | .ui-resizable-w { 137 | cursor: w-resize; 138 | width: 7px; 139 | left: -5px; 140 | top: 0; 141 | height: 100%; 142 | } 143 | .ui-resizable-se { 144 | cursor: se-resize; 145 | width: 12px; 146 | height: 12px; 147 | right: 1px; 148 | bottom: 1px; 149 | } 150 | .ui-resizable-sw { 151 | cursor: sw-resize; 152 | width: 9px; 153 | height: 9px; 154 | left: -5px; 155 | bottom: -5px; 156 | } 157 | .ui-resizable-nw { 158 | cursor: nw-resize; 159 | width: 9px; 160 | height: 9px; 161 | left: -5px; 162 | top: -5px; 163 | } 164 | .ui-resizable-ne { 165 | cursor: ne-resize; 166 | width: 9px; 167 | height: 9px; 168 | right: -5px; 169 | top: -5px; 170 | } 171 | .ui-selectable { 172 | -ms-touch-action: none; 173 | touch-action: none; 174 | } 175 | .ui-selectable-helper { 176 | position: absolute; 177 | z-index: 100; 178 | border: 1px dotted black; 179 | } 180 | .ui-sortable-handle { 181 | -ms-touch-action: none; 182 | touch-action: none; 183 | } 184 | .ui-accordion .ui-accordion-header { 185 | display: block; 186 | cursor: pointer; 187 | position: relative; 188 | margin: 2px 0 0 0; 189 | padding: .5em .5em .5em .7em; 190 | font-size: 100%; 191 | } 192 | .ui-accordion .ui-accordion-content { 193 | padding: 1em 2.2em; 194 | border-top: 0; 195 | overflow: auto; 196 | } 197 | .ui-autocomplete { 198 | position: absolute; 199 | top: 0; 200 | left: 0; 201 | cursor: default; 202 | } 203 | .ui-menu { 204 | list-style: none; 205 | padding: 0; 206 | margin: 0; 207 | display: block; 208 | outline: 0; 209 | } 210 | .ui-menu .ui-menu { 211 | position: absolute; 212 | } 213 | .ui-menu .ui-menu-item { 214 | margin: 0; 215 | cursor: pointer; 216 | /* support: IE10, see #8844 */ 217 | list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); 218 | } 219 | .ui-menu .ui-menu-item-wrapper { 220 | position: relative; 221 | padding: 3px 1em 3px .4em; 222 | } 223 | .ui-menu .ui-menu-divider { 224 | margin: 5px 0; 225 | height: 0; 226 | font-size: 0; 227 | line-height: 0; 228 | border-width: 1px 0 0 0; 229 | } 230 | .ui-menu .ui-state-focus, 231 | .ui-menu .ui-state-active { 232 | margin: -1px; 233 | } 234 | 235 | /* icon support */ 236 | .ui-menu-icons { 237 | position: relative; 238 | } 239 | .ui-menu-icons .ui-menu-item-wrapper { 240 | padding-left: 2em; 241 | } 242 | 243 | /* left-aligned */ 244 | .ui-menu .ui-icon { 245 | position: absolute; 246 | top: 0; 247 | bottom: 0; 248 | left: .2em; 249 | margin: auto 0; 250 | } 251 | 252 | /* right-aligned */ 253 | .ui-menu .ui-menu-icon { 254 | left: auto; 255 | right: 0; 256 | } 257 | .ui-button { 258 | padding: .4em 1em; 259 | display: inline-block; 260 | position: relative; 261 | line-height: normal; 262 | margin-right: .1em; 263 | cursor: pointer; 264 | vertical-align: middle; 265 | text-align: center; 266 | -webkit-user-select: none; 267 | -moz-user-select: none; 268 | -ms-user-select: none; 269 | user-select: none; 270 | 271 | /* Support: IE <= 11 */ 272 | overflow: visible; 273 | } 274 | 275 | .ui-button, 276 | .ui-button:link, 277 | .ui-button:visited, 278 | .ui-button:hover, 279 | .ui-button:active { 280 | text-decoration: none; 281 | } 282 | 283 | /* to make room for the icon, a width needs to be set here */ 284 | .ui-button-icon-only { 285 | width: 2em; 286 | box-sizing: border-box; 287 | text-indent: -9999px; 288 | white-space: nowrap; 289 | } 290 | 291 | /* no icon support for input elements */ 292 | input.ui-button.ui-button-icon-only { 293 | text-indent: 0; 294 | } 295 | 296 | /* button icon element(s) */ 297 | .ui-button-icon-only .ui-icon { 298 | position: absolute; 299 | top: 50%; 300 | left: 50%; 301 | margin-top: -8px; 302 | margin-left: -8px; 303 | } 304 | 305 | .ui-button.ui-icon-notext .ui-icon { 306 | padding: 0; 307 | width: 2.1em; 308 | height: 2.1em; 309 | text-indent: -9999px; 310 | white-space: nowrap; 311 | 312 | } 313 | 314 | input.ui-button.ui-icon-notext .ui-icon { 315 | width: auto; 316 | height: auto; 317 | text-indent: 0; 318 | white-space: normal; 319 | padding: .4em 1em; 320 | } 321 | 322 | /* workarounds */ 323 | /* Support: Firefox 5 - 40 */ 324 | input.ui-button::-moz-focus-inner, 325 | button.ui-button::-moz-focus-inner { 326 | border: 0; 327 | padding: 0; 328 | } 329 | .ui-controlgroup { 330 | vertical-align: middle; 331 | display: inline-block; 332 | } 333 | .ui-controlgroup > .ui-controlgroup-item { 334 | float: left; 335 | margin-left: 0; 336 | margin-right: 0; 337 | } 338 | .ui-controlgroup > .ui-controlgroup-item:focus, 339 | .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { 340 | z-index: 9999; 341 | } 342 | .ui-controlgroup-vertical > .ui-controlgroup-item { 343 | display: block; 344 | float: none; 345 | width: 100%; 346 | margin-top: 0; 347 | margin-bottom: 0; 348 | text-align: left; 349 | } 350 | .ui-controlgroup-vertical .ui-controlgroup-item { 351 | box-sizing: border-box; 352 | } 353 | .ui-controlgroup .ui-controlgroup-label { 354 | padding: .4em 1em; 355 | } 356 | .ui-controlgroup .ui-controlgroup-label span { 357 | font-size: 80%; 358 | } 359 | .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { 360 | border-left: none; 361 | } 362 | .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { 363 | border-top: none; 364 | } 365 | .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { 366 | border-right: none; 367 | } 368 | .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { 369 | border-bottom: none; 370 | } 371 | 372 | /* Spinner specific style fixes */ 373 | .ui-controlgroup-vertical .ui-spinner-input { 374 | 375 | /* Support: IE8 only, Android < 4.4 only */ 376 | width: 75%; 377 | width: calc( 100% - 2.4em ); 378 | } 379 | .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { 380 | border-top-style: solid; 381 | } 382 | 383 | .ui-checkboxradio-label .ui-icon-background { 384 | box-shadow: inset 1px 1px 1px #ccc; 385 | border-radius: .12em; 386 | border: none; 387 | } 388 | .ui-checkboxradio-radio-label .ui-icon-background { 389 | width: 16px; 390 | height: 16px; 391 | border-radius: 1em; 392 | overflow: visible; 393 | border: none; 394 | } 395 | .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, 396 | .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { 397 | background-image: none; 398 | width: 8px; 399 | height: 8px; 400 | border-width: 4px; 401 | border-style: solid; 402 | } 403 | .ui-checkboxradio-disabled { 404 | pointer-events: none; 405 | } 406 | .ui-datepicker { 407 | width: 17em; 408 | padding: .2em .2em 0; 409 | display: none; 410 | } 411 | .ui-datepicker .ui-datepicker-header { 412 | position: relative; 413 | padding: .2em 0; 414 | } 415 | .ui-datepicker .ui-datepicker-prev, 416 | .ui-datepicker .ui-datepicker-next { 417 | position: absolute; 418 | top: 2px; 419 | width: 1.8em; 420 | height: 1.8em; 421 | } 422 | .ui-datepicker .ui-datepicker-prev-hover, 423 | .ui-datepicker .ui-datepicker-next-hover { 424 | top: 1px; 425 | } 426 | .ui-datepicker .ui-datepicker-prev { 427 | left: 2px; 428 | } 429 | .ui-datepicker .ui-datepicker-next { 430 | right: 2px; 431 | } 432 | .ui-datepicker .ui-datepicker-prev-hover { 433 | left: 1px; 434 | } 435 | .ui-datepicker .ui-datepicker-next-hover { 436 | right: 1px; 437 | } 438 | .ui-datepicker .ui-datepicker-prev span, 439 | .ui-datepicker .ui-datepicker-next span { 440 | display: block; 441 | position: absolute; 442 | left: 50%; 443 | margin-left: -8px; 444 | top: 50%; 445 | margin-top: -8px; 446 | } 447 | .ui-datepicker .ui-datepicker-title { 448 | margin: 0 2.3em; 449 | line-height: 1.8em; 450 | text-align: center; 451 | } 452 | .ui-datepicker .ui-datepicker-title select { 453 | font-size: 1em; 454 | margin: 1px 0; 455 | } 456 | .ui-datepicker select.ui-datepicker-month, 457 | .ui-datepicker select.ui-datepicker-year { 458 | width: 45%; 459 | } 460 | .ui-datepicker table { 461 | width: 100%; 462 | font-size: .9em; 463 | border-collapse: collapse; 464 | margin: 0 0 .4em; 465 | } 466 | .ui-datepicker th { 467 | padding: .7em .3em; 468 | text-align: center; 469 | font-weight: bold; 470 | border: 0; 471 | } 472 | .ui-datepicker td { 473 | border: 0; 474 | padding: 1px; 475 | } 476 | .ui-datepicker td span, 477 | .ui-datepicker td a { 478 | display: block; 479 | padding: .2em; 480 | text-align: right; 481 | text-decoration: none; 482 | } 483 | .ui-datepicker .ui-datepicker-buttonpane { 484 | background-image: none; 485 | margin: .7em 0 0 0; 486 | padding: 0 .2em; 487 | border-left: 0; 488 | border-right: 0; 489 | border-bottom: 0; 490 | } 491 | .ui-datepicker .ui-datepicker-buttonpane button { 492 | float: right; 493 | margin: .5em .2em .4em; 494 | cursor: pointer; 495 | padding: .2em .6em .3em .6em; 496 | width: auto; 497 | overflow: visible; 498 | } 499 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { 500 | float: left; 501 | } 502 | 503 | /* with multiple calendars */ 504 | .ui-datepicker.ui-datepicker-multi { 505 | width: auto; 506 | } 507 | .ui-datepicker-multi .ui-datepicker-group { 508 | float: left; 509 | } 510 | .ui-datepicker-multi .ui-datepicker-group table { 511 | width: 95%; 512 | margin: 0 auto .4em; 513 | } 514 | .ui-datepicker-multi-2 .ui-datepicker-group { 515 | width: 50%; 516 | } 517 | .ui-datepicker-multi-3 .ui-datepicker-group { 518 | width: 33.3%; 519 | } 520 | .ui-datepicker-multi-4 .ui-datepicker-group { 521 | width: 25%; 522 | } 523 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, 524 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { 525 | border-left-width: 0; 526 | } 527 | .ui-datepicker-multi .ui-datepicker-buttonpane { 528 | clear: left; 529 | } 530 | .ui-datepicker-row-break { 531 | clear: both; 532 | width: 100%; 533 | font-size: 0; 534 | } 535 | 536 | /* RTL support */ 537 | .ui-datepicker-rtl { 538 | direction: rtl; 539 | } 540 | .ui-datepicker-rtl .ui-datepicker-prev { 541 | right: 2px; 542 | left: auto; 543 | } 544 | .ui-datepicker-rtl .ui-datepicker-next { 545 | left: 2px; 546 | right: auto; 547 | } 548 | .ui-datepicker-rtl .ui-datepicker-prev:hover { 549 | right: 1px; 550 | left: auto; 551 | } 552 | .ui-datepicker-rtl .ui-datepicker-next:hover { 553 | left: 1px; 554 | right: auto; 555 | } 556 | .ui-datepicker-rtl .ui-datepicker-buttonpane { 557 | clear: right; 558 | } 559 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { 560 | float: left; 561 | } 562 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, 563 | .ui-datepicker-rtl .ui-datepicker-group { 564 | float: right; 565 | } 566 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, 567 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { 568 | border-right-width: 0; 569 | border-left-width: 1px; 570 | } 571 | 572 | /* Icons */ 573 | .ui-datepicker .ui-icon { 574 | display: block; 575 | text-indent: -99999px; 576 | overflow: hidden; 577 | background-repeat: no-repeat; 578 | left: .5em; 579 | top: .3em; 580 | } 581 | .ui-dialog { 582 | position: absolute; 583 | top: 0; 584 | left: 0; 585 | padding: .2em; 586 | outline: 0; 587 | } 588 | .ui-dialog .ui-dialog-titlebar { 589 | padding: .4em 1em; 590 | position: relative; 591 | } 592 | .ui-dialog .ui-dialog-title { 593 | float: left; 594 | margin: .1em 0; 595 | white-space: nowrap; 596 | width: 90%; 597 | overflow: hidden; 598 | text-overflow: ellipsis; 599 | } 600 | .ui-dialog .ui-dialog-titlebar-close { 601 | position: absolute; 602 | right: .3em; 603 | top: 50%; 604 | width: 20px; 605 | margin: -10px 0 0 0; 606 | padding: 1px; 607 | height: 20px; 608 | } 609 | .ui-dialog .ui-dialog-content { 610 | position: relative; 611 | border: 0; 612 | padding: .5em 1em; 613 | background: none; 614 | overflow: auto; 615 | } 616 | .ui-dialog .ui-dialog-buttonpane { 617 | text-align: left; 618 | border-width: 1px 0 0 0; 619 | background-image: none; 620 | margin-top: .5em; 621 | padding: .3em 1em .5em .4em; 622 | } 623 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { 624 | float: right; 625 | } 626 | .ui-dialog .ui-dialog-buttonpane button { 627 | margin: .5em .4em .5em 0; 628 | cursor: pointer; 629 | } 630 | .ui-dialog .ui-resizable-n { 631 | height: 2px; 632 | top: 0; 633 | } 634 | .ui-dialog .ui-resizable-e { 635 | width: 2px; 636 | right: 0; 637 | } 638 | .ui-dialog .ui-resizable-s { 639 | height: 2px; 640 | bottom: 0; 641 | } 642 | .ui-dialog .ui-resizable-w { 643 | width: 2px; 644 | left: 0; 645 | } 646 | .ui-dialog .ui-resizable-se, 647 | .ui-dialog .ui-resizable-sw, 648 | .ui-dialog .ui-resizable-ne, 649 | .ui-dialog .ui-resizable-nw { 650 | width: 7px; 651 | height: 7px; 652 | } 653 | .ui-dialog .ui-resizable-se { 654 | right: 0; 655 | bottom: 0; 656 | } 657 | .ui-dialog .ui-resizable-sw { 658 | left: 0; 659 | bottom: 0; 660 | } 661 | .ui-dialog .ui-resizable-ne { 662 | right: 0; 663 | top: 0; 664 | } 665 | .ui-dialog .ui-resizable-nw { 666 | left: 0; 667 | top: 0; 668 | } 669 | .ui-draggable .ui-dialog-titlebar { 670 | cursor: move; 671 | } 672 | .ui-progressbar { 673 | height: 2em; 674 | text-align: left; 675 | overflow: hidden; 676 | } 677 | .ui-progressbar .ui-progressbar-value { 678 | margin: -1px; 679 | height: 100%; 680 | } 681 | .ui-progressbar .ui-progressbar-overlay { 682 | background: url("data:image/gif;base64,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"); 683 | height: 100%; 684 | filter: alpha(opacity=25); /* support: IE8 */ 685 | opacity: 0.25; 686 | } 687 | .ui-progressbar-indeterminate .ui-progressbar-value { 688 | background-image: none; 689 | } 690 | .ui-selectmenu-menu { 691 | padding: 0; 692 | margin: 0; 693 | position: absolute; 694 | top: 0; 695 | left: 0; 696 | display: none; 697 | } 698 | .ui-selectmenu-menu .ui-menu { 699 | overflow: auto; 700 | overflow-x: hidden; 701 | padding-bottom: 1px; 702 | } 703 | .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { 704 | font-size: 1em; 705 | font-weight: bold; 706 | line-height: 1.5; 707 | padding: 2px 0.4em; 708 | margin: 0.5em 0 0 0; 709 | height: auto; 710 | border: 0; 711 | } 712 | .ui-selectmenu-open { 713 | display: block; 714 | } 715 | .ui-selectmenu-text { 716 | display: block; 717 | margin-right: 20px; 718 | overflow: hidden; 719 | text-overflow: ellipsis; 720 | } 721 | .ui-selectmenu-button.ui-button { 722 | text-align: left; 723 | white-space: nowrap; 724 | width: 14em; 725 | } 726 | .ui-selectmenu-icon.ui-icon { 727 | float: right; 728 | margin-top: 0; 729 | } 730 | .ui-slider { 731 | position: relative; 732 | text-align: left; 733 | } 734 | .ui-slider .ui-slider-handle { 735 | position: absolute; 736 | z-index: 2; 737 | width: 1.2em; 738 | height: 1.2em; 739 | cursor: default; 740 | -ms-touch-action: none; 741 | touch-action: none; 742 | } 743 | .ui-slider .ui-slider-range { 744 | position: absolute; 745 | z-index: 1; 746 | font-size: .7em; 747 | display: block; 748 | border: 0; 749 | background-position: 0 0; 750 | } 751 | 752 | /* support: IE8 - See #6727 */ 753 | .ui-slider.ui-state-disabled .ui-slider-handle, 754 | .ui-slider.ui-state-disabled .ui-slider-range { 755 | filter: inherit; 756 | } 757 | 758 | .ui-slider-horizontal { 759 | height: .8em; 760 | } 761 | .ui-slider-horizontal .ui-slider-handle { 762 | top: -.3em; 763 | margin-left: -.6em; 764 | } 765 | .ui-slider-horizontal .ui-slider-range { 766 | top: 0; 767 | height: 100%; 768 | } 769 | .ui-slider-horizontal .ui-slider-range-min { 770 | left: 0; 771 | } 772 | .ui-slider-horizontal .ui-slider-range-max { 773 | right: 0; 774 | } 775 | 776 | .ui-slider-vertical { 777 | width: .8em; 778 | height: 100px; 779 | } 780 | .ui-slider-vertical .ui-slider-handle { 781 | left: -.3em; 782 | margin-left: 0; 783 | margin-bottom: -.6em; 784 | } 785 | .ui-slider-vertical .ui-slider-range { 786 | left: 0; 787 | width: 100%; 788 | } 789 | .ui-slider-vertical .ui-slider-range-min { 790 | bottom: 0; 791 | } 792 | .ui-slider-vertical .ui-slider-range-max { 793 | top: 0; 794 | } 795 | .ui-spinner { 796 | position: relative; 797 | display: inline-block; 798 | overflow: hidden; 799 | padding: 0; 800 | vertical-align: middle; 801 | } 802 | .ui-spinner-input { 803 | border: none; 804 | background: none; 805 | color: inherit; 806 | padding: .222em 0; 807 | margin: .2em 0; 808 | vertical-align: middle; 809 | margin-left: .4em; 810 | margin-right: 2em; 811 | } 812 | .ui-spinner-button { 813 | width: 1.6em; 814 | height: 50%; 815 | font-size: .5em; 816 | padding: 0; 817 | margin: 0; 818 | text-align: center; 819 | position: absolute; 820 | cursor: default; 821 | display: block; 822 | overflow: hidden; 823 | right: 0; 824 | } 825 | /* more specificity required here to override default borders */ 826 | .ui-spinner a.ui-spinner-button { 827 | border-top-style: none; 828 | border-bottom-style: none; 829 | border-right-style: none; 830 | } 831 | .ui-spinner-up { 832 | top: 0; 833 | } 834 | .ui-spinner-down { 835 | bottom: 0; 836 | } 837 | .ui-tabs { 838 | position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 839 | padding: .2em; 840 | } 841 | .ui-tabs .ui-tabs-nav { 842 | margin: 0; 843 | padding: .2em .2em 0; 844 | } 845 | .ui-tabs .ui-tabs-nav li { 846 | list-style: none; 847 | float: left; 848 | position: relative; 849 | top: 0; 850 | margin: 1px .2em 0 0; 851 | border-bottom-width: 0; 852 | padding: 0; 853 | white-space: nowrap; 854 | } 855 | .ui-tabs .ui-tabs-nav .ui-tabs-anchor { 856 | float: left; 857 | padding: .5em 1em; 858 | text-decoration: none; 859 | } 860 | .ui-tabs .ui-tabs-nav li.ui-tabs-active { 861 | margin-bottom: -1px; 862 | padding-bottom: 1px; 863 | } 864 | .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, 865 | .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, 866 | .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { 867 | cursor: text; 868 | } 869 | .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { 870 | cursor: pointer; 871 | } 872 | .ui-tabs .ui-tabs-panel { 873 | display: block; 874 | border-width: 0; 875 | padding: 1em 1.4em; 876 | background: none; 877 | } 878 | .ui-tooltip { 879 | padding: 8px; 880 | position: absolute; 881 | z-index: 9999; 882 | max-width: 300px; 883 | } 884 | body .ui-tooltip { 885 | border-width: 2px; 886 | } 887 | -------------------------------------------------------------------------------- /public/ips.txt: -------------------------------------------------------------------------------- 1 | 101.128.192.30 2 | 101.68.108.117 3 | 103.207.39.231 4 | 103.212.120.170 5 | 103.224.166.179 6 | 103.243.107.207 7 | 104.12.69.44 8 | 104.244.217.2 9 | 105.101.138.67 10 | 112.207.198.74 11 | 112.228.177.163 12 | 112.78.1.253 13 | 113.102.171.181 14 | 113.189.47.154 15 | 113.205.179.127 16 | 113.237.9.51 17 | 113.98.193.58 18 | 114.231.190.30 19 | 114.245.252.31 20 | 115.135.82.197 21 | 115.204.116.124 22 | 115.205.175.133 23 | 115.207.110.233 24 | 115.229.100.19 25 | 115.230.27.130 26 | 116.252.34.161 27 | 116.31.116.46 28 | 116.31.116.47 29 | 116.31.116.48 30 | 117.11.139.121 31 | 117.35.48.105 32 | 119.129.118.170 33 | 119.193.140.168 34 | 119.193.140.214 35 | 120.132.4.45 36 | 121.180.157.47 37 | 122.173.207.228 38 | 122.190.143.249 39 | 122.191.198.247 40 | 122.227.254.84 41 | 122.241.10.13 42 | 123.110.97.205 43 | 123.115.63.197 44 | 123.159.224.141 45 | 123.183.209.132 46 | 123.183.209.134 47 | 123.31.32.13 48 | 123.96.27.233 49 | 124.118.203.204 50 | 124.128.81.85 51 | 124.53.207.38 52 | 125.107.242.214 53 | 125.120.228.216 54 | 125.124.71.7 55 | 125.92.250.98 56 | 126.65.140.199 57 | 139.201.165.127 58 | 14.177.254.191 59 | 150.107.149.27 60 | 151.0.205.226 61 | 152.204.4.109 62 | 156.196.75.61 63 | 168.194.81.211 64 | 169.229.49.104 65 | 170.81.18.77 66 | 171.212.140.60 67 | 171.214.206.93 68 | 171.247.87.207 69 | 175.141.97.133 70 | 175.152.44.79 71 | 175.162.99.249 72 | 175.236.216.49 73 | 176.202.186.128 74 | 176.50.180.120 75 | 177.103.109.186 76 | 177.185.169.24 77 | 178.186.1.56 78 | 179.36.167.196 79 | 179.41.185.180 80 | 179.41.220.128 81 | 180.250.39.51 82 | 181.21.24.191 83 | 181.25.147.114 84 | 181.25.170.87 85 | 181.25.213.93 86 | 181.25.236.141 87 | 181.26.175.174 88 | 181.26.21.177 89 | 182.100.67.119 90 | 182.243.102.191 91 | 182.254.191.36 92 | 182.39.229.50 93 | 183.163.19.208 94 | 183.214.141.101 95 | 183.214.141.105 96 | 183.93.255.16 97 | 183.94.61.69 98 | 183.94.63.244 99 | 183.95.171.234 100 | 185.12.178.128 101 | 185.165.30.43 102 | 185.169.229.247 103 | 185.188.204.204 104 | 185.58.194.231 105 | 185.97.102.182 106 | 186.129.194.166 107 | 186.133.179.201 108 | 186.134.153.242 109 | 186.225.245.185 110 | 186.233.175.58 111 | 186.57.16.118 112 | 186.58.3.119 113 | 186.59.42.64 114 | 186.59.8.219 115 | 186.59.83.63 116 | 186.61.1.147 117 | 186.62.176.121 118 | 186.67.77.44 119 | 187.162.129.29 120 | 187.57.64.248 121 | 188.43.32.190 122 | 190.175.229.66 123 | 190.214.158.71 124 | 190.214.92.14 125 | 190.238.64.3 126 | 190.40.185.172 127 | 190.43.118.8 128 | 190.48.131.85 129 | 190.50.212.210 130 | 190.50.233.222 131 | 191.80.161.182 132 | 191.80.164.252 133 | 191.82.79.114 134 | 191.83.139.95 135 | 191.84.242.175 136 | 191.84.95.188 137 | 193.201.225.117 138 | 193.201.225.68 139 | 195.154.36.75 140 | 195.162.95.35 141 | 195.162.95.77 142 | 195.184.191.147 143 | 195.56.93.179 144 | 197.214.65.125 145 | 200.98.200.116 146 | 201.176.41.222 147 | 201.176.41.78 148 | 201.178.148.107 149 | 201.178.161.4 150 | 201.178.181.233 151 | 201.178.205.248 152 | 201.178.252.97 153 | 201.178.47.37 154 | 201.179.203.160 155 | 201.254.12.52 156 | 202.102.39.199 157 | 202.60.64.186 158 | 203.83.160.83 159 | 205.185.221.189 160 | 208.180.235.159 161 | 211.33.170.39 162 | 212.129.10.234 163 | 212.48.93.235 164 | 212.50.232.136 165 | 212.97.161.23 166 | 213.226.8.125 167 | 217.65.83.102 168 | 217.69.30.251 169 | 218.108.215.128 170 | 218.108.215.18 171 | 218.109.249.108 172 | 218.18.32.188 173 | 218.65.30.122 174 | 218.65.30.25 175 | 218.65.30.43 176 | 218.65.30.53 177 | 219.157.203.119 178 | 219.92.71.252 179 | 220.124.151.130 180 | 220.226.198.222 181 | 220.227.40.235 182 | 221.148.209.32 183 | 221.214.236.76 184 | 221.229.162.204 185 | 222.185.224.145 186 | 222.218.255.87 187 | 222.47.26.18 188 | 223.224.140.243 189 | 223.242.118.10 190 | 223.99.60.44 191 | 24.166.57.101 192 | 27.191.68.159 193 | 27.194.68.102 194 | 27.214.16.194 195 | 31.207.47.36 196 | 36.250.15.28 197 | 36.26.128.28 198 | 37.21.51.191 199 | 39.181.55.205 200 | 40.83.249.192 201 | 41.42.152.231 202 | 42.103.72.191 203 | 46.105.98.139 204 | 47.90.23.235 205 | 49.83.253.107 206 | 5.88.141.97 207 | 51.15.128.92 208 | 58.120.227.20 209 | 58.218.199.165 210 | 58.218.211.48 211 | 59.148.40.198 212 | 59.63.166.80 213 | 60.177.0.14 214 | 60.18.93.189 215 | 60.182.214.33 216 | 61.166.70.138 217 | 61.177.172.34 218 | 61.177.172.47 219 | 61.177.172.52 220 | 61.177.172.54 221 | 62.201.223.57 222 | 62.210.85.56 223 | 67.55.167.7 224 | 74.50.147.169 225 | 77.45.174.143 226 | 77.50.57.40 227 | 77.58.199.245 228 | 77.68.42.8 229 | 78.186.159.5 230 | 79.185.64.190 231 | 80.12.85.110 232 | 81.162.231.187 233 | 81.62.17.219 234 | 82.113.72.174 235 | 82.64.2.59 236 | 86.49.190.226 237 | 86.97.57.154 238 | 89.36.211.88 239 | 90.183.87.139 240 | 91.195.103.166 241 | 91.195.103.170 242 | 91.197.232.103 243 | 91.232.157.98 244 | 93.178.105.43 245 | 93.78.60.98 246 | 93.83.206.40 247 | 94.177.186.168 248 | 95.68.193.249 249 | 97.76.11.104 250 | 117.201.238.42 251 | 190.179.130.192 252 | 190.173.218.76 253 | 181.211.183.184 254 | 122.193.118.209 255 | 124.91.18.27 256 | 181.57.149.131 257 | 118.184.21.97 258 | 119.193.140.179 259 | 61.177.172.30 260 | 186.135.2.243 261 | 218.60.136.106 262 | 185.169.229.248 263 | 115.134.117.180 264 | 52.21.111.154 265 | 50.62.78.65 266 | 162.144.102.19 267 | 218.241.206.42 268 | 222.47.26.17 269 | 179.41.172.25 270 | 186.58.158.90 271 | 31.162.163.93 272 | 210.51.17.73 273 | 179.40.223.1 274 | 117.70.0.130 275 | 90.76.129.115 276 | 62.148.147.13 277 | 189.109.54.110 278 | 125.37.203.106 279 | 122.191.93.243 280 | 212.129.62.227 281 | 66.76.26.129 282 | 113.195.145.21 283 | 191.81.19.29 284 | 211.115.111.25 285 | 58.61.153.165 286 | 218.83.155.86 287 | 186.113.60.101 288 | 218.63.123.104 289 | 114.248.54.48 290 | 181.27.173.223 291 | 122.190.248.216 292 | 125.25.4.20 293 | 223.99.60.45 294 | 220.188.85.70 295 | 171.61.168.60 296 | 191.96.249.29 297 | 187.14.10.157 298 | 122.189.242.123 299 | 201.177.174.123 300 | 147.75.108.196 301 | 222.184.79.60 302 | 117.71.18.21 303 | 186.60.165.226 304 | 89.218.189.252 305 | 94.102.52.195 306 | 115.209.126.201 307 | 213.80.218.232 308 | 94.177.177.228 309 | 152.204.27.3 310 | 181.20.254.191 311 | 140.250.65.57 312 | 66.132.132.220 313 | 51.15.61.247 314 | 219.156.38.128 315 | 59.177.180.74 316 | 118.255.24.139 317 | 190.50.239.95 318 | 62.20.61.178 319 | 111.20.245.26 320 | 178.117.58.212 321 | 118.174.204.14 322 | 37.57.81.19 323 | 23.253.251.177 324 | 129.41.233.248 325 | 186.130.73.185 326 | 183.214.141.103 327 | 186.130.16.74 328 | 190.128.164.142 329 | 128.79.53.228 330 | 60.182.252.99 331 | 186.60.174.194 332 | 14.185.87.49 333 | 122.189.199.234 334 | 179.233.94.73 335 | 181.67.227.111 336 | 123.31.32.7 337 | 37.76.149.224 338 | 61.177.172.26 339 | 180.153.19.139 340 | 198.50.191.66 341 | 115.249.117.176 342 | 176.31.224.228 343 | 94.177.177.106 344 | 181.20.224.131 345 | 111.207.202.5 346 | 183.238.51.51 347 | 47.186.146.31 348 | 186.62.27.169 349 | 85.114.137.176 350 | 109.239.58.144 351 | 79.137.80.222 352 | 185.140.248.171 353 | 103.207.39.216 354 | 143.208.25.56 355 | 221.210.200.245 356 | 200.43.20.5 357 | 107.170.37.173 358 | 46.24.184.31 359 | 116.192.0.127 360 | 122.190.92.161 361 | 116.31.116.49 362 | 71.91.235.232 363 | 179.41.176.160 364 | 83.0.246.106 365 | 96.66.207.34 366 | 211.110.154.229 367 | 82.17.88.109 368 | 103.207.37.184 369 | 125.93.80.59 370 | 190.177.72.154 371 | 122.121.153.103 372 | 61.69.82.70 373 | 122.191.92.138 374 | 82.236.44.137 375 | 122.226.163.199 376 | 123.166.234.159 377 | 60.219.131.120 378 | 185.109.59.29 379 | 72.2.20.230 380 | 113.195.145.79 381 | 61.177.172.13 382 | 42.53.155.253 383 | 183.93.94.194 384 | 122.189.234.40 385 | 60.165.208.28 386 | 195.3.144.216 387 | 198.143.188.197 388 | 178.39.69.33 389 | 186.133.33.76 390 | 117.198.82.147 391 | 181.25.27.18 392 | 88.234.64.2 393 | 112.237.146.240 394 | 112.81.243.75 395 | 173.212.220.137 396 | 122.191.117.160 397 | 24.242.69.130 398 | 106.6.132.197 399 | 186.183.156.100 400 | 190.174.136.93 401 | 116.76.114.103 402 | 123.31.34.215 403 | 118.212.135.3 404 | 83.56.202.101 405 | 190.48.238.206 406 | 73.231.4.205 407 | 200.125.203.60 408 | 186.62.54.139 409 | 60.185.165.27 410 | 77.81.232.233 411 | 181.21.76.157 412 | 58.100.146.221 413 | 5.238.247.12 414 | 221.167.231.119 415 | 5.167.181.90 416 | 195.3.144.215 417 | 186.59.157.98 418 | 175.162.109.67 419 | 78.88.163.128 420 | 177.229.108.237 421 | 142.4.114.17 422 | 218.65.30.238 423 | 122.190.143.21 424 | 113.116.171.22 425 | 120.0.21.68 426 | 115.230.40.181 427 | 180.153.245.28 428 | 186.58.154.103 429 | 169.1.38.50 430 | 181.113.187.104 431 | 196.37.77.66 432 | 182.64.162.191 433 | 106.57.36.108 434 | 118.70.133.226 435 | 193.192.196.124 436 | 92.252.238.215 437 | 82.45.226.63 438 | 201.179.202.80 439 | 47.88.155.72 440 | 181.24.164.148 441 | 116.31.116.41 442 | 122.241.211.112 443 | 123.168.67.97 444 | 58.240.27.165 445 | 112.53.69.230 446 | 117.240.210.138 447 | 116.7.243.198 448 | 113.190.196.11 449 | 116.31.116.45 450 | 125.34.205.93 451 | 219.78.29.16 452 | 61.177.172.53 453 | 181.26.43.122 454 | 190.173.132.15 455 | 5.36.232.208 456 | 113.205.172.101 457 | 182.44.87.174 458 | 179.40.255.114 459 | 111.198.207.125 460 | 123.31.34.217 461 | 61.177.172.28 462 | 182.37.253.96 463 | 180.166.146.54 464 | 151.63.108.234 465 | 117.43.74.195 466 | 218.65.30.126 467 | 115.218.60.112 468 | 183.95.174.190 469 | 108.171.113.67 470 | 218.109.241.102 471 | 103.207.39.215 472 | 222.161.200.123 473 | 188.16.121.134 474 | 79.108.75.128 475 | 51.15.137.21 476 | 77.81.232.51 477 | 201.179.3.5 478 | 115.196.26.55 479 | 218.109.51.50 480 | 144.52.101.90 481 | 116.52.155.122 482 | 218.70.213.17 483 | 113.118.92.184 484 | 60.184.104.175 485 | 123.170.76.33 486 | 59.111.97.230 487 | 116.208.155.114 488 | 138.210.12.226 489 | 117.11.93.9 490 | 58.246.141.205 491 | 190.177.72.30 492 | 116.54.237.177 493 | 181.21.149.242 494 | 94.177.178.92 495 | 181.27.239.234 496 | 139.210.77.177 497 | 183.93.255.192 498 | 112.81.192.162 499 | 125.95.160.223 500 | 122.5.244.178 501 | 5.140.135.245 502 | 190.107.28.228 503 | 61.164.46.188 504 | 181.196.6.197 505 | 118.255.15.109 506 | 109.182.165.82 507 | 122.5.225.44 508 | 89.211.182.53 509 | 163.172.197.79 510 | 39.155.136.34 511 | 181.23.47.15 512 | 60.16.132.64 513 | 52.165.231.58 514 | 180.229.202.136 515 | 84.138.95.137 516 | 181.21.116.132 517 | 113.56.159.184 518 | 77.81.232.36 519 | 123.170.196.34 520 | 183.93.253.226 521 | 193.201.225.47 522 | 61.177.172.19 523 | 110.232.143.106 524 | 183.93.254.239 525 | 181.22.2.11 526 | 203.87.14.84 527 | 77.249.59.46 528 | 72.175.114.217 529 | 114.32.100.101 530 | 37.122.208.12 531 | 58.62.121.197 532 | 162.251.166.36 533 | 201.177.9.236 534 | 181.25.232.127 535 | 94.177.178.46 536 | 82.160.79.54 537 | 106.2.206.30 538 | 186.62.19.195 539 | 213.99.82.149 540 | 201.179.225.100 541 | 114.255.78.181 542 | 190.173.82.141 543 | 171.61.173.207 544 | 210.212.214.107 545 | 117.13.8.113 546 | 105.110.230.247 547 | 115.198.37.255 548 | 119.193.140.182 549 | 186.130.100.217 550 | 186.59.74.167 551 | 122.4.66.164 552 | 121.52.220.240 553 | 122.191.218.218 554 | 119.195.201.227 555 | 125.121.149.159 556 | 122.189.198.98 557 | 88.187.234.76 558 | 222.44.45.219 559 | 114.214.164.120 560 | 125.117.244.99 561 | 77.81.232.221 562 | 116.24.141.221 563 | 181.23.179.103 564 | 94.177.178.146 565 | 116.54.192.14 566 | 173.233.59.68 567 | 186.62.8.181 568 | 36.110.41.170 569 | 104.236.126.119 570 | 120.197.206.249 571 | 119.80.178.125 572 | 85.206.166.8 573 | 220.181.178.126 574 | 122.139.148.97 575 | 139.59.100.16 576 | 218.109.122.190 577 | 61.177.172.24 578 | 178.32.177.66 579 | 40.78.28.115 580 | 94.177.178.238 581 | 124.167.232.138 582 | 188.165.127.64 583 | 62.210.192.6 584 | 186.209.179.234 585 | 113.122.43.206 586 | 61.177.172.58 587 | 108.175.253.56 588 | 182.100.67.40 589 | 116.54.196.23 590 | 193.111.140.200 591 | 86.57.168.86 592 | 177.91.135.177 593 | 190.11.10.64 594 | 122.191.245.109 595 | 175.193.127.168 596 | 58.19.145.47 597 | 61.216.32.18 598 | 52.25.176.207 599 | 122.189.226.215 600 | 190.48.145.33 601 | 218.87.109.154 602 | 122.242.60.70 603 | 191.84.215.212 604 | 190.173.138.196 605 | 122.190.255.184 606 | 93.125.89.29 607 | 185.9.21.24 608 | 52.221.5.48 609 | 162.144.70.81 610 | 187.60.122.236 611 | 163.23.103.190 612 | 218.78.221.180 613 | 189.254.234.244 614 | 101.68.108.164 615 | 186.130.25.29 616 | 36.66.0.190 617 | 115.199.191.229 618 | 123.201.135.130 619 | 74.59.94.43 620 | 180.155.243.197 621 | 193.201.225.48 622 | 149.202.13.187 623 | 218.65.30.124 624 | 58.19.145.125 625 | 121.237.7.246 626 | 113.122.47.186 627 | 78.187.47.157 628 | 218.5.241.13 629 | 218.26.14.17 630 | 115.210.214.152 631 | 123.160.119.143 632 | 176.109.46.144 633 | 186.178.186.238 634 | 201.255.51.87 635 | 182.243.89.127 636 | 51.15.143.192 637 | 186.47.177.102 638 | 61.142.176.8 639 | 80.82.222.22 640 | 125.123.179.250 641 | 94.177.206.127 642 | 90.188.164.132 643 | 190.205.54.150 644 | 213.150.99.170 645 | 173.11.207.86 646 | 182.33.212.251 647 | 81.169.182.22 648 | 1.163.32.251 649 | 175.136.20.255 650 | 94.177.206.150 651 | 183.238.43.154 652 | 122.189.198.238 653 | 190.173.109.187 654 | 45.55.156.166 655 | 93.95.34.169 656 | 95.174.101.240 657 | 190.2.35.61 658 | 210.51.191.26 659 | 60.53.165.174 660 | 80.82.70.134 661 | 31.13.202.74 662 | 191.80.66.9 663 | 122.189.197.58 664 | 186.59.149.124 665 | 171.25.193.20 666 | 118.200.117.134 667 | 193.201.225.89 668 | 123.183.209.135 669 | 59.63.166.81 670 | 113.59.224.119 671 | 139.217.27.121 672 | 158.255.4.172 673 | 190.175.23.97 674 | 101.200.60.75 675 | 94.177.205.168 676 | 218.13.8.162 677 | 27.159.125.232 678 | 186.219.161.130 679 | 69.162.73.83 680 | 195.209.118.20 681 | 190.48.105.250 682 | 104.245.97.33 683 | 40.69.187.162 684 | 121.22.191.2 685 | 219.140.194.130 686 | 95.160.88.80 687 | 187.78.97.32 688 | 49.161.172.150 689 | 190.43.78.196 690 | 163.172.134.145 691 | 95.225.99.53 692 | 223.71.241.30 693 | 113.195.145.52 694 | 179.36.15.171 695 | 60.251.223.115 696 | 5.158.108.187 697 | 183.93.255.122 698 | 93.56.12.164 699 | 183.95.171.183 700 | 110.177.68.243 701 | 187.227.196.81 702 | 116.249.160.115 703 | 60.184.156.36 704 | 218.108.158.245 705 | 94.177.205.187 706 | 170.82.135.82 707 | 109.241.108.13 708 | 67.226.145.125 709 | 183.93.253.229 710 | 185.150.191.40 711 | 218.65.30.123 712 | 192.88.24.151 713 | 125.227.128.173 714 | 61.160.249.217 715 | 190.214.95.110 716 | 90.188.61.164 717 | 177.221.101.102 718 | 187.188.209.172 719 | 58.20.85.184 720 | 195.3.144.213 721 | 188.244.143.71 722 | 121.181.187.244 723 | 180.97.215.110 724 | 181.196.213.28 725 | 90.214.248.237 726 | 112.120.150.123 727 | 36.56.194.22 728 | 23.99.85.226 729 | 110.179.89.44 730 | 186.179.100.45 731 | 106.51.114.200 732 | 183.95.174.165 733 | 91.236.254.58 734 | 115.225.108.77 735 | 202.100.245.12 736 | 61.50.252.196 737 | 46.186.150.230 738 | 186.61.132.65 739 | 201.217.142.186 740 | 123.31.32.5 741 | 222.132.156.2 742 | 208.93.15.126 743 | 213.64.74.111 744 | 50.224.4.179 745 | 179.106.83.97 746 | 123.252.228.234 747 | 190.172.94.47 748 | 190.214.170.136 749 | 205.138.224.159 750 | 190.54.14.9 751 | 106.3.46.117 752 | 183.214.125.98 753 | 190.13.36.243 754 | 181.25.147.175 755 | 179.39.3.48 756 | 223.202.204.137 757 | 191.80.240.212 758 | 171.98.223.57 759 | 113.0.111.44 760 | 182.118.73.77 761 | 203.114.244.164 762 | 190.236.128.208 763 | 122.189.227.65 764 | 122.189.205.163 765 | 218.87.109.152 766 | 58.35.240.43 767 | 121.151.214.162 768 | 156.206.12.77 769 | 95.78.162.123 770 | 120.14.203.126 771 | 122.224.40.84 772 | 115.230.149.210 773 | 202.100.182.254 774 | 186.134.6.91 775 | 217.112.102.212 776 | 173.195.4.120 777 | 188.16.127.115 778 | 201.179.149.38 779 | 201.55.128.22 780 | 39.77.53.127 781 | 58.100.135.31 782 | 1.119.0.247 783 | 90.78.71.90 784 | 86.96.75.181 785 | 74.219.201.138 786 | 182.89.216.200 787 | 219.237.69.180 788 | 101.200.204.152 789 | 117.57.214.200 790 | 95.110.186.188 791 | 46.166.162.17 792 | 52.173.128.22 793 | 173.28.195.145 794 | 92.37.177.133 795 | 59.92.252.14 796 | 169.0.208.35 797 | 75.134.69.250 798 | 24.107.157.190 799 | 118.122.212.91 800 | 163.177.240.2 801 | 111.47.13.70 802 | 95.110.174.49 803 | 203.232.50.185 804 | 184.169.153.127 805 | 175.18.52.254 806 | 163.172.169.202 807 | 171.212.142.209 808 | 80.130.177.131 809 | 188.19.154.99 810 | 172.93.237.194 811 | 123.169.167.97 812 | 112.171.20.249 813 | 114.95.100.64 814 | 119.147.144.140 815 | 195.154.63.194 816 | 41.211.162.139 817 | 110.242.153.183 818 | 94.19.118.247 819 | 117.117.117.236 820 | 177.220.234.36 821 | 177.221.100.149 822 | 218.87.109.151 823 | 182.243.102.107 824 | 37.128.193.188 825 | 139.201.164.173 826 | 183.158.81.137 827 | 119.65.255.114 828 | 171.244.17.144 829 | 219.83.165.224 830 | 121.236.46.249 831 | 122.191.208.128 832 | 69.156.162.156 833 | 113.56.156.181 834 | 116.249.160.116 835 | 14.177.167.21 836 | 179.62.248.71 837 | 181.23.48.82 838 | 110.17.211.109 839 | 222.187.86.51 840 | 95.110.185.250 841 | 37.79.163.128 842 | 191.85.160.153 843 | 181.211.205.38 844 | 13.93.238.166 845 | 124.152.22.157 846 | 190.90.91.5 847 | 119.187.41.44 848 | 112.219.243.82 849 | 81.214.51.72 850 | 60.12.119.222 851 | 151.235.136.57 852 | 186.129.18.211 853 | 123.159.224.65 854 | 51.15.49.249 855 | 89.163.220.26 856 | 177.200.194.37 857 | 201.178.118.138 858 | 176.38.87.129 859 | 24.185.204.30 860 | 24.129.127.66 861 | 14.140.46.125 862 | 190.214.206.162 863 | 61.177.172.55 864 | 150.255.247.141 865 | 14.113.134.67 866 | 190.178.39.117 867 | 122.190.149.119 868 | 122.191.90.49 869 | 182.100.67.120 870 | 103.74.120.65 871 | 183.196.243.94 872 | 122.189.198.233 873 | 112.21.237.141 874 | 14.54.210.101 875 | 186.60.40.201 876 | 81.199.16.233 877 | 113.122.34.135 878 | 182.35.252.146 879 | 188.210.124.130 880 | 181.20.216.240 881 | 181.22.3.229 882 | 183.214.141.102 883 | 104.40.94.66 884 | 59.111.98.180 885 | 94.177.206.210 886 | 152.204.10.241 887 | 201.254.67.189 888 | 119.90.3.3 889 | 61.177.172.56 890 | 183.156.73.20 891 | 89.248.169.135 892 | 187.108.61.114 893 | 183.95.171.236 894 | 77.72.83.243 895 | 181.211.174.138 896 | 94.50.174.105 897 | 117.131.215.90 898 | 193.105.134.184 899 | 205.178.115.39 900 | 60.173.254.220 901 | 122.191.91.86 902 | 113.120.236.7 903 | 59.120.6.100 904 | 79.75.248.252 905 | 219.144.248.243 906 | 175.152.12.219 907 | 212.19.117.31 908 | 181.20.236.28 909 | 61.160.87.70 910 | 64.250.197.83 911 | 81.161.123.145 912 | 40.78.31.182 913 | 114.25.91.177 914 | 71.95.81.54 915 | 154.118.141.90 916 | 187.93.97.51 917 | 113.124.159.158 918 | 103.74.120.60 919 | 200.11.230.165 920 | 103.8.162.250 921 | 189.44.10.114 922 | 14.177.160.201 923 | 182.70.96.24 924 | 51.255.230.173 925 | 201.254.140.115 926 | 106.241.238.51 927 | 122.189.247.118 928 | 114.255.78.179 929 | 201.254.32.182 930 | 119.249.54.93 931 | 190.239.16.194 932 | 116.205.10.16 933 | 171.118.230.183 934 | 181.67.126.104 935 | 186.57.6.92 936 | 101.69.196.100 937 | 181.22.8.175 938 | 171.212.143.90 939 | 111.199.94.33 940 | 112.87.204.238 941 | 91.236.116.77 942 | 187.23.65.25 943 | 191.82.16.241 944 | 2.177.52.61 945 | 122.191.88.16 946 | 37.233.99.101 947 | 221.236.20.114 948 | 218.4.196.178 949 | 178.141.5.166 950 | 90.65.55.206 951 | 51.15.76.134 952 | 185.165.29.44 953 | 92.50.135.14 954 | 175.152.45.159 955 | 191.81.47.121 956 | 116.31.116.44 957 | 58.20.95.117 958 | 122.161.202.72 959 | 190.184.155.194 960 | 213.81.212.137 961 | 190.178.100.32 962 | 178.45.104.235 963 | 5.165.201.227 964 | 76.164.165.233 965 | 52.51.147.60 966 | 212.224.120.89 967 | 125.119.227.126 968 | 200.175.184.148 969 | 61.177.21.226 970 | 122.191.211.125 971 | 124.82.91.217 972 | 113.195.145.13 973 | 190.232.113.156 974 | 58.48.178.200 975 | 182.70.78.7 976 | 113.123.35.104 977 | 2.179.11.9 978 | 119.49.149.123 979 | 196.215.168.145 980 | 188.125.102.223 981 | 183.131.83.253 982 | 171.38.23.116 983 | 120.41.33.66 984 | 186.133.196.50 985 | 186.58.16.218 986 | 114.241.173.99 987 | 221.226.186.70 988 | 80.82.66.60 989 | 212.129.58.169 990 | 223.244.119.31 991 | 181.223.228.122 992 | 112.231.174.34 993 | 177.247.96.60 994 | 181.23.15.109 995 | 61.155.238.89 996 | 83.228.85.103 997 | 59.63.188.3 998 | 94.177.205.58 999 | 106.119.236.108 1000 | 186.129.176.114 1001 | 187.174.190.5 1002 | 125.88.186.245 1003 | 5.77.5.89 1004 | 181.27.129.87 1005 | 175.169.128.176 1006 | 186.39.145.189 1007 | 201.178.105.202 1008 | 51.15.143.169 1009 | 183.93.252.27 1010 | 181.26.56.128 1011 | 182.48.111.123 1012 | 61.1.195.130 1013 | 111.193.168.242 1014 | 163.172.122.151 1015 | 201.178.27.63 1016 | 106.43.96.42 1017 | 210.10.190.82 1018 | 201.179.177.152 1019 | 58.241.174.130 1020 | 186.61.7.248 1021 | 190.51.62.10 1022 | 49.79.120.184 1023 | 115.197.226.244 1024 | 152.204.10.49 1025 | 186.178.13.30 1026 | 42.234.36.100 1027 | 115.213.217.28 1028 | 111.204.200.131 1029 | 95.110.172.14 1030 | 124.173.118.39 1031 | 210.186.153.219 1032 | 91.210.104.30 1033 | 181.123.8.143 1034 | 36.55.229.129 1035 | 49.117.103.49 1036 | 119.193.140.184 1037 | 58.40.126.218 1038 | 175.141.3.67 1039 | 113.209.68.135 1040 | 217.182.69.217 1041 | 190.179.151.249 1042 | 61.177.172.27 1043 | 41.208.150.114 1044 | 192.237.188.165 1045 | 103.251.221.244 1046 | 47.202.19.153 1047 | 181.211.94.74 1048 | 138.75.7.0 1049 | 111.17.220.232 1050 | 186.62.17.108 1051 | 180.250.182.26 1052 | 81.141.249.80 1053 | 114.4.68.177 1054 | 220.171.31.163 1055 | 182.34.19.213 1056 | 113.251.164.147 1057 | 61.194.146.219 1058 | 95.189.240.203 1059 | 186.178.14.126 1060 | 115.112.66.194 1061 | 31.163.250.38 1062 | 122.237.63.197 1063 | 96.250.89.151 1064 | 52.24.192.29 1065 | 115.209.215.236 1066 | 45.5.193.211 1067 | 201.176.17.39 1068 | 183.163.16.45 1069 | 51.254.222.83 1070 | 177.229.207.250 1071 | 117.194.32.128 1072 | 117.222.18.10 1073 | 115.209.210.69 1074 | 191.84.208.111 1075 | 85.114.135.93 1076 | 125.122.233.176 1077 | 199.180.134.156 1078 | 182.243.121.17 1079 | 103.207.37.9 1080 | 116.228.236.206 1081 | 181.113.95.105 1082 | 179.192.78.238 1083 | 185.49.97.105 1084 | 59.63.188.30 1085 | 178.45.150.199 1086 | 207.182.142.125 1087 | 94.51.44.248 1088 | 113.121.68.246 1089 | 181.27.182.241 1090 | 181.25.154.163 1091 | 183.144.121.229 1092 | 153.122.66.77 1093 | 61.177.172.57 1094 | 177.20.177.33 1095 | 181.25.134.147 1096 | 178.209.239.191 1097 | 86.8.185.146 1098 | 195.22.126.147 1099 | 70.68.77.183 1100 | 106.57.170.31 1101 | 125.120.78.200 1102 | 201.179.243.23 1103 | 182.243.112.254 1104 | 200.107.55.216 1105 | 1.192.246.213 1106 | 186.58.152.173 1107 | 185.188.205.2 1108 | 117.29.189.86 1109 | 84.121.112.70 1110 | 183.147.232.95 1111 | 74.208.170.226 1112 | 75.145.25.229 1113 | 182.100.67.76 1114 | 218.94.106.87 1115 | 193.201.225.118 1116 | 190.51.41.41 1117 | 109.21.49.17 1118 | 37.79.79.1 1119 | 183.134.110.184 1120 | 212.156.72.102 1121 | 125.39.58.14 1122 | 181.196.134.213 1123 | 190.40.206.226 1124 | 27.54.125.125 1125 | 43.248.97.73 1126 | 34.239.248.82 1127 | 27.214.16.96 1128 | 189.8.202.76 1129 | 190.236.128.144 1130 | 123.159.225.14 1131 | 116.249.170.202 1132 | 181.196.4.96 1133 | 180.169.17.83 1134 | 31.163.169.241 1135 | 183.95.174.94 1136 | 42.103.211.17 1137 | 91.195.103.102 1138 | 179.37.57.122 1139 | 110.76.186.59 1140 | 188.187.52.223 1141 | 146.185.239.115 1142 | 152.204.7.85 1143 | 183.91.153.97 1144 | 163.172.113.3 1145 | 122.192.59.107 1146 | 117.29.91.237 1147 | 103.207.39.149 1148 | 121.229.7.54 1149 | 111.17.220.228 1150 | 167.61.120.44 1151 | 179.38.143.66 1152 | 82.102.15.246 1153 | 212.129.13.94 1154 | 103.207.36.3 1155 | 179.63.253.10 1156 | 61.177.172.32 1157 | 106.4.158.244 1158 | 172.81.185.95 1159 | 122.241.211.10 1160 | 110.72.39.65 1161 | 42.85.202.191 1162 | 154.127.61.183 1163 | 190.50.227.100 1164 | 2.176.141.26 1165 | 186.130.174.239 1166 | 172.246.126.177 1167 | 219.138.233.22 1168 | 189.7.225.20 1169 | 101.66.253.100 1170 | 186.134.11.133 1171 | 109.167.74.220 1172 | 120.8.133.16 1173 | 39.73.211.120 1174 | 161.18.160.94 1175 | 103.207.37.134 1176 | 195.199.220.209 1177 | 195.199.12.121 1178 | 124.122.150.63 1179 | 113.237.13.132 1180 | 123.176.45.37 1181 | 179.40.201.116 1182 | 52.192.164.8 1183 | 212.83.145.186 1184 | 202.188.22.102 1185 | 14.203.204.131 1186 | 88.147.143.242 1187 | 95.110.174.245 1188 | 119.254.153.38 1189 | 183.95.171.87 1190 | 42.103.213.114 1191 | 218.65.30.46 1192 | 201.179.212.228 1193 | 144.12.76.154 1194 | 159.226.139.213 1195 | 179.39.10.149 1196 | 117.161.3.38 1197 | 185.188.206.2 1198 | 51.254.93.178 1199 | 119.78.254.4 1200 | 42.243.21.48 1201 | 123.96.171.7 1202 | 59.36.232.208 1203 | 37.203.15.69 1204 | 5.228.255.100 1205 | 210.54.38.103 1206 | 217.173.69.54 1207 | 104.128.69.185 1208 | 201.254.158.45 1209 | 41.237.69.252 1210 | 117.10.183.155 1211 | 193.201.225.59 1212 | 111.11.27.140 1213 | 171.212.140.165 1214 | 60.187.77.174 1215 | 144.12.76.3 1216 | 201.176.39.129 1217 | 117.161.0.196 1218 | 119.193.140.148 1219 | 218.108.124.60 1220 | 181.174.42.13 1221 | 94.177.186.142 1222 | 90.189.16.187 1223 | 117.161.3.37 1224 | 24.181.158.230 1225 | 31.163.126.165 1226 | 41.219.0.15 1227 | 58.101.207.246 1228 | 217.20.113.18 1229 | 212.129.23.96 1230 | 223.244.130.118 1231 | 27.216.17.236 1232 | 36.107.218.12 1233 | 23.236.86.247 1234 | 110.250.140.170 1235 | 41.42.197.19 1236 | 183.159.60.224 1237 | 185.114.225.189 1238 | 91.99.188.78 1239 | 201.254.93.82 1240 | 193.201.225.96 1241 | 207.134.93.4 1242 | 201.63.179.170 1243 | 181.20.185.112 1244 | 61.177.172.69 1245 | 125.39.181.178 1246 | 61.177.172.44 1247 | 122.230.227.188 1248 | 123.207.84.200 1249 | 202.127.186.239 1250 | 186.0.181.250 1251 | 79.234.173.37 1252 | 188.17.115.196 1253 | 117.213.222.172 1254 | 58.143.152.90 1255 | 186.134.154.237 1256 | 181.211.177.207 1257 | 58.101.59.234 1258 | 37.233.98.46 1259 | 190.48.74.144 1260 | 212.83.149.82 1261 | 186.62.25.80 1262 | 87.138.160.161 1263 | 212.129.47.151 1264 | 59.44.175.164 1265 | 196.215.144.209 1266 | 82.6.131.182 1267 | 172.243.22.81 1268 | 61.177.172.59 1269 | 197.5.29.2 1270 | 168.195.2.51 1271 | 176.31.184.188 1272 | 95.87.5.211 1273 | 221.122.101.203 1274 | 223.99.167.116 1275 | 105.233.224.254 1276 | 218.65.30.38 1277 | 222.188.197.81 1278 | 89.151.162.155 1279 | 1.188.140.203 1280 | 124.150.161.1 1281 | 124.150.161.18 1282 | 110.77.210.183 1283 | 209.141.178.176 1284 | 58.192.29.120 1285 | 31.173.238.30 1286 | 201.27.44.208 1287 | 114.44.137.171 1288 | 182.44.246.3 1289 | 58.221.62.200 1290 | 80.241.220.127 1291 | 78.189.47.125 1292 | 160.202.188.122 1293 | 188.19.20.249 1294 | 182.32.44.235 1295 | 61.139.124.136 1296 | 201.178.196.211 1297 | 113.206.152.205 1298 | 186.178.13.193 1299 | 183.93.223.171 1300 | 113.234.206.156 1301 | 168.90.141.218 1302 | 123.183.209.140 1303 | 223.230.122.171 1304 | 119.193.140.149 1305 | 138.255.105.52 1306 | 202.117.16.147 1307 | 103.207.38.141 1308 | 31.163.45.225 1309 | 42.159.124.14 1310 | 211.105.43.97 1311 | 113.190.209.144 1312 | 212.227.53.241 1313 | 116.204.101.229 1314 | 195.3.144.220 1315 | 122.160.136.64 1316 | 186.47.220.238 1317 | 60.11.113.164 1318 | 222.242.107.7 1319 | 117.253.212.8 1320 | 103.35.83.132 1321 | 177.221.107.149 1322 | 197.93.149.174 1323 | 220.180.172.195 1324 | 188.248.157.236 1325 | 221.234.230.242 1326 | 122.189.193.46 1327 | 221.4.61.183 1328 | 181.23.2.251 1329 | 186.59.180.207 1330 | 183.93.254.152 1331 | 71.233.131.33 1332 | 113.122.40.216 1333 | 91.134.133.251 1334 | 92.170.198.71 1335 | 114.113.234.66 1336 | 73.200.143.72 1337 | 112.101.133.245 1338 | 38.140.191.130 1339 | 186.134.141.189 1340 | 139.196.143.158 1341 | 61.90.70.178 1342 | 77.122.21.130 1343 | 112.87.73.158 1344 | 59.124.142.37 1345 | 181.24.36.28 1346 | 87.106.139.44 1347 | 181.24.41.196 1348 | 186.24.37.180 1349 | 202.206.192.137 1350 | 186.58.134.1 1351 | 103.79.141.96 1352 | 218.87.109.150 1353 | 212.182.23.245 1354 | 184.21.126.241 1355 | 197.234.95.90 1356 | 115.200.127.235 1357 | 203.93.163.19 1358 | 185.165.29.65 1359 | 179.36.55.68 1360 | 181.113.167.231 1361 | 218.74.58.11 1362 | 223.197.203.122 1363 | 104.54.244.202 1364 | 185.165.29.49 1365 | 88.147.252.37 1366 | 139.162.149.121 1367 | 13.88.17.165 1368 | 103.28.112.238 1369 | 123.191.197.61 1370 | 39.75.252.11 1371 | 171.50.217.43 1372 | 201.178.53.165 1373 | 218.65.30.61 1374 | 186.121.240.62 1375 | 58.213.125.178 1376 | 31.163.181.250 1377 | 119.196.206.184 1378 | 181.21.99.199 1379 | 211.220.207.201 1380 | 62.210.252.137 1381 | 183.129.255.34 1382 | 183.144.184.212 1383 | 182.243.79.228 1384 | 208.113.128.214 1385 | 112.25.233.122 1386 | 183.224.132.30 1387 | 186.39.8.1 1388 | 188.92.74.18 1389 | 121.173.131.81 1390 | 190.214.192.59 1391 | 95.60.138.253 1392 | 111.202.93.14 1393 | 115.209.87.246 1394 | 222.73.37.31 1395 | 190.214.14.230 1396 | 186.130.21.160 1397 | 13.64.146.31 1398 | 186.39.13.6 1399 | 218.72.71.141 1400 | 119.193.140.209 1401 | 175.207.29.38 1402 | 119.176.53.5 1403 | 201.177.14.176 1404 | 181.26.4.142 1405 | 218.65.30.251 1406 | 82.199.121.240 1407 | 112.171.20.138 1408 | 218.108.164.238 1409 | 118.69.104.40 1410 | 179.38.253.194 1411 | 31.163.33.173 1412 | 122.166.205.83 1413 | 183.178.203.79 1414 | 27.54.94.58 1415 | 84.6.23.204 1416 | 113.251.170.184 1417 | 115.210.49.163 1418 | 103.207.39.66 1419 | 201.254.82.144 1420 | 182.41.204.195 1421 | 103.207.36.244 1422 | 1.182.87.50 1423 | 121.128.67.5 1424 | 113.105.65.112 1425 | 191.81.51.88 1426 | 170.79.207.49 1427 | 223.202.64.197 1428 | 175.106.17.155 1429 | 183.152.64.150 1430 | 218.63.0.115 -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/jquery-ui.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.12.1 - 2017-05-17 2 | * http://jqueryui.com 3 | * Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=vader&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=aaaaaa&fcHighlight=cccccc&borderColorHighlight=404040&bgImgOpacityHighlight=55&bgTextureHighlight=highlight_hard&bgColorHighlight=555555&iconColorActive=f29a00&fcActive=ffffff&borderColorActive=000000&bgImgOpacityActive=15&bgTextureActive=inset_soft&bgColorActive=121212&iconColorHover=c98000&fcHover=000000&borderColorHover=dddddd&bgImgOpacityHover=60&bgTextureHover=highlight_soft&bgColorHover=dddddd&iconColorDefault=666666&fcDefault=333333&borderColorDefault=cccccc&bgImgOpacityDefault=35&bgTextureDefault=highlight_soft&bgColorDefault=adadad&iconColorContent=777777&fcContent=eeeeee&borderColorContent=404040&bgImgOpacityContent=16&bgTextureContent=gloss_wave&bgColorContent=121212&iconColorHeader=cccccc&fcHeader=ffffff&borderColorHeader=404040&bgImgOpacityHeader=15&bgTextureHeader=highlight_hard&bgColorHeader=888888&cornerRadius=5px&fsDefault=1.1em&fwDefault=normal&ffDefault=Helvetica%2CArial%2Csans-serif 5 | * Copyright jQuery Foundation and other contributors; Licensed MIT */ 6 | 7 | .ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #ccc}.ui-widget-content{border:1px solid #404040;background:#121212 url("images/ui-bg_gloss-wave_16_121212_500x100.png") 50% top repeat-x;color:#eee}.ui-widget-content a{color:#eee}.ui-widget-header{border:1px solid #404040;background:#888 url("images/ui-bg_highlight-hard_15_888888_1x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #ccc;background:#adadad url("images/ui-bg_highlight-soft_35_adadad_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#333}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#333;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ddd;background:#ddd url("images/ui-bg_highlight-soft_60_dddddd_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#000}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#000;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #000;background:#121212 url("images/ui-bg_inset-soft_15_121212_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#000;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #404040;background:#555 url("images/ui-bg_highlight-hard_55_555555_1x100.png") 50% top repeat-x;color:#ccc}.ui-state-checked{border:1px solid #404040;background:#555}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#ccc}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_cccccc_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_c98000_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f29a00_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_aaaaaa_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_666666_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666} -------------------------------------------------------------------------------- /public/jquery-ui-1.12.1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jQuery UI Example Page 6 | 7 | 50 | 51 | 52 | 53 |

Welcome to jQuery UI!

54 | 55 |
56 |

This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.

57 |
58 | 59 |

YOUR COMPONENTS:

60 | 61 | 62 | 63 |

Accordion

64 |
65 |

First

66 |
Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
67 |

Second

68 |
Phasellus mattis tincidunt nibh.
69 |

Third

70 |
Nam dui erat, auctor a, dignissim quis.
71 |
72 | 73 | 74 | 75 | 76 |

Autocomplete

77 |
78 | 79 |
80 | 81 | 82 | 83 | 84 |

Button

85 | 86 | 87 | 88 | 89 | 90 | 91 |

Checkboxradio

92 |
93 |
94 | 95 | 96 | 97 |
98 |
99 | 100 | 101 | 102 | 103 |

Controlgroup

104 |
105 | Rental Car 106 |
107 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 |
126 |
127 | 128 | 129 | 130 | 131 |

Tabs

132 |
133 | 138 |
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
139 |
Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
140 |
Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
141 |
142 | 143 | 144 | 145 |

Dialog

146 |

147 | 150 |

151 | 152 |

Overlay and Shadow Classes

153 |
154 |

Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

155 | 156 | 157 |
158 |
159 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 160 |
161 | 162 |
163 | 164 | 165 |
166 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

167 |
168 | 169 | 170 | 171 |

Framework Icons (content color preview)

172 |
    173 |
  • 174 |
  • 175 |
  • 176 |
  • 177 |
  • 178 |
  • 179 |
  • 180 |
  • 181 |
  • 182 |
  • 183 |
  • 184 |
  • 185 |
  • 186 |
  • 187 |
  • 188 |
  • 189 |
  • 190 |
  • 191 |
  • 192 |
  • 193 |
  • 194 |
  • 195 |
  • 196 |
  • 197 |
  • 198 |
  • 199 |
  • 200 |
  • 201 |
  • 202 |
  • 203 |
  • 204 |
  • 205 |
  • 206 |
  • 207 |
  • 208 |
  • 209 |
  • 210 |
  • 211 |
  • 212 |
  • 213 |
  • 214 |
  • 215 |
  • 216 |
  • 217 |
  • 218 |
  • 219 |
  • 220 |
  • 221 |
  • 222 |
  • 223 |
  • 224 |
  • 225 |
  • 226 |
  • 227 |
  • 228 |
  • 229 |
  • 230 |
  • 231 |
  • 232 |
  • 233 |
  • 234 |
  • 235 |
  • 236 |
  • 237 |
  • 238 |
  • 239 |
  • 240 |
  • 241 |
  • 242 |
  • 243 |
  • 244 |
  • 245 |
  • 246 |
  • 247 |
  • 248 |
  • 249 |
  • 250 |
  • 251 |
  • 252 |
  • 253 |
  • 254 |
  • 255 |
  • 256 |
  • 257 |
  • 258 |
  • 259 |
  • 260 |
  • 261 |
  • 262 |
  • 263 |
  • 264 |
  • 265 |
  • 266 |
  • 267 |
  • 268 |
  • 269 |
  • 270 |
  • 271 |
  • 272 |
  • 273 |
  • 274 |
  • 275 |
  • 276 |
  • 277 |
  • 278 |
  • 279 |
  • 280 |
  • 281 |
  • 282 |
  • 283 |
  • 284 |
  • 285 |
  • 286 |
  • 287 |
  • 288 |
  • 289 |
  • 290 |
  • 291 |
  • 292 |
  • 293 |
  • 294 |
  • 295 |
  • 296 |
  • 297 |
  • 298 |
  • 299 |
  • 300 |
  • 301 |
  • 302 |
  • 303 |
  • 304 |
  • 305 |
  • 306 |
  • 307 |
  • 308 |
  • 309 |
  • 310 |
  • 311 |
  • 312 |
  • 313 |
  • 314 |
  • 315 |
  • 316 |
  • 317 |
  • 318 |
  • 319 |
  • 320 |
  • 321 |
  • 322 |
  • 323 |
  • 324 |
  • 325 |
  • 326 |
  • 327 |
  • 328 |
  • 329 |
  • 330 |
  • 331 |
  • 332 |
  • 333 |
  • 334 |
  • 335 |
  • 336 |
  • 337 |
  • 338 |
  • 339 |
  • 340 |
  • 341 |
  • 342 |
  • 343 |
  • 344 |
  • 345 |
  • 346 |
347 | 348 | 349 | 350 |

Slider

351 |
352 | 353 | 354 | 355 | 356 |

Datepicker

357 |
358 | 359 | 360 | 361 | 362 |

Progressbar

363 |
364 | 365 | 366 | 367 | 368 |

Selectmenu

369 | 376 | 377 | 378 | 379 | 380 |

Spinner

381 | 382 | 383 | 384 | 385 | 386 |

Menu

387 | 402 | 403 | 404 | 405 | 406 |

Tooltip

407 |

408 | Tooltips can be attached to any element. When you hover 409 | the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip. 410 |

411 | 412 | 413 | 414 |

Highlight / Error

415 |
416 |
417 |

418 | Hey! Sample ui-state-highlight style.

419 |
420 |
421 |
422 |
423 |
424 |

425 | Alert: Sample ui-state-error style.

426 |
427 |
428 | 429 | 430 | 431 | 558 | 559 | 560 | --------------------------------------------------------------------------------