mm_os 1.3.4 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +36 -0
- package/README.md +25 -166
- package/conf.json +3 -0
- package/core/base/index.js +29 -0
- package/core/base/mqtt/index.js +268 -0
- package/core/base/mqtt/lib.js +40 -0
- package/core/base/web/index.js +110 -0
- package/core/com/api/com.json +4 -0
- package/{bin → core}/com/api/config.tpl.json +9 -7
- package/{bin → core}/com/api/drive.js +239 -64
- package/{bin → core}/com/api/index.js +8 -9
- package/{bin → core}/com/api/oauth.js +23 -14
- package/core/com/api/script.js +32 -0
- package/core/com/db/com.json +4 -0
- package/{bin → core}/com/db/drive.js +99 -65
- package/{bin → core}/com/db/index.js +2 -2
- package/core/com/event/com.json +4 -0
- package/{bin → core}/com/event/config.tpl.json +2 -2
- package/core/com/event/drive.js +125 -0
- package/{bin → core}/com/event/index.js +5 -10
- package/core/com/event/script.js +26 -0
- package/core/com/eventer/com.js +450 -0
- package/core/com/eventer/com.json +4 -0
- package/core/com/middleware/com.js +128 -0
- package/core/com/middleware/com.json +4 -0
- package/core/com/middleware/config.tpl.json +8 -0
- package/core/com/middleware/script.js +9 -0
- package/core/com/mqtt/com.json +4 -0
- package/core/com/mqtt/config.tpl.json +12 -0
- package/core/com/mqtt/drive.js +139 -0
- package/core/com/mqtt/index.js +138 -0
- package/core/com/mqtt/script.js +33 -0
- package/core/com/msg/com.js +296 -0
- package/core/com/msg/com.json +4 -0
- package/{bin → core}/com/nav/drive.js +42 -17
- package/{bin → core}/com/nav/index.js +4 -4
- package/core/com/nav/tpl/admin_pc/page_channel.vue +299 -0
- package/core/com/nav/tpl/admin_pc/page_config.vue +279 -0
- package/core/com/nav/tpl/admin_pc/page_config_form.vue +194 -0
- package/core/com/nav/tpl/admin_pc/page_default.vue +287 -0
- package/core/com/nav/tpl/admin_pc/page_form.vue +180 -0
- package/core/com/nav/tpl/admin_pc/page_lang.vue +265 -0
- package/core/com/nav/tpl/admin_pc/page_nav.vue +313 -0
- package/core/com/nav/tpl/admin_pc/page_table.vue +285 -0
- package/core/com/nav/tpl/admin_pc/page_type.vue +313 -0
- package/core/com/nav/tpl/dev_pc/page_channel.vue +253 -0
- package/core/com/nav/tpl/dev_pc/page_config.vue +253 -0
- package/core/com/nav/tpl/dev_pc/page_default.vue +247 -0
- package/core/com/nav/tpl/dev_pc/page_form.vue +162 -0
- package/core/com/nav/tpl/dev_pc/page_nav.vue +253 -0
- package/core/com/nav/tpl/dev_pc/page_table.vue +247 -0
- package/core/com/nav/tpl/dev_pc/page_type.vue +253 -0
- package/{bin/com/nav/tpl/home_phone → core/com/nav/tpl/home_pc}/page_channel.vue +231 -231
- package/{bin/com/nav/tpl/home_phone → core/com/nav/tpl/home_pc}/page_default.vue +231 -231
- package/{bin → core}/com/nav/tpl/home_pc/page_form.vue +9 -9
- package/{bin → core}/com/nav/tpl/home_pc/page_list.vue +231 -231
- package/{bin → core}/com/nav/tpl/home_pc/page_nav.vue +221 -221
- package/{bin/com/nav/tpl/home_phone → core/com/nav/tpl/home_pc}/page_type.vue +231 -231
- package/{bin → core}/com/nav/tpl/home_pc/page_view.vue +8 -8
- package/{bin/com/nav/tpl/home_pc → core/com/nav/tpl/home_phone}/page_channel.vue +231 -231
- package/{bin/com/nav/tpl/home_pc → core/com/nav/tpl/home_phone}/page_default.vue +231 -231
- package/{bin → core}/com/nav/tpl/home_phone/page_form.vue +9 -9
- package/{bin → core}/com/nav/tpl/home_phone/page_list.vue +231 -231
- package/{bin/com/nav/tpl/admin_pc → core/com/nav/tpl/home_phone}/page_nav.vue +236 -220
- package/{bin/com/nav/tpl/home_pc → core/com/nav/tpl/home_phone}/page_type.vue +231 -231
- package/{bin → core}/com/nav/tpl/home_phone/page_view.vue +8 -8
- package/core/com/nav/viewmodel.js +296 -0
- package/{bin → core}/com/param/config.tpl.json +24 -0
- package/{bin → core}/com/param/drive.js +47 -15
- package/core/com/plugin/com.json +4 -0
- package/core/com/plugin/config.tpl.json +20 -0
- package/{bin → core}/com/plugin/drive.js +5 -8
- package/{bin → core}/com/plugin/index.js +11 -56
- package/core/com/socket/README.md +47 -0
- package/core/com/socket/com.json +4 -0
- package/core/com/socket/config.tpl.json +14 -0
- package/{bin → core}/com/socket/drive.js +74 -51
- package/{bin → core}/com/socket/index.js +4 -2
- package/{bin → core}/com/socket/script.js +8 -6
- package/core/com/sql/config.tpl.json +70 -0
- package/{bin → core}/com/sql/drive.js +281 -58
- package/core/com/static/com.json +4 -0
- package/core/com/static/config.tpl.json +20 -0
- package/{bin → core}/com/static/drive.js +6 -4
- package/{bin → core}/com/static/index.js +5 -1
- package/core/com/task/com.json +4 -0
- package/core/com/task/config.tpl.json +24 -0
- package/core/com/task/drive.js +374 -0
- package/{bin → core}/com/task/index.js +14 -20
- package/core/com/task/script.js +37 -0
- package/core/com/timer/com.js +217 -0
- package/core/com/timer/com.json +4 -0
- package/core/com/tpl/com.js +19 -0
- package/core/com/tpl/com.json +4 -0
- package/index.js +161 -740
- package/lib/actions.js +50 -0
- package/lib/app.js +73 -0
- package/lib/base.js +355 -0
- package/lib/com.js +31 -0
- package/lib/game.js +31 -0
- package/lib/ref.js +121 -0
- package/middleware/cors/index.js +57 -0
- package/middleware/cors/middleware.json +7 -0
- package/middleware/mqtt_base/index.js +10 -0
- package/middleware/mqtt_base/middleware.json +8 -0
- package/{waf.js → middleware/waf/index.js} +12 -2
- package/middleware/waf/middleware.json +9 -0
- package/middleware/web_base/index.js +67 -0
- package/middleware/web_base/middleware.json +9 -0
- package/middleware/web_event/index.js +411 -0
- package/middleware/web_event/middleware.json +10 -0
- package/middleware/web_proxy/index.js +24 -0
- package/middleware/web_proxy/middleware.json +9 -0
- package/middleware/web_router/index.js +33 -0
- package/middleware/web_router/middleware.json +10 -0
- package/middleware/web_socket/index.js +21 -0
- package/middleware/web_socket/middleware.json +9 -0
- package/middleware/web_static/index.js +26 -0
- package/middleware/web_static/middleware.json +9 -0
- package/nodemon.json +12 -2
- package/package.json +56 -66
- package/.gitattributes +0 -5
- package/bin/com/README.md +0 -2
- package/bin/com/api/script.js +0 -14
- package/bin/com/cmd/README.md +0 -3
- package/bin/com/cmd/config.tpl.json +0 -41
- package/bin/com/cmd/drive.js +0 -512
- package/bin/com/cmd/index.js +0 -213
- package/bin/com/cmd/old/5w2h.js +0 -54
- package/bin/com/cmd/old/drive.js +0 -423
- package/bin/com/cmd/script.js +0 -11
- package/bin/com/event/drive.js +0 -69
- package/bin/com/event/script.js +0 -12
- package/bin/com/nav/tpl/admin_pc/page_channel.vue +0 -234
- package/bin/com/nav/tpl/admin_pc/page_default.vue +0 -236
- package/bin/com/nav/tpl/admin_pc/page_form.vue +0 -152
- package/bin/com/nav/tpl/admin_pc/page_table.vue +0 -236
- package/bin/com/nav/tpl/admin_pc/page_type.vue +0 -234
- package/bin/com/nav/tpl/home_phone/page_nav.vue +0 -221
- package/bin/com/nav/viewmodel.js +0 -161
- package/bin/com/plugin/config.tpl.json +0 -11
- package/bin/com/socket/config.tpl.json +0 -8
- package/bin/com/sql/config.tpl.json +0 -34
- package/bin/com/static/config.tpl.json +0 -11
- package/bin/com/task/config.tpl.json +0 -13
- package/bin/com/task/drive.js +0 -288
- package/bin/com/task/script.js +0 -38
- package/bin/com.js +0 -74
- package/bin/mm.conf +0 -48
- package/bin/static/404.html +0 -52
- package/bin/static/README.md +0 -1
- package/bin/static/css/font-awesome.min.css +0 -7
- package/bin/static/css/mm_base.css +0 -220
- package/bin/static/css/mm_common.css +0 -518
- package/bin/static/css/mm_component.css +0 -307
- package/bin/static/css/mm_expand.css +0 -634
- package/bin/static/css/mm_theme.css +0 -291
- package/bin/static/css/new_file.css +0 -79
- package/bin/static/css/swiper.min.css +0 -12
- package/bin/static/favicon.ico +0 -0
- package/bin/static/font/FontAwesome.otf +0 -0
- package/bin/static/font/HelveticaNeue.eot +0 -0
- package/bin/static/font/HelveticaNeue.otf +0 -0
- package/bin/static/font/HelveticaNeue.svg +0 -1273
- package/bin/static/font/HelveticaNeue.woff +0 -0
- package/bin/static/font/HelveticaNeue.woff2 +0 -0
- package/bin/static/font/fontawesome-webfont.eot +0 -0
- package/bin/static/font/fontawesome-webfont.svg +0 -2671
- package/bin/static/font/fontawesome-webfont.ttf +0 -0
- package/bin/static/font/fontawesome-webfont.woff +0 -0
- package/bin/static/font/fontawesome-webfont.woff2 +0 -0
- package/bin/static/h5.html +0 -325
- package/bin/static/highlight/highlight.pack.js +0 -2
- package/bin/static/highlight/styles/a11y-dark.css +0 -99
- package/bin/static/highlight/styles/a11y-light.css +0 -99
- package/bin/static/highlight/styles/agate.css +0 -108
- package/bin/static/highlight/styles/an-old-hope.css +0 -89
- package/bin/static/highlight/styles/androidstudio.css +0 -66
- package/bin/static/highlight/styles/arduino-light.css +0 -88
- package/bin/static/highlight/styles/arta.css +0 -73
- package/bin/static/highlight/styles/ascetic.css +0 -45
- package/bin/static/highlight/styles/atelier-cave-dark.css +0 -83
- package/bin/static/highlight/styles/atelier-cave-light.css +0 -85
- package/bin/static/highlight/styles/atelier-dune-dark.css +0 -69
- package/bin/static/highlight/styles/atelier-dune-light.css +0 -69
- package/bin/static/highlight/styles/atelier-estuary-dark.css +0 -84
- package/bin/static/highlight/styles/atelier-estuary-light.css +0 -84
- package/bin/static/highlight/styles/atelier-forest-dark.css +0 -69
- package/bin/static/highlight/styles/atelier-forest-light.css +0 -69
- package/bin/static/highlight/styles/atelier-heath-dark.css +0 -69
- package/bin/static/highlight/styles/atelier-heath-light.css +0 -69
- package/bin/static/highlight/styles/atelier-lakeside-dark.css +0 -69
- package/bin/static/highlight/styles/atelier-lakeside-light.css +0 -69
- package/bin/static/highlight/styles/atelier-plateau-dark.css +0 -84
- package/bin/static/highlight/styles/atelier-plateau-light.css +0 -84
- package/bin/static/highlight/styles/atelier-savanna-dark.css +0 -84
- package/bin/static/highlight/styles/atelier-savanna-light.css +0 -84
- package/bin/static/highlight/styles/atelier-seaside-dark.css +0 -69
- package/bin/static/highlight/styles/atelier-seaside-light.css +0 -69
- package/bin/static/highlight/styles/atelier-sulphurpool-dark.css +0 -69
- package/bin/static/highlight/styles/atelier-sulphurpool-light.css +0 -69
- package/bin/static/highlight/styles/atom-one-dark-reasonable.css +0 -77
- package/bin/static/highlight/styles/atom-one-dark.css +0 -96
- package/bin/static/highlight/styles/atom-one-light.css +0 -96
- package/bin/static/highlight/styles/brown-paper.css +0 -64
- package/bin/static/highlight/styles/brown-papersq.png +0 -0
- package/bin/static/highlight/styles/codepen-embed.css +0 -60
- package/bin/static/highlight/styles/color-brewer.css +0 -71
- package/bin/static/highlight/styles/darcula.css +0 -77
- package/bin/static/highlight/styles/dark.css +0 -63
- package/bin/static/highlight/styles/darkula.css +0 -6
- package/bin/static/highlight/styles/default.css +0 -99
- package/bin/static/highlight/styles/docco.css +0 -97
- package/bin/static/highlight/styles/dracula.css +0 -76
- package/bin/static/highlight/styles/far.css +0 -71
- package/bin/static/highlight/styles/foundation.css +0 -88
- package/bin/static/highlight/styles/github-gist.css +0 -79
- package/bin/static/highlight/styles/github.css +0 -99
- package/bin/static/highlight/styles/gml.css +0 -78
- package/bin/static/highlight/styles/googlecode.css +0 -89
- package/bin/static/highlight/styles/grayscale.css +0 -101
- package/bin/static/highlight/styles/gruvbox-dark.css +0 -108
- package/bin/static/highlight/styles/gruvbox-light.css +0 -108
- package/bin/static/highlight/styles/hopscotch.css +0 -83
- package/bin/static/highlight/styles/hybrid.css +0 -102
- package/bin/static/highlight/styles/idea.css +0 -97
- package/bin/static/highlight/styles/ir-black.css +0 -73
- package/bin/static/highlight/styles/isbl-editor-dark.css +0 -112
- package/bin/static/highlight/styles/isbl-editor-light.css +0 -112
- package/bin/static/highlight/styles/kimbie.dark.css +0 -74
- package/bin/static/highlight/styles/kimbie.light.css +0 -74
- package/bin/static/highlight/styles/lightfair.css +0 -87
- package/bin/static/highlight/styles/magula.css +0 -70
- package/bin/static/highlight/styles/mono-blue.css +0 -59
- package/bin/static/highlight/styles/monokai-sublime.css +0 -83
- package/bin/static/highlight/styles/monokai.css +0 -70
- package/bin/static/highlight/styles/nord.css +0 -309
- package/bin/static/highlight/styles/obsidian.css +0 -88
- package/bin/static/highlight/styles/ocean.css +0 -74
- package/bin/static/highlight/styles/paraiso-dark.css +0 -72
- package/bin/static/highlight/styles/paraiso-light.css +0 -72
- package/bin/static/highlight/styles/pojoaque.css +0 -83
- package/bin/static/highlight/styles/pojoaque.jpg +0 -0
- package/bin/static/highlight/styles/purebasic.css +0 -96
- package/bin/static/highlight/styles/qtcreator_dark.css +0 -83
- package/bin/static/highlight/styles/qtcreator_light.css +0 -83
- package/bin/static/highlight/styles/railscasts.css +0 -106
- package/bin/static/highlight/styles/rainbow.css +0 -85
- package/bin/static/highlight/styles/routeros.css +0 -108
- package/bin/static/highlight/styles/school-book.css +0 -69
- package/bin/static/highlight/styles/school-book.png +0 -0
- package/bin/static/highlight/styles/shades-of-purple.css +0 -97
- package/bin/static/highlight/styles/solarized-dark.css +0 -84
- package/bin/static/highlight/styles/solarized-light.css +0 -84
- package/bin/static/highlight/styles/sunburst.css +0 -102
- package/bin/static/highlight/styles/tomorrow-night-blue.css +0 -75
- package/bin/static/highlight/styles/tomorrow-night-bright.css +0 -74
- package/bin/static/highlight/styles/tomorrow-night-eighties.css +0 -74
- package/bin/static/highlight/styles/tomorrow-night.css +0 -75
- package/bin/static/highlight/styles/tomorrow.css +0 -72
- package/bin/static/highlight/styles/vs.css +0 -68
- package/bin/static/highlight/styles/vs2015.css +0 -115
- package/bin/static/highlight/styles/xcode.css +0 -104
- package/bin/static/highlight/styles/xt256.css +0 -92
- package/bin/static/highlight/styles/zenburn.css +0 -80
- package/bin/static/highlight/vue-highlight.js +0 -29
- package/bin/static/ifame.html +0 -24
- package/bin/static/img/add.png +0 -0
- package/bin/static/img/avatar.png +0 -0
- package/bin/static/img/banner_2.png +0 -0
- package/bin/static/img/default.png +0 -0
- package/bin/static/img/loading.svg +0 -1
- package/bin/static/img/logo.png +0 -0
- package/bin/static/img/logo1.png +0 -0
- package/bin/static/img/logo_gray.png +0 -0
- package/bin/static/img/logo_round.png +0 -0
- package/bin/static/img/mm.ico +0 -0
- package/bin/static/img/mm.jpg +0 -0
- package/bin/static/img/select.png +0 -0
- package/bin/static/img/web.png +0 -0
- package/bin/static/index.html +0 -12
- package/bin/static/js/clipboard.min.js +0 -257
- package/bin/static/js/css.min.js +0 -1
- package/bin/static/js/echarts.js +0 -22
- package/bin/static/js/html5.min.js +0 -1
- package/bin/static/js/jquery.lazyload.min.js +0 -2
- package/bin/static/js/jquery.min.js +0 -4189
- package/bin/static/js/jquery.scrollstop.min.js +0 -2
- package/bin/static/js/mm-requirejs-vue.js +0 -283
- package/bin/static/js/mm_check.js +0 -490
- package/bin/static/js/mm_flexble.js +0 -112
- package/bin/static/js/mm_picker.js +0 -1417
- package/bin/static/js/mm_pinyinlite.js +0 -873
- package/bin/static/js/mm_sdk.js +0 -2841
- package/bin/static/js/mm_ui_expand.js +0 -468
- package/bin/static/js/mm_vue.js +0 -376
- package/bin/static/js/mm_vue_ui.js +0 -2375
- package/bin/static/js/mm_websocket.js +0 -145
- package/bin/static/js/require.js +0 -5
- package/bin/static/js/sortable.min.js +0 -3
- package/bin/static/js/swiper.min.js +0 -13
- package/bin/static/js/text.min.js +0 -1
- package/bin/static/js/vue-router.min.js +0 -6
- package/bin/static/js/vue.js +0 -12338
- package/bin/static/js/vuedraggable.min.js +0 -2
- package/bin/static/js/vuex.min.js +0 -6
- package/bin/static/src/components/bar/mm_action.vue +0 -19
- package/bin/static/src/components/bar/mm_buy.vue +0 -19
- package/bin/static/src/components/bar/mm_chat.vue +0 -18
- package/bin/static/src/components/bar/mm_count.vue +0 -18
- package/bin/static/src/components/bar/mm_filter.vue +0 -18
- package/bin/static/src/components/bar/mm_search.vue +0 -18
- package/bin/static/src/components/bar/mm_sort.vue +0 -18
- package/bin/static/src/components/bar/mm_tag.vue +0 -18
- package/bin/static/src/components/bar/mm_title.vue +0 -19
- package/bin/static/src/components/content/mm_pre.vue +0 -70
- package/bin/static/src/components/expand/mm_drag.vue +0 -39
- package/bin/static/src/components/item/mm_article.vue +0 -115
- package/bin/static/src/components/item/mm_base.vue +0 -26
- package/bin/static/src/components/item/mm_contact.vue +0 -25
- package/bin/static/src/components/item/mm_goods.vue +0 -23
- package/bin/static/src/components/item/mm_img.vue +0 -21
- package/bin/static/src/components/item/mm_media.vue +0 -18
- package/bin/static/src/components/item/mm_message.vue +0 -18
- package/bin/static/src/components/item/mm_music.vue +0 -95
- package/bin/static/src/components/item/mm_news.vue +0 -22
- package/bin/static/src/components/item/mm_number.vue +0 -26
- package/bin/static/src/components/item/mm_question.vue +0 -35
- package/bin/static/src/components/item/mm_user.vue +0 -22
- package/bin/static/src/components/item/mm_video.vue +0 -95
- package/bin/static/src/components/slide/mm_slide_card.vue +0 -64
- package/bin/static/src/components/slide/mm_slide_img.vue +0 -47
- package/bin/static/src/components/slide/mm_slide_page.vue +0 -8
- package/bin/static/src/components/slide/mm_slide_text.vue +0 -54
- package/bin/static/src/main.js +0 -84
- package/bin/static/src/mixins/form.js +0 -223
- package/bin/static/src/mixins/item.js +0 -242
- package/bin/static/src/mixins/list.js +0 -244
- package/bin/static/src/mixins/page.js +0 -1011
- package/bin/static/src/mm_component.js +0 -74
- package/bin/static/src/router.js +0 -72
- package/bin/static/src/store/user.js +0 -75
- package/bin/static/src/store/web.js +0 -50
- package/bin/static/user/1/number_info.xlsx +0 -0
- package/bin/static/w3c.html +0 -94
- package/init.js +0 -55
- package/update.md +0 -1
- /package/{bin → core}/com/api/README.md +0 -0
- /package/{bin → core}/com/api/rpc.js +0 -0
- /package/{bin → core}/com/db/README.md +0 -0
- /package/{bin → core}/com/event/README.md +0 -0
- /package/{bin/com/socket → core/com/mqtt}/README.md +0 -0
- /package/{bin → core}/com/nav/README.md +0 -0
- /package/{bin → core}/com/nav/config.tpl.json +0 -0
- /package/{bin → core}/com/param/README.md +0 -0
- /package/{bin → core}/com/param/index.js +0 -0
- /package/{bin → core}/com/param/script.js +0 -0
- /package/{bin → core}/com/param/test.js +0 -0
- /package/{bin → core}/com/plugin/README.md +0 -0
- /package/{bin → core}/com/plugin/script.js +0 -0
- /package/{bin → core}/com/sql/README.md +0 -0
- /package/{bin → core}/com/sql/index.js +0 -0
- /package/{bin → core}/com/sql/script.js +0 -0
- /package/{bin → core}/com/static/README.md +0 -0
- /package/{bin → core}/com/static/script.js +0 -0
- /package/{bin → core}/com/task/README.md +0 -0
- /package/{bin/rps.bat → rps.bat} +0 -0
- /package/{bin/tps.bat → tps.bat} +0 -0
package/bin/com/task/drive.js
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
const Item = require('mm_machine').Item;
|
|
2
|
-
|
|
3
|
-
function span(t1, t2) {
|
|
4
|
-
return t1 - t2
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Task任务驱动类
|
|
9
|
-
* @extends {Item}
|
|
10
|
-
* @class
|
|
11
|
-
*/
|
|
12
|
-
class Drive extends Item {
|
|
13
|
-
/**
|
|
14
|
-
* 构造函数
|
|
15
|
-
* @param {String} dir 当前目录
|
|
16
|
-
* @constructor
|
|
17
|
-
*/
|
|
18
|
-
constructor(dir) {
|
|
19
|
-
super(dir, __dirname);
|
|
20
|
-
this.default_file = "./task.json";
|
|
21
|
-
|
|
22
|
-
/* 通用项 */
|
|
23
|
-
/**
|
|
24
|
-
* 配置参数
|
|
25
|
-
*/
|
|
26
|
-
this.config = {
|
|
27
|
-
// 标题, 介绍事件作用
|
|
28
|
-
"title": "示例事件",
|
|
29
|
-
// 描述, 用于描述该事件有什么用的
|
|
30
|
-
"description": "描述事件使用方法",
|
|
31
|
-
// 名称, 由中英文和下“_”组成, 用于卸载事件
|
|
32
|
-
"name": "demo",
|
|
33
|
-
// 文件路径, 当调用函数不存在时,会先从文件中加载
|
|
34
|
-
"func_file": "./index.js",
|
|
35
|
-
// 回调函数名 用于决定调用脚本的哪个函数
|
|
36
|
-
"func_name": "",
|
|
37
|
-
// 执行次数
|
|
38
|
-
"num": 10,
|
|
39
|
-
// 时间间隔(毫秒ms)
|
|
40
|
-
"interval": 1000,
|
|
41
|
-
// 等待时长(毫秒ms)
|
|
42
|
-
"wait": 0,
|
|
43
|
-
// 执行时间
|
|
44
|
-
"time": "",
|
|
45
|
-
// 执行开始日期
|
|
46
|
-
"date_start": "",
|
|
47
|
-
// 执行结束日期
|
|
48
|
-
"date_end": "",
|
|
49
|
-
// 执行顺序
|
|
50
|
-
"sort": 100,
|
|
51
|
-
};
|
|
52
|
-
// 当前状态
|
|
53
|
-
this.state = "end";
|
|
54
|
-
|
|
55
|
-
// 当前执行次数
|
|
56
|
-
this.num = 0;
|
|
57
|
-
|
|
58
|
-
// 任务管理器
|
|
59
|
-
this.task_adminr = {};
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* 设置时期执行
|
|
65
|
-
* @param {Object} _this 当前类
|
|
66
|
-
* @param {Function} func 回调函数
|
|
67
|
-
*/
|
|
68
|
-
Drive.prototype.setPeriod = function(_this, func) {
|
|
69
|
-
var cg = _this.config;
|
|
70
|
-
var fn;
|
|
71
|
-
var time = cg.time;
|
|
72
|
-
if (time) {
|
|
73
|
-
if (time.indexOf(' ') !== -1) {
|
|
74
|
-
if (time.indexOf('-') !== -1) {
|
|
75
|
-
fn = function() {
|
|
76
|
-
if (new Date().toStr('MM-dd hh:mm:ss') === time) {
|
|
77
|
-
func();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
} else {
|
|
81
|
-
fn = function() {
|
|
82
|
-
if (new Date().toStr('dd hh:mm:ss') === time) {
|
|
83
|
-
func();
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
var arr = time.split(':');
|
|
90
|
-
if (arr.length === 3) {
|
|
91
|
-
fn = function() {
|
|
92
|
-
if (new Date().toStr('hh:mm:ss') === time) {
|
|
93
|
-
func();
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
} else if (arr.length === 2) {
|
|
97
|
-
fn = function() {
|
|
98
|
-
if (new Date().toStr('hh:mm') === time) {
|
|
99
|
-
func();
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
} else {
|
|
103
|
-
fn = function() {
|
|
104
|
-
if (new Date().toStr('mm') === time) {
|
|
105
|
-
func();
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
} else {
|
|
112
|
-
fn = func;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (cg.date_start) {
|
|
116
|
-
var start = toTime(cg.date_start);
|
|
117
|
-
if (cg.date_end) {
|
|
118
|
-
var end = toTime(cg.date_end);
|
|
119
|
-
return async function() {
|
|
120
|
-
var now = new Date();
|
|
121
|
-
if (span(now, end) >= 0) {
|
|
122
|
-
if (span(now, start) <= 0) {
|
|
123
|
-
fn();
|
|
124
|
-
}
|
|
125
|
-
} else {
|
|
126
|
-
_this.clear();
|
|
127
|
-
_this.notify(cg.name, 'time end');
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
} else {
|
|
131
|
-
return async function() {
|
|
132
|
-
var now = new Date();
|
|
133
|
-
if (span(now, start) <= 0) {
|
|
134
|
-
fn();
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
} else if (cg.date_end) {
|
|
139
|
-
var end = toTime(cg.date_end);
|
|
140
|
-
return async function() {
|
|
141
|
-
var now = new Date();
|
|
142
|
-
if (span(now, end) >= 0) {
|
|
143
|
-
fn();
|
|
144
|
-
} else {
|
|
145
|
-
_this.clear();
|
|
146
|
-
_this.notify(cg.name, 'end time');
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
} else {
|
|
150
|
-
return async function() { fn() };
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* 设置按次数执行
|
|
156
|
-
* @param {Object} _this 当前类
|
|
157
|
-
*/
|
|
158
|
-
Drive.prototype.setNum = function(_this) {
|
|
159
|
-
var cg = _this.config;
|
|
160
|
-
return function() {
|
|
161
|
-
if (cg.num < 1) {
|
|
162
|
-
_this.main();
|
|
163
|
-
} else if (_this.num < cg.num) {
|
|
164
|
-
_this.num++;
|
|
165
|
-
_this.main();
|
|
166
|
-
} else {
|
|
167
|
-
_this.clear();
|
|
168
|
-
_this.notify(cg.name, 'completed');
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* 删除任务
|
|
175
|
-
* @param {String} name
|
|
176
|
-
*/
|
|
177
|
-
Drive.prototype.del = async function(name) {
|
|
178
|
-
this.task_adminr.del(name);
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* 执行结果通知
|
|
183
|
-
* @param {String} name 任务名称
|
|
184
|
-
* @param {String} message 提示内容
|
|
185
|
-
*/
|
|
186
|
-
Drive.prototype.notify = async function(name, message) {
|
|
187
|
-
switch (message) {
|
|
188
|
-
case "start":
|
|
189
|
-
// $.log.debug(name + '任务已开启');
|
|
190
|
-
break;
|
|
191
|
-
case "stop":
|
|
192
|
-
// $.log.debug(name + '已暂停');
|
|
193
|
-
break;
|
|
194
|
-
case "end":
|
|
195
|
-
// 主动中断
|
|
196
|
-
// $.log.debug(name + '已结束');
|
|
197
|
-
break;
|
|
198
|
-
case "end time":
|
|
199
|
-
// $.log.debug(name + '时间到');
|
|
200
|
-
// 删除任务
|
|
201
|
-
this.del(name)
|
|
202
|
-
break;
|
|
203
|
-
case "completed":
|
|
204
|
-
// $.log.debug(name + '已完成');
|
|
205
|
-
// 删除任务
|
|
206
|
-
this.del(name)
|
|
207
|
-
break;
|
|
208
|
-
default:
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* 清理函数, 用于删除当前任务
|
|
216
|
-
*/
|
|
217
|
-
Drive.prototype.clear = async function() {
|
|
218
|
-
this.destroy();
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* 配置对象或配置路径
|
|
223
|
-
*/
|
|
224
|
-
Drive.prototype.run = async function() {
|
|
225
|
-
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* 创建执行函数
|
|
230
|
-
*/
|
|
231
|
-
Drive.prototype.create = function(){
|
|
232
|
-
var _this = this;
|
|
233
|
-
setTimeout(function(){
|
|
234
|
-
_this.run = _this.setPeriod(_this, _this.setNum(_this));
|
|
235
|
-
}, this.config.wait * 1000);
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* 销毁执行函数
|
|
240
|
-
*/
|
|
241
|
-
Drive.prototype.destroy = function() {
|
|
242
|
-
this.run = async function() {};
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* 开关计时器 改变状态
|
|
247
|
-
* @param {String} state = [start|stop|end] 状态, 如果什么都不传则切换开始或暂停
|
|
248
|
-
*/
|
|
249
|
-
Drive.prototype.set_state = function(state) {
|
|
250
|
-
if (state) {
|
|
251
|
-
this.state = state;
|
|
252
|
-
if (state === 'end') {
|
|
253
|
-
this.num = 0;
|
|
254
|
-
this.destroy();
|
|
255
|
-
} else if (this.state === 'stop') {
|
|
256
|
-
this.destroy();
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
this.create();
|
|
260
|
-
}
|
|
261
|
-
} else if (this.state === 'start') {
|
|
262
|
-
this.state = 'stop';
|
|
263
|
-
this.destroy();
|
|
264
|
-
} else if (this.state === 'stop' || this.state === 'end') {
|
|
265
|
-
this.state = 'start';
|
|
266
|
-
this.create();
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
this.notify(this.config.name, this.state);
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* 定时执行函数
|
|
274
|
-
*/
|
|
275
|
-
Drive.prototype.main = async function() {
|
|
276
|
-
$.log.debug('定时任务, 执行中...')
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* 加载完成时, 设置为开始执行
|
|
283
|
-
*/
|
|
284
|
-
Drive.prototype.load_after = function() {
|
|
285
|
-
this.set_state();
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
module.exports = Drive;
|
package/bin/com/task/script.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 定时任务函数
|
|
3
|
-
*/
|
|
4
|
-
exports.main = async function main() {
|
|
5
|
-
$.log.debug('定时任务, 执行中...');
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 执行结果通知
|
|
10
|
-
* @param {String} name 任务名称
|
|
11
|
-
* @param {String} message 提示内容
|
|
12
|
-
*/
|
|
13
|
-
exports.notify = async function(name, message) {
|
|
14
|
-
switch (message) {
|
|
15
|
-
case "start":
|
|
16
|
-
// $.log.debug('定时任务, 执行中...');
|
|
17
|
-
break;
|
|
18
|
-
case "stop":
|
|
19
|
-
// $.log.debug('已暂停');
|
|
20
|
-
break;
|
|
21
|
-
case "end":
|
|
22
|
-
// 主动中断
|
|
23
|
-
// $.log.debug('已结束');
|
|
24
|
-
break;
|
|
25
|
-
case "end time":
|
|
26
|
-
// $.log.debug('时间到');
|
|
27
|
-
// 删除任务
|
|
28
|
-
this.del(name)
|
|
29
|
-
break;
|
|
30
|
-
case "completed":
|
|
31
|
-
// $.log.debug('已完成');
|
|
32
|
-
// 删除任务
|
|
33
|
-
this.del(name)
|
|
34
|
-
break;
|
|
35
|
-
default:
|
|
36
|
-
break;
|
|
37
|
-
}
|
|
38
|
-
};
|
package/bin/com.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 公共类
|
|
3
|
-
*/
|
|
4
|
-
class Com {
|
|
5
|
-
/**
|
|
6
|
-
* 构造函数
|
|
7
|
-
* @param {Object} config
|
|
8
|
-
* @param {Object} src 载入源
|
|
9
|
-
*/
|
|
10
|
-
constructor(config, src) {
|
|
11
|
-
/**
|
|
12
|
-
* 配置参数
|
|
13
|
-
*/
|
|
14
|
-
this.config = {
|
|
15
|
-
/**
|
|
16
|
-
* 检索的起始目录
|
|
17
|
-
*/
|
|
18
|
-
path: __dirname,
|
|
19
|
-
/**
|
|
20
|
-
* 检索的目录名
|
|
21
|
-
*/
|
|
22
|
-
dir: "com",
|
|
23
|
-
/**
|
|
24
|
-
* 检索的文件名
|
|
25
|
-
*/
|
|
26
|
-
file: "index.js"
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
$.push(this.config, config, true);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* 加载模块
|
|
33
|
-
* @param {String} file 文件全名
|
|
34
|
-
*/
|
|
35
|
-
this.load = function(file) {
|
|
36
|
-
var com = require(file);
|
|
37
|
-
$.push(src, com, true);
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* 运行com加载
|
|
42
|
-
* @param {String} path 路径
|
|
43
|
-
*/
|
|
44
|
-
this.run = function(path) {
|
|
45
|
-
if (!path) {
|
|
46
|
-
path = this.config.path.fullname();
|
|
47
|
-
}
|
|
48
|
-
var dir_com = $.dir.getAll(path, this.config.dir);
|
|
49
|
-
|
|
50
|
-
var dirs = [];
|
|
51
|
-
dir_com.map(function(d){
|
|
52
|
-
var list = $.dir.get(d);
|
|
53
|
-
dirs.addList(list);
|
|
54
|
-
});
|
|
55
|
-
// console.log(dirs);
|
|
56
|
-
// 遍历目录路径
|
|
57
|
-
var _this = this;
|
|
58
|
-
var file = this.config.file;
|
|
59
|
-
dirs.map(function(d) {
|
|
60
|
-
_this.load(d + file);
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* 卸载模块
|
|
68
|
-
* @param {String} file 文件全名
|
|
69
|
-
*/
|
|
70
|
-
Com.prototype.unload = function(file) {
|
|
71
|
-
delete require.cache[require.resolve(file)];
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
module.exports = Com;
|
package/bin/mm.conf
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
server {
|
|
3
|
-
listen 80;
|
|
4
|
-
server_name mm.elins.cn;
|
|
5
|
-
root "C:\www\mm";
|
|
6
|
-
|
|
7
|
-
location / {
|
|
8
|
-
proxy_pass http://localhost:5000/;
|
|
9
|
-
#Proxy Settings
|
|
10
|
-
proxy_redirect off;
|
|
11
|
-
proxy_set_header Host $host;
|
|
12
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
13
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
14
|
-
proxy_set_header Connection close;
|
|
15
|
-
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
|
|
16
|
-
proxy_max_temp_file_size 0;
|
|
17
|
-
proxy_connect_timeout 90;
|
|
18
|
-
proxy_send_timeout 90;
|
|
19
|
-
proxy_read_timeout 90;
|
|
20
|
-
proxy_buffer_size 4k;
|
|
21
|
-
proxy_buffers 4 32k;
|
|
22
|
-
proxy_busy_buffers_size 64k;
|
|
23
|
-
proxy_temp_file_write_size 64k;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
server {
|
|
28
|
-
listen 80;
|
|
29
|
-
server_name frp.elins.cn;
|
|
30
|
-
location / {
|
|
31
|
-
proxy_pass http://127.0.0.1:8000/;
|
|
32
|
-
#Proxy Settings
|
|
33
|
-
proxy_redirect off;
|
|
34
|
-
proxy_set_header Host $host;
|
|
35
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
36
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
37
|
-
proxy_set_header Connection close;
|
|
38
|
-
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
|
|
39
|
-
proxy_max_temp_file_size 0;
|
|
40
|
-
proxy_connect_timeout 90;
|
|
41
|
-
proxy_send_timeout 90;
|
|
42
|
-
proxy_read_timeout 90;
|
|
43
|
-
proxy_buffer_size 4k;
|
|
44
|
-
proxy_buffers 4 32k;
|
|
45
|
-
proxy_busy_buffers_size 64k;
|
|
46
|
-
proxy_temp_file_write_size 64k;
|
|
47
|
-
}
|
|
48
|
-
}
|
package/bin/static/404.html
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-hans">
|
|
3
|
-
<head>
|
|
4
|
-
<!-- 必需的元标记 -->
|
|
5
|
-
<meta charset="utf-8">
|
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
7
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
8
|
-
<meta http-equiv="x-dns-prefetch-control" content="on">
|
|
9
|
-
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
|
|
10
|
-
<meta name="format-detection" content="telephone=no">
|
|
11
|
-
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
12
|
-
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
13
|
-
<meta name="description" content="描述">
|
|
14
|
-
<meta name="keywords" content="关键词">
|
|
15
|
-
<meta name="author" content="邱文武">
|
|
16
|
-
|
|
17
|
-
<!-- 加载JS -->
|
|
18
|
-
<!--if lt IE 9]><script src="/js/html5.min.js"></script><![endif]-->
|
|
19
|
-
<title>超级美眉UI测试</title>
|
|
20
|
-
|
|
21
|
-
<!-- 加载CSS -->
|
|
22
|
-
<link rel="shortcut icon" href="/favicon.ico">
|
|
23
|
-
<link rel="stylesheet" type="text/css" href="/css/swiper.min.css" />
|
|
24
|
-
<link rel="stylesheet" type="text/css" href="/css/font-awesome.min.css" />
|
|
25
|
-
<link rel="stylesheet" type="text/css" href="./css/mm_base.css" />
|
|
26
|
-
<link rel="stylesheet" type="text/css" href="./css/mm_common.css" />
|
|
27
|
-
<link rel="stylesheet" type="text/css" href="./css/mm_component.css" />
|
|
28
|
-
<link rel="stylesheet" type="text/css" href="/css/mm_theme.css" />
|
|
29
|
-
</head>
|
|
30
|
-
<body>
|
|
31
|
-
<div id="app">
|
|
32
|
-
<div class="mm_page" id="error_404">
|
|
33
|
-
<div class="box">
|
|
34
|
-
<h1>404</h1>
|
|
35
|
-
<div class="mm_grid">
|
|
36
|
-
<div class="mm_col_50">
|
|
37
|
-
<h2>超级美眉</h2>
|
|
38
|
-
</div>
|
|
39
|
-
<div class="mm_col_50">
|
|
40
|
-
<div class="bg_no">
|
|
41
|
-
<h6>一个好玩的服务端</h6>
|
|
42
|
-
<p><a href="http://mm.elins.cn">http://mm.elins.cn</a></p>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
<div class="border"></div>
|
|
48
|
-
<div class="border br2"></div>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
</body>
|
|
52
|
-
</html>
|
package/bin/static/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
静态摘要
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
|
3
|
-
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
|
4
|
-
*/@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=4.7.0');src:url('../font/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../font/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../font/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../font/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../font/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}i,.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size: inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass::before{content:"\f000"}.fa-music::before{content:"\f001"}.fa-search::before{content:"\f002"}.fa-envelope-o::before{content:"\f003"}.fa-heart::before{content:"\f004"}.fa-star::before{content:"\f005"}.fa-star-o::before{content:"\f006"}.fa-user::before{content:"\f007"}.fa-film::before{content:"\f008"}.fa-th-large::before{content:"\f009"}.fa-th::before{content:"\f00a"}.fa-th-list::before{content:"\f00b"}.fa-check::before{content:"\f00c"}.fa-remove::before,.fa-close::before,.fa-times::before{content:"\f00d"}.fa-search-plus::before{content:"\f00e"}.fa-search-minus::before{content:"\f010"}.fa-power-off::before{content:"\f011"}.fa-signal::before{content:"\f012"}.fa-gear::before,.fa-cog::before{content:"\f013"}.fa-trash-o::before{content:"\f014"}.fa-home::before{content:"\f015"}.fa-file-o::before{content:"\f016"}.fa-clock-o::before{content:"\f017"}.fa-road::before{content:"\f018"}.fa-download::before{content:"\f019"}.fa-arrow-circle-o-down::before{content:"\f01a"}.fa-arrow-circle-o-up::before{content:"\f01b"}.fa-inbox::before{content:"\f01c"}.fa-play-circle-o::before{content:"\f01d"}.fa-rotate-right::before,.fa-repeat::before{content:"\f01e"}.fa-refresh::before{content:"\f021"}.fa-list-alt::before{content:"\f022"}.fa-lock::before{content:"\f023"}.fa-flag::before{content:"\f024"}.fa-headphones::before{content:"\f025"}.fa-volume-off::before{content:"\f026"}.fa-volume-down::before{content:"\f027"}.fa-volume-up::before{content:"\f028"}.fa-qrcode::before{content:"\f029"}.fa-barcode::before{content:"\f02a"}.fa-tag::before{content:"\f02b"}.fa-tags::before{content:"\f02c"}.fa-book::before{content:"\f02d"}.fa-bookmark::before{content:"\f02e"}.fa-print::before{content:"\f02f"}.fa-camera::before{content:"\f030"}.fa-font::before{content:"\f031"}.fa-bold::before{content:"\f032"}.fa-italic::before{content:"\f033"}.fa-text-height::before{content:"\f034"}.fa-text-width::before{content:"\f035"}.fa-align-left::before{content:"\f036"}.fa-align-center::before{content:"\f037"}.fa-align-right::before{content:"\f038"}.fa-align-justify::before{content:"\f039"}.fa-list::before{content:"\f03a"}.fa-dedent::before,.fa-outdent::before{content:"\f03b"}.fa-indent::before{content:"\f03c"}.fa-video-camera::before{content:"\f03d"}.fa-photo::before,.fa-image::before,.fa-picture-o::before{content:"\f03e"}.fa-pencil::before{content:"\f040"}.fa-map-marker::before{content:"\f041"}.fa-adjust::before{content:"\f042"}.fa-tint::before{content:"\f043"}.fa-edit::before,.fa-pencil-square-o::before{content:"\f044"}.fa-share-square-o::before{content:"\f045"}.fa-check-square-o::before{content:"\f046"}.fa-arrows::before{content:"\f047"}.fa-step-backward::before{content:"\f048"}.fa-fast-backward::before{content:"\f049"}.fa-backward::before{content:"\f04a"}.fa-play::before{content:"\f04b"}.fa-pause::before{content:"\f04c"}.fa-stop::before{content:"\f04d"}.fa-forward::before{content:"\f04e"}.fa-fast-forward::before{content:"\f050"}.fa-step-forward::before{content:"\f051"}.fa-eject::before{content:"\f052"}.fa-chevron-left::before{content:"\f053"}.fa-chevron-right::before{content:"\f054"}.fa-plus-circle::before{content:"\f055"}.fa-minus-circle::before{content:"\f056"}.fa-times-circle::before{content:"\f057"}.fa-check-circle::before{content:"\f058"}.fa-question-circle::before{content:"\f059"}.fa-info-circle::before{content:"\f05a"}.fa-crosshairs::before{content:"\f05b"}.fa-times-circle-o::before{content:"\f05c"}.fa-check-circle-o::before{content:"\f05d"}.fa-ban::before{content:"\f05e"}.fa-arrow-left::before{content:"\f060"}.fa-arrow-right::before{content:"\f061"}.fa-arrow-up::before{content:"\f062"}.fa-arrow-down::before{content:"\f063"}.fa-mail-forward::before,.fa-share::before{content:"\f064"}.fa-expand::before{content:"\f065"}.fa-compress::before{content:"\f066"}.fa-plus::before{content:"\f067"}.fa-minus::before{content:"\f068"}.fa-asterisk::before{content:"\f069"}.fa-exclamation-circle::before{content:"\f06a"}.fa-gift::before{content:"\f06b"}.fa-leaf::before{content:"\f06c"}.fa-fire::before{content:"\f06d"}.fa-eye::before{content:"\f06e"}.fa-eye-slash::before{content:"\f070"}.fa-warning::before,.fa-exclamation-triangle::before{content:"\f071"}.fa-plane::before{content:"\f072"}.fa-calendar::before{content:"\f073"}.fa-random::before{content:"\f074"}.fa-comment::before{content:"\f075"}.fa-magnet::before{content:"\f076"}.fa-chevron-up::before{content:"\f077"}.fa-chevron-down::before{content:"\f078"}.fa-retweet::before{content:"\f079"}.fa-shopping-cart::before{content:"\f07a"}.fa-folder::before{content:"\f07b"}.fa-folder-open::before{content:"\f07c"}.fa-arrows-v::before{content:"\f07d"}.fa-arrows-h::before{content:"\f07e"}.fa-bar-chart-o::before,.fa-bar-chart::before{content:"\f080"}.fa-twitter-square::before{content:"\f081"}.fa-facebook-square::before{content:"\f082"}.fa-camera-retro::before{content:"\f083"}.fa-key::before{content:"\f084"}.fa-gears::before,.fa-cogs::before{content:"\f085"}.fa-comments::before{content:"\f086"}.fa-thumbs-o-up::before{content:"\f087"}.fa-thumbs-o-down::before{content:"\f088"}.fa-star-half::before{content:"\f089"}.fa-heart-o::before{content:"\f08a"}.fa-sign-out::before{content:"\f08b"}.fa-linkedin-square::before{content:"\f08c"}.fa-thumb-tack::before{content:"\f08d"}.fa-external-link::before{content:"\f08e"}.fa-sign-in::before{content:"\f090"}.fa-trophy::before{content:"\f091"}.fa-github-square::before{content:"\f092"}.fa-upload::before{content:"\f093"}.fa-lemon-o::before{content:"\f094"}.fa-phone::before{content:"\f095"}.fa-square-o::before{content:"\f096"}.fa-bookmark-o::before{content:"\f097"}.fa-phone-square::before{content:"\f098"}.fa-twitter::before{content:"\f099"}.fa-facebook-f::before,.fa-facebook::before{content:"\f09a"}.fa-github::before{content:"\f09b"}.fa-unlock::before{content:"\f09c"}.fa-credit-card::before{content:"\f09d"}.fa-feed::before,.fa-rss::before{content:"\f09e"}.fa-hdd-o::before{content:"\f0a0"}.fa-bullhorn::before{content:"\f0a1"}.fa-bell::before{content:"\f0f3"}.fa-certificate::before{content:"\f0a3"}.fa-hand-o-right::before{content:"\f0a4"}.fa-hand-o-left::before{content:"\f0a5"}.fa-hand-o-up::before{content:"\f0a6"}.fa-hand-o-down::before{content:"\f0a7"}.fa-arrow-circle-left::before{content:"\f0a8"}.fa-arrow-circle-right::before{content:"\f0a9"}.fa-arrow-circle-up::before{content:"\f0aa"}.fa-arrow-circle-down::before{content:"\f0ab"}.fa-globe::before{content:"\f0ac"}.fa-wrench::before{content:"\f0ad"}.fa-tasks::before{content:"\f0ae"}.fa-filter::before{content:"\f0b0"}.fa-briefcase::before{content:"\f0b1"}.fa-arrows-alt::before{content:"\f0b2"}.fa-group::before,.fa-users::before{content:"\f0c0"}.fa-chain::before,.fa-link::before{content:"\f0c1"}.fa-cloud::before{content:"\f0c2"}.fa-flask::before{content:"\f0c3"}.fa-cut::before,.fa-scissors::before{content:"\f0c4"}.fa-copy::before,.fa-files-o::before{content:"\f0c5"}.fa-paperclip::before{content:"\f0c6"}.fa-save::before,.fa-floppy-o::before{content:"\f0c7"}.fa-square::before{content:"\f0c8"}.fa-navicon::before,.fa-reorder::before,.fa-bars::before{content:"\f0c9"}.fa-list-ul::before{content:"\f0ca"}.fa-list-ol::before{content:"\f0cb"}.fa-strikethrough::before{content:"\f0cc"}.fa-underline::before{content:"\f0cd"}.fa-table::before{content:"\f0ce"}.fa-magic::before{content:"\f0d0"}.fa-truck::before{content:"\f0d1"}.fa-pinterest::before{content:"\f0d2"}.fa-pinterest-square::before{content:"\f0d3"}.fa-google-plus-square::before{content:"\f0d4"}.fa-google-plus::before{content:"\f0d5"}.fa-money::before{content:"\f0d6"}.fa-caret-down::before{content:"\f0d7"}.fa-caret-up::before{content:"\f0d8"}.fa-caret-left::before{content:"\f0d9"}.fa-caret-right::before{content:"\f0da"}.fa-columns::before{content:"\f0db"}.fa-unsorted::before,.fa-sort::before{content:"\f0dc"}.fa-sort-down::before,.fa-sort-desc::before{content:"\f0dd"}.fa-sort-up::before,.fa-sort-asc::before{content:"\f0de"}.fa-envelope::before{content:"\f0e0"}.fa-linkedin::before{content:"\f0e1"}.fa-rotate-left::before,.fa-undo::before{content:"\f0e2"}.fa-legal::before,.fa-gavel::before{content:"\f0e3"}.fa-dashboard::before,.fa-tachometer::before{content:"\f0e4"}.fa-comment-o::before{content:"\f0e5"}.fa-comments-o::before{content:"\f0e6"}.fa-flash::before,.fa-bolt::before{content:"\f0e7"}.fa-sitemap::before{content:"\f0e8"}.fa-umbrella::before{content:"\f0e9"}.fa-paste::before,.fa-clipboard::before{content:"\f0ea"}.fa-lightbulb-o::before{content:"\f0eb"}.fa-exchange::before{content:"\f0ec"}.fa-cloud-download::before{content:"\f0ed"}.fa-cloud-upload::before{content:"\f0ee"}.fa-user-md::before{content:"\f0f0"}.fa-stethoscope::before{content:"\f0f1"}.fa-suitcase::before{content:"\f0f2"}.fa-bell-o::before{content:"\f0a2"}.fa-coffee::before{content:"\f0f4"}.fa-cutlery::before{content:"\f0f5"}.fa-file-text-o::before{content:"\f0f6"}.fa-building-o::before{content:"\f0f7"}.fa-hospital-o::before{content:"\f0f8"}.fa-ambulance::before{content:"\f0f9"}.fa-medkit::before{content:"\f0fa"}.fa-fighter-jet::before{content:"\f0fb"}.fa-beer::before{content:"\f0fc"}.fa-h-square::before{content:"\f0fd"}.fa-plus-square::before{content:"\f0fe"}.fa-angle-double-left::before{content:"\f100"}.fa-angle-double-right::before{content:"\f101"}.fa-angle-double-up::before{content:"\f102"}.fa-angle-double-down::before{content:"\f103"}.fa-angle-left::before{content:"\f104"}.fa-angle-right::before{content:"\f105"}.fa-angle-up::before{content:"\f106"}.fa-angle-down::before{content:"\f107"}.fa-desktop::before{content:"\f108"}.fa-laptop::before{content:"\f109"}.fa-tablet::before{content:"\f10a"}.fa-mobile-phone::before,.fa-mobile::before{content:"\f10b"}.fa-circle-o::before{content:"\f10c"}.fa-quote-left::before{content:"\f10d"}.fa-quote-right::before{content:"\f10e"}.fa-spinner::before{content:"\f110"}.fa-circle::before{content:"\f111"}.fa-mail-reply::before,.fa-reply::before{content:"\f112"}.fa-github-alt::before{content:"\f113"}.fa-folder-o::before{content:"\f114"}.fa-folder-open-o::before{content:"\f115"}.fa-smile-o::before{content:"\f118"}.fa-frown-o::before{content:"\f119"}.fa-meh-o::before{content:"\f11a"}.fa-gamepad::before{content:"\f11b"}.fa-keyboard-o::before{content:"\f11c"}.fa-flag-o::before{content:"\f11d"}.fa-flag-checkered::before{content:"\f11e"}.fa-terminal::before{content:"\f120"}.fa-code::before{content:"\f121"}.fa-mail-reply-all::before,.fa-reply-all::before{content:"\f122"}.fa-star-half-empty::before,.fa-star-half-full::before,.fa-star-half-o::before{content:"\f123"}.fa-location-arrow::before{content:"\f124"}.fa-crop::before{content:"\f125"}.fa-code-fork::before{content:"\f126"}.fa-unlink::before,.fa-chain-broken::before{content:"\f127"}.fa-question::before{content:"\f128"}.fa-info::before{content:"\f129"}.fa-exclamation::before{content:"\f12a"}.fa-superscript::before{content:"\f12b"}.fa-subscript::before{content:"\f12c"}.fa-eraser::before{content:"\f12d"}.fa-puzzle-piece::before{content:"\f12e"}.fa-microphone::before{content:"\f130"}.fa-microphone-slash::before{content:"\f131"}.fa-shield::before{content:"\f132"}.fa-calendar-o::before{content:"\f133"}.fa-fire-extinguisher::before{content:"\f134"}.fa-rocket::before{content:"\f135"}.fa-maxcdn::before{content:"\f136"}.fa-chevron-circle-left::before{content:"\f137"}.fa-chevron-circle-right::before{content:"\f138"}.fa-chevron-circle-up::before{content:"\f139"}.fa-chevron-circle-down::before{content:"\f13a"}.fa-html5::before{content:"\f13b"}.fa-css3::before{content:"\f13c"}.fa-anchor::before{content:"\f13d"}.fa-unlock-alt::before{content:"\f13e"}.fa-bullseye::before{content:"\f140"}.fa-ellipsis-h::before{content:"\f141"}.fa-ellipsis-v::before{content:"\f142"}.fa-rss-square::before{content:"\f143"}.fa-play-circle::before{content:"\f144"}.fa-ticket::before{content:"\f145"}.fa-minus-square::before{content:"\f146"}.fa-minus-square-o::before{content:"\f147"}.fa-level-up::before{content:"\f148"}.fa-level-down::before{content:"\f149"}.fa-check-square::before{content:"\f14a"}.fa-pencil-square::before{content:"\f14b"}.fa-external-link-square::before{content:"\f14c"}.fa-share-square::before{content:"\f14d"}.fa-compass::before{content:"\f14e"}.fa-toggle-down::before,.fa-caret-square-o-down::before{content:"\f150"}.fa-toggle-up::before,.fa-caret-square-o-up::before{content:"\f151"}.fa-toggle-right::before,.fa-caret-square-o-right::before{content:"\f152"}.fa-euro::before,.fa-eur::before{content:"\f153"}.fa-gbp::before{content:"\f154"}.fa-dollar::before,.fa-usd::before{content:"\f155"}.fa-rupee::before,.fa-inr::before{content:"\f156"}.fa-cny::before,.fa-rmb::before,.fa-yen::before,.fa-jpy::before{content:"\f157"}.fa-ruble::before,.fa-rouble::before,.fa-rub::before{content:"\f158"}.fa-won::before,.fa-krw::before{content:"\f159"}.fa-bitcoin::before,.fa-btc::before{content:"\f15a"}.fa-file::before{content:"\f15b"}.fa-file-text::before{content:"\f15c"}.fa-sort-alpha-asc::before{content:"\f15d"}.fa-sort-alpha-desc::before{content:"\f15e"}.fa-sort-amount-asc::before{content:"\f160"}.fa-sort-amount-desc::before{content:"\f161"}.fa-sort-numeric-asc::before{content:"\f162"}.fa-sort-numeric-desc::before{content:"\f163"}.fa-thumbs-up::before{content:"\f164"}.fa-thumbs-down::before{content:"\f165"}.fa-youtube-square::before{content:"\f166"}.fa-youtube::before{content:"\f167"}.fa-xing::before{content:"\f168"}.fa-xing-square::before{content:"\f169"}.fa-youtube-play::before{content:"\f16a"}.fa-dropbox::before{content:"\f16b"}.fa-stack-overflow::before{content:"\f16c"}.fa-instagram::before{content:"\f16d"}.fa-flickr::before{content:"\f16e"}.fa-adn::before{content:"\f170"}.fa-bitbucket::before{content:"\f171"}.fa-bitbucket-square::before{content:"\f172"}.fa-tumblr::before{content:"\f173"}.fa-tumblr-square::before{content:"\f174"}.fa-long-arrow-down::before{content:"\f175"}.fa-long-arrow-up::before{content:"\f176"}.fa-long-arrow-left::before{content:"\f177"}.fa-long-arrow-right::before{content:"\f178"}.fa-apple::before{content:"\f179"}.fa-windows::before{content:"\f17a"}.fa-android::before{content:"\f17b"}.fa-linux::before{content:"\f17c"}.fa-dribbble::before{content:"\f17d"}.fa-skype::before{content:"\f17e"}.fa-foursquare::before{content:"\f180"}.fa-trello::before{content:"\f181"}.fa-female::before{content:"\f182"}.fa-male::before{content:"\f183"}.fa-gittip::before,.fa-gratipay::before{content:"\f184"}.fa-sun-o::before{content:"\f185"}.fa-moon-o::before{content:"\f186"}.fa-archive::before{content:"\f187"}.fa-bug::before{content:"\f188"}.fa-vk::before{content:"\f189"}.fa-weibo::before{content:"\f18a"}.fa-renren::before{content:"\f18b"}.fa-pagelines::before{content:"\f18c"}.fa-stack-exchange::before{content:"\f18d"}.fa-arrow-circle-o-right::before{content:"\f18e"}.fa-arrow-circle-o-left::before{content:"\f190"}.fa-toggle-left::before,.fa-caret-square-o-left::before{content:"\f191"}.fa-dot-circle-o::before{content:"\f192"}.fa-wheelchair::before{content:"\f193"}.fa-vimeo-square::before{content:"\f194"}.fa-turkish-lira::before,.fa-try::before{content:"\f195"}.fa-plus-square-o::before{content:"\f196"}.fa-space-shuttle::before{content:"\f197"}.fa-slack::before{content:"\f198"}.fa-envelope-square::before{content:"\f199"}.fa-wordpress::before{content:"\f19a"}.fa-openid::before{content:"\f19b"}.fa-institution::before,.fa-bank::before,.fa-university::before{content:"\f19c"}.fa-mortar-board::before,.fa-graduation-cap::before{content:"\f19d"}.fa-yahoo::before{content:"\f19e"}.fa-google::before{content:"\f1a0"}.fa-reddit::before{content:"\f1a1"}.fa-reddit-square::before{content:"\f1a2"}.fa-stumbleupon-circle::before{content:"\f1a3"}.fa-stumbleupon::before{content:"\f1a4"}.fa-delicious::before{content:"\f1a5"}.fa-digg::before{content:"\f1a6"}.fa-pied-piper-pp::before{content:"\f1a7"}.fa-pied-piper-alt::before{content:"\f1a8"}.fa-drupal::before{content:"\f1a9"}.fa-joomla::before{content:"\f1aa"}.fa-language::before{content:"\f1ab"}.fa-fax::before{content:"\f1ac"}.fa-building::before{content:"\f1ad"}.fa-child::before{content:"\f1ae"}.fa-paw::before{content:"\f1b0"}.fa-spoon::before{content:"\f1b1"}.fa-cube::before{content:"\f1b2"}.fa-cubes::before{content:"\f1b3"}.fa-behance::before{content:"\f1b4"}.fa-behance-square::before{content:"\f1b5"}.fa-steam::before{content:"\f1b6"}.fa-steam-square::before{content:"\f1b7"}.fa-recycle::before{content:"\f1b8"}.fa-automobile::before,.fa-car::before{content:"\f1b9"}.fa-cab::before,.fa-taxi::before{content:"\f1ba"}.fa-tree::before{content:"\f1bb"}.fa-spotify::before{content:"\f1bc"}.fa-deviantart::before{content:"\f1bd"}.fa-soundcloud::before{content:"\f1be"}.fa-database::before{content:"\f1c0"}.fa-file-pdf-o::before{content:"\f1c1"}.fa-file-word-o::before{content:"\f1c2"}.fa-file-excel-o::before{content:"\f1c3"}.fa-file-powerpoint-o::before{content:"\f1c4"}.fa-file-photo-o::before,.fa-file-picture-o::before,.fa-file-image-o::before{content:"\f1c5"}.fa-file-zip-o::before,.fa-file-archive-o::before{content:"\f1c6"}.fa-file-sound-o::before,.fa-file-audio-o::before{content:"\f1c7"}.fa-file-movie-o::before,.fa-file-video-o::before{content:"\f1c8"}.fa-file-code-o::before{content:"\f1c9"}.fa-vine::before{content:"\f1ca"}.fa-codepen::before{content:"\f1cb"}.fa-jsfiddle::before{content:"\f1cc"}.fa-life-bouy::before,.fa-life-buoy::before,.fa-life-saver::before,.fa-support::before,.fa-life-ring::before{content:"\f1cd"}.fa-circle-o-notch::before{content:"\f1ce"}.fa-ra::before,.fa-resistance::before,.fa-rebel::before{content:"\f1d0"}.fa-ge::before,.fa-empire::before{content:"\f1d1"}.fa-git-square::before{content:"\f1d2"}.fa-git::before{content:"\f1d3"}.fa-y-combinator-square::before,.fa-yc-square::before,.fa-hacker-news::before{content:"\f1d4"}.fa-tencent-weibo::before{content:"\f1d5"}.fa-qq::before{content:"\f1d6"}.fa-wechat::before,.fa-weixin::before{content:"\f1d7"}.fa-send::before,.fa-paper-plane::before{content:"\f1d8"}.fa-send-o::before,.fa-paper-plane-o::before{content:"\f1d9"}.fa-history::before{content:"\f1da"}.fa-circle-thin::before{content:"\f1db"}.fa-header::before{content:"\f1dc"}.fa-paragraph::before{content:"\f1dd"}.fa-sliders::before{content:"\f1de"}.fa-share-alt::before{content:"\f1e0"}.fa-share-alt-square::before{content:"\f1e1"}.fa-bomb::before{content:"\f1e2"}.fa-soccer-ball-o::before,.fa-futbol-o::before{content:"\f1e3"}.fa-tty::before{content:"\f1e4"}.fa-binoculars::before{content:"\f1e5"}.fa-plug::before{content:"\f1e6"}.fa-slideshare::before{content:"\f1e7"}.fa-twitch::before{content:"\f1e8"}.fa-yelp::before{content:"\f1e9"}.fa-newspaper-o::before{content:"\f1ea"}.fa-wifi::before{content:"\f1eb"}.fa-calculator::before{content:"\f1ec"}.fa-paypal::before{content:"\f1ed"}.fa-google-wallet::before{content:"\f1ee"}.fa-cc-visa::before{content:"\f1f0"}.fa-cc-mastercard::before{content:"\f1f1"}.fa-cc-discover::before{content:"\f1f2"}.fa-cc-amex::before{content:"\f1f3"}.fa-cc-paypal::before{content:"\f1f4"}.fa-cc-stripe::before{content:"\f1f5"}.fa-bell-slash::before{content:"\f1f6"}.fa-bell-slash-o::before{content:"\f1f7"}.fa-trash::before{content:"\f1f8"}.fa-copyright::before{content:"\f1f9"}.fa-at::before{content:"\f1fa"}.fa-eyedropper::before{content:"\f1fb"}.fa-paint-brush::before{content:"\f1fc"}.fa-birthday-cake::before{content:"\f1fd"}.fa-area-chart::before{content:"\f1fe"}.fa-pie-chart::before{content:"\f200"}.fa-line-chart::before{content:"\f201"}.fa-lastfm::before{content:"\f202"}.fa-lastfm-square::before{content:"\f203"}.fa-toggle-off::before{content:"\f204"}.fa-toggle-on::before{content:"\f205"}.fa-bicycle::before{content:"\f206"}.fa-bus::before{content:"\f207"}.fa-ioxhost::before{content:"\f208"}.fa-angellist::before{content:"\f209"}.fa-cc::before{content:"\f20a"}.fa-shekel::before,.fa-sheqel::before,.fa-ils::before{content:"\f20b"}.fa-meanpath::before{content:"\f20c"}.fa-buysellads::before{content:"\f20d"}.fa-connectdevelop::before{content:"\f20e"}.fa-dashcube::before{content:"\f210"}.fa-forumbee::before{content:"\f211"}.fa-leanpub::before{content:"\f212"}.fa-sellsy::before{content:"\f213"}.fa-shirtsinbulk::before{content:"\f214"}.fa-simplybuilt::before{content:"\f215"}.fa-skyatlas::before{content:"\f216"}.fa-cart-plus::before{content:"\f217"}.fa-cart-arrow-down::before{content:"\f218"}.fa-diamond::before{content:"\f219"}.fa-ship::before{content:"\f21a"}.fa-user-secret::before{content:"\f21b"}.fa-motorcycle::before{content:"\f21c"}.fa-street-div::before{content:"\f21d"}.fa-heartbeat::before{content:"\f21e"}.fa-venus::before{content:"\f221"}.fa-mars::before{content:"\f222"}.fa-mercury::before{content:"\f223"}.fa-intersex::before,.fa-transgender::before{content:"\f224"}.fa-transgender-alt::before{content:"\f225"}.fa-venus-double::before{content:"\f226"}.fa-mars-double::before{content:"\f227"}.fa-venus-mars::before{content:"\f228"}.fa-mars-stroke::before{content:"\f229"}.fa-mars-stroke-v::before{content:"\f22a"}.fa-mars-stroke-h::before{content:"\f22b"}.fa-neuter::before{content:"\f22c"}.fa-genderless::before{content:"\f22d"}.fa-facebook-official::before{content:"\f230"}.fa-pinterest-p::before{content:"\f231"}.fa-whatsapp::before{content:"\f232"}.fa-server::before{content:"\f233"}.fa-user-plus::before{content:"\f234"}.fa-user-times::before{content:"\f235"}.fa-hotel::before,.fa-bed::before{content:"\f236"}.fa-viacoin::before{content:"\f237"}.fa-train::before{content:"\f238"}.fa-subway::before{content:"\f239"}.fa-medium::before{content:"\f23a"}.fa-yc::before,.fa-y-combinator::before{content:"\f23b"}.fa-optin-monster::before{content:"\f23c"}.fa-opencart::before{content:"\f23d"}.fa-expeditedssl::before{content:"\f23e"}.fa-battery-4::before,.fa-battery::before,.fa-battery-full::before{content:"\f240"}.fa-battery-3::before,.fa-battery-three-quarters::before{content:"\f241"}.fa-battery-2::before,.fa-battery-half::before{content:"\f242"}.fa-battery-1::before,.fa-battery-quarter::before{content:"\f243"}.fa-battery-0::before,.fa-battery-empty::before{content:"\f244"}.fa-mouse-pointer::before{content:"\f245"}.fa-i-cursor::before{content:"\f246"}.fa-object-group::before{content:"\f247"}.fa-object-ungroup::before{content:"\f248"}.fa-sticky-note::before{content:"\f249"}.fa-sticky-note-o::before{content:"\f24a"}.fa-cc-jcb::before{content:"\f24b"}.fa-cc-diners-club::before{content:"\f24c"}.fa-clone::before{content:"\f24d"}.fa-balance-scale::before{content:"\f24e"}.fa-hourglass-o::before{content:"\f250"}.fa-hourglass-1::before,.fa-hourglass-start::before{content:"\f251"}.fa-hourglass-2::before,.fa-hourglass-half::before{content:"\f252"}.fa-hourglass-3::before,.fa-hourglass-end::before{content:"\f253"}.fa-hourglass::before{content:"\f254"}.fa-hand-grab-o::before,.fa-hand-rock-o::before{content:"\f255"}.fa-hand-stop-o::before,.fa-hand-paper-o::before{content:"\f256"}.fa-hand-scissors-o::before{content:"\f257"}.fa-hand-lizard-o::before{content:"\f258"}.fa-hand-spock-o::before{content:"\f259"}.fa-hand-pointer-o::before{content:"\f25a"}.fa-hand-peace-o::before{content:"\f25b"}.fa-trademark::before{content:"\f25c"}.fa-registered::before{content:"\f25d"}.fa-creative-commons::before{content:"\f25e"}.fa-gg::before{content:"\f260"}.fa-gg-circle::before{content:"\f261"}.fa-tripadvisor::before{content:"\f262"}.fa-odnoklassniki::before{content:"\f263"}.fa-odnoklassniki-square::before{content:"\f264"}.fa-get-pocket::before{content:"\f265"}.fa-wikipedia-w::before{content:"\f266"}.fa-safari::before{content:"\f267"}.fa-chrome::before{content:"\f268"}.fa-firefox::before{content:"\f269"}.fa-opera::before{content:"\f26a"}.fa-internet-explorer::before{content:"\f26b"}.fa-tv::before,.fa-television::before{content:"\f26c"}.fa-contao::before{content:"\f26d"}.fa-500px::before{content:"\f26e"}.fa-amazon::before{content:"\f270"}.fa-calendar-plus-o::before{content:"\f271"}.fa-calendar-minus-o::before{content:"\f272"}.fa-calendar-times-o::before{content:"\f273"}.fa-calendar-check-o::before{content:"\f274"}.fa-industry::before{content:"\f275"}.fa-map-pin::before{content:"\f276"}.fa-map-signs::before{content:"\f277"}.fa-map-o::before{content:"\f278"}.fa-map::before{content:"\f279"}.fa-commenting::before{content:"\f27a"}.fa-commenting-o::before{content:"\f27b"}.fa-houzz::before{content:"\f27c"}.fa-vimeo::before{content:"\f27d"}.fa-black-tie::before{content:"\f27e"}.fa-fonticons::before{content:"\f280"}.fa-reddit-alien::before{content:"\f281"}.fa-edge::before{content:"\f282"}.fa-credit-card-alt::before{content:"\f283"}.fa-codiepie::before{content:"\f284"}.fa-modx::before{content:"\f285"}.fa-fort-awesome::before{content:"\f286"}.fa-usb::before{content:"\f287"}.fa-product-hunt::before{content:"\f288"}.fa-mixcloud::before{content:"\f289"}.fa-scribd::before{content:"\f28a"}.fa-pause-circle::before{content:"\f28b"}.fa-pause-circle-o::before{content:"\f28c"}.fa-stop-circle::before{content:"\f28d"}.fa-stop-circle-o::before{content:"\f28e"}.fa-shopping-bag::before{content:"\f290"}.fa-shopping-basket::before{content:"\f291"}.fa-hashtag::before{content:"\f292"}.fa-bluetooth::before{content:"\f293"}.fa-bluetooth-b::before{content:"\f294"}.fa-percent::before{content:"\f295"}.fa-gitlab::before{content:"\f296"}.fa-wpbeginner::before{content:"\f297"}.fa-wpforms::before{content:"\f298"}.fa-envira::before{content:"\f299"}.fa-universal-access::before{content:"\f29a"}.fa-wheelchair-alt::before{content:"\f29b"}.fa-question-circle-o::before{content:"\f29c"}.fa-blind::before{content:"\f29d"}.fa-audio-description::before{content:"\f29e"}.fa-volume-control-phone::before{content:"\f2a0"}.fa-braille::before{content:"\f2a1"}.fa-assistive-listening-systems::before{content:"\f2a2"}.fa-asl-interpreting::before,.fa-american-sign-language-interpreting::before{content:"\f2a3"}.fa-deafness::before,.fa-hard-of-hearing::before,.fa-deaf::before{content:"\f2a4"}.fa-glide::before{content:"\f2a5"}.fa-glide-g::before{content:"\f2a6"}.fa-signing::before,.fa-sign-language::before{content:"\f2a7"}.fa-low-vision::before{content:"\f2a8"}.fa-viadeo::before{content:"\f2a9"}.fa-viadeo-square::before{content:"\f2aa"}.fa-snapchat::before{content:"\f2ab"}.fa-snapchat-ghost::before{content:"\f2ac"}.fa-snapchat-square::before{content:"\f2ad"}.fa-pied-piper::before{content:"\f2ae"}.fa-first-order::before{content:"\f2b0"}.fa-yoast::before{content:"\f2b1"}.fa-themeisle::before{content:"\f2b2"}.fa-google-plus-circle::before,.fa-google-plus-official::before{content:"\f2b3"}.fa-fa::before,.fa-font-awesome::before{content:"\f2b4"}.fa-handshake-o::before{content:"\f2b5"}.fa-envelope-open::before{content:"\f2b6"}.fa-envelope-open-o::before{content:"\f2b7"}.fa-linode::before{content:"\f2b8"}.fa-address-book::before{content:"\f2b9"}.fa-address-book-o::before{content:"\f2ba"}.fa-vcard::before,.fa-address-card::before{content:"\f2bb"}.fa-vcard-o::before,.fa-address-card-o::before{content:"\f2bc"}.fa-user-circle::before{content:"\f2bd"}.fa-user-circle-o::before{content:"\f2be"}.fa-user-o::before{content:"\f2c0"}.fa-id-badge::before{content:"\f2c1"}.fa-drivers-license::before,.fa-id-card::before{content:"\f2c2"}.fa-drivers-license-o::before,.fa-id-card-o::before{content:"\f2c3"}.fa-quora::before{content:"\f2c4"}.fa-free-code-camp::before{content:"\f2c5"}.fa-telegram::before{content:"\f2c6"}.fa-thermometer-4::before,.fa-thermometer::before,.fa-thermometer-full::before{content:"\f2c7"}.fa-thermometer-3::before,.fa-thermometer-three-quarters::before{content:"\f2c8"}.fa-thermometer-2::before,.fa-thermometer-half::before{content:"\f2c9"}.fa-thermometer-1::before,.fa-thermometer-quarter::before{content:"\f2ca"}.fa-thermometer-0::before,.fa-thermometer-empty::before{content:"\f2cb"}.fa-shower::before{content:"\f2cc"}.fa-bathtub::before,.fa-s15::before,.fa-bath::before{content:"\f2cd"}.fa-podcast::before{content:"\f2ce"}.fa-window-maximize::before{content:"\f2d0"}.fa-window-minimize::before{content:"\f2d1"}.fa-window-restore::before{content:"\f2d2"}.fa-times-rectangle::before,.fa-window-close::before{content:"\f2d3"}.fa-times-rectangle-o::before,.fa-window-close-o::before{content:"\f2d4"}.fa-bandcamp::before{content:"\f2d5"}.fa-grav::before{content:"\f2d6"}.fa-etsy::before{content:"\f2d7"}.fa-imdb::before{content:"\f2d8"}.fa-ravelry::before{content:"\f2d9"}.fa-eercast::before{content:"\f2da"}.fa-microchip::before{content:"\f2db"}.fa-snowflake-o::before{content:"\f2dc"}.fa-superpowers::before{content:"\f2dd"}.fa-wpexplorer::before{content:"\f2de"}.fa-meetup::before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
|
|
5
|
-
|
|
6
|
-
/* 斜体(改用字体图标) */
|
|
7
|
-
i {font-family: "FontAwesome";}
|