├── .DS_Store
├── .gitignore
├── LICENSE
├── README.md
├── docker_lib
├── .DS_Store
├── __init__.py
├── docker_add.py
├── docker_del.py
└── docker_get.py
├── github_images
├── .DS_Store
├── web_range平台使用.gif
├── web_range打开环境图片.jpg
├── web_range添加环境图片.jpg
├── web_range添加用户.jpg
├── web_range状态图片.jpg
├── web_range环境图片.jpg
└── web_range首页图片.jpg
├── log
├── .DS_Store
├── app_info.log
└── logger.py
├── nginx.conf
├── requirements.txt
├── run.py
├── static
├── .DS_Store
├── buss
│ ├── .DS_Store
│ ├── css
│ │ ├── detail.css
│ │ ├── main.css
│ │ ├── plugin.css
│ │ ├── search.css
│ │ └── task.css
│ └── js
│ │ ├── .DS_Store
│ │ ├── common.js
│ │ ├── config.js
│ │ └── plugin.js
├── css
│ ├── .DS_Store
│ ├── bootstrap.min.css
│ ├── components.css
│ ├── core.css
│ ├── docker.css
│ ├── dropify.min.css
│ ├── elements.css
│ ├── icons.css
│ ├── menu.css
│ ├── pages.css
│ ├── responsive.css
│ ├── style_line.css
│ └── typicons.css
├── fonts
│ ├── Material-Design-Iconic-Font.ttf
│ ├── Material-Design-Iconic-Font.woff
│ ├── Material-Design-Iconic-Font.woff2
│ ├── dropify.ttf
│ ├── dropify.woff
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ ├── fontawesome-webfont.woff2
│ ├── themify.ttf
│ └── themify.woff
├── google
│ ├── -L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── 0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── 77FXFjRbGzN4aCrSFhlh3oX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── 97uahxiqZRoncBaCEI3aW4X0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2
│ ├── I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── JaMH4jmmzP070-OYo03anaCWcynf_cDxXwCLxiixG1c.woff2
│ ├── Karla.css
│ ├── Ks_cVxiCiwUWVsFWFA3Bjn-_kf6ByYO6CLYdB4HQE-Y.woff2
│ ├── NJ4vxlgWwWbEsv18dAhqnn-_kf6ByYO6CLYdB4HQE-Y.woff2
│ ├── NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── PwZc-YbIL414wB9rB1IAPYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── Rancho.css
│ ├── Roboto.css
│ ├── RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2
│ ├── S1bXQ0LrY7AzefpgNae9sYDGDUGfDkXyfkzVDelzfFk.woff2
│ ├── UX6i4JxQDm3fVTc1CPuwqoX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── ZLqKeelYbATG60EpZBSDy4X0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── _VYFx-s824kXq_Ul2BHqYH-_kf6ByYO6CLYdB4HQE-Y.woff2
│ ├── d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2
│ ├── isZ-wbCXNKAbnjo6_TwHToX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── jSN2CGVDbcVyCnfJfjSdfIX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── mbmhprMH69Zi6eEPBYVFhYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── mx9Uck6uB63VIKFYnEMXrYX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── oHi30kwQWvpCWqAhzHcCSIX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2
│ ├── oOeFwZNlrTefzLYmlVV1UIX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── r3NqIkFHFaF3esZDc3WT5BkAz4rYn47Zy2rvigWQf6w.woff2
│ ├── rGvHdJnr2l75qb0YND9NyIX0hVgzZQUfRDuZrPvH3D8.woff2
│ ├── sTdaA6j0Psb920Vjv-mrzH-_kf6ByYO6CLYdB4HQE-Y.woff2
│ ├── suoMYBGv5sGCUIrF9mVTfXYhjbSpvc47ee6xR_80Hnw.woff2
│ ├── tnj4SB6DNbdaQnsM8CFqBX-_kf6ByYO6CLYdB4HQE-Y.woff2
│ ├── uYECMKoHcO9x1wdmbyHIm3-_kf6ByYO6CLYdB4HQE-Y.woff2
│ └── yJONObwbYmkcfKME0p1HqevvDin1pK8aKteLpeZ5c0A.woff2
├── images
│ ├── .DS_Store
│ ├── big
│ │ ├── .DS_Store
│ │ ├── bg1.jpg
│ │ └── bg2.jpg
│ ├── down.png
│ ├── favicon.jpg
│ ├── multiple-arrow.png
│ └── up.png
├── js
│ ├── .DS_Store
│ ├── Chart.js
│ ├── ajaxfileupload.js
│ ├── bootstrap.min.js
│ ├── detect.js
│ ├── dropify.min.js
│ ├── fastclick.js
│ ├── jquery.app.js
│ ├── jquery.blockUI.js
│ ├── jquery.core.js
│ ├── jquery.counterup.min.js
│ ├── jquery.min.js
│ ├── jquery.nicescroll.js
│ ├── jquery.scrollTo.min.js
│ ├── jquery.slimscroll.js
│ ├── modernizr.min.js
│ ├── module.min.js
│ ├── npm.js
│ ├── pace.min.js
│ ├── uploader.min.js
│ ├── waves.js
│ └── wow.min.js
├── less
│ ├── components.less
│ ├── core.less
│ ├── elements.less
│ ├── icons.less
│ ├── icons
│ │ ├── css
│ │ │ └── material-design-iconic-font.css
│ │ ├── font-awesome
│ │ │ ├── HELP-US-OUT.txt
│ │ │ ├── css
│ │ │ │ ├── font-awesome.css
│ │ │ │ ├── font-awesome.min.css
│ │ │ │ ├── mixins.css
│ │ │ │ └── variables.css
│ │ │ ├── fonts
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ └── fontawesome-webfont.woff2
│ │ │ ├── less
│ │ │ │ ├── animated.less
│ │ │ │ ├── bordered-pulled.less
│ │ │ │ ├── core.less
│ │ │ │ ├── fixed-width.less
│ │ │ │ ├── font-awesome.less
│ │ │ │ ├── icons.less
│ │ │ │ ├── larger.less
│ │ │ │ ├── list.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── path.less
│ │ │ │ ├── rotated-flipped.less
│ │ │ │ ├── stacked.less
│ │ │ │ └── variables.less
│ │ │ └── scss
│ │ │ │ ├── _animated.scss
│ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ ├── _core.scss
│ │ │ │ ├── _fixed-width.scss
│ │ │ │ ├── _icons.scss
│ │ │ │ ├── _larger.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _path.scss
│ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ ├── _stacked.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ └── font-awesome.scss
│ │ ├── material-design-iconic-font
│ │ │ ├── css
│ │ │ │ ├── material-design-iconic-font.css
│ │ │ │ └── material-design-iconic-font.min.css
│ │ │ ├── fonts
│ │ │ │ ├── Material-Design-Iconic-Font.eot
│ │ │ │ ├── Material-Design-Iconic-Font.svg
│ │ │ │ ├── Material-Design-Iconic-Font.ttf
│ │ │ │ ├── Material-Design-Iconic-Font.woff
│ │ │ │ └── Material-Design-Iconic-Font.woff2
│ │ │ └── material-design-iconic-font.less
│ │ └── themify-icons
│ │ │ ├── fonts
│ │ │ ├── themify.eot
│ │ │ ├── themify.svg
│ │ │ ├── themify.ttf
│ │ │ └── themify.woff
│ │ │ ├── ie7
│ │ │ ├── ie7.css
│ │ │ └── ie7.js
│ │ │ ├── themify-icons.css
│ │ │ └── themify-icons.less
│ ├── menu.less
│ ├── pages.less
│ ├── responsive.less
│ └── variables.less
└── plugin
│ ├── bootstrap-datepicker
│ └── dist
│ │ ├── css
│ │ ├── bootstrap-datepicker.css
│ │ ├── bootstrap-datepicker.min.css
│ │ ├── bootstrap-datepicker.standalone.css
│ │ ├── bootstrap-datepicker.standalone.min.css
│ │ ├── bootstrap-datepicker3.css
│ │ ├── bootstrap-datepicker3.min.css
│ │ ├── bootstrap-datepicker3.standalone.css
│ │ └── bootstrap-datepicker3.standalone.min.css
│ │ ├── js
│ │ ├── bootstrap-datepicker.js
│ │ └── bootstrap-datepicker.min.js
│ │ └── locales
│ │ ├── bootstrap-datepicker.ar.min.js
│ │ ├── bootstrap-datepicker.az.min.js
│ │ ├── bootstrap-datepicker.bg.min.js
│ │ ├── bootstrap-datepicker.bs.min.js
│ │ ├── bootstrap-datepicker.ca.min.js
│ │ ├── bootstrap-datepicker.cs.min.js
│ │ ├── bootstrap-datepicker.cy.min.js
│ │ ├── bootstrap-datepicker.da.min.js
│ │ ├── bootstrap-datepicker.de.min.js
│ │ ├── bootstrap-datepicker.el.min.js
│ │ ├── bootstrap-datepicker.en-GB.min.js
│ │ ├── bootstrap-datepicker.es.min.js
│ │ ├── bootstrap-datepicker.et.min.js
│ │ ├── bootstrap-datepicker.eu.min.js
│ │ ├── bootstrap-datepicker.fa.min.js
│ │ ├── bootstrap-datepicker.fi.min.js
│ │ ├── bootstrap-datepicker.fo.min.js
│ │ ├── bootstrap-datepicker.fr-CH.min.js
│ │ ├── bootstrap-datepicker.fr.min.js
│ │ ├── bootstrap-datepicker.gl.min.js
│ │ ├── bootstrap-datepicker.he.min.js
│ │ ├── bootstrap-datepicker.hr.min.js
│ │ ├── bootstrap-datepicker.hu.min.js
│ │ ├── bootstrap-datepicker.hy.min.js
│ │ ├── bootstrap-datepicker.id.min.js
│ │ ├── bootstrap-datepicker.is.min.js
│ │ ├── bootstrap-datepicker.it-CH.min.js
│ │ ├── bootstrap-datepicker.it.min.js
│ │ ├── bootstrap-datepicker.ja.min.js
│ │ ├── bootstrap-datepicker.ka.min.js
│ │ ├── bootstrap-datepicker.kh.min.js
│ │ ├── bootstrap-datepicker.kk.min.js
│ │ ├── bootstrap-datepicker.kr.min.js
│ │ ├── bootstrap-datepicker.lt.min.js
│ │ ├── bootstrap-datepicker.lv.min.js
│ │ ├── bootstrap-datepicker.me.min.js
│ │ ├── bootstrap-datepicker.mk.min.js
│ │ ├── bootstrap-datepicker.ms.min.js
│ │ ├── bootstrap-datepicker.nb.min.js
│ │ ├── bootstrap-datepicker.nl-BE.min.js
│ │ ├── bootstrap-datepicker.nl.min.js
│ │ ├── bootstrap-datepicker.no.min.js
│ │ ├── bootstrap-datepicker.pl.min.js
│ │ ├── bootstrap-datepicker.pt-BR.min.js
│ │ ├── bootstrap-datepicker.pt.min.js
│ │ ├── bootstrap-datepicker.ro.min.js
│ │ ├── bootstrap-datepicker.rs-latin.min.js
│ │ ├── bootstrap-datepicker.rs.min.js
│ │ ├── bootstrap-datepicker.ru.min.js
│ │ ├── bootstrap-datepicker.sk.min.js
│ │ ├── bootstrap-datepicker.sl.min.js
│ │ ├── bootstrap-datepicker.sq.min.js
│ │ ├── bootstrap-datepicker.sr-latin.min.js
│ │ ├── bootstrap-datepicker.sr.min.js
│ │ ├── bootstrap-datepicker.sv.min.js
│ │ ├── bootstrap-datepicker.sw.min.js
│ │ ├── bootstrap-datepicker.th.min.js
│ │ ├── bootstrap-datepicker.tr.min.js
│ │ ├── bootstrap-datepicker.uk.min.js
│ │ ├── bootstrap-datepicker.vi.min.js
│ │ ├── bootstrap-datepicker.zh-CN.min.js
│ │ └── bootstrap-datepicker.zh-TW.min.js
│ ├── jquery-knob
│ ├── excanvas.js
│ └── jquery.knob.js
│ ├── jquery.poshytip.min.js
│ ├── jquery.waypoints.min.js
│ ├── morris
│ ├── morris.css
│ ├── morris.js
│ └── morris.min.js
│ ├── multiselect
│ ├── css
│ │ └── multi-select.css
│ ├── img
│ │ └── switch.png
│ └── js
│ │ └── jquery.multi-select.js
│ ├── raphael
│ └── raphael-min.js
│ ├── sweetalert
│ ├── sweetalert.css
│ └── sweetalert.min.js
│ ├── switchery
│ ├── switchery.min.css
│ └── switchery.min.js
│ ├── tip-darkgray
│ ├── tip-darkgray.css
│ ├── tip-darkgray.png
│ └── tip-darkgray_arrows.png
│ └── tip-twitter
│ ├── tip-twitter.css
│ └── tip-twitter_arrows.gif
├── supervisor.conf
├── system_info
├── .DS_Store
├── __init__.py
└── get_sysinfo.py
├── templates
├── .DS_Store
├── 404.html
├── 500.html
├── change_pass.html
├── docker.html
├── images.html
├── layout.html
├── login.html
├── logout.html
├── search.html
├── setting.html
└── status.html
├── test.db
└── test.json
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | env/
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 |
49 | # Translations
50 | *.mo
51 | *.pot
52 |
53 | # Django stuff:
54 | *.log
55 | local_settings.py
56 |
57 | # Flask stuff:
58 | instance/
59 | .webassets-cache
60 |
61 | # Scrapy stuff:
62 | .scrapy
63 |
64 | # Sphinx documentation
65 | docs/_build/
66 |
67 | # PyBuilder
68 | target/
69 |
70 | # Jupyter Notebook
71 | .ipynb_checkpoints
72 |
73 | # pyenv
74 | .python-version
75 |
76 | # celery beat schedule file
77 | celerybeat-schedule
78 |
79 | # SageMath parsed files
80 | *.sage.py
81 |
82 | # dotenv
83 | .env
84 |
85 | # virtualenv
86 | .venv
87 | venv/
88 | ENV/
89 |
90 | # Spyder project settings
91 | .spyderproject
92 | .spyproject
93 |
94 | # Rope project settings
95 | .ropeproject
96 |
97 | # mkdocs documentation
98 | /site
99 |
100 | # mypy
101 | .mypy_cache/
102 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Web Range平台(Web漏洞、Ctf场景靶场)
2 | * 一个Web靶场平台,可以导入各种Docker漏洞场景和Ctf场景。可以用来部署在私人、公有网络中,以供练习使用。
3 | * 突然发现,写说明书才是最难的!!!
4 |
5 |
6 | # 鸣谢
7 | * 先感谢伟大的开源社区,让这个小网站可以顺利完成。
8 |
9 | * 使用web框架[tornado](http://www.tornadoweb.org/en/stable/)(感谢),web页面使用[xunfeng](https://github.com/ysrc/xunfeng)前端界面(感谢ysrc,已征得同意使用),后端使用[docker](https://github.com/docker/docker-py)模块作为核心(感谢),感谢[docker](https://docker.com)虚拟化平台,感谢所有在项目中用到的优秀模块,感谢在网络中分享优秀代码的大佬。
10 |
11 | # 系统环境
12 |
13 | > python版本:3.6
14 | >
15 | > tornado版本:5.0
16 | >
17 | > 操作系统版本:ubuntu16.04+
18 | >
19 | > Docker版本:18.03.0-ce-mac60 (23751)(2017年之后的版本)
20 | >
21 | > 数据库:sqlite3
22 | >
23 | >默认账户密码:admin/123456
24 |
25 |
26 | # 环境配置
27 |
28 | 1、安装ubuntu系统16.04
29 |
30 | 2、clone项目
31 |
32 | ```sh
33 | git clone https://github.com/cleverbao/WebRange.git
34 | ```
35 |
36 | 3、安装python3.6
37 |
38 | ``` sh
39 | sudo apt install python3 python3-dev python3-pip -y
40 | ```
41 |
42 | 4、安装依赖库
43 |
44 | ``` sh
45 | cd web_range
46 | pip install -r requirements.txt
47 | ```
48 |
49 | 5、安装最新版本的docker
50 |
51 | ``` sh
52 | #! 安装步骤只适合Ubuntu16.04版本
53 | #! 如果是其他版本参考https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
54 | sudo apt-get remove docker docker-engine docker.io
55 | sudo apt-get update
56 | sudo apt-get install \
57 | apt-transport-https \
58 | ca-certificates \
59 | curl \
60 | software-properties-common
61 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
62 | sudo apt-key fingerprint 0EBFCD88
63 | sudo add-apt-repository \
64 | "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
65 | $(lsb_release -cs) \
66 | stable"
67 | sudo apt-get update
68 | sudo apt-get install docker-ce
69 | #! 如果使用非root用户运行docker,需要运行一下命令:
70 | sudo groupadd docker
71 | sudo gpasswd -a ${USER} docker
72 | sudo service docker restart
73 | ```
74 |
75 | 6、安装sqlit3
76 |
77 | ``` sh
78 | sudo apt install sqlite3 -y
79 | ```
80 |
81 | 7、运行系统
82 |
83 | ``` sh
84 | python3 run.py
85 | ```
86 |
87 | 8、使用supervisor开启守护进程(非必须)
88 |
89 | ``` sh
90 | vim ./supervisor.conf
91 | #! 修改配置项
92 | #! 将‘directory = /root/WebRange’中’=‘后面的内容改为项目所在目录
93 | #! 将‘user = root’中‘=’后面的内容,改为用来启动程序的用户
94 | cp ./supervisor.conf /etc/supervisor/conf.d/WebRange.conf
95 | sudo service supervisord restart
96 | ```
97 |
98 | 9、由于程序使用了websocket进行数据传输,因此如果需要使用nginx进行反向代理,可以参考使用以下配置文件
99 |
100 | ``` conf
101 | server {
102 | listen 80;
103 | listen [::]:80;
104 |
105 | server_name localhost;
106 | error_page 404 = /404.html;
107 |
108 | # root /var/www/example.com;
109 | # index index.html;
110 | location /static/{
111 | alias /root/WebRange/static/;
112 | expires 24h;
113 | }
114 | location / {
115 | proxy_pass_header Server;
116 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
117 | proxy_http_version 1.1;
118 | proxy_set_header Upgrade $http_upgrade;
119 | proxy_set_header Connection "upgrade";
120 | proxy_set_header Host $http_host;
121 | proxy_redirect off;
122 | proxy_set_header X-Real-IP $remote_addr;
123 | proxy_pass http://127.0.0.1:8000/;
124 | }
125 | }
126 | ```
127 |
128 |
129 |
130 | ## 主要功能
131 |
132 | * 提供Web界面,通过登陆用户,打开实验场景进行练习。
133 |
134 | 
135 |
136 | * 提供了接口进行添加用户,需要系统密码(可以在run.py中进行修改),/add_user?sys_pass=admin123&username=test&password=test&email=test@test.com
137 |
138 | 
139 |
140 | * 用户登陆后,可以搜索想要练习的场景关键字。
141 |
142 | * 用户登陆后,可以在环境界面查看所有的实验场景,可以选择场景开启开启环境(由于docker的问题,开启web服务,第一次访问会403,刷新一下就可以了)。
143 |
144 | 
145 |
146 | * 实验场景开启后,会在当前主机随机映射端口,如果容器开启了80和8080端口,程序将会自动打开对应的Web页面。如果环境需要开启多个端口,可以在状态页面看到所有开启的端口信息,如果是web服务会自动生成链接,其他的端口会显示容器端口和主机映射端口。
147 |
148 | 
149 |
150 | * 在环境页面提供了新增环境的功能,可以通过填写数据新增环境,也可以直接上传文件新增环境。
151 |
152 | * 增加环境时需要填写每一项的内容,环境分为ctf环境和漏洞复现环境,ctf环境需要加入flag(现阶段没有验证flag功能,后续版本会加入flag验证功能或ctf比赛功能)。
153 |
154 | 
155 |
156 | * 用户登陆后,可以在状态页面管理已经开启的环境。
157 |
158 | 
159 |
160 |
161 | * 在设置页面可以修改当前用户密码。
162 |
163 | > 通过超级密码可以添加用户,添加场景,没有超级密码任何账户都没有权限操作。
164 | >
165 |
166 |
167 |
168 |
169 |
170 |
171 | # 操作视频
172 |
173 |
174 |
175 | 
176 |
177 |
178 |
179 | # 附加说明
180 |
181 | > 本项目禁止作用于商业用途。
182 |
--------------------------------------------------------------------------------
/docker_lib/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/docker_lib/.DS_Store
--------------------------------------------------------------------------------
/docker_lib/__init__.py:
--------------------------------------------------------------------------------
1 | #! coding=utf-8
2 | # 初始化docker模块,直接提供三个控制借口,可以直接操作docker镜像和容器。
3 | import docker
4 |
5 | from log.logger import logger
6 | from docker_lib.docker_add import Dokcers_Add
7 | from docker_lib.docker_del import Dokcers_Del
8 | from docker_lib.docker_get import Dokcers_Get
9 |
10 | try:
11 | client = docker.from_env()
12 | client.images.list()
13 | logger.info('连接到Docker进程。')
14 | except Exception as e :
15 | logger.warning('连接本地Docker进程失败,可能是Docker进程未开启!')
16 | exit()
17 |
18 | Dockers_Start = Dokcers_Add(client)
19 | Dockers_Stop = Dokcers_Del(client)
20 | Dockers_Info = Dokcers_Get(client)
21 |
22 |
--------------------------------------------------------------------------------
/docker_lib/docker_add.py:
--------------------------------------------------------------------------------
1 | #!coding=utf-8
2 | # 接受指令,开启一个docker容器,并返回一个容器id。
3 | # 接受指令,新建一个docker镜像,并返回一个镜像id。
4 |
5 | from docker import errors as docker_errors
6 | from . import logger
7 |
8 |
9 | class Dokcers_Add():
10 |
11 | def __init__(self, client):
12 | super(Dokcers_Add, self).__init__()
13 | self.client = client
14 |
15 | # 使用docker pull获取一个docekr镜像
16 | def Add_Images(self, Images_Name, Images_Tag = 'latest'):
17 | '''
18 | :param Images_Name: pull的镜像名字
19 | :param Images_Tag: 镜像的标签,默认是latest
20 | :return: docker镜像对象。
21 | '''
22 |
23 | try:
24 | Images = self.client.images.pull(Images_Name, Images_Tag)
25 | logger.info('创建一个镜像,镜像ID为:%s' % Images.id)
26 | except docker_errors.APIError as e:
27 | logger.warning('Pull一个容器失败,因为Docker服务出错!')
28 | return False
29 | return Images
30 |
31 |
32 |
33 | # 开启一个容器
34 | def Start_Containers(self, Images_Id, Ports, Mem_Limit = '', Command = '', Volumes_Path = {}):
35 | '''
36 |
37 | :param Images_Id: 使用的镜像ID
38 | :param Mem_Limit: 设置分配的内存大小,默认为30M。
39 | :param Ports: 开启容器转发的端口,是一个字典类型的参数,容器端口对应主机端口,eg:{'2222/tcp': 3333,'1111/tcp': ('127.0.0.1', 1111)},{'1111/tcp': [1234, 4567]}
40 | :param Command: 启动容器时运行的命令,默认为空,一般我们不需要修改这个参数。
41 | :param Volumes_Path: 启动容器时挂载的目录,默认为空。类型是一个字典。eg:{'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
42 | '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}} ,bind The path to mount the volume inside the container
43 | mode Either rw to mount the volume read/write, or ro to mount it read-only.
44 | :return: 返回一个容器ID
45 | '''
46 |
47 | try:
48 | Containers = self.client.containers.run(Images_Id, \
49 | detach = True, \
50 | mem_swappiness = 0, \
51 | auto_remove = True, \
52 | ports = Ports, \
53 | command = Command, \
54 | volumes = Volumes_Path
55 | )
56 | logger.info('创建一个容器,容器ID为:%s' % Containers.id)
57 |
58 | except docker_errors.ContainerError as e:
59 | logger.warning('创建一个容器失败,因为容器以非零退出代码退出并且分离!')
60 | return False
61 | except docker_errors.ImageNotFound as e:
62 | logger.warning('创建一个容器失败,因为指定的容器不存在!')
63 | return False
64 | except docker_errors.APIError as e:
65 | logger.warning('创建一个容器失败,因为Docker服务出错!')
66 | return False
67 |
68 | return Containers.id
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/docker_lib/docker_del.py:
--------------------------------------------------------------------------------
1 | #!coding=utf-8
2 | # 接受指令,删除一个docker容器,并返回true或false。
3 | # 接受指令,删除一个docker镜像,并返回true或false。
4 |
5 | from docker import errors as docker_errors
6 | from . import logger
7 |
8 | class Dokcers_Del():
9 |
10 | def __init__(self, client):
11 | super(Dokcers_Del, self).__init__()
12 | self.client = client
13 |
14 | # 删除一个镜像
15 | def Remove_Images(self, Images_Id):
16 | '''
17 |
18 | :param Images_Id: 一个镜像的ID
19 | :return: true或者false
20 | '''
21 |
22 | try:
23 | self.client.images.remove(image = Images_Id)
24 | logger.info('删除了一个镜像,镜像ID是:%s' % Images_Id)
25 |
26 | except docker_errors.APIError as e:
27 | logger.warning('删除镜像失败,因为Docker服务出错!')
28 | return False
29 |
30 | return True
31 |
32 |
33 | # 停止一个容器
34 | def Stop_Containers(self, Con):
35 | '''
36 |
37 | :param Con: 一个docker容器的对象,需要先使用docker_get.Get_Images_Message()获取一个容器对象。
38 | :return: true或false
39 | '''
40 | try:
41 | Con.remove(v = True, force = True)
42 | logger.info('停止了一个容器,容器ID是:%s' % Con.id)
43 | except docker_errors.APIError as e:
44 | logger.warning('停止容器失败,因为Docker服务出错!')
45 | return False
46 |
47 | return True
48 |
--------------------------------------------------------------------------------
/docker_lib/docker_get.py:
--------------------------------------------------------------------------------
1 | #!coding=utf-8
2 | # 接受指令,获取一个docker容器信息,并返回。
3 | # 接受指令,获取一个docker镜像信息,并返回。
4 |
5 | from docker import errors as docker_errors
6 | from . import logger
7 |
8 |
9 | class Dokcers_Get():
10 |
11 | def __init__(self, client):
12 | super(Dokcers_Get, self).__init__()
13 | self.client = client
14 |
15 | # 获取所有的镜像信息
16 | def Get_All_Images_Message(self):
17 | '''
18 |
19 | :return: 获取所有主机中的docker镜像,返回一个镜像的对象组成的列表。
20 | '''
21 |
22 | try:
23 | Images_List = self.client.images.list()
24 | logger.info('获取到所有的镜像信息。')
25 |
26 | except docker_errors.APIError as e:
27 | logger.warning('获取镜像信息失败,因为Docker服务出错!')
28 | return False
29 | return Images_List
30 |
31 | # 获取一个镜像的信息
32 | def Get_Images_Message(self, Images_Name):
33 | '''
34 |
35 | :param Images_Name: 一个doker镜像名字
36 | :return: 获取到的docker镜像对象。
37 | '''
38 | try:
39 | Images = self.client.images.get(Images_Name)
40 | logger.info('获取到一个镜像信息,镜像ID是:%s' % Images.id)
41 | except docker_errors.ImageNotFound as e:
42 | logger.warning('获取镜像信息失败,因为不能够找到这个镜像!')
43 | return False
44 | except docker_errors.APIError as e:
45 | logger.warning('获取镜像信息失败,因为Docker服务出错!')
46 | return False
47 | return Images
48 |
49 |
50 |
51 | # 获取一个容器的信息
52 | def Get_Containers_Message(self, Containers_Id):
53 | '''
54 |
55 | :param Containers_Id: docker容器的ID
56 | :return: 一个docker容器的对象。
57 | '''
58 |
59 | try:
60 | Con = self.client.containers.get(Containers_Id)
61 | logger.info('获取到一个容器对象。')
62 | except docker_errors.NotFound as e:
63 | logger.warning('获取容器对象失败,因为不能够找到这个容器!')
64 | return False
65 | except docker_errors.APIError as e:
66 | logger.warning('获取容器对象失败,因为Docker服务出错!')
67 | return False
68 | return Con
69 |
70 |
71 | # 获取所有的容器信息
72 | def Get_All_User_Containers(self):
73 | '''
74 |
75 | :return: 返回所有的docker容器对象。组成一个list。
76 | '''
77 |
78 | try:
79 | Con_List = self.client.containers.list(all = True)
80 | logger.info('获取到所有容器对象。')
81 | except docker_errors.APIError as e :
82 | logger.warning('获取所有的容器对象失败,因为Docker服务出错!')
83 | return False
84 | return Con_List
85 |
86 | # 获取所有以某个镜像建立的容器
87 | def Get_All_Images_Containers(self, Images_Id):
88 | '''
89 |
90 | :param Images_Id: docker镜像的ID
91 | :return: 所有以某个docker镜像建立的容器对象,组成一个list。
92 | '''
93 |
94 | try:
95 | Con_List = self.client.containers.list(filters = {'ancestor' : Images_Id})
96 | logger.info('获取到所有ID为%s的镜像的容器对象。' % Images_Id)
97 | except docker_errors.APIError as e:
98 | logger.warning('获取所有ID为%s的镜像的容器对象。失败,因为Docker服务出错!' % Containers_Name)
99 | return False
100 | return Con_List
101 |
102 |
--------------------------------------------------------------------------------
/github_images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/.DS_Store
--------------------------------------------------------------------------------
/github_images/web_range平台使用.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range平台使用.gif
--------------------------------------------------------------------------------
/github_images/web_range打开环境图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range打开环境图片.jpg
--------------------------------------------------------------------------------
/github_images/web_range添加环境图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range添加环境图片.jpg
--------------------------------------------------------------------------------
/github_images/web_range添加用户.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range添加用户.jpg
--------------------------------------------------------------------------------
/github_images/web_range状态图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range状态图片.jpg
--------------------------------------------------------------------------------
/github_images/web_range环境图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range环境图片.jpg
--------------------------------------------------------------------------------
/github_images/web_range首页图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/github_images/web_range首页图片.jpg
--------------------------------------------------------------------------------
/log/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/log/.DS_Store
--------------------------------------------------------------------------------
/log/app_info.log:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/log/app_info.log
--------------------------------------------------------------------------------
/log/logger.py:
--------------------------------------------------------------------------------
1 | #! coding=utf-8
2 | import logging
3 |
4 | logger = logging.getLogger() # 不加名称设置root logger
5 | logger.setLevel(logging.INFO)
6 |
7 | formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
8 | datefmt = '%Y-%m-%d %H:%M:%S'
9 | )
10 |
11 | # 使用FileHandler输出到文件
12 | File_log = logging.FileHandler('./log/app_info.log', 'r+')
13 | File_log.setLevel(logging.INFO)
14 | File_log.setFormatter(formatter)
15 |
16 | # 使用StreamHandler输出到屏幕
17 | Terminal_log = logging.StreamHandler()
18 | Terminal_log.setLevel(logging.INFO)
19 | Terminal_log.setFormatter(formatter)
20 |
21 | # 添加两个Handler
22 | logger.addHandler(Terminal_log)
23 | logger.addHandler(File_log)
24 |
--------------------------------------------------------------------------------
/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | listen [::]:80;
4 |
5 | server_name localhost;
6 | error_page 404 = /404.html;
7 |
8 | # root /var/www/example.com;
9 | # index index.html;
10 | location /static/{
11 | alias /root/web_range/static/;
12 | expires 24h;
13 | }
14 | location / {
15 | proxy_pass_header Server;
16 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
17 | proxy_http_version 1.1;
18 | proxy_set_header Upgrade $http_upgrade;
19 | proxy_set_header Connection "upgrade";
20 | proxy_set_header Host $http_host;
21 | proxy_redirect off;
22 | proxy_set_header X-Real-IP $remote_addr;
23 | proxy_pass http://127.0.0.1:8000/;
24 | }
25 | }
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | docker
2 | tornado
3 | psutil
4 | supervisor
5 | virtualenv
--------------------------------------------------------------------------------
/static/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/.DS_Store
--------------------------------------------------------------------------------
/static/buss/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/buss/.DS_Store
--------------------------------------------------------------------------------
/static/buss/css/detail.css:
--------------------------------------------------------------------------------
1 | .portlet-body p {
2 | word-wrap: break-word;
3 | }
4 |
5 | .label-type {
6 | background-color: rgba(48, 208, 149, 0.6);
7 | }
8 |
9 | .label-server {
10 | background-color: rgba(141, 83, 185, 0.6);
11 | }
12 |
13 | .label-time {
14 | background-color: rgba(57, 208, 232, 0.6);
15 | }
16 |
17 | .btn-tag {
18 | background-color: rgba(34, 133, 204, 0.6) !important;
19 | }
20 |
21 | .tag-danger {
22 | background-color: rgba(183, 21, 21, 0.6);
23 | }
24 |
25 | .tag-high {
26 | background-color: rgba(230, 108, 61, 0.6);
27 | }
28 |
29 | .tag-middle {
30 | background-color: rgba(220, 175, 49, 0.6);
31 | }
32 |
33 | .tag-low {
34 | background-color: rgba(147, 48, 179, 0.6);
35 | }
36 |
37 | .tag-tip {
38 | background-color: rgba(57, 154, 64, 0.6);
39 | }
40 |
41 | .dropdown-menu {
42 | background-color: rgb(47, 62, 71) !important;
43 | }
44 |
45 | .tag {
46 | float: left;
47 | margin-right: 5px;
48 | margin-bottom: 5px;
49 | margin-left: 5px;
50 | }
51 |
52 | .taglink {
53 | color: white;
54 | }
55 |
56 | .portlet-body{
57 | line-height: 2;
58 | padding-top: 0;
59 | background-color:rgb(68, 87, 99) !important;
60 | min-height: 84px !important;
61 | color:white
62 | }
63 |
--------------------------------------------------------------------------------
/static/buss/css/main.css:
--------------------------------------------------------------------------------
1 | .text-muted {
2 | word-wrap: break-word;
3 | }
4 |
5 | .text-name {
6 | color: rgba(255, 255, 255, 0.9);
7 | }
8 |
9 | .text-time {
10 | color: rgba(57, 208, 177, 0.9);
11 | }
12 |
13 | .btn-tag {
14 | background-color: rgba(34, 133, 204, 0.6) !important;
15 | }
16 |
17 | select {
18 | color: #797979 !important;
19 | }
20 |
21 | .modal-body hr {
22 | border-top: 1px solid rgba(135, 135, 135, 0.6) !important;
23 | }
24 |
25 | .modal-header {
26 | border-bottom: 1px solid rgba(135, 135, 135, 0.6) !important;
27 | }
28 |
29 | .modal-footer {
30 | border-top: 1px solid rgba(135, 135, 135, 0.6) !important;
31 | }
32 |
33 | .modal-title {
34 | color: rgba(149, 149, 150, 0.6)
35 | }
36 |
37 | select option {
38 | background-color: rgba(0, 0, 0, 0.6);
39 | }
40 |
41 | .tag-right {
42 | margin-right: 26px;
43 | }
44 |
45 | #select-all{
46 | position: absolute;
47 | top: 51%;
48 | left: 48%;
49 | width: 20px;
50 | height: 20px;
51 | }
--------------------------------------------------------------------------------
/static/buss/css/plugin.css:
--------------------------------------------------------------------------------
1 | .portlet-body p {
2 | word-wrap: break-word;
3 | }
4 |
5 | #uploadjson div div input {
6 | margin-bottom: 15px;
7 | }
8 |
9 | #uploadjson div div textarea {
10 | margin-bottom: 15px;
11 | }
12 |
13 | #uploadjson div div select {
14 | margin-bottom: 15px;
15 | }
16 |
17 | .btn-tag {
18 | background-color: rgba(34, 133, 204, 0.6) !important;
19 | color: white;
20 | }
21 |
22 | .tag-danger {
23 | background-color: rgba(183, 21, 21, 0.6);
24 | float: right;
25 | margin: 5px 10px 0 0
26 | }
27 |
28 | .tag-high {
29 | background-color: rgba(230, 108, 61, 0.6);
30 | float: right;
31 | margin: 5px 10px 0 0
32 | }
33 |
34 | .tag-middle {
35 | background-color: rgba(220, 175, 49, 0.6);
36 | float: right;
37 | margin: 5px 10px 0 0
38 | }
39 |
40 | .tag-low {
41 | background-color: rgba(147, 48, 179, 0.6);
42 | float: right;
43 | margin: 5px 10px 0 0
44 | }
45 |
46 | .tag-tip {
47 | background-color: rgba(57, 154, 64, 0.6);
48 | float: right;
49 | margin: 5px 10px 0 0
50 | }
51 |
52 | .modal-header {
53 | border-bottom: 1px solid rgba(135, 135, 135, 0.6) !important;
54 | }
55 |
56 | .modal-footer {
57 | border-top: 1px solid rgba(135, 135, 135, 0.6) !important;
58 | }
59 |
60 | .modal-title {
61 | color: rgba(149, 149, 150, 0.6)
62 | }
63 |
64 | .portlet-body p span {
65 | color: rgba(255, 255, 255, 0.9)
66 | }
67 |
68 | .portlet-body p i {
69 | color: rgba(255, 255, 255, 0.9)
70 | }
71 |
72 | .dropify-wrapper {
73 | background-color: rgba(57, 76, 87, 0.6) !important;
74 | border: 0 !important;
75 | }
76 |
77 | .dropify-preview {
78 | background-color: rgba(57, 76, 87, 0.6) !important;
79 | }
80 |
81 | select option {
82 | background-color: rgba(0, 0, 0, 0.6) !important;
83 | }
84 |
85 | select {
86 | color: #999999 !important;
87 | }
88 |
89 | .jsoninfo .form-control {
90 | margin-bottom: 15px;
91 | }
92 |
93 | .portlet .portlet-heading a{
94 | padding:0 !important;
95 | }
96 |
97 | .portlet-title{
98 | overflow: hidden;
99 | text-overflow:ellipsis;
100 | white-space: nowrap;
101 | float: none !important;
102 | }
--------------------------------------------------------------------------------
/static/buss/css/search.css:
--------------------------------------------------------------------------------
1 | .zmdi-help-outline:before {
2 | position: absolute;
3 | top: -10px;
4 | left: 0px;
5 | }
6 |
7 | .card-box {
8 | background-color: rgba(0, 0, 0, 0.6);
9 | }
10 |
11 | .logo span {
12 | color: white !important;
13 | }
14 |
15 | .tip-twitter {
16 | max-width: 375px;
17 | }
18 |
19 | #filter {
20 | background-color: rgba(0, 0, 0, 0.6)
21 | }
22 |
23 | .btn-inverse {
24 | background-color: rgba(0, 0, 0, 0.6) !important;
25 | }
26 |
27 | .btn-inverse:hover {
28 | background-color: rgba(45, 45, 45, 0.6) !important;
29 | }
30 |
31 | .zmdi-help-outline {
32 | color: rgba(255, 255, 255, 0.6) !important;
33 | }
34 |
35 | .topbar-main {
36 | background-color: black !important;
37 | }
38 |
39 | .navbar-custom {
40 | background-color: rgba(0, 0, 0, 0.26) !important;
41 | }
42 |
43 | .submenu {
44 | border-color: rgba(0, 0, 0, 0.26) !important;
45 | background-color: rgba(0, 0, 0, 0.26) !important;
46 | }
47 |
--------------------------------------------------------------------------------
/static/buss/css/task.css:
--------------------------------------------------------------------------------
1 | .portlet-body p {
2 | word-wrap: break-word;
3 | }
4 |
5 | .tag {
6 | color: #999999;
7 | }
8 |
9 | .label-type {
10 | background-color: rgba(48, 208, 149, 0.6);
11 | }
12 |
13 | .label-server {
14 | background-color: rgba(141, 83, 185, 0.6);
15 | }
16 |
17 | .label-time {
18 | background-color: rgba(57, 208, 232, 0.6);
19 | }
20 |
21 | .label-ips {
22 | background-color: rgba(100, 100, 100, 0.6);
23 | }
24 |
25 | .btn-tag {
26 | background-color: rgba(34, 133, 204, 0.6) !important;
27 | }
--------------------------------------------------------------------------------
/static/buss/js/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/buss/js/.DS_Store
--------------------------------------------------------------------------------
/static/buss/js/common.js:
--------------------------------------------------------------------------------
1 |
2 | function getQueryString(name) {
3 | var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
4 | var r = window.location.search.substr(1).match(reg);
5 | if (r != null) return unescape(r[2]);
6 | return null;
7 | }
8 |
9 | function setCookie(c_name, value, expirehours) {
10 | var exdate = new Date();
11 | exdate.setHours(exdate.getHours() + expirehours);
12 | document.cookie = c_name + "=" + escape(value) +
13 | ((expirehours == null) ? "" : ";expires=" + exdate.toGMTString())
14 | }
15 |
16 | function getCookie(name) {
17 | var cookies = document.cookie.split(";");
18 | for (var i = 0; i < cookies.length; i++) {
19 | var cookie = cookies[i];
20 | var cookieStr = cookie.split("=");
21 | if (cookieStr && cookieStr[0].trim() == name) {
22 | return decodeURI(cookieStr[1]);
23 | }
24 | }
25 | }
26 |
27 |
28 | function delAllCookie() {
29 | var myDate = new Date();
30 | myDate.setTime(-1000);
31 | var data = document.cookie;
32 | var dataArray = data.split("; ");
33 | for (var i = 0; i < dataArray.length; i++) {
34 | var varName = dataArray[i].split("=");
35 | document.cookie = varName[0] + "=''; expires=" + myDate.toGMTString();
36 | }
37 |
38 | }
39 |
40 | /**
41 | * 更新url中的get请求
42 | *
43 | * @param {string} key http get query key
44 | * @param {string} key http get query value
45 | * @returns url?key=value&key=value
46 | */
47 | String.prototype.url_update_query = function(key, value) {
48 | if (key) {
49 | var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
50 | var separator = this.indexOf('?') !== -1 ? "&" : "?";
51 | if (this.match(re)) {
52 | return this.replace(re, '$1' + key + "=" + value + '$2');
53 | }
54 | else {
55 | return this + separator + key + "=" + value;
56 | }
57 | }
58 | return this.toString();
59 | }
60 |
61 | /**
62 | * 更新url中的page参数
63 | *
64 | * @param {string} page the number of page
65 | * @returns url?page=1
66 | *
67 | * @author ysrc
68 | */
69 | String.prototype.url_add_Paginator = function(page) {
70 | if (page == undefined) {
71 | return this.toString();
72 | }
73 | result = this.url_update_query("page", page);
74 | return result.toString();
75 | }
76 |
77 | /**
78 | * 跳转到下一页
79 | *
80 | * @author ysrc
81 | */
82 | function nextPage() {
83 | page = parseInt(getQueryString('page') == null ? 1 : getQueryString('page')) + 1;
84 | if (page > $('.pagination-split').children().length - 2) {
85 | alert('已到达末页');
86 | } else {
87 | location.replace(location.href.url_add_Paginator(page));
88 | }
89 | }
90 |
91 | function prePage() {
92 | page = parseInt(getQueryString('page') == null ? 1 : getQueryString('page')) - 1;
93 | if (page > 0) {
94 | oripage = page + 1;
95 | location.href = location.href.replace("page=" + oripage.toString(), "page=" + page.toString());
96 | } else {
97 | alert('已到达首页');
98 | }
99 | }
100 | function turnTo(page) {
101 | curPage = getQueryString('page');
102 | location.replace(location.href.url_add_Paginator(page));
103 | }
104 |
105 |
--------------------------------------------------------------------------------
/static/buss/js/config.js:
--------------------------------------------------------------------------------
1 | $('.update').click(function () {
2 | name = $(this).attr('inputname');
3 | value = $(document.getElementsByName($(this).attr('inputname'))).val();
4 | if (name == "Masscan") {
5 | value = $("#speed").val() + "|" + value;
6 | }
7 | $.post('/updateconfig', {
8 | name: name,
9 | value: value,
10 | conftype: location.search.replace('?', '').split('&')[0].split('=')[1]
11 | }, function (data) {
12 | if (data == 'success') {
13 | swal("更新成功", '', "success");
14 | }
15 | else {
16 | swal("更新失败", '请检查数据完整性', "error");
17 | }
18 | })
19 | });
20 |
21 | $('#mastag').change(function () {
22 | var name = "Masscan_Flag";
23 | var conftype = "nascan";
24 | var value = $(this).is(':checked') == true ? "1" : "0";
25 | $.post('/updateconfig', {name: name, value: value, conftype: conftype}, function (data) {
26 | if (data == "patherr") {
27 | $("#mastag").click();
28 | swal("切换失败", '未检测到Masscan,请先安装或先配置正确的路径', "error");
29 | }
30 | else if (data == "fail") {
31 | swal("切换失败", '请检查数据完整性', "error");
32 | }
33 | })
34 | });
35 |
36 |
37 | $('#icmptag').change(function () {
38 | var name = "Port_list_Flag";
39 | var conftype = "nascan";
40 | var value = $(this).is(':checked') == true ? "1" : "0";
41 | $.post('/updateconfig', {name: name, value: value, conftype: conftype}, function (data) {
42 | if (data !== 'success') {
43 | swal("更新失败", '请检查数据完整性', "error");
44 | }
45 | })
46 | });
47 |
48 | $('.zmdi-help-outline').poshytip({
49 | className: 'tip-twitter',
50 | showTimeout: 1,
51 | alignTo: 'target',
52 | alignX: 'center',
53 | alignY: 'bottom',
54 | offsetY: 5,
55 | allowTipHover: false,
56 | fade: false,
57 | slide: false
58 | });
--------------------------------------------------------------------------------
/static/buss/js/plugin.js:
--------------------------------------------------------------------------------
1 | $('.dropify').dropify({
2 | messages: {
3 | 'default': 'Drag and drop a file here or click',
4 | 'replace': 'Drag and drop or click to replace',
5 | 'remove': 'Remove',
6 | 'error': 'Ooops, something wrong appended.'
7 | },
8 | error: {
9 | 'fileSize': 'The file size is too big (1M max).'
10 | }
11 | });
12 |
13 | $('#up-type').change(function () {
14 | if ($(this).val() == 'json') {
15 | $('.uploadjson').css('display', '');
16 | $('.uploadfile').css('display', 'none');
17 | } else if ($(this).val() == 'file') {
18 | $('.uploadjson').css('display', 'none');
19 | $('.uploadfile').css('display', '');
20 | } else {
21 | $('.uploadjson').css('display', 'none');
22 | $('.uploadfile').css('display', 'none');
23 | }
24 | });
25 |
26 |
27 |
28 | $('#add').click(function () {
29 | name = $('#env-name').val();
30 | info = $('#env-info').val();
31 | author = $('#env-author').val();
32 | risk = $('#env-risk').val();
33 | info = $('#env-info').val();
34 | tags = $('#env-tags').val();
35 | hub = $('#env-hub').val();
36 | type = $('#env-type').val();
37 | port = $('#env-port').val();
38 | flag = $('#env-flag').val();
39 | path = $('#env-fileupload').val();
40 | syspassjson = $('#env-syspass-json').val();
41 | syspassfile = $('#env-syspass-file').val();
42 | filename = path.substring(path.lastIndexOf('\\')).split('.')[0];
43 | isupload = $('#env-isupload').val();
44 | $.ajaxFileUpload({
45 | url: "/add_images",
46 | secureuri: false,
47 | type: "POST",
48 | data: {
49 | name: name,
50 | info: info,
51 | isupload: isupload,
52 | type: type,
53 | flag: flag,
54 | author: author,
55 | risk: risk,
56 | tags: tags,
57 | hub: hub,
58 | port: port,
59 | syspassjson: syspassjson,
60 | syspassfile: syspassfile
61 | },
62 | dataType: "json",
63 | fileElementId: "env-fileupload",
64 | success: function (e) {
65 | },
66 | error: function (e) {
67 | if (e.responseText == 'success') {
68 | swal("新增成功,正在后台进行下载!", '', "success");
69 | $('.confirm').click(function () {
70 | $('#close').click();
71 | location.reload();
72 | });
73 |
74 | } else {
75 | swal("新增失败", "请检查数据是否完整或是否存在特殊字符!", "error")
76 | }
77 | }
78 | });
79 |
80 | });
81 |
82 |
--------------------------------------------------------------------------------
/static/css/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/css/.DS_Store
--------------------------------------------------------------------------------
/static/css/docker.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 |
3 | /*主要CSS*/
4 | body { height: 100vh; font-family: "微软雅黑"; text-align: center; overflow: hidden; }
5 | body h1 {
6 | text-transform: uppercase;
7 | font-size: 30px;
8 | color: #576e81;
9 | margin: 30px 0px 0px 0px;
10 | }
11 | body h2 {
12 | font-weight: normal;
13 | font-size: 18px;
14 | color: #F98DB9;
15 | margin: 10px 0px 0px 0px;
16 | }
17 | body p {
18 | margin: 0 auto;
19 | }
20 | body .loader {
21 | height: 250px;
22 | position: relative;
23 | margin: auto;
24 | width: 400px;
25 | z-index:10;
26 | }
27 | body .loader_overlay {
28 | width: 150px;
29 | height: 150px;
30 | background: transparent;
31 | /* box-shadow: 0px 0px 0px 1000px rgba(255, 255, 255, 0.67), 0px 0px 19px 0px rgba(0, 0, 0, 0.16) inset;*/
32 | border-radius: 100%;
33 | z-index: -1;
34 | position: absolute;
35 | left: 0;
36 | right: 0;
37 | top: 0;
38 | bottom: 0;
39 | margin: auto;
40 | }
41 | body .loader_cogs {
42 | z-index: -2;
43 | width: 100px;
44 | height: 100px;
45 | top: -120px !important;
46 | position: absolute;
47 | left: 0;
48 | right: 0;
49 | top: 0;
50 | bottom: 0;
51 | margin: auto;
52 | }
53 | body .loader_cogs__top {
54 | position: relative;
55 | width: 100px;
56 | height: 100px;
57 | -webkit-transform-origin: 50px 50px;
58 | transform-origin: 50px 50px;
59 | -webkit-animation: rotate 10s infinite linear;
60 | animation: rotate 10s infinite linear;
61 | }
62 | body .loader_cogs__top div:nth-of-type(1) {
63 | -webkit-transform: rotate(30deg);
64 | transform: rotate(30deg);
65 | }
66 | body .loader_cogs__top div:nth-of-type(2) {
67 | -webkit-transform: rotate(60deg);
68 | transform: rotate(60deg);
69 | }
70 | body .loader_cogs__top div:nth-of-type(3) {
71 | -webkit-transform: rotate(90deg);
72 | transform: rotate(90deg);
73 | }
74 | body .loader_cogs__top div.top_part {
75 | width: 100px;
76 | border-radius: 10px;
77 | position: absolute;
78 | height: 100px;
79 | background: #f98db9;
80 | }
81 | body .loader_cogs__top div.top_hole {
82 | width: 50px;
83 | height: 50px;
84 | border-radius: 100%;
85 | background: white;
86 | position: absolute;
87 | position: absolute;
88 | left: 0;
89 | right: 0;
90 | top: 0;
91 | bottom: 0;
92 | margin: auto;
93 | }
94 | body .loader_cogs__left {
95 | position: relative;
96 | width: 80px;
97 | -webkit-transform: rotate(16deg);
98 | transform: rotate(16deg);
99 | top: 28px;
100 | -webkit-transform-origin: 40px 40px;
101 | transform-origin: 40px 40px;
102 | -webkit-animation: rotate_left 10s .1s infinite reverse linear;
103 | animation: rotate_left 10s .1s infinite reverse linear;
104 | left: -24px;
105 | height: 80px;
106 | }
107 | body .loader_cogs__left div:nth-of-type(1) {
108 | -webkit-transform: rotate(30deg);
109 | transform: rotate(30deg);
110 | }
111 | body .loader_cogs__left div:nth-of-type(2) {
112 | -webkit-transform: rotate(60deg);
113 | transform: rotate(60deg);
114 | }
115 | body .loader_cogs__left div:nth-of-type(3) {
116 | -webkit-transform: rotate(90deg);
117 | transform: rotate(90deg);
118 | }
119 | body .loader_cogs__left div.left_part {
120 | width: 80px;
121 | border-radius: 6px;
122 | position: absolute;
123 | height: 80px;
124 | background: #97ddff;
125 | }
126 | body .loader_cogs__left div.left_hole {
127 | width: 40px;
128 | height: 40px;
129 | border-radius: 100%;
130 | background: white;
131 | position: absolute;
132 | position: absolute;
133 | left: 0;
134 | right: 0;
135 | top: 0;
136 | bottom: 0;
137 | margin: auto;
138 | }
139 | body .loader_cogs__bottom {
140 | position: relative;
141 | width: 60px;
142 | top: -65px;
143 | -webkit-transform-origin: 30px 30px;
144 | transform-origin: 30px 30px;
145 | -webkit-animation: rotate_left 10.2s .4s infinite linear;
146 | animation: rotate_left 10.2s .4s infinite linear;
147 | -webkit-transform: rotate(4deg);
148 | transform: rotate(4deg);
149 | left: 79px;
150 | height: 60px;
151 | }
152 | body .loader_cogs__bottom div:nth-of-type(1) {
153 | -webkit-transform: rotate(30deg);
154 | transform: rotate(30deg);
155 | }
156 | body .loader_cogs__bottom div:nth-of-type(2) {
157 | -webkit-transform: rotate(60deg);
158 | transform: rotate(60deg);
159 | }
160 | body .loader_cogs__bottom div:nth-of-type(3) {
161 | -webkit-transform: rotate(90deg);
162 | transform: rotate(90deg);
163 | }
164 | body .loader_cogs__bottom div.bottom_part {
165 | width: 60px;
166 | border-radius: 5px;
167 | position: absolute;
168 | height: 60px;
169 | background: #ffcd66;
170 | }
171 | body .loader_cogs__bottom div.bottom_hole {
172 | width: 30px;
173 | height: 30px;
174 | border-radius: 100%;
175 | background: white;
176 | position: absolute;
177 | position: absolute;
178 | left: 0;
179 | right: 0;
180 | top: 0;
181 | bottom: 0;
182 | margin: auto;
183 | }
184 |
185 | /* Animations */
186 | @-webkit-keyframes rotate {
187 | from {
188 | -webkit-transform: rotate(0deg);
189 | transform: rotate(0deg);
190 | }
191 | to {
192 | -webkit-transform: rotate(360deg);
193 | transform: rotate(360deg);
194 | }
195 | }
196 | @keyframes rotate {
197 | from {
198 | -webkit-transform: rotate(0deg);
199 | transform: rotate(0deg);
200 | }
201 | to {
202 | -webkit-transform: rotate(360deg);
203 | transform: rotate(360deg);
204 | }
205 | }
206 | @-webkit-keyframes rotate_left {
207 | from {
208 | -webkit-transform: rotate(16deg);
209 | transform: rotate(16deg);
210 | }
211 | to {
212 | -webkit-transform: rotate(376deg);
213 | transform: rotate(376deg);
214 | }
215 | }
216 | @keyframes rotate_left {
217 | from {
218 | -webkit-transform: rotate(16deg);
219 | transform: rotate(16deg);
220 | }
221 | to {
222 | -webkit-transform: rotate(376deg);
223 | transform: rotate(376deg);
224 | }
225 | }
226 | @-webkit-keyframes rotate_right {
227 | from {
228 | -webkit-transform: rotate(4deg);
229 | transform: rotate(4deg);
230 | }
231 | to {
232 | -webkit-transform: rotate(364deg);
233 | transform: rotate(364deg);
234 | }
235 | }
236 | @keyframes rotate_right {
237 | from {
238 | -webkit-transform: rotate(4deg);
239 | transform: rotate(4deg);
240 | }
241 | to {
242 | -webkit-transform: rotate(364deg);
243 | transform: rotate(364deg);
244 | }
245 | }
246 |
--------------------------------------------------------------------------------
/static/css/elements.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/css/elements.css
--------------------------------------------------------------------------------
/static/css/responsive.css:
--------------------------------------------------------------------------------
1 | /*
2 | Template Name: Adminto Dashboard
3 | Author: CoderThemes
4 | Email: coderthemes@gmail.com
5 | File: Responsive
6 | */
7 | @media only screen and (max-width: 6000px) and (min-width: 700px) {
8 | .wrapper.right-bar-enabled .right-bar {
9 | right: 0;
10 | z-index: 99;
11 | }
12 | .searchbar{
13 | width:600px !important;
14 | }
15 | }
16 | @media (max-width: 1023px) {
17 | .button-menu-mobile {
18 | display: block !important;
19 | }
20 |
21 | }
22 | @media (min-width: 768px) and (max-width: 991px) {
23 | body {
24 | overflow-x: hidden;
25 | }
26 | }
27 | @media (max-width: 767px) {
28 | body {
29 | overflow-x: hidden;
30 | }
31 | .enlarged .left.side-menu {
32 | margin-left: -75px;
33 | }
34 | .topbar-left {
35 | width: 70px !important;
36 | }
37 | .content-page .content {
38 | margin-top: 95px;
39 | }
40 | .topbar .topbar-left {
41 | height: 75px;
42 | }
43 | .navbar-default {
44 | background-color: #ffffff;
45 | box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02);
46 | }
47 | .navbar-nav {
48 | margin: 0px;
49 | display: inline-block;
50 | }
51 | .navbar-nav li {
52 | display: inline-block;
53 | line-height: 1px;
54 | }
55 | .navbar-nav.navbar-right {
56 | float: right;
57 | }
58 | /*.notification-box {*/
59 | /*display: inline;*/
60 | /*}*/
61 | .notification-box ul li a {
62 | line-height: 46px;
63 | }
64 | .notification-box .pulse {
65 | top: 5px;
66 | }
67 | /*.notification-box .dot {*/
68 | /*top: -7px;*/
69 | /*left: -3px;*/
70 | /*}*/
71 | #topnav .navbar-toggle {
72 | margin-right: 5px;
73 | }
74 | .navbar-nav .open .dropdown-menu {
75 | background-color: #ffffff;
76 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
77 | left: auto;
78 | position: absolute;
79 | right: 0;
80 | }
81 | .navbar-nav .open .dropdown-menu li {
82 | display: block;
83 | }
84 | .content-page {
85 | margin-left: 0px !important;
86 | }
87 | .footer {
88 | left: 0px !important;
89 | }
90 | .mobile-sidebar {
91 | left: 0px;
92 | }
93 | .mobile-content {
94 | left: 250px;
95 | right: -250px;
96 | }
97 | .wrapper-page {
98 | width: 90%;
99 | }
100 | .dataTables_wrapper .col-xs-6 {
101 | width: 100%;
102 | text-align: left;
103 | }
104 | div#datatable-buttons_info {
105 | float: none;
106 | }
107 | }
108 | @media (max-width: 480px) {
109 | .side-menu {
110 | z-index: 10 !important;
111 | }
112 | .button-menu-mobile {
113 | display: block;
114 | }
115 | .search-bar {
116 | display: none !important;
117 | }
118 | }
119 | @media (max-width: 420px) {
120 | .hide-phone {
121 | display: none !important;
122 | }
123 | }
124 | /* Container-alt */
125 | @media (min-width: 768px) {
126 | .container-alt {
127 | width: 750px;
128 | }
129 | .nav-tabs.nav-justified > li > a {
130 | border-bottom: 2px solid #eeeeee;
131 | }
132 | }
133 | @media (min-width: 992px) {
134 | .container-alt {
135 | width: 970px;
136 | }
137 | }
138 | @media (min-width: 1200px) {
139 | .container-alt {
140 | width: 1170px;
141 | }
142 | }
143 | @media (max-width: 419px) {
144 | .topbar-left {
145 | width: 70px !important;
146 | }
147 | .content-page {
148 | margin-left: 70px;
149 | }
150 | .forced .side-menu.left {
151 | box-shadow: 0 12px 12px rgba(0, 0, 0, 0.1);
152 | position: absolute;
153 | }
154 | .enlarged .side-menu.left {
155 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) !important;
156 | }
157 | .profile-info-name img {
158 | float: none;
159 | margin: 0px auto;
160 | margin-bottom: 20px;
161 | }
162 | div.hopscotch-bubble .hopscotch-bubble-container {
163 | max-width: 180px;
164 | }
165 | }
166 |
--------------------------------------------------------------------------------
/static/css/style_line.css:
--------------------------------------------------------------------------------
1 | /*------------------------------------*\
2 | $Base
3 | \*------------------------------------*/
4 | * {
5 | -webkit-box-sizing: border-box;
6 | -moz-box-sizing: border-box;
7 | box-sizing: border-box;
8 | }
9 | body {
10 | background: #303030;
11 | }
12 | /*------------------------------------*\
13 | $Graph
14 | \*------------------------------------*/
15 | .graph__wrapper {
16 | width: 400px;
17 | margin: 30px auto;
18 | position: relative;
19 | }
20 | .graph__wrapper svg {
21 | position: absolute;
22 | margin: 36px 0px 0px 15px;
23 | }
24 | .coordinates {
25 | position: absolute;
26 | counter-reset: line 6;
27 | }
28 | .coordinates span {
29 | display: inline-block;
30 | border-bottom: 1px solid #3a3a3a;
31 | height: 20px;
32 | width: 400px;
33 | }
34 | .coordinates span:before {
35 | counter-increment: line -1;
36 | content: counter(line);
37 | display: inline-block;
38 | color: #4a4a4a;
39 | margin: 10px 0px 0px -15px;
40 | }
41 | .path {
42 | stroke-dasharray: 1000;
43 | stroke-dashoffset: 1000;
44 | -webkit-animation: dash 3s ease-in forwards;
45 | animation: dash 3s ease-in forwards;
46 | -webkit-animation-iteration-count: infinite;
47 | animation-iteration-count: infinite;
48 | -webkit-animation-delay: 1s;
49 | animation-delay: 1s;
50 | }
51 | @-webkit-keyframes dash {
52 | to {
53 | stroke-dashoffset: 0;
54 | }
55 | }
56 | @keyframes dash {
57 | to {
58 | stroke-dashoffset: 0;
59 | }
60 | }
61 | .description {
62 | font-family: "Roboto";
63 | color: #b0b0b0;
64 | text-align: center;
65 | margin: 40px 0px;
66 | }
67 |
--------------------------------------------------------------------------------
/static/fonts/Material-Design-Iconic-Font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/Material-Design-Iconic-Font.ttf
--------------------------------------------------------------------------------
/static/fonts/Material-Design-Iconic-Font.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/Material-Design-Iconic-Font.woff
--------------------------------------------------------------------------------
/static/fonts/Material-Design-Iconic-Font.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/Material-Design-Iconic-Font.woff2
--------------------------------------------------------------------------------
/static/fonts/dropify.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/dropify.ttf
--------------------------------------------------------------------------------
/static/fonts/dropify.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/dropify.woff
--------------------------------------------------------------------------------
/static/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/static/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/static/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/static/fonts/themify.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/themify.ttf
--------------------------------------------------------------------------------
/static/fonts/themify.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/fonts/themify.woff
--------------------------------------------------------------------------------
/static/google/-L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/-L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/77FXFjRbGzN4aCrSFhlh3oX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/77FXFjRbGzN4aCrSFhlh3oX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/97uahxiqZRoncBaCEI3aW4X0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/97uahxiqZRoncBaCEI3aW4X0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2
--------------------------------------------------------------------------------
/static/google/I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/JaMH4jmmzP070-OYo03anaCWcynf_cDxXwCLxiixG1c.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/JaMH4jmmzP070-OYo03anaCWcynf_cDxXwCLxiixG1c.woff2
--------------------------------------------------------------------------------
/static/google/Karla.css:
--------------------------------------------------------------------------------
1 | /* latin-ext */
2 | @font-face {
3 | font-family: 'Karla';
4 | font-style: normal;
5 | font-weight: 400;
6 | src: local('Karla'), local('Karla-Regular'), url(./S1bXQ0LrY7AzefpgNae9sYDGDUGfDkXyfkzVDelzfFk.woff2) format('woff2');
7 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
8 | }
9 | /* latin */
10 | @font-face {
11 | font-family: 'Karla';
12 | font-style: normal;
13 | font-weight: 400;
14 | src: local('Karla'), local('Karla-Regular'), url(./JaMH4jmmzP070-OYo03anaCWcynf_cDxXwCLxiixG1c.woff2) format('woff2');
15 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
16 | }
17 | /* latin-ext */
18 | @font-face {
19 | font-family: 'Karla';
20 | font-style: normal;
21 | font-weight: 700;
22 | src: local('Karla Bold'), local('Karla-Bold'), url(./r3NqIkFHFaF3esZDc3WT5BkAz4rYn47Zy2rvigWQf6w.woff2) format('woff2');
23 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
24 | }
25 | /* latin */
26 | @font-face {
27 | font-family: 'Karla';
28 | font-style: normal;
29 | font-weight: 700;
30 | src: local('Karla Bold'), local('Karla-Bold'), url(./suoMYBGv5sGCUIrF9mVTfXYhjbSpvc47ee6xR_80Hnw.woff2) format('woff2');
31 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
32 | }
33 |
--------------------------------------------------------------------------------
/static/google/Ks_cVxiCiwUWVsFWFA3Bjn-_kf6ByYO6CLYdB4HQE-Y.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/Ks_cVxiCiwUWVsFWFA3Bjn-_kf6ByYO6CLYdB4HQE-Y.woff2
--------------------------------------------------------------------------------
/static/google/NJ4vxlgWwWbEsv18dAhqnn-_kf6ByYO6CLYdB4HQE-Y.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/NJ4vxlgWwWbEsv18dAhqnn-_kf6ByYO6CLYdB4HQE-Y.woff2
--------------------------------------------------------------------------------
/static/google/NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/PwZc-YbIL414wB9rB1IAPYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/PwZc-YbIL414wB9rB1IAPYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/Rancho.css:
--------------------------------------------------------------------------------
1 | /* latin */
2 | @font-face {
3 | font-family: 'Rancho';
4 | font-style: normal;
5 | font-weight: 400;
6 | src: local('Rancho'), url(./yJONObwbYmkcfKME0p1HqevvDin1pK8aKteLpeZ5c0A.woff2) format('woff2');
7 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
8 | }
9 |
--------------------------------------------------------------------------------
/static/google/Roboto.css:
--------------------------------------------------------------------------------
1 | /* cyrillic-ext */
2 | @font-face {
3 | font-family: 'Roboto';
4 | font-style: normal;
5 | font-weight: 300;
6 | src: local('Roboto Light'), local('Roboto-Light'), url(./0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
7 | unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
8 | }
9 | /* cyrillic */
10 | @font-face {
11 | font-family: 'Roboto';
12 | font-style: normal;
13 | font-weight: 300;
14 | src: local('Roboto Light'), local('Roboto-Light'), url(./Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
16 | }
17 | /* greek-ext */
18 | @font-face {
19 | font-family: 'Roboto';
20 | font-style: normal;
21 | font-weight: 300;
22 | src: local('Roboto Light'), local('Roboto-Light'), url(./-L14Jk06m6pUHB-5mXQQnYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
23 | unicode-range: U+1F00-1FFF;
24 | }
25 | /* greek */
26 | @font-face {
27 | font-family: 'Roboto';
28 | font-style: normal;
29 | font-weight: 300;
30 | src: local('Roboto Light'), local('Roboto-Light'), url(./I3S1wsgSg9YCurV6PUkTOYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
31 | unicode-range: U+0370-03FF;
32 | }
33 | /* vietnamese */
34 | @font-face {
35 | font-family: 'Roboto';
36 | font-style: normal;
37 | font-weight: 300;
38 | src: local('Roboto Light'), local('Roboto-Light'), url(./NYDWBdD4gIq26G5XYbHsFIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
39 | unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
40 | }
41 | /* latin-ext */
42 | @font-face {
43 | font-family: 'Roboto';
44 | font-style: normal;
45 | font-weight: 300;
46 | src: local('Roboto Light'), local('Roboto-Light'), url(./Pru33qjShpZSmG3z6VYwnYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
47 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
48 | }
49 | /* latin */
50 | @font-face {
51 | font-family: 'Roboto';
52 | font-style: normal;
53 | font-weight: 300;
54 | src: local('Roboto Light'), local('Roboto-Light'), url(./Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2) format('woff2');
55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
56 | }
57 | /* cyrillic-ext */
58 | @font-face {
59 | font-family: 'Roboto';
60 | font-style: normal;
61 | font-weight: 400;
62 | src: local('Roboto'), local('Roboto-Regular'), url(./sTdaA6j0Psb920Vjv-mrzH-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2');
63 | unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
64 | }
65 | /* cyrillic */
66 | @font-face {
67 | font-family: 'Roboto';
68 | font-style: normal;
69 | font-weight: 400;
70 | src: local('Roboto'), local('Roboto-Regular'), url(./uYECMKoHcO9x1wdmbyHIm3-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2');
71 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
72 | }
73 | /* greek-ext */
74 | @font-face {
75 | font-family: 'Roboto';
76 | font-style: normal;
77 | font-weight: 400;
78 | src: local('Roboto'), local('Roboto-Regular'), url(./tnj4SB6DNbdaQnsM8CFqBX-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2');
79 | unicode-range: U+1F00-1FFF;
80 | }
81 | /* greek */
82 | @font-face {
83 | font-family: 'Roboto';
84 | font-style: normal;
85 | font-weight: 400;
86 | src: local('Roboto'), local('Roboto-Regular'), url(./_VYFx-s824kXq_Ul2BHqYH-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2');
87 | unicode-range: U+0370-03FF;
88 | }
89 | /* vietnamese */
90 | @font-face {
91 | font-family: 'Roboto';
92 | font-style: normal;
93 | font-weight: 400;
94 | src: local('Roboto'), local('Roboto-Regular'), url(./NJ4vxlgWwWbEsv18dAhqnn-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2');
95 | unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
96 | }
97 | /* latin-ext */
98 | @font-face {
99 | font-family: 'Roboto';
100 | font-style: normal;
101 | font-weight: 400;
102 | src: local('Roboto'), local('Roboto-Regular'), url(./Ks_cVxiCiwUWVsFWFA3Bjn-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2');
103 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
104 | }
105 | /* latin */
106 | @font-face {
107 | font-family: 'Roboto';
108 | font-style: normal;
109 | font-weight: 400;
110 | src: local('Roboto'), local('Roboto-Regular'), url(./oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2) format('woff2');
111 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
112 | }
113 | /* cyrillic-ext */
114 | @font-face {
115 | font-family: 'Roboto';
116 | font-style: normal;
117 | font-weight: 500;
118 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./ZLqKeelYbATG60EpZBSDy4X0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
119 | unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
120 | }
121 | /* cyrillic */
122 | @font-face {
123 | font-family: 'Roboto';
124 | font-style: normal;
125 | font-weight: 500;
126 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./oHi30kwQWvpCWqAhzHcCSIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
127 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
128 | }
129 | /* greek-ext */
130 | @font-face {
131 | font-family: 'Roboto';
132 | font-style: normal;
133 | font-weight: 500;
134 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./rGvHdJnr2l75qb0YND9NyIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
135 | unicode-range: U+1F00-1FFF;
136 | }
137 | /* greek */
138 | @font-face {
139 | font-family: 'Roboto';
140 | font-style: normal;
141 | font-weight: 500;
142 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./mx9Uck6uB63VIKFYnEMXrYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
143 | unicode-range: U+0370-03FF;
144 | }
145 | /* vietnamese */
146 | @font-face {
147 | font-family: 'Roboto';
148 | font-style: normal;
149 | font-weight: 500;
150 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./mbmhprMH69Zi6eEPBYVFhYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
151 | unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
152 | }
153 | /* latin-ext */
154 | @font-face {
155 | font-family: 'Roboto';
156 | font-style: normal;
157 | font-weight: 500;
158 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./oOeFwZNlrTefzLYmlVV1UIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
159 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
160 | }
161 | /* latin */
162 | @font-face {
163 | font-family: 'Roboto';
164 | font-style: normal;
165 | font-weight: 500;
166 | src: local('Roboto Medium'), local('Roboto-Medium'), url(./RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2) format('woff2');
167 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
168 | }
169 | /* cyrillic-ext */
170 | @font-face {
171 | font-family: 'Roboto';
172 | font-style: normal;
173 | font-weight: 700;
174 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./77FXFjRbGzN4aCrSFhlh3oX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
175 | unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
176 | }
177 | /* cyrillic */
178 | @font-face {
179 | font-family: 'Roboto';
180 | font-style: normal;
181 | font-weight: 700;
182 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./isZ-wbCXNKAbnjo6_TwHToX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
183 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
184 | }
185 | /* greek-ext */
186 | @font-face {
187 | font-family: 'Roboto';
188 | font-style: normal;
189 | font-weight: 700;
190 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./UX6i4JxQDm3fVTc1CPuwqoX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
191 | unicode-range: U+1F00-1FFF;
192 | }
193 | /* greek */
194 | @font-face {
195 | font-family: 'Roboto';
196 | font-style: normal;
197 | font-weight: 700;
198 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./jSN2CGVDbcVyCnfJfjSdfIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
199 | unicode-range: U+0370-03FF;
200 | }
201 | /* vietnamese */
202 | @font-face {
203 | font-family: 'Roboto';
204 | font-style: normal;
205 | font-weight: 700;
206 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./PwZc-YbIL414wB9rB1IAPYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
207 | unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
208 | }
209 | /* latin-ext */
210 | @font-face {
211 | font-family: 'Roboto';
212 | font-style: normal;
213 | font-weight: 700;
214 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./97uahxiqZRoncBaCEI3aW4X0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
215 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
216 | }
217 | /* latin */
218 | @font-face {
219 | font-family: 'Roboto';
220 | font-style: normal;
221 | font-weight: 700;
222 | src: local('Roboto Bold'), local('Roboto-Bold'), url(./d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2) format('woff2');
223 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
224 | }
225 |
--------------------------------------------------------------------------------
/static/google/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2
--------------------------------------------------------------------------------
/static/google/S1bXQ0LrY7AzefpgNae9sYDGDUGfDkXyfkzVDelzfFk.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/S1bXQ0LrY7AzefpgNae9sYDGDUGfDkXyfkzVDelzfFk.woff2
--------------------------------------------------------------------------------
/static/google/UX6i4JxQDm3fVTc1CPuwqoX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/UX6i4JxQDm3fVTc1CPuwqoX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/ZLqKeelYbATG60EpZBSDy4X0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/ZLqKeelYbATG60EpZBSDy4X0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/_VYFx-s824kXq_Ul2BHqYH-_kf6ByYO6CLYdB4HQE-Y.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/_VYFx-s824kXq_Ul2BHqYH-_kf6ByYO6CLYdB4HQE-Y.woff2
--------------------------------------------------------------------------------
/static/google/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2
--------------------------------------------------------------------------------
/static/google/isZ-wbCXNKAbnjo6_TwHToX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/isZ-wbCXNKAbnjo6_TwHToX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/jSN2CGVDbcVyCnfJfjSdfIX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/jSN2CGVDbcVyCnfJfjSdfIX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/mbmhprMH69Zi6eEPBYVFhYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/mbmhprMH69Zi6eEPBYVFhYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/mx9Uck6uB63VIKFYnEMXrYX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/mx9Uck6uB63VIKFYnEMXrYX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/oHi30kwQWvpCWqAhzHcCSIX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/oHi30kwQWvpCWqAhzHcCSIX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2
--------------------------------------------------------------------------------
/static/google/oOeFwZNlrTefzLYmlVV1UIX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/oOeFwZNlrTefzLYmlVV1UIX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/r3NqIkFHFaF3esZDc3WT5BkAz4rYn47Zy2rvigWQf6w.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/r3NqIkFHFaF3esZDc3WT5BkAz4rYn47Zy2rvigWQf6w.woff2
--------------------------------------------------------------------------------
/static/google/rGvHdJnr2l75qb0YND9NyIX0hVgzZQUfRDuZrPvH3D8.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/rGvHdJnr2l75qb0YND9NyIX0hVgzZQUfRDuZrPvH3D8.woff2
--------------------------------------------------------------------------------
/static/google/sTdaA6j0Psb920Vjv-mrzH-_kf6ByYO6CLYdB4HQE-Y.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/sTdaA6j0Psb920Vjv-mrzH-_kf6ByYO6CLYdB4HQE-Y.woff2
--------------------------------------------------------------------------------
/static/google/suoMYBGv5sGCUIrF9mVTfXYhjbSpvc47ee6xR_80Hnw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/suoMYBGv5sGCUIrF9mVTfXYhjbSpvc47ee6xR_80Hnw.woff2
--------------------------------------------------------------------------------
/static/google/tnj4SB6DNbdaQnsM8CFqBX-_kf6ByYO6CLYdB4HQE-Y.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/tnj4SB6DNbdaQnsM8CFqBX-_kf6ByYO6CLYdB4HQE-Y.woff2
--------------------------------------------------------------------------------
/static/google/uYECMKoHcO9x1wdmbyHIm3-_kf6ByYO6CLYdB4HQE-Y.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/uYECMKoHcO9x1wdmbyHIm3-_kf6ByYO6CLYdB4HQE-Y.woff2
--------------------------------------------------------------------------------
/static/google/yJONObwbYmkcfKME0p1HqevvDin1pK8aKteLpeZ5c0A.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/google/yJONObwbYmkcfKME0p1HqevvDin1pK8aKteLpeZ5c0A.woff2
--------------------------------------------------------------------------------
/static/images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/.DS_Store
--------------------------------------------------------------------------------
/static/images/big/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/big/.DS_Store
--------------------------------------------------------------------------------
/static/images/big/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/big/bg1.jpg
--------------------------------------------------------------------------------
/static/images/big/bg2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/big/bg2.jpg
--------------------------------------------------------------------------------
/static/images/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/down.png
--------------------------------------------------------------------------------
/static/images/favicon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/favicon.jpg
--------------------------------------------------------------------------------
/static/images/multiple-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/multiple-arrow.png
--------------------------------------------------------------------------------
/static/images/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/images/up.png
--------------------------------------------------------------------------------
/static/js/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/js/.DS_Store
--------------------------------------------------------------------------------
/static/js/ajaxfileupload.js:
--------------------------------------------------------------------------------
1 |
2 | jQuery.extend({
3 |
4 | handleError: function( s, xhr, status, e ) {
5 | if ( s.error ) {
6 | s.error.call( s.context || s, xhr, status, e );
7 | }
8 |
9 | // Fire the global callback
10 | if ( s.global ) {
11 | (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
12 | }
13 | },
14 | createUploadIframe: function(id, uri)
15 | {
16 | //create frame
17 | var frameId = 'jUploadFrame' + id;
18 |
19 | if(window.ActiveXObject) {
20 | var io = document.createElement('');
21 | if(typeof uri== 'boolean'){
22 | io.src = 'javascript:false';
23 | }
24 | else if(typeof uri== 'string'){
25 | io.src = uri;
26 | }
27 | }
28 | else {
29 | var io = document.createElement('iframe');
30 | io.id = frameId;
31 | io.name = frameId;
32 | }
33 | io.style.position = 'absolute';
34 | io.style.top = '-1000px';
35 | io.style.left = '-1000px';
36 |
37 | document.body.appendChild(io);
38 |
39 | return io
40 | },
41 | createUploadForm: function(id, fileElementId)
42 | {
43 | //create form
44 | var formId = 'jUploadForm' + id;
45 | var fileId = 'jUploadFile' + id;
46 | var form = $('
');
47 | var oldElement = $('#' + fileElementId);
48 | var newElement = $(oldElement).clone();
49 | $(oldElement).attr('id', fileId);
50 | $(oldElement).before(newElement);
51 | $(oldElement).appendTo(form);
52 | //set attributes
53 | $(form).css('position', 'absolute');
54 | $(form).css('top', '-1200px');
55 | $(form).css('left', '-1200px');
56 | $(form).appendTo('body');
57 | return form;
58 | },
59 | addOtherRequestsToForm: function(form,data)
60 | {
61 | // add extra parameter
62 | var originalElement = $('');
63 | for (var key in data) {
64 | name = key;
65 | value = data[key];
66 | var cloneElement = originalElement.clone();
67 | cloneElement.attr({'name':name,'value':value});
68 | $(cloneElement).appendTo(form);
69 | }
70 | return form;
71 | },
72 |
73 | ajaxFileUpload: function(s) {
74 | // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
75 | s = jQuery.extend({}, jQuery.ajaxSettings, s);
76 | var id = new Date().getTime()
77 | var form = jQuery.createUploadForm(id, s.fileElementId);
78 | if ( s.data ) form = jQuery.addOtherRequestsToForm(form,s.data);
79 | var io = jQuery.createUploadIframe(id, s.secureuri);
80 | var frameId = 'jUploadFrame' + id;
81 | var formId = 'jUploadForm' + id;
82 | // Watch for a new set of requests
83 | if ( s.global && ! jQuery.active++ )
84 | {
85 | jQuery.event.trigger( "ajaxStart" );
86 | }
87 | var requestDone = false;
88 | // Create the request object
89 | var xml = {}
90 | if ( s.global )
91 | jQuery.event.trigger("ajaxSend", [xml, s]);
92 | // Wait for a response to come back
93 | var uploadCallback = function(isTimeout)
94 | {
95 | var io = document.getElementById(frameId);
96 | try
97 | {
98 | if(io.contentWindow)
99 | {
100 | xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
101 | xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
102 |
103 | }else if(io.contentDocument)
104 | {
105 | xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
106 | xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
107 | }
108 | }catch(e)
109 | {
110 | jQuery.handleError(s, xml, null, e);
111 | }
112 | if ( xml || isTimeout == "timeout")
113 | {
114 | requestDone = true;
115 | var status;
116 | try {
117 | status = isTimeout != "timeout" ? "success" : "error";
118 | // Make sure that the request was successful or notmodified
119 | if ( status != "error" )
120 | {
121 | // process the data (runs the xml through httpData regardless of callback)
122 | var data = jQuery.uploadHttpData( xml, s.dataType );
123 | // If a local callback was specified, fire it and pass it the data
124 | if ( s.success )
125 | s.success( data, status );
126 |
127 | // Fire the global callback
128 | if( s.global )
129 | jQuery.event.trigger( "ajaxSuccess", [xml, s] );
130 | } else
131 | jQuery.handleError(s, xml, status);
132 | } catch(e)
133 | {
134 | status = "error";
135 | jQuery.handleError(s, xml, status, e);
136 | }
137 |
138 | // The request was completed
139 | if( s.global )
140 | jQuery.event.trigger( "ajaxComplete", [xml, s] );
141 |
142 | // Handle the global AJAX counter
143 | if ( s.global && ! --jQuery.active )
144 | jQuery.event.trigger( "ajaxStop" );
145 |
146 | // Process result
147 | if ( s.complete )
148 | s.complete(xml, status);
149 |
150 | jQuery(io).unbind()
151 |
152 | setTimeout(function()
153 | { try
154 | {
155 | $(io).remove();
156 | $(form).remove();
157 |
158 | } catch(e)
159 | {
160 | jQuery.handleError(s, xml, null, e);
161 | }
162 |
163 | }, 100)
164 |
165 | xml = null
166 |
167 | }
168 | }
169 | // Timeout checker
170 | if ( s.timeout > 0 )
171 | {
172 | setTimeout(function(){
173 | // Check to see if the request is still happening
174 | if( !requestDone ) uploadCallback( "timeout" );
175 | }, s.timeout);
176 | }
177 | try
178 | {
179 | // var io = $('#' + frameId);
180 | var form = $('#' + formId);
181 | $(form).attr('action', s.url);
182 | $(form).attr('method', 'POST');
183 | $(form).attr('target', frameId);
184 | if(form.encoding)
185 | {
186 | form.encoding = 'multipart/form-data';
187 | }
188 | else
189 | {
190 | form.enctype = 'multipart/form-data';
191 | }
192 | $(form).submit();
193 |
194 | } catch(e)
195 | {
196 | jQuery.handleError(s, xml, null, e);
197 | }
198 | if(window.attachEvent){
199 | document.getElementById(frameId).attachEvent('onload', uploadCallback);
200 | }
201 | else{
202 | document.getElementById(frameId).addEventListener('load', uploadCallback, false);
203 | }
204 | return {abort: function () {}};
205 |
206 | },
207 |
208 | uploadHttpData: function( r, type ) {
209 | var data = !type;
210 | data = type == "xml" || data ? r.responseXML : r.responseText;
211 | // If the type is "script", eval it in global context
212 | if ( type == "file" )
213 | jQuery.globalEval( data );
214 | // Get the JavaScript object, if JSON is used.
215 | if ( type == "json" )
216 | {
217 | // If you add mimetype in your response,
218 | // you have to delete the '' tag.
219 | // The pre tag in Chrome has attribute, so have to use regex to remove
220 | var data = r.responseText;
221 | var rx = new RegExp("(.*?)","i");
222 | var am = rx.exec(data);
223 | //this is the desired data extracted
224 | var data = (am) ? am[1] : ""; //the only submatch or empty
225 | eval( "data = " + data );
226 | }
227 | // evaluate scripts within html
228 | if ( type == "html" )
229 | jQuery("").html(data).evalScripts();
230 | //alert($('param', data).each(function(){alert($(this).attr('value'));}));
231 | return data;
232 | }
233 | })
234 |
235 |
236 |
--------------------------------------------------------------------------------
/static/js/detect.js:
--------------------------------------------------------------------------------
1 | /**
2 | * jQuery.browser.mobile (http://detectmobilebrowser.com/)
3 | *
4 | * jQuery.browser.mobile will be true if the browser is a mobile device
5 | *
6 | **/
7 | (function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
--------------------------------------------------------------------------------
/static/js/jquery.app.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Theme: Adminto Admin Template
3 | * Author: Coderthemes
4 | * Module/App: Main Js
5 | */
6 |
7 |
8 | !function($) {
9 | "use strict";
10 |
11 | var Navbar = function() {};
12 |
13 | //navbar - topbar
14 | Navbar.prototype.init = function () {
15 | //toggle
16 | $('.navbar-toggle').on('click', function (event) {
17 | $(this).toggleClass('open');
18 | $('#navigation').slideToggle(400);
19 | $('.cart, .search').removeClass('open');
20 | });
21 |
22 | $('.navigation-menu>li').slice(-1).addClass('last-elements');
23 |
24 | $('.navigation-menu li.has-submenu a[href="#"]').on('click', function (e) {
25 | if ($(window).width() < 992) {
26 | e.preventDefault();
27 | $(this).parent('li').toggleClass('open').find('.submenu:first').toggleClass('open');
28 | }
29 | });
30 |
31 | $(".right-bar-toggle").click(function(){
32 | $(".right-bar").toggle();
33 | $('.wrapper').toggleClass('right-bar-enabled');
34 | });
35 | },
36 | //init
37 | $.Navbar = new Navbar, $.Navbar.Constructor = Navbar
38 | }(window.jQuery),
39 |
40 | //initializing
41 | function($) {
42 | "use strict";
43 | $.Navbar.init()
44 | }(window.jQuery);
45 |
46 |
--------------------------------------------------------------------------------
/static/js/jquery.core.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Theme: Adminto Admin Template
3 | * Author: Coderthemes
4 | * Module/App: Core js
5 | */
6 |
7 |
8 | //portlets
9 | !function($) {
10 | "use strict";
11 |
12 | /**
13 | Portlet Widget
14 | */
15 | var Portlet = function() {
16 | this.$body = $("body"),
17 | this.$portletIdentifier = ".portlet",
18 | this.$portletCloser = '.portlet a[data-toggle="remove"]',
19 | this.$portletRefresher = '.portlet a[data-toggle="reload"]'
20 | };
21 |
22 | //on init
23 | Portlet.prototype.init = function() {
24 | // Panel closest
25 | var $this = this;
26 | $(document).on("click",this.$portletCloser, function (ev) {
27 | ev.preventDefault();
28 | var $portlet = $(this).closest($this.$portletIdentifier);
29 | var $portlet_parent = $portlet.parent();
30 |
31 |
32 | $portlet.slideUp("slow", function() {
33 | $(this).remove();
34 | });
35 | if ($portlet_parent.children().length == 0) {
36 | $portlet_parent.slideUp("slow", function() {
37 | $(this).remove();
38 | });
39 | }
40 | });
41 |
42 | // Panel Reload
43 | $(document).on("click",this.$portletRefresher, function (ev) {
44 | ev.preventDefault();
45 | var $portlet = $(this).closest($this.$portletIdentifier);
46 | // This is just a simulation, nothing is going to be reloaded
47 | $portlet.append('
');
48 | var $pd = $portlet.find('.panel-disabled');
49 | setTimeout(function () {
50 | $pd.fadeOut('fast', function () {
51 | $pd.remove();
52 | });
53 | }, 500 + 300 * (Math.random() * 5));
54 | });
55 | },
56 | //
57 | $.Portlet = new Portlet, $.Portlet.Constructor = Portlet
58 |
59 | }(window.jQuery),
60 |
61 |
62 |
63 | /**
64 | * Components
65 | */
66 | function($) {
67 | "use strict";
68 |
69 | var Components = function() {};
70 |
71 | //initializing tooltip
72 | Components.prototype.initTooltipPlugin = function() {
73 | $.fn.tooltip && $('[data-toggle="tooltip"]').tooltip()
74 | },
75 |
76 | //initializing popover
77 | Components.prototype.initPopoverPlugin = function() {
78 | $.fn.popover && $('[data-toggle="popover"]').popover()
79 | },
80 |
81 | //initializing custom modal
82 | Components.prototype.initCustomModalPlugin = function() {
83 | $('[data-plugin="custommodal"]').on('click', function(e) {
84 | Custombox.open({
85 | target: $(this).attr("href"),
86 | effect: $(this).attr("data-animation"),
87 | overlaySpeed: $(this).attr("data-overlaySpeed"),
88 | overlayColor: $(this).attr("data-overlayColor")
89 | });
90 | e.preventDefault();
91 | });
92 | },
93 |
94 | //initializing nicescroll
95 | Components.prototype.initNiceScrollPlugin = function() {
96 | //You can change the color of scroll bar here
97 | $.fn.niceScroll && $(".nicescroll").niceScroll({ cursorcolor: '#98a6ad',cursorwidth:'6px', cursorborderradius: '5px'});
98 | },
99 |
100 | //range slider
101 | Components.prototype.initRangeSlider = function() {
102 | $.fn.slider && $('[data-plugin="range-slider"]').slider({});
103 | },
104 |
105 | /* -------------
106 | * Form related controls
107 | */
108 | //switch
109 | Components.prototype.initSwitchery = function() {
110 | $('[data-plugin="switchery"]').each(function (idx, obj) {
111 | new Switchery($(this)[0], $(this).data());
112 | });
113 | },
114 | //multiselect
115 | Components.prototype.initMultiSelect = function() {
116 | if($('[data-plugin="multiselect"]').length > 0)
117 | $('[data-plugin="multiselect"]').multiSelect($(this).data());
118 | },
119 |
120 | /* -------------
121 | * small charts related widgets
122 | */
123 | //peity charts
124 | Components.prototype.initPeityCharts = function() {
125 | $('[data-plugin="peity-pie"]').each(function(idx, obj) {
126 | var colors = $(this).attr('data-colors')?$(this).attr('data-colors').split(","):[];
127 | var width = $(this).attr('data-width')?$(this).attr('data-width'):20; //default is 20
128 | var height = $(this).attr('data-height')?$(this).attr('data-height'):20; //default is 20
129 | $(this).peity("pie", {
130 | fill: colors,
131 | width: width,
132 | height: height
133 | });
134 | });
135 | //donut
136 | $('[data-plugin="peity-donut"]').each(function(idx, obj) {
137 | var colors = $(this).attr('data-colors')?$(this).attr('data-colors').split(","):[];
138 | var width = $(this).attr('data-width')?$(this).attr('data-width'):20; //default is 20
139 | var height = $(this).attr('data-height')?$(this).attr('data-height'):20; //default is 20
140 | $(this).peity("donut", {
141 | fill: colors,
142 | width: width,
143 | height: height
144 | });
145 | });
146 |
147 | $('[data-plugin="peity-donut-alt"]').each(function(idx, obj) {
148 | $(this).peity("donut");
149 | });
150 |
151 | // line
152 | $('[data-plugin="peity-line"]').each(function(idx, obj) {
153 | $(this).peity("line", $(this).data());
154 | });
155 |
156 | // bar
157 | $('[data-plugin="peity-bar"]').each(function(idx, obj) {
158 | var colors = $(this).attr('data-colors')?$(this).attr('data-colors').split(","):[];
159 | var width = $(this).attr('data-width')?$(this).attr('data-width'):20; //default is 20
160 | var height = $(this).attr('data-height')?$(this).attr('data-height'):20; //default is 20
161 | $(this).peity("bar", {
162 | fill: colors,
163 | width: width,
164 | height: height
165 | });
166 | });
167 | },
168 | Components.prototype.initKnob = function() {
169 | $('[data-plugin="knob"]').each(function(idx, obj) {
170 | $(this).knob();
171 | });
172 | },
173 |
174 | Components.prototype.initCircliful = function() {
175 | $('[data-plugin="circliful"]').each(function(idx, obj) {
176 | $(this).circliful();
177 | });
178 | },
179 |
180 | Components.prototype.initCounterUp = function() {
181 | var delay = $(this).attr('data-delay')?$(this).attr('data-delay'):100; //default is 100
182 | var time = $(this).attr('data-time')?$(this).attr('data-time'):1200; //default is 1200
183 | $('[data-plugin="counterup"]').each(function(idx, obj) {
184 | $(this).counterUp({
185 | delay: 100,
186 | time: 1200
187 | });
188 | });
189 | },
190 |
191 |
192 | //initilizing
193 | Components.prototype.init = function() {
194 | var $this = this;
195 | this.initTooltipPlugin(),
196 | this.initPopoverPlugin(),
197 | this.initNiceScrollPlugin(),
198 | this.initCustomModalPlugin(),
199 | this.initRangeSlider(),
200 | this.initSwitchery(),
201 | this.initMultiSelect(),
202 | this.initPeityCharts(),
203 | this.initKnob(),
204 | this.initCircliful(),
205 | this.initCounterUp(),
206 | //creating portles
207 | $.Portlet.init();
208 | },
209 |
210 | $.Components = new Components, $.Components.Constructor = Components
211 |
212 | }(window.jQuery),
213 | //initializing main application module
214 | function($) {
215 | "use strict";
216 | $.Components.init();
217 | }(window.jQuery);
218 |
219 |
220 |
221 |
222 |
--------------------------------------------------------------------------------
/static/js/jquery.counterup.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * jquery.counterup.js 1.0
3 | *
4 | * Copyright 2013, Benjamin Intal http://gambit.ph @bfintal
5 | * Released under the GPL v2 License
6 | *
7 | * Date: Nov 26, 2013
8 | */(function(e){"use strict";e.fn.counterUp=function(t){var n=e.extend({time:400,delay:10},t);return this.each(function(){var t=e(this),r=n,i=function(){var e=[],n=r.time/r.delay,i=t.text(),s=/[0-9]+,[0-9]+/.test(i);i=i.replace(/,/g,"");var o=/^[0-9]+$/.test(i),u=/^[0-9]+\.[0-9]+$/.test(i),a=u?(i.split(".")[1]||[]).length:0;for(var f=n;f>=1;f--){var l=parseInt(i/n*f);u&&(l=parseFloat(i/n*f).toFixed(a));if(s)while(/(\d+)(\d{3})/.test(l.toString()))l=l.toString().replace(/(\d+)(\d{3})/,"$1,$2");e.unshift(l)}t.data("counterup-nums",e);t.text("0");var c=function(){t.text(t.data("counterup-nums").shift());if(t.data("counterup-nums").length)setTimeout(t.data("counterup-func"),r.delay);else{delete t.data("counterup-nums");t.data("counterup-nums",null);t.data("counterup-func",null)}};t.data("counterup-func",c);setTimeout(t.data("counterup-func"),r.delay)};t.waypoint(i,{offset:"100%",triggerOnce:!0})})}})(jQuery);
--------------------------------------------------------------------------------
/static/js/jquery.scrollTo.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2007-2013 Ariel Flesler - aflesler
gmailcom | http://flesler.blogspot.com
3 | * Dual licensed under MIT and GPL.
4 | * @author Ariel Flesler
5 | * @version 1.4.6
6 | */
7 | ;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,targ,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
8 |
--------------------------------------------------------------------------------
/static/js/module.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define("simple-module",["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.SimpleModule=b(jQuery)}(this,function(a){var b,c=[].slice;return b=function(){function b(b){var c,d,e,f,g,h,i;if(this.opts=a.extend({},this.opts,b),(g=this.constructor)._connectedClasses||(g._connectedClasses=[]),e=function(){var a,b,d,e;for(d=this.constructor._connectedClasses,e=[],a=0,b=d.length;b>a;a++)c=d[a],f=c.pluginName.charAt(0).toLowerCase()+c.pluginName.slice(1),c.prototype._connected&&(c.prototype._module=this),e.push(this[f]=new c);return e}.call(this),this._connected)this.opts=a.extend({},this.opts,this._module.opts);else for(this._init(),h=0,i=e.length;i>h;h++)d=e[h],"function"==typeof d._init&&d._init();this.trigger("initialized")}return b.extend=function(a){var b,c,d;if(null!=a&&"object"==typeof a){for(b in a)c=a[b],"included"!==b&&"extended"!==b&&(this[b]=c);return null!=(d=a.extended)?d.call(this):void 0}},b.include=function(a){var b,c,d;if(null!=a&&"object"==typeof a){for(b in a)c=a[b],"included"!==b&&"extended"!==b&&(this.prototype[b]=c);return null!=(d=a.included)?d.call(this):void 0}},b.connect=function(a){if("function"==typeof a){if(!a.pluginName)throw new Error("Module.connect: cannot connect plugin without pluginName");return a.prototype._connected=!0,this._connectedClasses||(this._connectedClasses=[]),this._connectedClasses.push(a),a.pluginName?this[a.pluginName]=a:void 0}},b.prototype.opts={},b.prototype._init=function(){},b.prototype.on=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).on.apply(d,b),this},b.prototype.one=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).one.apply(d,b),this},b.prototype.off=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).off.apply(d,b),this},b.prototype.trigger=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).trigger.apply(d,b),this},b.prototype.triggerHandler=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).triggerHandler.apply(d,b)},b.prototype._t=function(){var a,b;return a=1<=arguments.length?c.call(arguments,0):[],(b=this.constructor)._t.apply(b,a)},b._t=function(){var a,b,d,e;return b=arguments[0],a=2<=arguments.length?c.call(arguments,1):[],d=(null!=(e=this.i18n[this.locale])?e[b]:void 0)||"",a.length>0?(d=d.replace(/([^%]|^)%(?:(\d+)\$)?s/g,function(b,c,d){return d?c+a[parseInt(d)-1]:c+a.shift()}),d.replace(/%%s/g,"%s")):d},b.i18n={"zh-CN":{}},b.locale="zh-CN",b}()});
--------------------------------------------------------------------------------
/static/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/static/js/uploader.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define("simple-uploader",["jquery","simple-module"],function(c,d){return a.uploader=b(c,d)}):"object"==typeof exports?module.exports=b(require("jquery"),require("simplemodule")):(a.simple=a.simple||{},a.simple.uploader=b(jQuery,SimpleModule))}(this,function(a,b){var c,d,e=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},f={}.hasOwnProperty;return c=function(b){function c(){return c.__super__.constructor.apply(this,arguments)}return e(c,b),c.count=0,c.prototype.opts={url:"",params:null,fileKey:"upload_file",connectionCount:3},c.prototype._init=function(){return this.files=[],this.queue=[],this.id=++c.count,this.on("uploadcomplete",function(b){return function(c,d){return b.files.splice(a.inArray(d,b.files),1),b.queue.length>0&&b.files.lengthe;e++)d=b[e],this.upload(d,c);else a(b).is("input:file")?(f=a(b).attr("name"),f&&(c.fileKey=f),this.upload(a.makeArray(a(b)[0].files),c)):b.id&&b.obj||(b=this.getFile(b));if(b&&b.obj){if(a.extend(b,c),this.files.length>=this.opts.connectionCount)return void this.queue.push(b);if(this.triggerHandler("beforeupload",[b])!==!1)return this.files.push(b),this._xhrUpload(b),this.uploading=!0}}},c.prototype.getFile=function(a){var b,c,d;return a instanceof window.File||a instanceof window.Blob?(b=null!=(c=a.fileName)?c:a.name,{id:this.generateId(),url:this.opts.url,params:this.opts.params,fileKey:this.opts.fileKey,name:b,size:null!=(d=a.fileSize)?d:a.size,ext:b?b.split(".").pop().toLowerCase():"",obj:a}):null},c.prototype._xhrUpload=function(b){var c,d,e,f;if(c=new FormData,c.append(b.fileKey,b.obj),c.append("original_filename",b.name),b.params){e=b.params;for(d in e)f=e[d],c.append(d,f)}return b.xhr=a.ajax({url:b.url,data:c,processData:!1,contentType:!1,type:"POST",headers:{"X-File-Name":encodeURIComponent(b.name)},xhr:function(){var b;return b=a.ajaxSettings.xhr(),b&&(b.upload.onprogress=function(a){return function(b){return a.progress(b)}}(this)),b},progress:function(a){return function(c){return c.lengthComputable?a.trigger("uploadprogress",[b,c.loaded,c.total]):void 0}}(this),error:function(a){return function(c,d,e){return a.trigger("uploaderror",[b,c,d])}}(this),success:function(c){return function(d){return c.trigger("uploadprogress",[b,b.size,b.size]),c.trigger("uploadsuccess",[b,d]),a(document).trigger("uploadsuccess",[b,d,c])}}(this),complete:function(a){return function(c,d){return a.trigger("uploadcomplete",[b,c.responseText])}}(this)})},c.prototype.cancel=function(a){var b,c,d,e;if(!a.id)for(e=this.files,c=0,d=e.length;d>c;c++)if(b=e[c],b.id===1*a){a=b;break}return this.trigger("uploadcancel",[a]),a.xhr&&a.xhr.abort(),a.xhr=null},c.prototype.readImageFile=function(b,c){var d,e;if(a.isFunction(c))return e=new Image,e.onload=function(){return c(e)},e.onerror=function(){return c()},window.FileReader&&FileReader.prototype.readAsDataURL&&/^image/.test(b.type)?(d=new FileReader,d.onload=function(a){return e.src=a.target.result},d.readAsDataURL(b)):c()},c.prototype.destroy=function(){var b,c,d,e;for(this.queue.length=0,e=this.files,c=0,d=e.length;d>c;c++)b=e[c],this.cancel(b);return a(window).off(".uploader-"+this.id),a(document).off(".uploader-"+this.id)},c.i18n={"zh-CN":{leaveConfirm:"正在上传文件,如果离开上传会自动取消"}},c.locale="zh-CN",c}(b),d=function(a){return new c(a)}});
--------------------------------------------------------------------------------
/static/js/wow.min.js:
--------------------------------------------------------------------------------
1 | /*! WOW - v0.1.9 - 2014-05-10
2 | * Copyright (c) 2014 Matthieu Aussaguel; Licensed MIT */(function(){var a,b,c=function(a,b){return function(){return a.apply(b,arguments)}};a=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in a)d=a[c],null!=d&&(b[c]=d);return b},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a}(),b=this.WeakMap||(b=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),this.WOW=function(){function d(a){null==a&&(a={}),this.scrollCallback=c(this.scrollCallback,this),this.scrollHandler=c(this.scrollHandler,this),this.start=c(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),this.animationNameCache=new b}return d.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0},d.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():document.addEventListener("DOMContentLoaded",this.start)},d.prototype.start=function(){var a,b,c,d;if(this.boxes=this.element.getElementsByClassName(this.config.boxClass),this.boxes.length){if(this.disabled())return this.resetStyle();for(d=this.boxes,b=0,c=d.length;c>b;b++)a=d[b],this.applyStyle(a,!0);return window.addEventListener("scroll",this.scrollHandler,!1),window.addEventListener("resize",this.scrollHandler,!1),this.interval=setInterval(this.scrollCallback,50)}},d.prototype.stop=function(){return window.removeEventListener("scroll",this.scrollHandler,!1),window.removeEventListener("resize",this.scrollHandler,!1),null!=this.interval?clearInterval(this.interval):void 0},d.prototype.show=function(a){return this.applyStyle(a),a.className=""+a.className+" "+this.config.animateClass},d.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},d.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),d.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.setAttribute("style","visibility: visible;"));return e},d.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a},d.prototype.vendors=["moz","webkit"],d.prototype.vendorSet=function(a,b){var c,d,e,f;f=[];for(c in b)d=b[c],a[""+c]=d,f.push(function(){var b,f,g,h;for(g=this.vendors,h=[],b=0,f=g.length;f>b;b++)e=g[b],h.push(a[""+e+c.charAt(0).toUpperCase()+c.substr(1)]=d);return h}.call(this));return f},d.prototype.vendorCSS=function(a,b){var c,d,e,f,g,h;for(d=window.getComputedStyle(a),c=d.getPropertyCSSValue(b),h=this.vendors,f=0,g=h.length;g>f;f++)e=h[f],c=c||d.getPropertyCSSValue("-"+e+"-"+b);return c},d.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=window.getComputedStyle(a).getPropertyValue("animation-name")}return"none"===b?"":b},d.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},d.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},d.prototype.scrollHandler=function(){return this.scrolled=!0},d.prototype.scrollCallback=function(){var a;return this.scrolled&&(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),!this.boxes.length)?this.stop():void 0},d.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},d.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=window.pageYOffset,e=f+this.element.clientHeight-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},d.prototype.util=function(){return this._util||(this._util=new a)},d.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},d}()}).call(this);
--------------------------------------------------------------------------------
/static/less/icons.less:
--------------------------------------------------------------------------------
1 | /*
2 | Template Name: Adminto Dashboard
3 | Author: CoderThemes
4 | Email: coderthemes@gmail.com
5 | File: Icons
6 | */
7 |
8 | @import "icons/font-awesome/less/font-awesome";
9 | @import "icons/themify-icons/themify-icons";
10 | @import "icons/material-design-iconic-font/material-design-iconic-font";
11 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/HELP-US-OUT.txt:
--------------------------------------------------------------------------------
1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
2 | Fonticons (https://fonticons.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
3 | comprehensive icon sets or copy and paste your own.
4 |
5 | Please. Check it out.
6 |
7 | -Dave Gandy
8 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/css/mixins.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/css/mixins.css
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/css/variables.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/css/variables.css
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/animated.less:
--------------------------------------------------------------------------------
1 | // Animated Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .@{fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .@{fa-css-prefix}-pull-left { float: left; }
11 | .@{fa-css-prefix}-pull-right { float: right; }
12 |
13 | .@{fa-css-prefix} {
14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .@{fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/list.less:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: @fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | .fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | .fa-icon-rotate(@degrees, @rotation) {
15 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
16 | -webkit-transform: rotate(@degrees);
17 | -ms-transform: rotate(@degrees);
18 | transform: rotate(@degrees);
19 | }
20 |
21 | .fa-icon-flip(@horiz, @vert, @rotation) {
22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
23 | -webkit-transform: scale(@horiz, @vert);
24 | -ms-transform: scale(@horiz, @vert);
25 | transform: scale(@horiz, @vert);
26 | }
27 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/rotated-flipped.less:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7 |
8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .@{fa-css-prefix}-rotate-90,
15 | :root .@{fa-css-prefix}-rotate-180,
16 | :root .@{fa-css-prefix}-rotate-270,
17 | :root .@{fa-css-prefix}-flip-horizontal,
18 | :root .@{fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_animated.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .#{$fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .#{$fa-css-prefix}-pull-left { float: left; }
11 | .#{$fa-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .#{$fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | @mixin fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | @mixin fa-icon-rotate($degrees, $rotation) {
15 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
16 | -webkit-transform: rotate($degrees);
17 | -ms-transform: rotate($degrees);
18 | transform: rotate($degrees);
19 | }
20 |
21 | @mixin fa-icon-flip($horiz, $vert, $rotation) {
22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
23 | -webkit-transform: scale($horiz, $vert);
24 | -ms-transform: scale($horiz, $vert);
25 | transform: scale($horiz, $vert);
26 | }
27 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
7 |
8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .#{$fa-css-prefix}-rotate-90,
15 | :root .#{$fa-css-prefix}-rotate-180,
16 | :root .#{$fa-css-prefix}-rotate-270,
17 | :root .#{$fa-css-prefix}-flip-horizontal,
18 | :root .#{$fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/static/less/icons/font-awesome/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 |
--------------------------------------------------------------------------------
/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot
--------------------------------------------------------------------------------
/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf
--------------------------------------------------------------------------------
/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff
--------------------------------------------------------------------------------
/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2
--------------------------------------------------------------------------------
/static/less/icons/themify-icons/fonts/themify.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/themify-icons/fonts/themify.eot
--------------------------------------------------------------------------------
/static/less/icons/themify-icons/fonts/themify.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/themify-icons/fonts/themify.ttf
--------------------------------------------------------------------------------
/static/less/icons/themify-icons/fonts/themify.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/less/icons/themify-icons/fonts/themify.woff
--------------------------------------------------------------------------------
/static/less/responsive.less:
--------------------------------------------------------------------------------
1 |
2 | @import "variables.less";
3 | @import "elements.less";
4 |
5 |
6 | /*
7 | Template Name: Adminto Dashboard
8 | Author: CoderThemes
9 | Email: coderthemes@gmail.com
10 | File: Responsive
11 | */
12 |
13 | @media only screen and (max-width: 6000px) and (min-width: 700px) {
14 | .wrapper.right-bar-enabled {
15 | .right-bar {
16 | right: 0;
17 | z-index: 99;
18 | }
19 | }
20 | }
21 |
22 | @media (max-width: 1023px) {
23 | .button-menu-mobile {
24 | display: block !important;
25 | }
26 | }
27 |
28 | @media (min-width: 768px) and (max-width: 991px) {
29 | body {
30 | overflow-x: hidden;
31 | }
32 | }
33 |
34 | @media (max-width: 767px) {
35 | body {
36 | overflow-x: hidden;
37 | }
38 | .enlarged {
39 | .left.side-menu {
40 | margin-left: -75px;
41 | }
42 | }
43 | .topbar-left {
44 | width: 70px !important;
45 | }
46 | .content-page .content {
47 | margin-top: 95px;
48 | }
49 | .topbar .topbar-left {
50 | height: 75px;
51 | }
52 |
53 | .navbar-default {
54 | background-color: @white;
55 | box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02);
56 | }
57 | .navbar-nav {
58 | margin: 0px;
59 | display: inline-block;
60 |
61 | li {
62 | display: inline-block;
63 | line-height: 1px;
64 | }
65 | }
66 | .navbar-nav.navbar-right {
67 | float: right;
68 | }
69 | .notification-box {
70 | display: inline;
71 |
72 | ul {
73 | li{
74 | a{
75 | line-height: 46px;
76 | }
77 | }
78 | }
79 |
80 | .pulse {
81 | top: 5px;
82 | }
83 | .dot {
84 | top: -7px;
85 | left: -3px;
86 | }
87 | }
88 | #topnav .navbar-toggle {
89 | margin-right: 5px;
90 | }
91 | .navbar-nav {
92 | .open {
93 | .dropdown-menu {
94 | background-color: @white;
95 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26);
96 | left: auto;
97 | position: absolute;
98 | right: 0;
99 |
100 | li{
101 | display: block;
102 | }
103 | }
104 | }
105 | }
106 | .content-page {
107 | margin-left: 0px !important;
108 | }
109 | .footer {
110 | left: 0px !important;
111 | }
112 |
113 | .mobile-sidebar {
114 | left: 0px;
115 | }
116 |
117 | .mobile-content {
118 | left: 250px;
119 | right: -250px;
120 | }
121 |
122 | .wrapper-page {
123 | width: 90%;
124 | }
125 |
126 | .dataTables_wrapper {
127 | .col-xs-6 {
128 | width: 100%;
129 | text-align: left;
130 | }
131 | }
132 |
133 | div#datatable-buttons_info {
134 | float: none;
135 | }
136 | }
137 |
138 | @media (max-width: 480px) {
139 | .side-menu {
140 | z-index: 10 !important;
141 | }
142 |
143 | .button-menu-mobile {
144 | display: block;
145 | }
146 |
147 | .search-bar {
148 | display: none !important;
149 | }
150 | }
151 |
152 | @media (max-width: 420px) {
153 | .hide-phone {
154 | display: none !important;
155 | }
156 | }
157 |
158 | /* Container-alt */
159 | @media (min-width: 768px) {
160 | .container-alt {
161 | width: 750px;
162 | }
163 |
164 | .nav-tabs.nav-justified > li > a {
165 | border-bottom: 2px solid @light;
166 | }
167 | }
168 |
169 | @media (min-width: 992px) {
170 | .container-alt {
171 | width: 970px;
172 | }
173 | }
174 |
175 | @media (min-width: 1200px) {
176 | .container-alt {
177 | width: 1170px;
178 | }
179 | }
180 | @media (max-width: 419px) {
181 | .topbar-left {
182 | width: 70px !important;
183 | }
184 | .content-page {
185 | margin-left: 70px;
186 | }
187 | .forced {
188 | .side-menu.left {
189 | box-shadow: 0 12px 12px rgba(0, 0, 0, 0.1);
190 | position: absolute;
191 | }
192 | }
193 | .enlarged {
194 | .side-menu.left {
195 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) !important;
196 | }
197 | }
198 |
199 | .profile-info-name img {
200 | float: none;
201 | margin: 0px auto;
202 | margin-bottom: 20px;
203 | }
204 | div.hopscotch-bubble .hopscotch-bubble-container {
205 | max-width: 180px;
206 | }
207 | }
208 |
209 |
--------------------------------------------------------------------------------
/static/less/variables.less:
--------------------------------------------------------------------------------
1 |
2 |
3 | @custom: #71b6f9;
4 |
5 |
6 | // Color variables
7 |
8 | @white: #ffffff;
9 |
10 | @default: #dae6ec;
11 | @primary: #188ae2;
12 | @success: #10c469;
13 | @info: #35b8e0;
14 | @warning: #f9c851;
15 | @danger: #ff5b5b;
16 | @purple: #5b69bc;
17 | @pink: #ff8acc;
18 | @inverse: #3b3e47;
19 | @muted: #98a6ad;
20 | @light: #eeeeee;
21 | @dark: #435966;
22 | @lightdark3: #333333;
23 | @lightdark4: #444444;
24 | @lightdark5: #555555;
25 | @lightdark7: #797979;
26 | @light5: #ebeff2;
27 | @light3: #f3f3f3;
28 | @light9: #f9f9f9;
29 | @light-alt: #fafafa;
30 | @lightdark-alt: #cccccc;
31 | @lightdark: #f4f8fb;
32 | @lightgray: #7a8c9a;
33 |
34 |
35 | // Width variables
36 | @width: 100%;
37 |
38 | // Height variables
39 | @height: 100%;
40 |
41 | //Font variables
42 | @font-primary: 'Roboto', sans-serif;
43 | @font-secondary: 'Karla', sans-serif;
44 |
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə","Bazar"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş.","B."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş.","B."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота","Неделя"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб","Нед"],daysMin:["Н","П","В","С","Ч","П","С","Н"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub","Ned"],daysMin:["N","Po","U","Sr","Č","Pe","Su","N"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte","Diumenge"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis","Diu"],daysMin:["dg","dl","dt","dc","dj","dv","ds","dg"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota","Neděle"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob","Ned"],daysMin:["Ne","Po","Út","St","Čt","Pá","So","Ne"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",weekStart:1,format:"d.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn","Sul"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad","Sul"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa","Su"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag","Søndag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør","Søn"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø","Sø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",clear:"Nulstil"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam","Son"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa","So"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο","Κυριακή"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ","Κυρ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα","Κυ"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb","Dom"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa","Do"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev","Pühapäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup","Pühap"],daysMin:["P","E","T","K","N","R","L","P"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata","Igandea"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr","Ig"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr","Ig"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fa={days:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai","sunnuntai"],daysShort:["sun","maa","tii","kes","tor","per","lau","sun"],daysMin:["su","ma","ti","ke","to","pe","la","su"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",weekStart:1,format:"d.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur","Sunnudagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley","Sun"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le","Su"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam","Dim"],daysMin:["D","L","Ma","Me","J","V","S","D"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam.","dim."],daysMin:["d","l","ma","me","j","v","s","d"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado","Domingo"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb","Dom"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa","Do"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub","Ned"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su","Ne"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hu={days:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat","Vasárnap"],daysShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo","Vas"],daysMin:["Va","Hé","Ke","Sz","Cs","Pé","Sz","Va"],months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthsShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Sze","Okt","Nov","Dec"],today:"Ma",weekStart:1,format:"yyyy.mm.dd"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ","Կիրակի"],daysShort:["Կիր","Երկ","Երք","Չոր","Հնգ","Ուր","Շաբ","Կիր"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա","Կի"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab","Mgu"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa","Mg"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur","Sunnudagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau","Sun"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La","Su"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato","Domenica"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Dom"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa","Do"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato","Domenica"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab","Dom"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa","Do"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜","日曜"],daysShort:["日","月","火","水","木","金","土","日"],daysMin:["日","月","火","水","木","金","土","日"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",clear:"クリア"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი","კვირა"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ","კვი"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა","კვ"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომები","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍","អាទិត្យ"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі","Жексенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен","Жек"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн","Жк"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мамыр","Мау","Шлд","Тмз","Қыр","Қзн","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일","일요일"],daysShort:["일","월","화","수","목","금","토","일"],daysMin:["일","월","화","수","목","금","토","일"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis","Sekmadienis"],daysShort:["S","Pr","A","T","K","Pn","Š","S"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št","Sk"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena","Svētdiena"],daysShort:["Sv","P","O","T","C","Pk","S","Sv"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se","Sv"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],today:"Šodien",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub","Ned"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su","Ne"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота","Недела"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб","Нед"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са","Не"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu","Ahad"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab","Aha"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa","Ah"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nb.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.nb={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag","Søndag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør","Søn"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø","Sø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I Dag"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"],daysShort:["zo","ma","di","wo","do","vr","za","zo"],daysMin:["zo","ma","di","wo","do","vr","za","zo"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag"],daysShort:["zo","ma","di","wo","do","vr","za","zo"],daysMin:["zo","ma","di","wo","do","vr","za","zo"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.no={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I dag",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota","Niedziela"],daysShort:["Nie","Pn","Wt","Śr","Czw","Pt","So","Nie"],daysMin:["N","Pn","Wt","Śr","Cz","Pt","So","N"],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],today:"Dzisiaj",weekStart:1,clear:"Wyczyść"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado","Domingo"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb","Dom"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa","Do"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",clear:"Limpar"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado","Domingo"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb","Dom"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa","Do"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",clear:"Limpar"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă","Duminică"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm","Dum"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ","Du"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota","Nedelja"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub","Ned"],daysMin:["N","Po","U","Sr","Č","Pe","Su","N"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота","Недеља"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб","Нед"],daysMin:["Н","По","У","Ср","Ч","Пе","Су","Н"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб","Вск"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб","Вс"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota","Nedeľa"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob","Ned"],daysMin:["Ne","Po","Ut","St","Št","Pia","So","Ne"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota","Nedelja"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob","Ned"],daysMin:["Ne","Po","To","Sr","Če","Pe","So","Ne"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë","E Diel"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu","Die"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht","Di"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],today:"Sot"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota","Nedelja"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub","Ned"],daysMin:["N","Po","U","Sr","Č","Pe","Su","N"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота","Недеља"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб","Нед"],daysMin:["Н","По","У","Ср","Ч","Пе","Су","Н"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sv={days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag","Söndag"],daysShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör","Sön"],daysMin:["Sö","Må","Ti","On","To","Fr","Lö","Sö"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi","Jumapili"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1","J2"],daysMin:["2","3","4","5","A","I","1","2"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts","Pz"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct","Pz"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота","Неділя"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб","Нед"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб","Нд"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy","Chủ nhật"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7","CN"],daysMin:["CN","T2","T3","T4","T5","T6","T7","CN"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"],daysShort:["周日","周一","周二","周三","周四","周五","周六","周日"],daysMin:["日","一","二","三","四","五","六","日"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今日",format:"yyyy年mm月dd日",weekStart:1,clear:"清空"}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"],daysShort:["週日","週一","週二","週三","週四","週五","週六","週日"],daysMin:["日","一","二","三","四","五","六","日"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/static/plugin/jquery.waypoints.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | Waypoints - 3.1.1
3 | Copyright © 2011-2015 Caleb Troughton
4 | Licensed under the MIT license.
5 | https://github.com/imakewebthings/waypoints/blog/master/licenses.txt
6 | */
7 | !function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.invokeAll("enable")},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical);t&&e&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s],l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var n in t){var r=t[n];for(var s in this.waypoints[n]){var a,l,h,p,u,c=this.waypoints[n][s],d=c.options.offset,f=c.triggerPoint,w=0,y=null==f;c.element!==c.element.window&&(w=c.adapter.offset()[r.offsetProp]),"function"==typeof d?d=d.apply(c):"string"==typeof d&&(d=parseFloat(d),c.options.offset.indexOf("%")>-1&&(d=Math.ceil(r.contextDimension*d/100))),a=r.contextScroll-r.contextOffset,c.triggerPoint=w+a-d,l=f=r.oldScroll,p=l&&h,u=!l&&!h,!y&&p?(c.queueTrigger(r.backward),o[c.group.id]=c.group):!y&&u?(c.queueTrigger(r.forward),o[c.group.id]=c.group):y&&r.oldScroll>=c.triggerPoint&&(c.queueTrigger(r.forward),o[c.group.id]=c.group)}}for(var g in o)o[g].flushTriggers();return this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
--------------------------------------------------------------------------------
/static/plugin/morris/morris.css:
--------------------------------------------------------------------------------
1 | .morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0}
2 | .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0}
3 |
--------------------------------------------------------------------------------
/static/plugin/multiselect/css/multi-select.css:
--------------------------------------------------------------------------------
1 | .ms-container{
2 | background: transparent url('../img/switch.png') no-repeat 50% 50%;
3 | width: 545px;
4 | }
5 |
6 | .ms-container:after{
7 | content: ".";
8 | display: block;
9 | height: 0;
10 | line-height: 0;
11 | font-size: 0;
12 | clear: both;
13 | min-height: 0;
14 | visibility: hidden;
15 | }
16 |
17 | .ms-container .ms-selectable, .ms-container .ms-selection{
18 | background: rgba(57,76,87,0.7);
19 | color: #555555;
20 | float: left;
21 | width: 45%;
22 | }
23 | .ms-container .ms-selection{
24 | float: right;
25 | }
26 |
27 | .ms-container .ms-list{
28 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
29 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
30 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
31 | -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
32 | -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
33 | -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
34 | -o-transition: border linear 0.2s, box-shadow linear 0.2s;
35 | transition: border linear 0.2s, box-shadow linear 0.2s;
36 | border: 1px solid black;
37 | -webkit-border-radius: 3px;
38 | -moz-border-radius: 3px;
39 | border-radius: 3px;
40 | position: relative;
41 | height: 200px;
42 | padding: 0;
43 | overflow-y: auto;
44 | }
45 |
46 | .ms-container .ms-list.ms-focus{
47 | border-color: rgba(82, 168, 236, 0.8);
48 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
49 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
50 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
51 | outline: 0;
52 | outline: thin dotted \9;
53 | }
54 |
55 | .ms-container ul{
56 | margin: 0;
57 | list-style-type: none;
58 | padding: 0;
59 | }
60 |
61 | .ms-container .ms-optgroup-container{
62 | width: 100%;
63 | }
64 |
65 | .ms-container .ms-optgroup-label{
66 | margin: 0;
67 | padding: 5px 0px 0px 5px;
68 | cursor: pointer;
69 | color: #999;
70 | }
71 |
72 | .ms-container .ms-selectable li.ms-elem-selectable,
73 | .ms-container .ms-selection li.ms-elem-selection{
74 | border-bottom: 1px #eee solid;
75 | padding: 2px 10px;
76 | color: #999999;
77 | font-size: 14px;
78 | }
79 |
80 | .ms-container .ms-selectable li.ms-hover,
81 | .ms-container .ms-selection li.ms-hover{
82 | cursor: pointer;
83 | color: #fff;
84 | text-decoration: none;
85 | background-color: #08c;
86 | }
87 |
88 | .ms-container .ms-selectable li.disabled,
89 | .ms-container .ms-selection li.disabled{
90 | background-color: #eee;
91 | color: #aaa;
92 | cursor: text;
93 | }
94 |
--------------------------------------------------------------------------------
/static/plugin/multiselect/img/switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/plugin/multiselect/img/switch.png
--------------------------------------------------------------------------------
/static/plugin/switchery/switchery.min.css:
--------------------------------------------------------------------------------
1 | .switchery{background-color:#fff;border:1px solid #dfdfdf;border-radius:20px;cursor:pointer;display:inline-block;height:30px;position:relative;vertical-align:middle;width:50px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box;background-clip:content-box}.switchery>small{background:#fff;border-radius:100%;box-shadow:0 1px 3px rgba(0,0,0,0.4);height:30px;position:absolute;top:0;width:30px}.switchery-small{border-radius:20px;height:20px;width:33px}.switchery-small>small{height:20px;width:20px}.switchery-large{border-radius:40px;height:40px;width:66px}.switchery-large>small{height:40px;width:40px}
--------------------------------------------------------------------------------
/static/plugin/tip-darkgray/tip-darkgray.css:
--------------------------------------------------------------------------------
1 | .tip-darkgray {
2 | opacity:0.95;
3 | z-index:1000;
4 | text-align:left;
5 | text-shadow:#444 0 1px 1px;
6 | border:1px solid #888;
7 | padding:8px;
8 | min-width:50px;
9 | max-width:530px;
10 | color:#fff;
11 | background-color:#999;
12 | background-image:url(tip-darkgray.png); /* bgImageFrameSize >= 11 should work fine */
13 | /**
14 | * - If you set a background-image, border/padding/background-color will be ingnored.
15 | * You can set any padding to .tip-inner instead if you need.
16 | * - If you want a tiled background-image and border/padding for the tip,
17 | * set the background-image to .tip-inner instead.
18 | */
19 | }
20 | .tip-darkgray .tip-inner {
21 | font:bold 12px/18px arial,helvetica,sans-serif;
22 | margin-top:-1px;
23 | padding:0 4px 3px 4px;
24 | }
25 |
26 | /* Configure an arrow image - the script will automatically position it on the correct side of the tip */
27 | .tip-darkgray .tip-arrow-top {
28 | margin-top:-7px;
29 | margin-left:15px;
30 | top:0;
31 | left:0;
32 | width:16px;
33 | height:10px;
34 | background:url(tip-darkgray_arrows.png) no-repeat;
35 | }
36 | .tip-darkgray .tip-arrow-right {
37 | margin-top:-9px; /* approx. half the height to center it */
38 | margin-left:-7px;
39 | top:50%;
40 | left:100%;
41 | width:11px;
42 | height:21px;
43 | background:url(tip-darkgray_arrows.png) no-repeat -22px 0;
44 | }
45 | .tip-darkgray .tip-arrow-bottom {
46 | margin-top:-7px;
47 | margin-left:15px;
48 | top:100%;
49 | left:0;
50 | width:22px;
51 | height:13px;
52 | background:url(tip-darkgray_arrows.png) no-repeat -44px 0;
53 | }
54 | .tip-darkgray .tip-arrow-left {
55 | margin-top:-9px; /* approx. half the height to center it */
56 | margin-left:-6px;
57 | top:50%;
58 | left:0;
59 | width:11px;
60 | height:21px;
61 | background:url(tip-darkgray_arrows.png) no-repeat -66px 0;
62 | }
--------------------------------------------------------------------------------
/static/plugin/tip-darkgray/tip-darkgray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/plugin/tip-darkgray/tip-darkgray.png
--------------------------------------------------------------------------------
/static/plugin/tip-darkgray/tip-darkgray_arrows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/plugin/tip-darkgray/tip-darkgray_arrows.png
--------------------------------------------------------------------------------
/static/plugin/tip-twitter/tip-twitter.css:
--------------------------------------------------------------------------------
1 | .tip-twitter {
2 | opacity:0.8;
3 | z-index:1000;
4 | text-align:left;
5 | border-radius:4px;
6 | -moz-border-radius:4px;
7 | -webkit-border-radius:4px;
8 | padding:8px 8px;
9 | max-width:200px;
10 | color:#fff;
11 | background-color:#000;
12 | /**
13 | * - If you set a background-image, border/padding/background-color will be ingnored.
14 | * You can set any padding to .tip-inner instead if you need.
15 | * - If you want a tiled background-image and border/padding for the tip,
16 | * set the background-image to .tip-inner instead.
17 | */
18 | }
19 | .tip-twitter .tip-inner {
20 | font:bold 11px/14px 'Lucida Grande',sans-serif;
21 | }
22 |
23 | /* Configure an arrow image - the script will automatically position it on the correct side of the tip */
24 | .tip-twitter .tip-arrow-top {
25 | margin-top:-5px;
26 | margin-left:-5px; /* approx. half the width to center it */
27 | top:0;
28 | left:50%;
29 | width:9px;
30 | height:5px;
31 | background:url(tip-twitter_arrows.gif) no-repeat;
32 | }
33 | .tip-twitter .tip-arrow-right {
34 | margin-top:-4px; /* approx. half the height to center it */
35 | margin-left:0;
36 | top:50%;
37 | left:100%;
38 | width:5px;
39 | height:9px;
40 | background:url(tip-twitter_arrows.gif) no-repeat -9px 0;
41 | }
42 | .tip-twitter .tip-arrow-bottom {
43 | margin-top:0;
44 | margin-left:-5px; /* approx. half the width to center it */
45 | top:100%;
46 | left:50%;
47 | width:9px;
48 | height:5px;
49 | background:url(tip-twitter_arrows.gif) no-repeat -18px 0;
50 | }
51 | .tip-twitter .tip-arrow-left {
52 | margin-top:-4px; /* approx. half the height to center it */
53 | margin-left:-5px;
54 | top:50%;
55 | left:0;
56 | width:5px;
57 | height:9px;
58 | background:url(tip-twitter_arrows.gif) no-repeat -27px 0;
59 | }
--------------------------------------------------------------------------------
/static/plugin/tip-twitter/tip-twitter_arrows.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/static/plugin/tip-twitter/tip-twitter_arrows.gif
--------------------------------------------------------------------------------
/supervisor.conf:
--------------------------------------------------------------------------------
1 | [program:WebRange]
2 | directory = /root/Webrange ; 程序的启动目录
3 | command = /usr/bin/python3 run.py ; 启动命令,可以看出与手动在命令行启动的命令是一样的
4 | autostart = true ; 在 supervisord 启动的时候也自动启动
5 | startsecs = 10 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
6 | autorestart = true ; 程序异常退出后自动重启
7 | startretries = 3 ; 启动失败自动重试次数,默认是 3
8 | user = root ; 用哪个用户启动
9 | redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
10 | stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
11 | stdout_logfile_backups = 20 ; stdout 日志文件备份数
12 | ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
13 | stdout_logfile = /var/log/supervisor/Webrange_log.logs
14 |
15 | ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
16 | ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
17 |
--------------------------------------------------------------------------------
/system_info/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/system_info/.DS_Store
--------------------------------------------------------------------------------
/system_info/__init__.py:
--------------------------------------------------------------------------------
1 | #! coding=utf-8
2 |
3 |
4 | from system_info.get_sysinfo import Start_Get_Sysinfo
5 |
6 |
7 |
--------------------------------------------------------------------------------
/system_info/get_sysinfo.py:
--------------------------------------------------------------------------------
1 | #! coding=utf-8
2 |
3 | '''
4 | 实时获取系统的信息,包括cpu,IO,network,disk等。
5 | 并提供接口给主服务。
6 | '''
7 |
8 | import psutil
9 | import time
10 |
11 |
12 | class Status():
13 | """获取系统信息!"""
14 |
15 | stu = {
16 | 'Cpu_use': '', # cpu使用率 %
17 | 'Io_ratio': '', # 内存使用率 %
18 | 'Io_max': '', # 内存总大小 GB
19 | 'Io_use': '', # 内存已使用 GB
20 | 'Disk_ratio': '', # 磁盘使用率 %
21 | 'Disk_max': '', # 磁盘总大小 GB
22 | 'Disk_use': '', # 磁盘已使用 GB
23 | 'Net_sent': '', # 上行网络
24 | 'Net_recv': '' # 下行网络
25 | }
26 |
27 | def __init__(self):
28 | # 初始化时获取系统信息
29 | super(Status, self).__init__()
30 | self._Cpu()
31 | self._Io()
32 | self._Disk()
33 | self._Network()
34 |
35 | # 获取CPU的使用信息
36 | def _Cpu(self):
37 | c = psutil.cpu_times_percent(interval=1, percpu=False)
38 | self.stu['Cpu_use'] = '%.2f' % (100 - c.idle)
39 | # print('CPU使用率: %s' % ('%.2f' % (100 - c.idle) + '%'))
40 |
41 | # 内存的使用情况
42 | def _Io(self):
43 | i = psutil.virtual_memory()
44 | self.stu['Io_ratio'] = '%.2f' % i.percent
45 | self.stu['Io_max'] = '%.2fGB' % (i.total / 1024.0 / 1024.0 / 1024.0)
46 | self.stu['Io_use'] = '%.2fGB' % (i.used / 1024.0 / 1024.0 / 1024.0)
47 | # print ('内存使用率:%s\n内存总大小:%.2f MB\n内存使用:%.2f MB' % ('%.2f' % i.percent + '%',i.total/1024.0/1024.0,i.used/1024.0/1024.0))
48 |
49 | # 磁盘的使用情况
50 | def _Disk(self):
51 | d = psutil.disk_usage('/')
52 | self.stu['Disk_ratio'] = '%.2f' % d.percent
53 | self.stu['Disk_max'] = '%.2fGB' % (d.total / 1024.0 / 1024.0 / 1024.0)
54 | self.stu['Disk_use'] = '%.2fGB' % (d.used / 1024.0 / 1024.0 / 1024.0)
55 | # print ('硬盘使用率:%s\n硬盘总大小:%.2f GB\n硬盘使用:%.2f GB' % ('%.2f' % d.percent + '%',d.total/1024.0/1024.0/1024.0, d.used/1024.0/1024.0/1024.0))
56 |
57 | # 网络的使用情况
58 | def _Network(self):
59 |
60 | net1 = psutil.net_io_counters()
61 |
62 | time.sleep(2)
63 |
64 | net2 = psutil.net_io_counters()
65 |
66 | self.stu['Net_sent'] = '%s/s' % self.__bytes2human((net2.bytes_sent - net1.bytes_sent) / 2)
67 | self.stu['Net_recv'] = '%s/s' % self.__bytes2human((net2.bytes_recv - net1.bytes_recv) / 2)
68 |
69 | # 一个函数,把byte转换成K,M,G
70 | def __bytes2human(self, num):
71 | """
72 | bytes2human(10000)
73 | '9.8 K'
74 | bytes2human(100001221)
75 | '95.4 M'
76 | """
77 | symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
78 | prefix = {}
79 | for i, s in enumerate(symbols):
80 | prefix[s] = 1 << (i + 1) * 10
81 | for s in reversed(symbols):
82 | if num >= prefix[s]:
83 | value = float(num) / prefix[s]
84 | return '%.f%s' % (value, s)
85 | return '%.fB' % (num)
86 |
87 | def __del__(self):
88 | pass
89 |
90 | # 开启一个while循环,获取系统信息到主进程
91 | def Start_Get_Sysinfo(que):
92 | while 1 :
93 | s = Status()
94 | que.put(s.stu)
95 | time.sleep(10)
96 |
97 |
98 | if __name__ == '__main__':
99 |
100 | start_time = time.time()
101 | s = Status()
102 | print(s.stu)
103 | end_time = time.time()
104 |
105 | print (end_time - start_time)
--------------------------------------------------------------------------------
/templates/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/templates/.DS_Store
--------------------------------------------------------------------------------
/templates/404.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 | {% block css %}
3 | {% end %}
4 |
5 | {% block webinfo %}
6 |
7 |
8 |
9 |
10 |
11 |
404
12 |
找不到你的页面
13 |
14 |
15 |
16 |
17 | {% end %}
--------------------------------------------------------------------------------
/templates/500.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 | {% block css %}
3 | {% end %}
4 |
5 | {% block webinfo %}
6 |
7 |
8 |
9 |
500
10 |
服务器内部错误
11 |
12 |
13 |
14 |
15 |
16 | {% end %}
--------------------------------------------------------------------------------
/templates/change_pass.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 |
3 | {% block css %}
4 |
5 |
6 | {% end %}
7 |
8 | {% block webinfo %}
9 |
10 |
11 |
12 |
13 | 修改登陆口令
14 |
15 |
43 |
44 |
56 |
57 | {% end %}
58 |
59 | {% block js %}
60 |
61 |
62 | {% end %}
63 |
--------------------------------------------------------------------------------
/templates/docker.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 | {% block css %}
3 |
4 |
5 |
6 |
22 | {% end %}
23 | {% block webinfo %}
24 |
25 |
26 |
27 | {% if status == 'start' %}
28 |
29 | {% if not port %}
30 |
开启镜像成功,由于未开启web服务,请返回状态栏目,查看此镜像开启的端口。
31 | {% else %}
32 | 开启镜像成功,2秒后打开新窗口。。。
33 | {% end %}
34 | {% elif status == 'close' %}
35 | 关闭镜像成功,2秒后跳转。。。
36 | {% end %}
37 |
38 |
39 |
62 |
63 |
64 |
72 |
73 |
79 | {% end %}
80 |
81 | {% block js %}
82 |
83 | {% end %}
--------------------------------------------------------------------------------
/templates/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Web Range
8 | {% block css %}
9 |
10 | {% end %}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
45 |
46 |
47 |
48 |
49 |
50 | -
51 | 退出
52 |
53 |
54 |
55 |
56 |
57 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | {% block webinfo %}
107 |
108 | {% end %}
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | {% block js %}
125 | {% end %}
126 |
127 |
128 |
129 |
130 |
131 | Version: 1.1
132 |
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/templates/login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Web Range
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
登录
34 |
35 |
61 |
62 |
63 |
64 |
65 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/templates/logout.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 | {% block css %}
3 |
4 |
5 |
6 |
7 | {% end %}
8 |
9 | {% block webinfo %}
10 |
11 |
12 |
13 |
36 |
37 |
38 |
没有关闭所有的环境,无法退出系统!
39 |
40 |
48 |
49 |
50 |
51 |
52 | {% end %}
--------------------------------------------------------------------------------
/templates/search.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Web Range
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
74 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
132 |
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/templates/setting.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 | {% block css %}
3 |
4 | {% end %}
5 |
6 | {% block webinfo %}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
添加系统用户参数:sys_pass,username,password,email
14 | {{ error }}
15 |
16 |
17 |
18 |
19 | {% end %}
20 |
21 |
22 | {% block js %}
23 |
24 | {% end %}
--------------------------------------------------------------------------------
/test.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ba0gu0/WebRange/94ef655de00ea67fd960f3e2f9710d1ca80892ff/test.db
--------------------------------------------------------------------------------
/test.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "迅风扫描器",
4 | "info": "巡风是一款适用于企业内网的漏洞快速应急,巡航扫描系统。",
5 | "isupload": "true",
6 | "types": "debug",
7 | "tags": "扫描器",
8 | "author": "同程",
9 | "hub": "ysrc/xunfeng",
10 | "flag": "",
11 | "port": "80/tcp",
12 | "risk": "simple"
13 | }
14 | ]
--------------------------------------------------------------------------------