From 86aeea2edb0dac0e049ec75ab6616e8d19e16e22 Mon Sep 17 00:00:00 2001 From: j00302280 Date: Mon, 15 Aug 2016 15:10:41 +0800 Subject: upload the gso gui seed code Change-Id: I7b91cadaf817d2c92280f9ff702a7ca679fa41eb Signed-off-by: j00302280 --- nsoc-iui/pom.xml | 31 + .../main/resources/webroot/nsoc/csarPackage.html | 116 + .../resources/webroot/nsoc/css/datatable-sort.css | 30 + .../main/resources/webroot/nsoc/css/fileupload.css | 81 + .../main/resources/webroot/nsoc/css/hostMirror.css | 447 + .../main/resources/webroot/nsoc/css/package.css | 415 + .../webroot/nsoc/css/platform/animate.min.css | 21 + .../resources/webroot/nsoc/css/platform/skill.css | 89 + .../main/resources/webroot/nsoc/css/software.css | 423 + .../main/resources/webroot/nsoc/css/template.css | 405 + .../resources/webroot/nsoc/css/templateDetail.css | 480 + .../main/resources/webroot/nsoc/css/topology.css | 393 + .../webroot/nsoc/css/virtualApplication.css | 502 + .../src/main/resources/webroot/nsoc/css/vnfm.css | 492 + .../main/resources/webroot/nsoc/hostMirror.html | 176 + .../nsoc/i18n/nfv-nso-iui-i18n-en-US.properties | 316 + .../nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties | 316 + .../main/resources/webroot/nsoc/images/down.png | Bin 0 -> 2938 bytes .../resources/webroot/nsoc/images/pointes_blue.png | Bin 0 -> 7411 bytes .../webroot/nsoc/images/pointes_green.png | Bin 0 -> 5329 bytes .../resources/webroot/nsoc/images/sort_asc.png | Bin 0 -> 1118 bytes .../webroot/nsoc/images/sort_asc_disabled.png | Bin 0 -> 148 bytes .../resources/webroot/nsoc/images/sort_both.png | Bin 0 -> 1136 bytes .../resources/webroot/nsoc/images/sort_desc.png | Bin 0 -> 1127 bytes .../webroot/nsoc/images/sort_desc_disabled.png | Bin 0 -> 146 bytes .../src/main/resources/webroot/nsoc/images/up.png | Bin 0 -> 2926 bytes .../webroot/nsoc/js/component/commonUtil.js | 128 + .../webroot/nsoc/js/component/loadi18n_nsoc.js | 23 + .../webroot/nsoc/js/component/serverPageTable.js | 407 + .../webroot/nsoc/js/hostMirror/hmController.js | 254 + .../resources/webroot/nsoc/js/hostMirror/hmUtil.js | 59 + .../webroot/nsoc/js/hostMirror/host-validate.js | 56 + .../webroot/nsoc/js/package/pmController.js | 223 + .../resources/webroot/nsoc/js/package/pmUtil.js | 137 + .../webroot/nsoc/js/softwareMirror/smController.js | 147 + .../webroot/nsoc/js/softwareMirror/smUtil.js | 33 + .../webroot/nsoc/js/template/tmController.js | 83 + .../webroot/nsoc/js/template/tmDetailController.js | 241 + .../webroot/nsoc/js/template/tmDetailUtil.js | 44 + .../resources/webroot/nsoc/js/template/tmUtil.js | 46 + .../resources/webroot/nsoc/js/template/topoUtil.js | 617 + .../webroot/nsoc/js/virtualApplication/validate.js | 64 + .../nsoc/js/virtualApplication/vmAppController.js | 710 + .../js/virtualApplication/vmAppDetailController.js | 281 + .../nsoc/js/virtualApplication/vmAppDetailUtil.js | 80 + .../nsoc/js/virtualApplication/vmAppUtil.js | 510 + .../webroot/nsoc/js/vnfm/vnfm-validate.js | 66 + .../webroot/nsoc/js/vnfm/vnfmController.js | 275 + .../resources/webroot/nsoc/js/vnfm/vnfmUtil.js | 73 + .../resources/webroot/nsoc/softwareMirror.html | 163 + .../src/main/resources/webroot/nsoc/template.html | 71 + .../resources/webroot/nsoc/templateDetail.html | 126 + .../src/main/resources/webroot/nsoc/topology.html | 122 + .../resources/webroot/nsoc/virtualApplication.html | 280 + .../webroot/nsoc/virtualApplicationDetail.html | 144 + .../webroot/nsoc/virtualApplicationScale.html | 152 + .../src/main/resources/webroot/nsoc/vnfmView.html | 194 + openoiui-standlone/pom.xml | 195 + openoiui-standlone/src/main/assembly/run.bat | 20 + openoiui-standlone/src/main/assembly/run.sh | 5 + openoiui-standlone/src/main/assembly/stop.bat | 34 + openoiui-standlone/src/main/assembly/stop.sh | 43 + .../webroot/component/openotopo/openotopo.js | 302 + .../webroot/component/openotopo/openotopo.min.js | 18 + .../hsif/openo-nsoc/i18n/loadi18n-openo-nsoc.js | 20 + .../i18n/openo-nsoc-i18n-en-US.properties | 23 + .../i18n/openo-nsoc-i18n-zh-CN.properties | 23 + .../hsif/openo-roc/i18n/loadi18n-openo-roc.js | 21 + .../openo-roc/i18n/openo-roc-i18n-en-US.properties | 22 + .../openo-roc/i18n/openo-roc-i18n-zh-CN.properties | 22 + .../hsif/openo-umc/i18n/loadi18n-openo-umc.js | 19 + .../openo-umc/i18n/openo-umc-i18n-en-US.properties | 27 + .../openo-umc/i18n/openo-umc-i18n-zh-CN.properties | 27 + ...web-framework-integration-i18n-en-US.properties | 224 + ...web-framework-integration-i18n-zh-CN.properties | 224 + ...-portal-login-integration-i18n-en-US.properties | 53 + ...-portal-login-integration-i18n-zh-CN.properties | 53 + .../webroot/framework/img/integration/logo.png | Bin 0 -> 5668 bytes .../framework/img/integration/netnumenLogo.png | Bin 0 -> 4097 bytes .../framework/img/integration/zte_logo_16.gif | Bin 0 -> 106 bytes .../framework/img/integration/zte_logo_white.png | Bin 0 -> 5717 bytes .../webroot/framework/img/integration/ztelogo.png | Bin 0 -> 2790 bytes .../assembly/webroot/framework/js/core/const.js | 57 + .../assembly/webroot/framework/json/main-page.json | 105 + .../src/main/assembly/webroot/framework/login.html | 187 + .../webroot/framework/menus/main_Fmegabar.html | 62 + .../webroot/framework/menus/main_Fsiderbar.html | 297 + .../webroot/framework/menus/main_siderbar.html | 231 + .../assembly/webroot/framework/menus/readme.txt | 17 + pom.xml | 42 + roc-iui/pom.xml | 31 + .../main/resources/webroot/roc-rs-view/css/res.css | 593 + .../roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js | 42 + .../i18n/roc-rs-view-iui-i18n-en-US.properties | 215 + .../i18n/roc-rs-view-iui-i18n-zh-CN.properties | 215 + .../resources/webroot/roc-rs-view/images/down.png | Bin 0 -> 2938 bytes .../resources/webroot/roc-rs-view/images/up.png | Bin 0 -> 2926 bytes .../webroot/roc-rs-view/js/resController.js | 306 + .../resources/webroot/roc-rs-view/js/resUtil.js | 215 + .../resources/webroot/roc-rs-view/resView.html | 1062 + .../src/main/resources/webroot/roc-sdn/css/sdn.css | 492 + .../resources/webroot/roc-sdn/i18n/loadi18nApp.js | 42 + .../roc-sdn/i18n/roc-sdn-iui-i18n-en-US.properties | 49 + .../roc-sdn/i18n/roc-sdn-iui-i18n-zh-CN.properties | 49 + .../resources/webroot/roc-sdn/js/sdn-validate.js | 67 + .../resources/webroot/roc-sdn/js/sdnController.js | 202 + .../main/resources/webroot/roc-sdn/js/sdnUtil.js | 89 + .../main/resources/webroot/roc-sdn/sdnView.html | 173 + .../resources/webroot/roc-vim/css/animate.min.css | 23 + .../resources/webroot/roc-vim/css/bootstrap.css | 4965 ++ .../main/resources/webroot/roc-vim/css/skill.css | 89 + .../src/main/resources/webroot/roc-vim/css/vim.css | 482 + .../resources/webroot/roc-vim/css/vimChart.css | 54 + .../resources/webroot/roc-vim/i18n/loadi18nApp.js | 43 + .../roc-vim/i18n/roc-vim-iui-i18n-en-US.properties | 89 + .../roc-vim/i18n/roc-vim-iui-i18n-zh-CN.properties | 90 + .../resources/webroot/roc-vim/js/client-cometd.js | 63 + .../webroot/roc-vim/js/jqBootstrapValidation.js | 927 + .../resources/webroot/roc-vim/js/vim-validate.js | 101 + .../main/resources/webroot/roc-vim/js/vimChart.js | 383 + .../webroot/roc-vim/js/vimChartController.js | 162 + .../resources/webroot/roc-vim/js/vimController.js | 315 + .../main/resources/webroot/roc-vim/js/vimUtil.js | 51 + .../main/resources/webroot/roc-vim/vimChart.html | 113 + .../main/resources/webroot/roc-vim/vimView.html | 217 + uiframe-iui/pom.xml | 31 + .../webroot/component/css/ZteIctIcons/Read Me.txt | 7 + .../component/css/ZteIctIcons/demo-files/demo.css | 152 + .../component/css/ZteIctIcons/demo-files/demo.js | 30 + .../webroot/component/css/ZteIctIcons/demo.html | 5015 ++ .../css/ZteIctIcons/fonts/ZteIctIcons.eot | Bin 0 -> 96492 bytes .../css/ZteIctIcons/fonts/ZteIctIcons.svg | 321 + .../css/ZteIctIcons/fonts/ZteIctIcons.ttf | Bin 0 -> 96312 bytes .../css/ZteIctIcons/fonts/ZteIctIcons.woff | Bin 0 -> 96388 bytes .../component/css/ZteIctIcons/selection.json | 9569 ++++ .../webroot/component/css/ZteIctIcons/style.css | 960 + .../resources/webroot/component/css/component.css | 34 + .../backstretch/jquery.backstretch.min.js | 4 + .../component/thirdparty/bootbox/LICENSE.md | 23 + .../webroot/component/thirdparty/bootbox/README.md | 91 + .../component/thirdparty/bootbox/bootbox.min.js | 6 + .../thirdparty/bootstrap-hover-dropdown/LICENSE | 24 + .../thirdparty/bootstrap-hover-dropdown/README.md | 122 + .../bootstrap-hover-dropdown.js | 14 + .../bootstrap-hover-dropdown.min.js | 13 + .../thirdparty/bootstrap/css/bootstrap-dt.css | 5804 ++ .../thirdparty/bootstrap/css/bootstrap.min.css | 7 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../component/thirdparty/bootstrap/js/bootstrap.js | 1951 + .../thirdparty/bootstrap/js/bootstrap.min.js | 6 + .../bootstrap/js/bootstrap2-typeahead.min.js | 21 + .../webroot/component/thirdparty/cometd/cometd.js | 3045 ++ .../thirdparty/cometd/cometd/AckExtension.js | 112 + .../thirdparty/cometd/cometd/ReloadExtension.js | 234 + .../thirdparty/cometd/cometd/TimeStampExtension.js | 42 + .../thirdparty/cometd/cometd/TimeSyncExtension.js | 216 + .../thirdparty/cometd/jquery/jquery.cometd-ack.js | 34 + .../cometd/jquery/jquery.cometd-reload.js | 42 + .../cometd/jquery/jquery.cometd-timestamp.js | 34 + .../cometd/jquery/jquery.cometd-timesync.js | 34 + .../thirdparty/cometd/jquery/jquery.cometd.js | 139 + .../data-tables/images/loading-spinner-grey.gif | Bin 0 -> 5203 bytes .../thirdparty/data-tables/images/sort_asc.png | Bin 0 -> 1118 bytes .../thirdparty/data-tables/images/sort_both.png | Bin 0 -> 1136 bytes .../thirdparty/data-tables/images/sort_desc.png | Bin 0 -> 1127 bytes .../thirdparty/data-tables/jquery.dataTables.js | 12101 ++++ .../data-tables/jquery.dataTables.min.js | 155 + .../component/thirdparty/fakeLoader/fakeLoader.css | 382 + .../thirdparty/fakeLoader/fakeLoader.min.js | 174 + .../thirdparty/font-awesome/css/font-awesome.css | 1672 + .../font-awesome/css/font-awesome.min.css | 4 + .../thirdparty/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 85908 bytes .../font-awesome/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes .../font-awesome/fonts/fontawesome-webfont.svg | 520 + .../font-awesome/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes .../font-awesome/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes .../font-awesome/less/bordered-pulled.less | 16 + .../thirdparty/font-awesome/less/core.less | 11 + .../thirdparty/font-awesome/less/fixed-width.less | 6 + .../thirdparty/font-awesome/less/font-awesome.less | 17 + .../thirdparty/font-awesome/less/icons.less | 552 + .../thirdparty/font-awesome/less/larger.less | 13 + .../thirdparty/font-awesome/less/list.less | 19 + .../thirdparty/font-awesome/less/mixins.less | 25 + .../thirdparty/font-awesome/less/path.less | 14 + .../font-awesome/less/rotated-flipped.less | 20 + .../thirdparty/font-awesome/less/spinning.less | 29 + .../thirdparty/font-awesome/less/stacked.less | 20 + .../thirdparty/font-awesome/less/variables.less | 561 + .../font-awesome/scss/_bordered-pulled.scss | 16 + .../thirdparty/font-awesome/scss/_core.scss | 11 + .../thirdparty/font-awesome/scss/_fixed-width.scss | 6 + .../thirdparty/font-awesome/scss/_icons.scss | 552 + .../thirdparty/font-awesome/scss/_larger.scss | 13 + .../thirdparty/font-awesome/scss/_list.scss | 19 + .../thirdparty/font-awesome/scss/_mixins.scss | 25 + .../thirdparty/font-awesome/scss/_path.scss | 14 + .../font-awesome/scss/_rotated-flipped.scss | 20 + .../thirdparty/font-awesome/scss/_spinning.scss | 29 + .../thirdparty/font-awesome/scss/_stacked.scss | 20 + .../thirdparty/font-awesome/scss/_variables.scss | 561 + .../thirdparty/font-awesome/scss/font-awesome.scss | 17 + .../component/thirdparty/freewall/freewall.js | 1306 + .../jquery-blockui/jquery.blockui.min.js | 15 + .../thirdparty/jquery-cokie/jquery.cokie.min.js | 9 + .../thirdparty/jquery-validation/README.md | 72 + .../jquery-validation/dist/additional-methods.js | 617 + .../dist/additional-methods.min.js | 11 + .../jquery-validation/dist/jquery.validate.js | 1231 + .../jquery-validation/dist/jquery.validate.min.js | 12 + .../jquery-validation/js/additional-methods.js | 928 + .../jquery-validation/js/additional-methods.min.js | 4 + .../jquery-validation/js/jquery.validate.js | 1357 + .../jquery-validation/js/jquery.validate.min.js | 4 + .../js/localization/messages_ar.js | 33 + .../js/localization/messages_ar.min.js | 4 + .../js/localization/messages_bg.js | 33 + .../js/localization/messages_bg.min.js | 4 + .../js/localization/messages_ca.js | 33 + .../js/localization/messages_ca.min.js | 4 + .../js/localization/messages_cs.js | 33 + .../js/localization/messages_cs.min.js | 4 + .../js/localization/messages_da.js | 30 + .../js/localization/messages_da.min.js | 4 + .../js/localization/messages_de.js | 30 + .../js/localization/messages_de.min.js | 4 + .../js/localization/messages_el.js | 33 + .../js/localization/messages_el.min.js | 4 + .../js/localization/messages_es.js | 36 + .../js/localization/messages_es.min.js | 4 + .../js/localization/messages_es_AR.js | 37 + .../js/localization/messages_es_AR.min.js | 4 + .../js/localization/messages_et.js | 31 + .../js/localization/messages_et.min.js | 4 + .../js/localization/messages_eu.js | 33 + .../js/localization/messages_eu.min.js | 4 + .../js/localization/messages_fa.js | 36 + .../js/localization/messages_fa.min.js | 4 + .../js/localization/messages_fi.js | 31 + .../js/localization/messages_fi.min.js | 4 + .../js/localization/messages_fr.js | 59 + .../js/localization/messages_fr.min.js | 4 + .../js/localization/messages_gl.js | 38 + .../js/localization/messages_gl.min.js | 4 + .../js/localization/messages_he.js | 33 + .../js/localization/messages_he.min.js | 4 + .../js/localization/messages_hr.js | 33 + .../js/localization/messages_hr.min.js | 4 + .../js/localization/messages_hu.js | 32 + .../js/localization/messages_hu.min.js | 4 + .../js/localization/messages_id.js | 32 + .../js/localization/messages_id.min.js | 4 + .../js/localization/messages_is.js | 31 + .../js/localization/messages_is.min.js | 4 + .../js/localization/messages_it.js | 36 + .../js/localization/messages_it.min.js | 4 + .../js/localization/messages_ja.js | 33 + .../js/localization/messages_ja.min.js | 4 + .../js/localization/messages_ka.js | 33 + .../js/localization/messages_ka.min.js | 4 + .../js/localization/messages_kk.js | 33 + .../js/localization/messages_kk.min.js | 4 + .../js/localization/messages_ko.js | 33 + .../js/localization/messages_ko.min.js | 4 + .../js/localization/messages_lt.js | 33 + .../js/localization/messages_lt.min.js | 4 + .../js/localization/messages_lv.js | 33 + .../js/localization/messages_lv.min.js | 4 + .../js/localization/messages_my.js | 33 + .../js/localization/messages_my.min.js | 4 + .../js/localization/messages_nl.js | 43 + .../js/localization/messages_nl.min.js | 4 + .../js/localization/messages_no.js | 33 + .../js/localization/messages_no.min.js | 4 + .../js/localization/messages_pl.js | 33 + .../js/localization/messages_pl.min.js | 4 + .../js/localization/messages_pt_BR.js | 37 + .../js/localization/messages_pt_BR.min.js | 4 + .../js/localization/messages_pt_PT.js | 37 + .../js/localization/messages_pt_PT.min.js | 4 + .../js/localization/messages_ro.js | 33 + .../js/localization/messages_ro.min.js | 4 + .../js/localization/messages_ru.js | 33 + .../js/localization/messages_ru.min.js | 4 + .../js/localization/messages_si.js | 33 + .../js/localization/messages_si.min.js | 4 + .../js/localization/messages_sk.js | 30 + .../js/localization/messages_sk.min.js | 4 + .../js/localization/messages_sl.js | 33 + .../js/localization/messages_sl.min.js | 4 + .../js/localization/messages_sr.js | 33 + .../js/localization/messages_sr.min.js | 4 + .../js/localization/messages_sr_lat.js | 33 + .../js/localization/messages_sr_lat.min.js | 4 + .../js/localization/messages_sv.js | 31 + .../js/localization/messages_sv.min.js | 4 + .../js/localization/messages_th.js | 33 + .../js/localization/messages_th.min.js | 4 + .../js/localization/messages_tj.js | 33 + .../js/localization/messages_tj.min.js | 4 + .../js/localization/messages_tr.js | 33 + .../js/localization/messages_tr.min.js | 4 + .../js/localization/messages_uk.js | 33 + .../js/localization/messages_uk.min.js | 4 + .../js/localization/messages_vi.js | 33 + .../js/localization/messages_vi.min.js | 4 + .../js/localization/messages_zh.js | 33 + .../js/localization/messages_zh.min.js | 4 + .../js/localization/messages_zh_TW.js | 34 + .../js/localization/messages_zh_TW.min.js | 4 + .../js/localization/methods_de.js | 22 + .../js/localization/methods_de.min.js | 4 + .../js/localization/methods_es_CL.js | 22 + .../js/localization/methods_es_CL.min.js | 4 + .../js/localization/methods_fi.js | 22 + .../js/localization/methods_fi.min.js | 4 + .../js/localization/methods_nl.js | 19 + .../js/localization/methods_nl.min.js | 4 + .../js/localization/methods_pt.js | 19 + .../js/localization/methods_pt.min.js | 4 + .../jquery.i18n/jquery.i18n.properties-1.0.9.js | 479 + .../thirdparty/jquery/jquery-1.10.2.min.js | 4 + .../component/thirdparty/jquery/jquery-1.11.2.js | 10346 ++++ .../thirdparty/jquery/jquery-1.11.2.min.js | 4 + .../thirdparty/jquery/jquery-1.11.2.min.map | 1 + .../thirdparty/jquery/jquery-1.4.4.min.js | 167 + .../component/thirdparty/jquery/jquery-2.1.3.js | 9205 ++++ .../thirdparty/jquery/jquery-2.1.3.min.js | 4 + .../thirdparty/jquery/jquery-2.1.3.min.map | 1 + .../thirdparty/jquery/jquery-migrate-1.2.1.js | 521 + .../thirdparty/jquery/jquery-migrate-1.2.1.min.js | 2 + .../component/thirdparty/jquery/jquery.reveal.js | 152 + .../thirdparty/select2/select2-custom.css | 234 + .../component/thirdparty/select2/select2.css | 607 + .../component/thirdparty/select2/select2.min.js | 22 + .../webroot/component/thirdparty/uniform/README.md | 389 + .../thirdparty/uniform/css/uniform.default.css | 366 + .../thirdparty/uniform/css/uniform.default.min.css | 1 + .../thirdparty/uniform/css/uniform.default.scss | 150 + .../thirdparty/uniform/images/bg-input-focus.png | Bin 0 -> 143 bytes .../thirdparty/uniform/images/bg-input.png | Bin 0 -> 143 bytes .../component/thirdparty/uniform/images/sprite.png | Bin 0 -> 31815 bytes .../thirdparty/uniform/images/sprite_original.png | Bin 0 -> 34229 bytes .../component/thirdparty/uniform/jquery.uniform.js | 1068 + .../thirdparty/uniform/jquery.uniform.min.js | 1 + .../main/resources/webroot/framework/about.html | 55 + .../webroot/framework/appRes/i18n/readme.txt | 38 + .../webroot/framework/appRes/img/readme.txt | 31 + .../webroot/framework/appRes/js/custom-const.js | 1 + .../webroot/framework/appRes/js/custom.js | 1 + .../resources/webroot/framework/changepwd.html | 92 + .../resources/webroot/framework/css/animate.css | 3278 ++ .../resources/webroot/framework/css/animate.css.gz | Bin 0 -> 5947 bytes .../webroot/framework/css/changepwd-apk.css | 84 + .../resources/webroot/framework/css/changepwd.css | 84 + .../webroot/framework/css/custom_default.css | 16 + .../resources/webroot/framework/css/login-apk.css | 183 + .../main/resources/webroot/framework/css/login.css | 201 + .../webroot/framework/css/more-operation.css | 167 + .../webroot/framework/css/ngict-component.css | 773 + .../resources/webroot/framework/css/plugins.css | 1561 + .../resources/webroot/framework/css/plugins.css.gz | Bin 0 -> 6002 bytes .../main/resources/webroot/framework/css/print.css | 53 + .../resources/webroot/framework/css/print.css.gz | Bin 0 -> 216 bytes .../webroot/framework/css/style-custom.css | 1510 + .../webroot/framework/css/style-custom.css.gz | Bin 0 -> 5338 bytes .../webroot/framework/css/style-ict-bootstrap.css | 838 + .../resources/webroot/framework/css/style-ict.css | 820 + .../webroot/framework/css/style-responsive.css | 989 + .../main/resources/webroot/framework/css/style.css | 4715 ++ .../webroot/framework/css/themes/black.css | 388 + .../webroot/framework/css/themes/black.css.gz | Bin 0 -> 1810 bytes .../webroot/framework/css/themes/black_ifrm.css | 207 + .../webroot/framework/css/themes/black_ifrm.css.gz | Bin 0 -> 896 bytes .../webroot/framework/css/themes/blue.css | 374 + .../webroot/framework/css/themes/blue.css.gz | Bin 0 -> 1819 bytes .../webroot/framework/css/themes/blue_ifrm.css | 207 + .../webroot/framework/css/themes/blue_ifrm.css.gz | Bin 0 -> 901 bytes .../webroot/framework/css/themes/brown.css | 376 + .../webroot/framework/css/themes/brown.css.gz | Bin 0 -> 1849 bytes .../webroot/framework/css/themes/brown_ifrm.css | 207 + .../webroot/framework/css/themes/brown_ifrm.css.gz | Bin 0 -> 904 bytes .../webroot/framework/css/themes/grey.css | 372 + .../webroot/framework/css/themes/grey.css.gz | Bin 0 -> 1778 bytes .../webroot/framework/css/themes/grey_ifrm.css | 209 + .../webroot/framework/css/themes/grey_ifrm.css.gz | Bin 0 -> 901 bytes .../webroot/framework/css/themes/light.css | 479 + .../webroot/framework/css/themes/light.css.gz | Bin 0 -> 2139 bytes .../webroot/framework/css/themes/light_ifrm.css | 207 + .../webroot/framework/css/themes/light_ifrm.css.gz | Bin 0 -> 914 bytes .../webroot/framework/css/themes/purple.css | 375 + .../webroot/framework/css/themes/purple.css.gz | Bin 0 -> 1858 bytes .../webroot/framework/css/themes/purple_ifrm.css | 207 + .../framework/css/themes/purple_ifrm.css.gz | Bin 0 -> 916 bytes .../webroot/framework/css/themes/zteblue.css | 398 + .../webroot/framework/css/themes/zteblue.css.gz | Bin 0 -> 1986 bytes .../webroot/framework/css/themes/zteblue_ifrm.css | 206 + .../framework/css/themes/zteblue_ifrm.css.gz | Bin 0 -> 915 bytes .../webroot/framework/css/themes/ztebluelight.css | 435 + .../framework/css/themes/ztebluelight.css.gz | Bin 0 -> 2456 bytes .../webroot/framework/css/themes/ztebluelight2.css | 505 + .../framework/css/themes/ztebluelight2.css.gz | Bin 0 -> 2163 bytes .../framework/css/themes/ztebluelight2_ifrm.css | 229 + .../framework/css/themes/ztebluelight2_ifrm.css.gz | Bin 0 -> 1469 bytes .../webroot/framework/css/themes/ztebluelight3.css | 497 + .../framework/css/themes/ztebluelight3.css.gz | Bin 0 -> 2354 bytes .../framework/css/themes/ztebluelight3_ifrm.css | 220 + .../framework/css/themes/ztebluelight3_ifrm.css.gz | Bin 0 -> 930 bytes .../webroot/framework/css/themes/ztebluelight4.css | 605 + .../framework/css/themes/ztebluelight4.css.gz | Bin 0 -> 2430 bytes .../framework/css/themes/ztebluelight4_ifrm.css | 209 + .../framework/css/themes/ztebluelight4_ifrm.css.gz | Bin 0 -> 1308 bytes .../framework/css/themes/ztebluelight_ifrm.css | 228 + .../framework/css/themes/ztebluelight_ifrm.css.gz | Bin 0 -> 1450 bytes .../resources/webroot/framework/css/zte-style.css | 255 + .../main/resources/webroot/framework/default.html | 564 + .../i18n/web-framework-i18n-en-US.properties | 225 + .../i18n/web-framework-i18n-zh-CN.properties | 226 + ...web-framework-integration-i18n-en-US.properties | 210 + ...web-framework-integration-i18n-zh-CN.properties | 210 + .../i18n/web-portal-login-i18n-en-US.properties | 49 + .../i18n/web-portal-login-i18n-zh-CN.properties | 49 + ...-portal-login-integration-i18n-en-US.properties | 50 + ...-portal-login-integration-i18n-zh-CN.properties | 50 + .../webroot/framework/img/about/about-bg-dark.png | Bin 0 -> 87487 bytes .../webroot/framework/img/about/about-bg-light.png | Bin 0 -> 95527 bytes .../webroot/framework/img/about/about-netnumen.png | Bin 0 -> 14772 bytes .../webroot/framework/img/accordion-plusminus.png | Bin 0 -> 162 bytes .../webroot/framework/img/ajax-loading.gif | Bin 0 -> 29959 bytes .../webroot/framework/img/ajax-modal-loading.gif | Bin 0 -> 27953 bytes .../resources/webroot/framework/img/arrow-down.png | Bin 0 -> 966 bytes .../resources/webroot/framework/img/avatar.png | Bin 0 -> 2016 bytes .../resources/webroot/framework/img/bg-opacity.png | Bin 0 -> 130 bytes .../webroot/framework/img/bg-white-lock.png | Bin 0 -> 2816 bytes .../resources/webroot/framework/img/bg-white.png | Bin 0 -> 2816 bytes .../checkbox-radio/checkbox-checked-disabled.png | Bin 0 -> 3087 bytes .../img/checkbox-radio/checkbox-checked.png | Bin 0 -> 3053 bytes .../img/checkbox-radio/checkbox-disabled.png | Bin 0 -> 2830 bytes .../img/checkbox-radio/checkbox-hover.png | Bin 0 -> 2835 bytes .../framework/img/checkbox-radio/checkbox-init.png | Bin 0 -> 2833 bytes .../img/checkbox-radio/radio-checked-disabled.png | Bin 0 -> 2993 bytes .../framework/img/checkbox-radio/radio-checked.png | Bin 0 -> 3235 bytes .../img/checkbox-radio/radio-disabled.png | Bin 0 -> 3045 bytes .../framework/img/checkbox-radio/radio-hover.png | Bin 0 -> 3068 bytes .../framework/img/checkbox-radio/radio-init.png | Bin 0 -> 3036 bytes .../webroot/framework/img/chrome_icon.png | Bin 0 -> 3856 bytes .../framework/img/datatable-row-openclose.png | Bin 0 -> 299 bytes .../main/resources/webroot/framework/img/empty.png | Bin 0 -> 2790 bytes .../webroot/framework/img/firefox_icon.png | Bin 0 -> 3759 bytes .../framework/img/hor-menu-search-close-white.png | Bin 0 -> 191 bytes .../framework/img/hor-menu-search-close.png | Bin 0 -> 162 bytes .../webroot/framework/img/hor-menu-search.jpg | Bin 0 -> 306 bytes .../webroot/framework/img/hor-menu-search.png | Bin 0 -> 299 bytes .../webroot/framework/img/icon-color-close.png | Bin 0 -> 1031 bytes .../resources/webroot/framework/img/icon-color.png | Bin 0 -> 1240 bytes .../webroot/framework/img/icon-img-down.png | Bin 0 -> 1023 bytes .../webroot/framework/img/icon-img-up.png | Bin 0 -> 999 bytes .../webroot/framework/img/input-spinner.gif | Bin 0 -> 1849 bytes .../webroot/framework/img/integration/logo.png | Bin 0 -> 16838 bytes .../framework/img/integration/logo_white.png | Bin 0 -> 13710 bytes .../framework/img/integration/netnumenLogo.png | Bin 0 -> 5379 bytes .../webroot/framework/img/integration/zte_bg_1.jpg | Bin 0 -> 143465 bytes .../webroot/framework/img/integration/zte_bg_2.jpg | Bin 0 -> 152396 bytes .../webroot/framework/img/integration/zte_bg_3.jpg | Bin 0 -> 155899 bytes .../framework/img/integration/zte_logo_16.gif | Bin 0 -> 583 bytes .../framework/img/integration/zte_logo_white.png | Bin 0 -> 16838 bytes .../webroot/framework/img/integration/ztelogo.png | Bin 0 -> 2790 bytes .../webroot/framework/img/loading-spinner-grey.gif | Bin 0 -> 5203 bytes .../resources/webroot/framework/img/loading.gif | Bin 0 -> 2906 bytes .../webroot/framework/img/mainpage/icon/1.png | Bin 0 -> 4053 bytes .../webroot/framework/img/mainpage/icon/2.png | Bin 0 -> 3397 bytes .../webroot/framework/img/mainpage/icon/3.png | Bin 0 -> 3948 bytes .../webroot/framework/img/mainpage/icon/4.png | Bin 0 -> 3927 bytes .../webroot/framework/img/mainpage/icon/5.png | Bin 0 -> 3185 bytes .../webroot/framework/img/mainpage/icon/6.png | Bin 0 -> 3361 bytes .../webroot/framework/img/mainpage/logo.png | Bin 0 -> 16103 bytes .../webroot/framework/img/mainpage/pic/1.png | Bin 0 -> 179653 bytes .../webroot/framework/img/mainpage/pic/2.png | Bin 0 -> 64321 bytes .../webroot/framework/img/mainpage/pic/3.png | Bin 0 -> 65383 bytes .../webroot/framework/img/mainpage/pic/4.png | Bin 0 -> 105028 bytes .../webroot/framework/img/mainpage/pic/5.png | Bin 0 -> 143644 bytes .../webroot/framework/img/menu-toggler.png | Bin 0 -> 948 bytes .../webroot/framework/img/overlay-icon.png | Bin 0 -> 514 bytes .../framework/img/portlet-collapse-icon-white.png | Bin 0 -> 240 bytes .../framework/img/portlet-collapse-icon.png | Bin 0 -> 269 bytes .../framework/img/portlet-config-icon-white.png | Bin 0 -> 320 bytes .../webroot/framework/img/portlet-config-icon.png | Bin 0 -> 330 bytes .../framework/img/portlet-expand-icon-white.png | Bin 0 -> 239 bytes .../webroot/framework/img/portlet-expand-icon.png | Bin 0 -> 256 bytes .../framework/img/portlet-reload-icon-white.png | Bin 0 -> 324 bytes .../webroot/framework/img/portlet-reload-icon.png | Bin 0 -> 345 bytes .../framework/img/portlet-remove-icon-white.png | Bin 0 -> 260 bytes .../webroot/framework/img/portlet-remove-icon.png | Bin 0 -> 312 bytes .../webroot/framework/img/remove-icon-small.png | Bin 0 -> 193 bytes .../webroot/framework/img/reset_password.png | Bin 0 -> 3516 bytes .../webroot/framework/img/ressvgs/NFV.svg | 58 + .../resources/webroot/framework/img/ressvgs/NS.svg | 29 + .../webroot/framework/img/ressvgs/VDU.svg | 26 + .../webroot/framework/img/ressvgs/VIM.svg | 19 + .../webroot/framework/img/ressvgs/VNF.svg | 14 + .../webroot/framework/img/ressvgs/VNFC.svg | 20 + .../webroot/framework/img/ressvgs/VNFM.svg | 17 + .../webroot/framework/img/ressvgs/breakLink.svg | 9 + .../webroot/framework/img/ressvgs/common_dc.svg | 72 + .../webroot/framework/img/ressvgs/common_ncd.svg | 40 + .../webroot/framework/img/ressvgs/common_sc.svg | 71 + .../webroot/framework/img/ressvgs/host.svg | 14 + .../framework/img/ressvgs/it-Virtual network.svg | 186 + .../webroot/framework/img/ressvgs/it-app-bind.svg | 58 + .../webroot/framework/img/ressvgs/it-app-dns.svg | 58 + .../webroot/framework/img/ressvgs/it-app-ems.svg | 75 + .../framework/img/ressvgs/it-app-mediator.svg | 78 + .../framework/img/ressvgs/it-app-netnumen.svg | 57 + .../webroot/framework/img/ressvgs/it-app-ntp.svg | 61 + .../webroot/framework/img/ressvgs/it-app-ota.svg | 58 + .../framework/img/ressvgs/it-app-tomcat.svg | 52 + .../webroot/framework/img/ressvgs/it-app-trend.svg | 58 + .../webroot/framework/img/ressvgs/it-app-tsm.svg | 62 + .../framework/img/ressvgs/it-app-weblogic.svg | 58 + .../webroot/framework/img/ressvgs/it-app.svg | 62 + .../framework/img/ressvgs/it-cluster-hacmp.svg | 54 + .../framework/img/ressvgs/it-cluster-nec.svg | 55 + .../framework/img/ressvgs/it-cluster-ns.svg | 58 + .../framework/img/ressvgs/it-cluster-sg.svg | 65 + .../framework/img/ressvgs/it-cluster-vcs.svg | 78 + .../webroot/framework/img/ressvgs/it-cluster.svg | 77 + .../framework/img/ressvgs/it-database-mssql.svg | 77 + .../framework/img/ressvgs/it-database-oracle.svg | 77 + .../framework/img/ressvgs/it-database-sybase.svg | 71 + .../framework/img/ressvgs/it-database-sybaseiq.svg | 51 + .../webroot/framework/img/ressvgs/it-database.svg | 71 + .../framework/img/ressvgs/it-diskraid-dellmd.svg | 199 + .../framework/img/ressvgs/it-diskraid-emc.svg | 198 + .../framework/img/ressvgs/it-diskraid-eternus.svg | 195 + .../framework/img/ressvgs/it-diskraid-fujitsu.svg | 215 + .../framework/img/ressvgs/it-diskraid-hds.svg | 103 + .../framework/img/ressvgs/it-diskraid-hpaio.svg | 203 + .../framework/img/ressvgs/it-diskraid-hpeva.svg | 207 + .../framework/img/ressvgs/it-diskraid-hpmsa.svg | 203 + .../framework/img/ressvgs/it-diskraid-ibm.svg | 203 + .../framework/img/ressvgs/it-diskraid-ibmsm.svg | 95 + .../framework/img/ressvgs/it-diskraid-macrosan.svg | 28 + .../framework/img/ressvgs/it-diskraid-netapp.svg | 146 + .../framework/img/ressvgs/it-diskraid-sun.svg | 146 + .../framework/img/ressvgs/it-diskraid-zte.svg | 146 + .../img/ressvgs/it-firewall-checkpoint.svg | 95 + .../framework/img/ressvgs/it-firewall-cisco.svg | 95 + .../framework/img/ressvgs/it-firewall-cisco2.svg | 95 + .../framework/img/ressvgs/it-firewall-h3c.svg | 116 + .../framework/img/ressvgs/it-firewall-juniper.svg | 109 + .../framework/img/ressvgs/it-firewall-neteye.svg | 120 + .../framework/img/ressvgs/it-firewall-zte.svg | 127 + .../framework/img/ressvgs/it-firewall-ztemf.svg | 127 + .../framework/img/ressvgs/it-firewall-zteutm.svg | 128 + .../webroot/framework/img/ressvgs/it-firewall.svg | 102 + .../webroot/framework/img/ressvgs/it-gather.svg | 295 + .../webroot/framework/img/ressvgs/it-group-dev.svg | 121 + .../framework/img/ressvgs/it-ibp-ibp2000.svg | 133 + .../webroot/framework/img/ressvgs/it-ibp.svg | 128 + .../webroot/framework/img/ressvgs/it-net.svg | 105 + .../framework/img/ressvgs/it-other-alteon.svg | 19 + .../framework/img/ressvgs/it-other-appdirector.svg | 25 + .../framework/img/ressvgs/it-other-atca-lb10.svg | 121 + .../framework/img/ressvgs/it-other-cisco-ucs.svg | 121 + .../webroot/framework/img/ressvgs/it-other-dcs.svg | 137 + .../framework/img/ressvgs/it-other-delta.svg | 129 + .../webroot/framework/img/ressvgs/it-other-dp.svg | 20 + .../framework/img/ressvgs/it-other-f5bigip.svg | 145 + .../framework/img/ressvgs/it-other-f5bigip2.svg | 161 + .../framework/img/ressvgs/it-other-gbe2c.svg | 166 + .../framework/img/ressvgs/it-other-hpblc.svg | 174 + .../framework/img/ressvgs/it-other-ibm-blade.svg | 156 + .../webroot/framework/img/ressvgs/it-other-imm.svg | 160 + .../framework/img/ressvgs/it-other-secfox.svg | 20 + .../framework/img/ressvgs/it-other-secsis.svg | 30 + .../framework/img/ressvgs/it-other-segw.svg | 153 + .../webroot/framework/img/ressvgs/it-other-vc.svg | 173 + .../framework/img/ressvgs/it-other-zteatca.svg | 191 + .../framework/img/ressvgs/it-other-zteips.svg | 53 + .../framework/img/ressvgs/it-other-ztepower.svg | 223 + .../framework/img/ressvgs/it-other-ztesgs.svg | 54 + .../framework/img/ressvgs/it-other-zxsdr-nt.svg | 186 + .../webroot/framework/img/ressvgs/it-other.svg | 110 + .../framework/img/ressvgs/it-router-cisco.svg | 186 + .../framework/img/ressvgs/it-router-juniper.svg | 170 + .../framework/img/ressvgs/it-router-zte.svg | 178 + .../webroot/framework/img/ressvgs/it-router.svg | 175 + .../framework/img/ressvgs/it-sdn-controller.svg | 176 + .../webroot/framework/img/ressvgs/it-sdn-host.svg | 167 + .../framework/img/ressvgs/it-sdn-switch.svg | 167 + .../webroot/framework/img/ressvgs/it-sdn-vnet.svg | 167 + .../framework/img/ressvgs/it-server-aix.svg | 170 + .../framework/img/ressvgs/it-server-hpux.svg | 181 + .../framework/img/ressvgs/it-server-klinux.svg | 191 + .../framework/img/ressvgs/it-server-redhat.svg | 171 + .../framework/img/ressvgs/it-server-solaris.svg | 173 + .../framework/img/ressvgs/it-server-suse.svg | 185 + .../framework/img/ressvgs/it-server-windows.svg | 176 + .../framework/img/ressvgs/it-server-zxve.svg | 179 + .../webroot/framework/img/ressvgs/it-server.svg | 195 + .../framework/img/ressvgs/it-storage-cisco-mds.svg | 177 + .../framework/img/ressvgs/it-storage-md3000.svg | 168 + .../framework/img/ressvgs/it-storage-netvault.svg | 186 + .../framework/img/ressvgs/it-storage-ops.svg | 186 + .../img/ressvgs/it-storage-sanswitch-brocade.svg | 187 + .../img/ressvgs/it-storage-sanswitch-hp.svg | 187 + .../img/ressvgs/it-storage-sanswitch-zte.svg | 13 + .../webroot/framework/img/ressvgs/it-storage.svg | 183 + .../webroot/framework/img/ressvgs/it-switch-at.svg | 201 + .../framework/img/ressvgs/it-switch-cisco.svg | 176 + .../framework/img/ressvgs/it-switch-h3c.svg | 31 + .../framework/img/ressvgs/it-switch-juniper.svg | 176 + .../framework/img/ressvgs/it-switch-zte.svg | 177 + .../webroot/framework/img/ressvgs/it-switch.svg | 182 + .../framework/img/ressvgs/it-tapelib-hpmsl.svg | 176 + .../framework/img/ressvgs/it-tapelib-ibmts.svg | 183 + .../framework/img/ressvgs/it-tapelib-sunts.svg | 196 + .../resources/webroot/framework/img/ressvgs/it.svg | 111 + .../webroot/framework/img/ressvgs/networkTree.svg | 349 + .../webroot/framework/img/ressvgs/new.svg | 7 + .../framework/img/ressvgs/popupmenufollower.svg | 15 + .../webroot/framework/img/ressvgs/resourceType.svg | 211 + .../webroot/framework/img/ressvgs/stop.svg | 18 + .../webroot/framework/img/ressvgs/tree-icon.svg | 291 + .../webroot/framework/img/ressvgs/uep-moc-root.svg | 355 + .../framework/img/ressvgs/uep-moc-uca-public.svg | 329 + .../img/ressvgs/uep-topo-commongroup20x20.svg | 278 + .../framework/img/ressvgs/uep-topo-group20x20.svg | 277 + .../framework/img/ressvgs/uep-topo-root.svg | 259 + .../img/ressvgs/uep-topo-undefinedgroup20x20.svg | 342 + .../img/ressvgs/uep-topo-virtual20x20.svg | 355 + .../img/ressvgs/uep-topo-wsf-disconnected8x8.svg | 37 + .../framework/img/ressvgs/usf-amf-try-activate.svg | 44 + .../img/ressvgs/usf-amf-try-active-wait.svg | 40 + .../webroot/framework/img/search-icon-blue.png | Bin 0 -> 318 bytes .../webroot/framework/img/search-icon-brown.png | Bin 0 -> 357 bytes .../webroot/framework/img/search-icon-purple.png | Bin 0 -> 318 bytes .../webroot/framework/img/search-icon-red.png | Bin 0 -> 318 bytes .../webroot/framework/img/search-icon-white.png | Bin 0 -> 317 bytes .../webroot/framework/img/search-icon.png | Bin 0 -> 1132 bytes .../webroot/framework/img/select-caret.png | Bin 0 -> 1027 bytes .../framework/img/sidebar-menu-arrow-right.png | Bin 0 -> 247 bytes .../framework/img/sidebar-menu-arrow-rtl.png | Bin 0 -> 247 bytes .../webroot/framework/img/sidebar-menu-arrow.png | Bin 0 -> 3007 bytes .../framework/img/sidebar-search-close-blue.png | Bin 0 -> 163 bytes .../framework/img/sidebar-search-close-brown.png | Bin 0 -> 163 bytes .../framework/img/sidebar-search-close-light.png | Bin 0 -> 162 bytes .../framework/img/sidebar-search-close-purple.png | Bin 0 -> 163 bytes .../webroot/framework/img/sidebar-search-close.png | Bin 0 -> 163 bytes .../webroot/framework/img/sidebar-toggler-grey.jpg | Bin 0 -> 14801 bytes .../framework/img/sidebar-toggler-light.jpg | Bin 0 -> 538 bytes .../webroot/framework/img/source/logo.png | Bin 0 -> 16838 bytes .../webroot/framework/img/source/logo_white.png | Bin 0 -> 13710 bytes .../webroot/framework/img/source/netnumenLogo.png | Bin 0 -> 5379 bytes .../webroot/framework/img/source/zte_bg_1.jpg | Bin 0 -> 143465 bytes .../webroot/framework/img/source/zte_bg_2.jpg | Bin 0 -> 152396 bytes .../webroot/framework/img/source/zte_bg_3.jpg | Bin 0 -> 155899 bytes .../framework/img/source/zte_logo_ white.png | Bin 0 -> 16838 bytes .../webroot/framework/img/source/zte_logo_16.gif | Bin 0 -> 583 bytes .../framework/img/source/zte_logo_white.png | Bin 0 -> 16838 bytes .../webroot/framework/img/source/ztelogo.png | Bin 0 -> 2790 bytes .../framework/img/syncfusion-icons-white.png | Bin 0 -> 5550 bytes .../main/resources/webroot/framework/img/user.png | Bin 0 -> 3100 bytes .../main/resources/webroot/framework/index.html | 25 + .../webroot/framework/js/Main2moreMenu.js | 17 + .../webroot/framework/js/core/ZteFrameWork.js | 3997 ++ .../webroot/framework/js/core/ZteFrameWork.min.js | 150 + .../resources/webroot/framework/js/core/const.js | 56 + .../resources/webroot/framework/js/core/hk.min.js | 806 + .../resources/webroot/framework/js/core/pym.min.js | 2 + .../resources/webroot/framework/js/fm_light.js | 169 + .../framework/js/international/loadi18n-login.js | 53 + .../webroot/framework/js/international/loadi18n.js | 110 + .../js/international/loadi18nApp_universal.js | 24 + .../main/resources/webroot/framework/js/json2.js | 501 + .../main/resources/webroot/framework/js/login.js | 225 + .../webroot/framework/js/mainpage/about.js | 142 + .../webroot/framework/js/mainpage/ict.main.page.js | 142 + .../webroot/framework/js/moreOperation.js | 151 + .../resources/webroot/framework/js/security/aes.js | 50 + .../webroot/framework/js/security/changepwd.js | 191 + .../framework/js/security/framework-util.js | 38 + .../webroot/framework/js/security/security.js | 127 + .../main/resources/webroot/framework/js/tools.js | 1039 + .../webroot/framework/json/main-page.json | 103 + .../main/resources/webroot/framework/login.html | 198 + .../resources/webroot/framework/main-page.html | 102 + .../webroot/framework/menus/main_Fmegabar.html | 17 + .../webroot/framework/menus/main_Fsiderbar.html | 17 + .../webroot/framework/menus/main_siderbar.html | 17 + .../resources/webroot/framework/menus/readme.txt | 17 + .../webroot/vendor/animate/animate.min.css | 6 + .../main/resources/webroot/vendor/avalon/avalon.js | 5819 ++ .../webroot/vendor/avalon/avalon.modern.js | 4440 ++ .../daterangepicker-bs3.css | 319 + .../bootstrap-daterangepicker/daterangepicker.js | 1257 + .../vendor/bootstrap-daterangepicker/moment.js | 2808 + .../vendor/bootstrap-daterangepicker/moment.min.js | 6 + .../bootstrap-fileinput/css/fileinput.min.css | 11 + .../vendor/bootstrap-fileinput/img/loading-sm.gif | Bin 0 -> 2670 bytes .../vendor/bootstrap-fileinput/img/loading.gif | Bin 0 -> 847 bytes .../vendor/bootstrap-fileinput/js/fileinput.min.js | 19 + .../js/fileinput_locale_LANG.js | 45 + .../bootstrap-fileinput/js/fileinput_locale_zh.js | 49 + .../vendor/bootstrap-growl/bootstrap-growl.min.js | 2 + .../css/bootstrap-modal-bs3patch.css | 51 + .../vendor/bootstrap-modal/css/bootstrap-modal.css | 214 + .../vendor/bootstrap-modal/img/ajax-loader.gif | Bin 0 -> 1737 bytes .../vendor/bootstrap-modal/js/bootstrap-modal.js | 378 + .../bootstrap-modal/js/bootstrap-modalmanager.js | 423 + .../bootstrap-select/bootstrap-select.min.css | 7 + .../bootstrap-select/bootstrap-select.min.js | 8 + .../bootstrap-validation/jqBootstrapValidation.js | 912 + .../jquery.bootstrap.wizard.min.js | 20 + .../main/resources/webroot/vendor/cometd/cometd.js | 3045 ++ .../webroot/vendor/cometd/jquery.cometd.js | 139 + .../webroot/vendor/data-tables/DT_bootstrap.css | 240 + .../webroot/vendor/data-tables/DT_bootstrap.js | 363 + .../webroot/vendor/data-tables/DataTableICT.js | 1459 + .../vendor/data-tables/DataTableSmartClient.js | 1215 + .../vendor/data-tables/DataTableSmartClientApp.js | 1312 + .../data-tables/app-test-i18n-datatable-zh-CN.json | 51 + .../app-universal-i18n-datatable-en-US.json | 89 + .../app-universal-i18n-datatable-zh-CN.json | 90 + .../webroot/vendor/data-tables/dataTable.html | 155 + .../data-tables/images/loading-spinner-grey.gif | Bin 0 -> 5203 bytes .../webroot/vendor/data-tables/images/sort_asc.png | Bin 0 -> 1118 bytes .../vendor/data-tables/images/sort_both.png | Bin 0 -> 1136 bytes .../vendor/data-tables/images/sort_desc.png | Bin 0 -> 1127 bytes .../vendor/data-tables/jquery.dataTables.js | 15268 ++++++ .../vendor/data-tables/jquery.dataTables.min.js | 166 + .../webroot/vendor/data-tables/style-datatable.css | 154 + .../src/main/resources/webroot/vendor/delete.me | 0 .../webroot/vendor/echarts/echarts-all.js | 50 + .../resources/webroot/vendor/icheck/CHANGELOG.md | 51 + .../main/resources/webroot/vendor/icheck/README.md | 424 + .../resources/webroot/vendor/icheck/bower.json | 42 + .../webroot/vendor/icheck/demo/css/Thumbs.db | Bin 0 -> 5120 bytes .../webroot/vendor/icheck/demo/css/banner.jpg | Bin 0 -> 32768 bytes .../webroot/vendor/icheck/demo/css/custom.css | 261 + .../webroot/vendor/icheck/demo/css/custom.styl | 1191 + .../webroot/vendor/icheck/demo/css/icheck.png | Bin 0 -> 2382 bytes .../vendor/icheck/demo/css/ie/arrow-bottom.png | Bin 0 -> 184 bytes .../vendor/icheck/demo/css/ie/arrow-top.png | Bin 0 -> 175 bytes .../vendor/icheck/demo/css/ie/header-line.png | Bin 0 -> 611 bytes .../vendor/icheck/demo/css/ie/icon-fork.png | Bin 0 -> 213 bytes .../vendor/icheck/demo/css/ie/icon-github.png | Bin 0 -> 634 bytes .../webroot/vendor/icheck/demo/css/ie/icon-lab.png | Bin 0 -> 683 bytes .../vendor/icheck/demo/css/ie/icon-options.png | Bin 0 -> 666 bytes .../vendor/icheck/demo/css/ie/icon-star.png | Bin 0 -> 348 bytes .../vendor/icheck/demo/css/montserrat-bold.eot | Bin 0 -> 13099 bytes .../vendor/icheck/demo/css/montserrat-bold.svg | 1490 + .../vendor/icheck/demo/css/montserrat-bold.ttf | Bin 0 -> 32768 bytes .../vendor/icheck/demo/css/montserrat-bold.woff | Bin 0 -> 15736 bytes .../vendor/icheck/demo/css/montserrat-regular.eot | Bin 0 -> 13114 bytes .../vendor/icheck/demo/css/montserrat-regular.svg | 1365 + .../vendor/icheck/demo/css/montserrat-regular.ttf | Bin 0 -> 32768 bytes .../vendor/icheck/demo/css/montserrat-regular.woff | Bin 0 -> 15692 bytes .../webroot/vendor/icheck/demo/css/normalize.css | 527 + .../webroot/vendor/icheck/demo/index.html | 1544 + .../webroot/vendor/icheck/demo/js/custom.js | 109 + .../webroot/vendor/icheck/demo/js/custom.min.js | 5 + .../webroot/vendor/icheck/demo/js/jquery.js | 4 + .../webroot/vendor/icheck/demo/js/zepto.js | 41 + .../webroot/vendor/icheck/icheck.jquery.json | 48 + .../main/resources/webroot/vendor/icheck/icheck.js | 509 + .../resources/webroot/vendor/icheck/icheck.min.js | 11 + .../resources/webroot/vendor/icheck/skins/all.css | 61 + .../webroot/vendor/icheck/skins/flat/_all.css | 530 + .../webroot/vendor/icheck/skins/flat/aero.css | 53 + .../webroot/vendor/icheck/skins/flat/aero.png | Bin 0 -> 1520 bytes .../webroot/vendor/icheck/skins/flat/aero@2x.png | Bin 0 -> 3218 bytes .../webroot/vendor/icheck/skins/flat/blue.css | 53 + .../webroot/vendor/icheck/skins/flat/blue.png | Bin 0 -> 1518 bytes .../webroot/vendor/icheck/skins/flat/blue@2x.png | Bin 0 -> 3217 bytes .../webroot/vendor/icheck/skins/flat/flat.css | 53 + .../webroot/vendor/icheck/skins/flat/flat.png | Bin 0 -> 1515 bytes .../webroot/vendor/icheck/skins/flat/flat@2x.png | Bin 0 -> 3217 bytes .../webroot/vendor/icheck/skins/flat/green.css | 53 + .../webroot/vendor/icheck/skins/flat/green.png | Bin 0 -> 1444 bytes .../webroot/vendor/icheck/skins/flat/green@2x.png | Bin 0 -> 3117 bytes .../webroot/vendor/icheck/skins/flat/grey.css | 53 + .../webroot/vendor/icheck/skins/flat/grey.png | Bin 0 -> 1516 bytes .../webroot/vendor/icheck/skins/flat/grey@2x.png | Bin 0 -> 3217 bytes .../webroot/vendor/icheck/skins/flat/orange.css | 53 + .../webroot/vendor/icheck/skins/flat/orange.png | Bin 0 -> 1518 bytes .../webroot/vendor/icheck/skins/flat/orange@2x.png | Bin 0 -> 3275 bytes .../webroot/vendor/icheck/skins/flat/pink.css | 53 + .../webroot/vendor/icheck/skins/flat/pink.png | Bin 0 -> 1522 bytes .../webroot/vendor/icheck/skins/flat/pink@2x.png | Bin 0 -> 3218 bytes .../webroot/vendor/icheck/skins/flat/purple.css | 53 + .../webroot/vendor/icheck/skins/flat/purple.png | Bin 0 -> 1519 bytes .../webroot/vendor/icheck/skins/flat/purple@2x.png | Bin 0 -> 3218 bytes .../webroot/vendor/icheck/skins/flat/red.css | 53 + .../webroot/vendor/icheck/skins/flat/red.png | Bin 0 -> 1516 bytes .../webroot/vendor/icheck/skins/flat/red@2x.png | Bin 0 -> 3276 bytes .../webroot/vendor/icheck/skins/flat/yellow.css | 53 + .../webroot/vendor/icheck/skins/flat/yellow.png | Bin 0 -> 1516 bytes .../webroot/vendor/icheck/skins/flat/yellow@2x.png | Bin 0 -> 3216 bytes .../vendor/icheck/skins/futurico/futurico.css | 53 + .../vendor/icheck/skins/futurico/futurico.png | Bin 0 -> 1734 bytes .../vendor/icheck/skins/futurico/futurico@2x.png | Bin 0 -> 3446 bytes .../webroot/vendor/icheck/skins/line/Thumbs.db | Bin 0 -> 4608 bytes .../webroot/vendor/icheck/skins/line/_all.css | 710 + .../webroot/vendor/icheck/skins/line/aero.css | 71 + .../webroot/vendor/icheck/skins/line/blue.css | 71 + .../webroot/vendor/icheck/skins/line/green.css | 71 + .../webroot/vendor/icheck/skins/line/grey.css | 71 + .../webroot/vendor/icheck/skins/line/line.css | 71 + .../webroot/vendor/icheck/skins/line/line.png | Bin 0 -> 588 bytes .../webroot/vendor/icheck/skins/line/line@2x.png | Bin 0 -> 1073 bytes .../webroot/vendor/icheck/skins/line/orange.css | 71 + .../webroot/vendor/icheck/skins/line/pink.css | 71 + .../webroot/vendor/icheck/skins/line/purple.css | 71 + .../webroot/vendor/icheck/skins/line/red.css | 71 + .../webroot/vendor/icheck/skins/line/yellow.css | 71 + .../webroot/vendor/icheck/skins/minimal/_all.css | 590 + .../webroot/vendor/icheck/skins/minimal/aero.css | 59 + .../webroot/vendor/icheck/skins/minimal/aero.png | Bin 0 -> 1151 bytes .../vendor/icheck/skins/minimal/aero@2x.png | Bin 0 -> 1409 bytes .../webroot/vendor/icheck/skins/minimal/blue.css | 59 + .../webroot/vendor/icheck/skins/minimal/blue.png | Bin 0 -> 1132 bytes .../vendor/icheck/skins/minimal/blue@2x.png | Bin 0 -> 1410 bytes .../webroot/vendor/icheck/skins/minimal/green.css | 59 + .../webroot/vendor/icheck/skins/minimal/green.png | Bin 0 -> 1143 bytes .../vendor/icheck/skins/minimal/green@2x.png | Bin 0 -> 1408 bytes .../webroot/vendor/icheck/skins/minimal/grey.css | 59 + .../webroot/vendor/icheck/skins/minimal/grey.png | Bin 0 -> 1142 bytes .../vendor/icheck/skins/minimal/grey@2x.png | Bin 0 -> 1407 bytes .../vendor/icheck/skins/minimal/minimal.css | 59 + .../vendor/icheck/skins/minimal/minimal.png | Bin 0 -> 1114 bytes .../vendor/icheck/skins/minimal/minimal@2x.png | Bin 0 -> 1410 bytes .../webroot/vendor/icheck/skins/minimal/orange.css | 59 + .../webroot/vendor/icheck/skins/minimal/orange.png | Bin 0 -> 1139 bytes .../vendor/icheck/skins/minimal/orange@2x.png | Bin 0 -> 1407 bytes .../webroot/vendor/icheck/skins/minimal/pink.css | 59 + .../webroot/vendor/icheck/skins/minimal/pink.png | Bin 0 -> 1150 bytes .../vendor/icheck/skins/minimal/pink@2x.png | Bin 0 -> 1409 bytes .../webroot/vendor/icheck/skins/minimal/purple.css | 59 + .../webroot/vendor/icheck/skins/minimal/purple.png | Bin 0 -> 1132 bytes .../vendor/icheck/skins/minimal/purple@2x.png | Bin 0 -> 1409 bytes .../webroot/vendor/icheck/skins/minimal/red.css | 59 + .../webroot/vendor/icheck/skins/minimal/red.png | Bin 0 -> 1130 bytes .../webroot/vendor/icheck/skins/minimal/red@2x.png | Bin 0 -> 1410 bytes .../webroot/vendor/icheck/skins/minimal/yellow.css | 59 + .../webroot/vendor/icheck/skins/minimal/yellow.png | Bin 0 -> 1135 bytes .../vendor/icheck/skins/minimal/yellow@2x.png | Bin 0 -> 1406 bytes .../vendor/icheck/skins/polaris/polaris.css | 59 + .../vendor/icheck/skins/polaris/polaris.png | Bin 0 -> 6401 bytes .../vendor/icheck/skins/polaris/polaris@2x.png | Bin 0 -> 32768 bytes .../webroot/vendor/icheck/skins/square/Thumbs.db | Bin 0 -> 32768 bytes .../webroot/vendor/icheck/skins/square/_all.css | 590 + .../webroot/vendor/icheck/skins/square/aero.css | 59 + .../webroot/vendor/icheck/skins/square/aero.png | Bin 0 -> 4436 bytes .../webroot/vendor/icheck/skins/square/aero@2x.png | Bin 0 -> 4455 bytes .../webroot/vendor/icheck/skins/square/blue.css | 59 + .../webroot/vendor/icheck/skins/square/blue.png | Bin 0 -> 2185 bytes .../webroot/vendor/icheck/skins/square/blue@2x.png | Bin 0 -> 4485 bytes .../webroot/vendor/icheck/skins/square/green.css | 59 + .../webroot/vendor/icheck/skins/square/green.png | Bin 0 -> 2193 bytes .../vendor/icheck/skins/square/green@2x.png | Bin 0 -> 4498 bytes .../webroot/vendor/icheck/skins/square/grey.css | 59 + .../webroot/vendor/icheck/skins/square/grey.png | Bin 0 -> 2186 bytes .../webroot/vendor/icheck/skins/square/grey@2x.png | Bin 0 -> 4483 bytes .../webroot/vendor/icheck/skins/square/orange.css | 59 + .../webroot/vendor/icheck/skins/square/orange.png | Bin 0 -> 2181 bytes .../vendor/icheck/skins/square/orange@2x.png | Bin 0 -> 4474 bytes .../webroot/vendor/icheck/skins/square/pink.css | 59 + .../webroot/vendor/icheck/skins/square/pink.png | Bin 0 -> 2189 bytes .../webroot/vendor/icheck/skins/square/pink@2x.png | Bin 0 -> 4479 bytes .../webroot/vendor/icheck/skins/square/purple.css | 59 + .../webroot/vendor/icheck/skins/square/purple.png | Bin 0 -> 2188 bytes .../vendor/icheck/skins/square/purple@2x.png | Bin 0 -> 4501 bytes .../webroot/vendor/icheck/skins/square/red.css | 59 + .../webroot/vendor/icheck/skins/square/red.png | Bin 0 -> 2190 bytes .../webroot/vendor/icheck/skins/square/red@2x.png | Bin 0 -> 4490 bytes .../webroot/vendor/icheck/skins/square/square.css | 59 + .../webroot/vendor/icheck/skins/square/square.png | Bin 0 -> 2175 bytes .../vendor/icheck/skins/square/square@2x.png | Bin 0 -> 4478 bytes .../webroot/vendor/icheck/skins/square/yellow.css | 59 + .../webroot/vendor/icheck/skins/square/yellow.png | Bin 0 -> 2131 bytes .../vendor/icheck/skins/square/yellow@2x.png | Bin 0 -> 4385 bytes .../ict/dashboard-jq/DashboardConfig-jq.json | 33 + .../vendor/ict/dashboard-jq/DashboardICT-jq.js | 246 + .../vendor/ict/dashboard-jq/DashboardICT.css | 203 + .../vendor/ict/dashboard-jq/assets/css/c3.css | 241 + .../vendor/ict/dashboard-jq/assets/css/c3.min.css | 175 + .../ict/dashboard-jq/assets/css/components.css | 14133 +++++ .../vendor/ict/dashboard-jq/assets/css/facebox.css | 83 + .../assets/css/ict-chart-dashboard.css | 143 + .../ict/dashboard-jq/assets/css/transition.css | 63 + .../ict/dashboard-jq/assets/js/c3-angular.js | 544 + .../ict/dashboard-jq/assets/js/c3-angular.min.js | 206 + .../dashboard-jq/assets/js/c3-angular.min.js.map | 157 + .../vendor/ict/dashboard-jq/assets/js/c3.js | 7473 +++ .../vendor/ict/dashboard-jq/assets/js/c3.min.js | 2665 + .../vendor/ict/dashboard-jq/assets/js/d3.min.js | 6152 +++ .../vendor/ict/dashboard-jq/assets/js/facebox.js | 382 + .../dashboard-jq/assets/js/portlet-draggable-jq.js | 65 + .../vendor/ict/dashboard-jq/demo/c3Chart.js | 59 + .../ict/dashboard-jq/demo/demo-barchart-c3.js | 29 + .../ict/dashboard-jq/demo/demo-linechart-c3.js | 41 + .../ict/dashboard-jq/demo/ict-barchart-c3.js | 67 + .../ict/dashboard-jq/demo/ict-linechart-c3.js | 81 + .../vendor/ict/dashboard-jq/demo/index3.html | 143 + .../images/CPU\347\273\237\350\256\241.png" | Bin 0 -> 8273 bytes .../vendor/ict/dashboard-jq/images/Thumbs.db | Bin 0 -> 25600 bytes .../vendor/ict/dashboard-jq/images/closelabel.png | Bin 0 -> 168 bytes .../vendor/ict/dashboard-jq/images/delete.png | Bin 0 -> 3029 bytes .../vendor/ict/dashboard-jq/images/loading.gif | Bin 0 -> 2767 bytes .../vendor/ict/dashboard-jq/images/open.png | Bin 0 -> 3692 bytes .../vendor/ict/dashboard-jq/images/remove.png | Bin 0 -> 3391 bytes .../vendor/ict/dashboard-jq/images/remove_red.png | Bin 0 -> 3405 bytes .../vendor/ict/dashboard-jq/images/shrink.png | Bin 0 -> 3602 bytes ...21\212\350\255\246\347\273\237\350\256\241.png" | Bin 0 -> 9662 bytes ...0\247\350\203\275\347\273\237\350\256\241A.png" | Bin 0 -> 5805 bytes ...0\247\350\203\275\347\273\237\350\256\241B.png" | Bin 0 -> 4343 bytes ...0\247\350\203\275\347\273\237\350\256\241C.png" | Bin 0 -> 9994 bytes ...27\245\345\277\227\347\273\237\350\256\241.png" | Bin 0 -> 5935 bytes .../vendor/ict/ict-chart/demo/demo-barchart-c3.js | 34 + .../vendor/ict/ict-chart/demo/demo-linechart-c3.js | 40 + .../vendor/ict/ict-chart/ict-barchart-c3.js | 68 + .../vendor/ict/ict-chart/ict-linechart-c3.js | 98 + .../ict/ict-dashboard/DashboardConfig-jq.json | 86 + .../ict/ict-dashboard/DashboardConfig-jq.json.sdn | 36 + .../vendor/ict/ict-dashboard/DashboardConfig.json | 83 + .../vendor/ict/ict-dashboard/DashboardICT.js | 291 + .../vendor/ict/ict-dashboard/assets/css/c3.css | 257 + .../vendor/ict/ict-dashboard/assets/css/c3.min.css | 175 + .../ict/ict-dashboard/assets/css/components.css | 14135 +++++ .../ict/ict-dashboard/assets/css/facebox.css | 83 + .../assets/css/ict-chart-dashboard.css | 155 + .../ict/ict-dashboard/assets/css/transition.css | 64 + .../ict/ict-dashboard/assets/js/angular.min.js | 6194 +++ .../ict/ict-dashboard/assets/js/angular.min.js.map | 2369 + .../ict/ict-dashboard/assets/js/c3-angular.js | 544 + .../ict/ict-dashboard/assets/js/c3-angular.min.js | 206 + .../ict-dashboard/assets/js/c3-angular.min.js.map | 157 + .../vendor/ict/ict-dashboard/assets/js/c3.js | 7473 +++ .../vendor/ict/ict-dashboard/assets/js/c3.min.js | 2665 + .../vendor/ict/ict-dashboard/assets/js/d3.min.js | 6152 +++ .../vendor/ict/ict-dashboard/assets/js/facebox.js | 388 + .../assets/js/portlet-draggable-jq.js | 66 + .../vendor/ict/ict-dashboard/demo/c3Chart.js | 59 + .../ict/ict-dashboard/demo/demo-barchart-c3.js | 29 + .../ict/ict-dashboard/demo/demo-linechart-c3.js | 41 + .../ict/ict-dashboard/demo/ict-barchart-c3.js | 67 + .../ict/ict-dashboard/demo/ict-linechart-c3.js | 81 + .../vendor/ict/ict-dashboard/demo/index3.html | 142 + .../vendor/ict/ict-dashboard/ict.dashboard.css | 293 + .../vendor/ict/ict-dashboard/ict.dashboard.js | 435 + .../vendor/ict/ict-dashboard/ict.dashboard.js.bak | 413 + .../images/CPU\347\273\237\350\256\241.png" | Bin 0 -> 8273 bytes .../vendor/ict/ict-dashboard/images/Thumbs.db | Bin 0 -> 27136 bytes .../vendor/ict/ict-dashboard/images/alarm.png | Bin 0 -> 4152 bytes .../vendor/ict/ict-dashboard/images/bar.svg | 27 + .../vendor/ict/ict-dashboard/images/closelabel.png | Bin 0 -> 168 bytes .../vendor/ict/ict-dashboard/images/cpu.png | Bin 0 -> 7559 bytes .../vendor/ict/ict-dashboard/images/delete.png | Bin 0 -> 3029 bytes .../vendor/ict/ict-dashboard/images/gauge.svg | 15 + .../vendor/ict/ict-dashboard/images/line.svg | 36 + .../vendor/ict/ict-dashboard/images/lineBar.svg | 37 + .../vendor/ict/ict-dashboard/images/loading.gif | Bin 0 -> 2767 bytes .../vendor/ict/ict-dashboard/images/map.svg | 53 + .../vendor/ict/ict-dashboard/images/open.png | Bin 0 -> 3535 bytes .../vendor/ict/ict-dashboard/images/pie.svg | 14 + .../vendor/ict/ict-dashboard/images/remove.png | Bin 0 -> 3216 bytes .../vendor/ict/ict-dashboard/images/remove_red.png | Bin 0 -> 3214 bytes .../vendor/ict/ict-dashboard/images/shrink.png | Bin 0 -> 3347 bytes .../vendor/ict/ict-dashboard/images/stacked.svg | 12 + .../vendor/ict/ict-dashboard/images/zoom.png | Bin 0 -> 3100 bytes ...21\212\350\255\246\347\273\237\350\256\241.png" | Bin 0 -> 9662 bytes ...0\247\350\203\275\347\273\237\350\256\241A.png" | Bin 0 -> 5805 bytes ...0\247\350\203\275\347\273\237\350\256\241B.png" | Bin 0 -> 4343 bytes ...0\247\350\203\275\347\273\237\350\256\241C.png" | Bin 0 -> 9994 bytes ...27\245\345\277\227\347\273\237\350\256\241.png" | Bin 0 -> 5935 bytes .../webroot/vendor/ict/ict-dashboard/index4.html | 99 + .../webroot/vendor/ict/ict-dashboard/js/avalon.js | 5279 ++ .../webroot/vendor/ict/ict-dashboard/js/d3.js | 9925 ++++ .../webroot/vendor/ict/ict-dashboard/js/facebox.js | 380 + .../vendor/ict/ict-dashboard/js/freewall.js | 1317 + .../ict-serverpagetable/css/serverPageTable.css | 29 + .../ict-serverpagetable/images/details_close.png | Bin 0 -> 3300 bytes .../ict-serverpagetable/images/details_open.png | Bin 0 -> 3304 bytes .../vendor/ict/ict-serverpagetable/readme.txt | 70 + .../ict/ict-serverpagetable/serverPageTable.js | 217 + .../ict-serverpagetable/serverPageTable_demo.html | 51 + .../ict/ict-serverpagetable/serverpagetable.css | 70 + .../ict/ict-slider/bootstrap/css/bootstrap-dt.css | 7067 +++ .../ict/ict-slider/bootstrap/css/bootstrap.min.css | 6235 +++ .../ict/ict-slider/bootstrap/js/bootstrap.js | 1972 + .../ict/ict-slider/bootstrap/js/bootstrap.min.js | 619 + .../bootstrap/js/bootstrap2-typeahead.min.js | 145 + .../vendor/ict/ict-slider/css/jquery-ui.css | 1908 + .../ict/ict-slider/css/multi-handle-slider.css | 53 + .../webroot/vendor/ict/ict-slider/index.html | 67 + .../external/jquery/jquery.js | 9815 ++++ .../jquery-ui-1.11.4.custom/images/Thumbs.db | Bin 0 -> 8704 bytes .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 418 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 312 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 205 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 348 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 207 bytes .../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 5815 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 278 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 328 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6299 bytes .../ict-slider/jquery-ui-1.11.4.custom/index.html | 684 + .../jquery-ui-1.11.4.custom/jquery-ui.css | 1908 + .../jquery-ui-1.11.4.custom/jquery-ui.js | 16753 ++++++ .../jquery-ui-1.11.4.custom/jquery-ui.min.css | 1775 + .../jquery-ui-1.11.4.custom/jquery-ui.min.js | 5102 ++ .../jquery-ui.structure.css | 963 + .../jquery-ui.structure.min.css | 894 + .../jquery-ui-1.11.4.custom/jquery-ui.theme.css | 962 + .../jquery-ui.theme.min.css | 882 + .../vendor/ict/ict-slider/js/avalon.modern.js | 4481 ++ .../vendor/ict/ict-slider/js/jquery-1.10.2.min.js | 2640 + .../ict/ict-slider/js/multi-handle-slider.js | 64 + .../webroot/vendor/ict/ict-sunburst/demo.html | 17 + .../webroot/vendor/ict/ict-sunburst/skill.css | 74 + .../webroot/vendor/ict/ict-sunburst/skillsData.js | 38 + .../webroot/vendor/ict/ict-sunburst/sunburst.js | 321 + .../jquery.bootstrap.wizard.min.js | 152 + .../ict/ict-wizard/bootstrap/css/bootstrap-dt.css | 7067 +++ .../ict/ict-wizard/bootstrap/css/bootstrap.min.css | 6246 +++ .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../ict/ict-wizard/bootstrap/js/bootstrap.js | 1972 + .../ict/ict-wizard/bootstrap/js/bootstrap.min.js | 619 + .../bootstrap/js/bootstrap2-typeahead.min.js | 145 + .../webroot/vendor/ict/ict-wizard/ict-wizard.js | 129 + .../vendor/ict/ict-wizard/ict_wizard_view.html | 141 + .../ict/ict-wizard/jquery/jquery-1.10.2.min.js | 2640 + .../vendor/ict/ict-wizard/jquery/jquery-1.11.2.js | 10319 ++++ .../ict/ict-wizard/jquery/jquery-1.11.2.min.js | 2625 + .../ict/ict-wizard/jquery/jquery-1.11.2.min.map | 1209 + .../vendor/ict/ict-wizard/jquery/jquery-2.1.3.js | 9179 ++++ .../ict/ict-wizard/jquery/jquery-2.1.3.min.js | 2393 + .../ict/ict-wizard/jquery/jquery-2.1.3.min.map | 1130 + .../ict/ict-wizard/jquery/jquery-migrate-1.2.1.js | 526 + .../ict-wizard/jquery/jquery-migrate-1.2.1.min.js | 125 + .../vendor/ict/ict-wizard/ngict-component.css | 467 + .../webroot/vendor/ict/ict-wizard/plugins.css | 1532 + .../jQuery-File-Upload/css/jquery.fileupload.css | 37 + .../vendor/jQuery-File-Upload/img/loading.gif | Bin 0 -> 3897 bytes .../vendor/jQuery-File-Upload/img/progressbar.gif | Bin 0 -> 3323 bytes .../jQuery-File-Upload/js/jquery.fileupload.js | 1477 + .../js/jquery.iframe-transport.js | 217 + .../js/vendor/jquery.ui.widget.js | 572 + .../resources/webroot/vendor/ystep/css/ystep.css | 293 + .../main/resources/webroot/vendor/ystep/ystep.js | 682 + ...41\206\346\236\266\344\273\213\347\273\215.txt" | 6 + .../main/resources/webroot/vendor/zTree/README.md | 48 + .../resources/webroot/vendor/zTree/api/API_cn.html | 103 + .../resources/webroot/vendor/zTree/api/API_en.html | 102 + .../webroot/vendor/zTree/api/apiCss/api.js | 592 + .../webroot/vendor/zTree/api/apiCss/common.css | 219 + .../webroot/vendor/zTree/api/apiCss/common_ie6.css | 23 + .../vendor/zTree/api/apiCss/img/apiMenu.gif | Bin 0 -> 1736 bytes .../vendor/zTree/api/apiCss/img/apiMenu.png | Bin 0 -> 3954 bytes .../vendor/zTree/api/apiCss/img/background.jpg | Bin 0 -> 36520 bytes .../vendor/zTree/api/apiCss/img/chinese.png | Bin 0 -> 1556 bytes .../webroot/vendor/zTree/api/apiCss/img/close.png | Bin 0 -> 1908 bytes .../vendor/zTree/api/apiCss/img/contact-bg.png | Bin 0 -> 177 bytes .../vendor/zTree/api/apiCss/img/english.png | Bin 0 -> 1356 bytes .../vendor/zTree/api/apiCss/img/header-bg.png | Bin 0 -> 148 bytes .../vendor/zTree/api/apiCss/img/lightbulb.png | Bin 0 -> 27355 bytes .../vendor/zTree/api/apiCss/img/overlay_arrow.gif | Bin 0 -> 625 bytes .../vendor/zTree/api/apiCss/img/overlay_arrow.png | Bin 0 -> 830 bytes .../vendor/zTree/api/apiCss/img/overlay_bg.png | Bin 0 -> 109 bytes .../zTree/api/apiCss/img/overlay_close_IE6.gif | Bin 0 -> 441 bytes .../vendor/zTree/api/apiCss/img/zTreeStandard.gif | Bin 0 -> 6851 bytes .../vendor/zTree/api/apiCss/img/zTreeStandard.png | Bin 0 -> 12573 bytes .../vendor/zTree/api/apiCss/jquery-1.6.2.min.js | 18 + .../zTree/api/apiCss/jquery.ztree.core-3.5.js | 69 + .../vendor/zTree/api/apiCss/zTreeStyleForApi.css | 49 + .../webroot/vendor/zTree/api/cn/fn.zTree._z.html | 13 + .../vendor/zTree/api/cn/fn.zTree.destroy.html | 28 + .../vendor/zTree/api/cn/fn.zTree.getZTreeObj.html | 24 + .../webroot/vendor/zTree/api/cn/fn.zTree.init.html | 74 + .../zTree/api/cn/setting.async.autoParam.html | 39 + .../zTree/api/cn/setting.async.contentType.html | 29 + .../zTree/api/cn/setting.async.dataFilter.html | 45 + .../zTree/api/cn/setting.async.dataType.html | 29 + .../vendor/zTree/api/cn/setting.async.enable.html | 30 + .../zTree/api/cn/setting.async.otherParam.html | 40 + .../vendor/zTree/api/cn/setting.async.type.html | 30 + .../vendor/zTree/api/cn/setting.async.url.html | 50 + .../zTree/api/cn/setting.callback.beforeAsync.html | 35 + .../zTree/api/cn/setting.callback.beforeCheck.html | 34 + .../zTree/api/cn/setting.callback.beforeClick.html | 49 + .../api/cn/setting.callback.beforeCollapse.html | 34 + .../api/cn/setting.callback.beforeDblClick.html | 36 + .../zTree/api/cn/setting.callback.beforeDrag.html | 39 + .../api/cn/setting.callback.beforeDragOpen.html | 37 + .../zTree/api/cn/setting.callback.beforeDrop.html | 48 + .../api/cn/setting.callback.beforeEditName.html | 38 + .../api/cn/setting.callback.beforeExpand.html | 34 + .../api/cn/setting.callback.beforeMouseDown.html | 35 + .../api/cn/setting.callback.beforeMouseUp.html | 35 + .../api/cn/setting.callback.beforeRemove.html | 37 + .../api/cn/setting.callback.beforeRename.html | 46 + .../api/cn/setting.callback.beforeRightClick.html | 35 + .../api/cn/setting.callback.onAsyncError.html | 42 + .../api/cn/setting.callback.onAsyncSuccess.html | 38 + .../zTree/api/cn/setting.callback.onCheck.html | 34 + .../zTree/api/cn/setting.callback.onClick.html | 49 + .../zTree/api/cn/setting.callback.onCollapse.html | 34 + .../zTree/api/cn/setting.callback.onDblClick.html | 35 + .../zTree/api/cn/setting.callback.onDrag.html | 34 + .../zTree/api/cn/setting.callback.onDragMove.html | 34 + .../zTree/api/cn/setting.callback.onDrop.html | 46 + .../zTree/api/cn/setting.callback.onExpand.html | 34 + .../zTree/api/cn/setting.callback.onMouseDown.html | 35 + .../zTree/api/cn/setting.callback.onMouseUp.html | 35 + .../api/cn/setting.callback.onNodeCreated.html | 35 + .../zTree/api/cn/setting.callback.onRemove.html | 34 + .../zTree/api/cn/setting.callback.onRename.html | 40 + .../api/cn/setting.callback.onRightClick.html | 36 + .../api/cn/setting.check.autoCheckTrigger.html | 28 + .../api/cn/setting.check.chkDisabledInherit.html | 28 + .../zTree/api/cn/setting.check.chkStyle.html | 48 + .../zTree/api/cn/setting.check.chkboxType.html | 31 + .../vendor/zTree/api/cn/setting.check.enable.html | 25 + .../zTree/api/cn/setting.check.nocheckInherit.html | 28 + .../zTree/api/cn/setting.check.radioType.html | 29 + .../zTree/api/cn/setting.data.keep.leaf.html | 28 + .../zTree/api/cn/setting.data.keep.parent.html | 28 + .../zTree/api/cn/setting.data.key.checked.html | 24 + .../zTree/api/cn/setting.data.key.children.html | 23 + .../vendor/zTree/api/cn/setting.data.key.name.html | 23 + .../zTree/api/cn/setting.data.key.title.html | 24 + .../vendor/zTree/api/cn/setting.data.key.url.html | 24 + .../api/cn/setting.data.simpleData.enable.html | 38 + .../api/cn/setting.data.simpleData.idKey.html | 32 + .../api/cn/setting.data.simpleData.pIdKey.html | 32 + .../api/cn/setting.data.simpleData.rootPId.html | 32 + .../cn/setting.edit.drag.autoExpandTrigger.html | 28 + .../api/cn/setting.edit.drag.autoOpenTime.html | 25 + .../zTree/api/cn/setting.edit.drag.borderMax.html | 25 + .../zTree/api/cn/setting.edit.drag.borderMin.html | 25 + .../zTree/api/cn/setting.edit.drag.inner.html | 59 + .../zTree/api/cn/setting.edit.drag.isCopy.html | 32 + .../zTree/api/cn/setting.edit.drag.isMove.html | 32 + .../api/cn/setting.edit.drag.maxShowNodeNum.html | 25 + .../api/cn/setting.edit.drag.minMoveSize.html | 25 + .../zTree/api/cn/setting.edit.drag.next.html | 58 + .../zTree/api/cn/setting.edit.drag.prev.html | 58 + .../api/cn/setting.edit.editNameSelectAll.html | 27 + .../vendor/zTree/api/cn/setting.edit.enable.html | 38 + .../zTree/api/cn/setting.edit.removeTitle.html | 48 + .../zTree/api/cn/setting.edit.renameTitle.html | 48 + .../zTree/api/cn/setting.edit.showRemoveBtn.html | 49 + .../zTree/api/cn/setting.edit.showRenameBtn.html | 51 + .../vendor/zTree/api/cn/setting.treeId.html | 14 + .../vendor/zTree/api/cn/setting.treeObj.html | 14 + .../zTree/api/cn/setting.view.addDiyDom.html | 40 + .../zTree/api/cn/setting.view.addHoverDom.html | 45 + .../api/cn/setting.view.autoCancelSelected.html | 26 + .../zTree/api/cn/setting.view.dblClickExpand.html | 44 + .../zTree/api/cn/setting.view.expandSpeed.html | 31 + .../vendor/zTree/api/cn/setting.view.fontCss.html | 42 + .../zTree/api/cn/setting.view.nameIsHTML.html | 27 + .../zTree/api/cn/setting.view.removeHoverDom.html | 45 + .../zTree/api/cn/setting.view.selectedMulti.html | 27 + .../vendor/zTree/api/cn/setting.view.showIcon.html | 44 + .../vendor/zTree/api/cn/setting.view.showLine.html | 25 + .../zTree/api/cn/setting.view.showTitle.html | 46 + .../api/cn/setting.view.txtSelectedEnable.html | 25 + .../zTree/api/cn/treeNode.check_Child_State.html | 43 + .../vendor/zTree/api/cn/treeNode.check_Focus.html | 19 + .../vendor/zTree/api/cn/treeNode.checked.html | 32 + .../vendor/zTree/api/cn/treeNode.checkedOld.html | 25 + .../vendor/zTree/api/cn/treeNode.children.html | 35 + .../vendor/zTree/api/cn/treeNode.chkDisabled.html | 28 + .../vendor/zTree/api/cn/treeNode.click.html | 24 + .../webroot/vendor/zTree/api/cn/treeNode.diy.html | 15 + .../vendor/zTree/api/cn/treeNode.editNameFlag.html | 19 + .../zTree/api/cn/treeNode.getCheckStatus.html | 63 + .../vendor/zTree/api/cn/treeNode.getNextNode.html | 27 + .../zTree/api/cn/treeNode.getParentNode.html | 27 + .../vendor/zTree/api/cn/treeNode.getPreNode.html | 27 + .../vendor/zTree/api/cn/treeNode.halfCheck.html | 29 + .../webroot/vendor/zTree/api/cn/treeNode.icon.html | 33 + .../vendor/zTree/api/cn/treeNode.iconClose.html | 33 + .../vendor/zTree/api/cn/treeNode.iconOpen.html | 33 + .../vendor/zTree/api/cn/treeNode.iconSkin.html | 43 + .../vendor/zTree/api/cn/treeNode.isAjaxing.html | 26 + .../vendor/zTree/api/cn/treeNode.isFirstNode.html | 28 + .../vendor/zTree/api/cn/treeNode.isHidden.html | 27 + .../vendor/zTree/api/cn/treeNode.isHover.html | 19 + .../vendor/zTree/api/cn/treeNode.isLastNode.html | 28 + .../vendor/zTree/api/cn/treeNode.isParent.html | 28 + .../vendor/zTree/api/cn/treeNode.level.html | 25 + .../webroot/vendor/zTree/api/cn/treeNode.name.html | 25 + .../vendor/zTree/api/cn/treeNode.nocheck.html | 26 + .../webroot/vendor/zTree/api/cn/treeNode.open.html | 30 + .../vendor/zTree/api/cn/treeNode.parentTId.html | 27 + .../webroot/vendor/zTree/api/cn/treeNode.tId.html | 25 + .../vendor/zTree/api/cn/treeNode.target.html | 24 + .../webroot/vendor/zTree/api/cn/treeNode.url.html | 25 + .../vendor/zTree/api/cn/treeNode.zAsync.html | 28 + .../vendor/zTree/api/cn/zTreeObj.addNodes.html | 42 + .../zTree/api/cn/zTreeObj.cancelEditName.html | 30 + .../zTree/api/cn/zTreeObj.cancelSelectedNode.html | 35 + .../zTree/api/cn/zTreeObj.checkAllNodes.html | 29 + .../vendor/zTree/api/cn/zTreeObj.checkNode.html | 44 + .../vendor/zTree/api/cn/zTreeObj.copyNode.html | 44 + .../vendor/zTree/api/cn/zTreeObj.destroy.html | 25 + .../vendor/zTree/api/cn/zTreeObj.editName.html | 29 + .../vendor/zTree/api/cn/zTreeObj.expandAll.html | 30 + .../vendor/zTree/api/cn/zTreeObj.expandNode.html | 50 + .../api/cn/zTreeObj.getChangeCheckedNodes.html | 24 + .../zTree/api/cn/zTreeObj.getCheckedNodes.html | 28 + .../zTree/api/cn/zTreeObj.getNodeByParam.html | 32 + .../vendor/zTree/api/cn/zTreeObj.getNodeByTId.html | 27 + .../vendor/zTree/api/cn/zTreeObj.getNodeIndex.html | 30 + .../vendor/zTree/api/cn/zTreeObj.getNodes.html | 26 + .../zTree/api/cn/zTreeObj.getNodesByFilter.html | 43 + .../zTree/api/cn/zTreeObj.getNodesByParam.html | 31 + .../api/cn/zTreeObj.getNodesByParamFuzzy.html | 32 + .../zTree/api/cn/zTreeObj.getSelectedNodes.html | 23 + .../vendor/zTree/api/cn/zTreeObj.hideNode.html | 29 + .../vendor/zTree/api/cn/zTreeObj.hideNodes.html | 29 + .../vendor/zTree/api/cn/zTreeObj.moveNode.html | 46 + .../zTree/api/cn/zTreeObj.reAsyncChildNodes.html | 42 + .../vendor/zTree/api/cn/zTreeObj.refresh.html | 24 + .../zTree/api/cn/zTreeObj.removeChildNodes.html | 32 + .../vendor/zTree/api/cn/zTreeObj.removeNode.html | 34 + .../vendor/zTree/api/cn/zTreeObj.selectNode.html | 34 + .../zTree/api/cn/zTreeObj.setChkDisabled.html | 44 + .../vendor/zTree/api/cn/zTreeObj.setEditable.html | 27 + .../vendor/zTree/api/cn/zTreeObj.setting.html | 13 + .../vendor/zTree/api/cn/zTreeObj.showNode.html | 31 + .../vendor/zTree/api/cn/zTreeObj.showNodes.html | 29 + .../zTree/api/cn/zTreeObj.transformToArray.html | 25 + .../api/cn/zTreeObj.transformTozTreeNodes.html | 43 + .../vendor/zTree/api/cn/zTreeObj.updateNode.html | 37 + .../webroot/vendor/zTree/api/en/fn.zTree._z.html | 13 + .../vendor/zTree/api/en/fn.zTree.destroy.html | 28 + .../vendor/zTree/api/en/fn.zTree.getZTreeObj.html | 25 + .../webroot/vendor/zTree/api/en/fn.zTree.init.html | 75 + .../zTree/api/en/setting.async.autoParam.html | 39 + .../zTree/api/en/setting.async.contentType.html | 29 + .../zTree/api/en/setting.async.dataFilter.html | 45 + .../zTree/api/en/setting.async.dataType.html | 29 + .../vendor/zTree/api/en/setting.async.enable.html | 30 + .../zTree/api/en/setting.async.otherParam.html | 40 + .../vendor/zTree/api/en/setting.async.type.html | 30 + .../vendor/zTree/api/en/setting.async.url.html | 50 + .../zTree/api/en/setting.callback.beforeAsync.html | 35 + .../zTree/api/en/setting.callback.beforeCheck.html | 34 + .../zTree/api/en/setting.callback.beforeClick.html | 49 + .../api/en/setting.callback.beforeCollapse.html | 34 + .../api/en/setting.callback.beforeDblClick.html | 36 + .../zTree/api/en/setting.callback.beforeDrag.html | 39 + .../api/en/setting.callback.beforeDragOpen.html | 37 + .../zTree/api/en/setting.callback.beforeDrop.html | 50 + .../api/en/setting.callback.beforeEditName.html | 38 + .../api/en/setting.callback.beforeExpand.html | 34 + .../api/en/setting.callback.beforeMouseDown.html | 35 + .../api/en/setting.callback.beforeMouseUp.html | 35 + .../api/en/setting.callback.beforeRemove.html | 37 + .../api/en/setting.callback.beforeRename.html | 46 + .../api/en/setting.callback.beforeRightClick.html | 35 + .../api/en/setting.callback.onAsyncError.html | 42 + .../api/en/setting.callback.onAsyncSuccess.html | 38 + .../zTree/api/en/setting.callback.onCheck.html | 34 + .../zTree/api/en/setting.callback.onClick.html | 49 + .../zTree/api/en/setting.callback.onCollapse.html | 34 + .../zTree/api/en/setting.callback.onDblClick.html | 35 + .../zTree/api/en/setting.callback.onDrag.html | 34 + .../zTree/api/en/setting.callback.onDragMove.html | 34 + .../zTree/api/en/setting.callback.onDrop.html | 48 + .../zTree/api/en/setting.callback.onExpand.html | 34 + .../zTree/api/en/setting.callback.onMouseDown.html | 35 + .../zTree/api/en/setting.callback.onMouseUp.html | 35 + .../api/en/setting.callback.onNodeCreated.html | 35 + .../zTree/api/en/setting.callback.onRemove.html | 34 + .../zTree/api/en/setting.callback.onRename.html | 40 + .../api/en/setting.callback.onRightClick.html | 36 + .../api/en/setting.check.autoCheckTrigger.html | 29 + .../api/en/setting.check.chkDisabledInherit.html | 28 + .../zTree/api/en/setting.check.chkStyle.html | 48 + .../zTree/api/en/setting.check.chkboxType.html | 31 + .../vendor/zTree/api/en/setting.check.enable.html | 26 + .../zTree/api/en/setting.check.nocheckInherit.html | 28 + .../zTree/api/en/setting.check.radioType.html | 29 + .../zTree/api/en/setting.data.keep.leaf.html | 28 + .../zTree/api/en/setting.data.keep.parent.html | 28 + .../zTree/api/en/setting.data.key.checked.html | 24 + .../zTree/api/en/setting.data.key.children.html | 23 + .../vendor/zTree/api/en/setting.data.key.name.html | 23 + .../zTree/api/en/setting.data.key.title.html | 24 + .../vendor/zTree/api/en/setting.data.key.url.html | 24 + .../api/en/setting.data.simpleData.enable.html | 39 + .../api/en/setting.data.simpleData.idKey.html | 32 + .../api/en/setting.data.simpleData.pIdKey.html | 32 + .../api/en/setting.data.simpleData.rootPId.html | 32 + .../en/setting.edit.drag.autoExpandTrigger.html | 29 + .../api/en/setting.edit.drag.autoOpenTime.html | 25 + .../zTree/api/en/setting.edit.drag.borderMax.html | 25 + .../zTree/api/en/setting.edit.drag.borderMin.html | 25 + .../zTree/api/en/setting.edit.drag.inner.html | 60 + .../zTree/api/en/setting.edit.drag.isCopy.html | 32 + .../zTree/api/en/setting.edit.drag.isMove.html | 32 + .../api/en/setting.edit.drag.maxShowNodeNum.html | 25 + .../api/en/setting.edit.drag.minMoveSize.html | 25 + .../zTree/api/en/setting.edit.drag.next.html | 59 + .../zTree/api/en/setting.edit.drag.prev.html | 59 + .../api/en/setting.edit.editNameSelectAll.html | 27 + .../vendor/zTree/api/en/setting.edit.enable.html | 39 + .../zTree/api/en/setting.edit.removeTitle.html | 48 + .../zTree/api/en/setting.edit.renameTitle.html | 48 + .../zTree/api/en/setting.edit.showRemoveBtn.html | 50 + .../zTree/api/en/setting.edit.showRenameBtn.html | 52 + .../vendor/zTree/api/en/setting.treeId.html | 14 + .../vendor/zTree/api/en/setting.treeObj.html | 14 + .../zTree/api/en/setting.view.addDiyDom.html | 40 + .../zTree/api/en/setting.view.addHoverDom.html | 45 + .../api/en/setting.view.autoCancelSelected.html | 27 + .../zTree/api/en/setting.view.dblClickExpand.html | 45 + .../zTree/api/en/setting.view.expandSpeed.html | 31 + .../vendor/zTree/api/en/setting.view.fontCss.html | 42 + .../zTree/api/en/setting.view.nameIsHTML.html | 28 + .../zTree/api/en/setting.view.removeHoverDom.html | 45 + .../zTree/api/en/setting.view.selectedMulti.html | 28 + .../vendor/zTree/api/en/setting.view.showIcon.html | 45 + .../vendor/zTree/api/en/setting.view.showLine.html | 26 + .../zTree/api/en/setting.view.showTitle.html | 47 + .../api/en/setting.view.txtSelectedEnable.html | 26 + .../zTree/api/en/treeNode.check_Child_State.html | 43 + .../vendor/zTree/api/en/treeNode.check_Focus.html | 19 + .../vendor/zTree/api/en/treeNode.checked.html | 32 + .../vendor/zTree/api/en/treeNode.checkedOld.html | 25 + .../vendor/zTree/api/en/treeNode.children.html | 35 + .../vendor/zTree/api/en/treeNode.chkDisabled.html | 28 + .../vendor/zTree/api/en/treeNode.click.html | 24 + .../webroot/vendor/zTree/api/en/treeNode.diy.html | 15 + .../vendor/zTree/api/en/treeNode.editNameFlag.html | 19 + .../zTree/api/en/treeNode.getCheckStatus.html | 63 + .../vendor/zTree/api/en/treeNode.getNextNode.html | 27 + .../zTree/api/en/treeNode.getParentNode.html | 27 + .../vendor/zTree/api/en/treeNode.getPreNode.html | 27 + .../vendor/zTree/api/en/treeNode.halfCheck.html | 29 + .../webroot/vendor/zTree/api/en/treeNode.icon.html | 33 + .../vendor/zTree/api/en/treeNode.iconClose.html | 33 + .../vendor/zTree/api/en/treeNode.iconOpen.html | 33 + .../vendor/zTree/api/en/treeNode.iconSkin.html | 43 + .../vendor/zTree/api/en/treeNode.isAjaxing.html | 26 + .../vendor/zTree/api/en/treeNode.isFirstNode.html | 28 + .../vendor/zTree/api/en/treeNode.isHidden.html | 28 + .../vendor/zTree/api/en/treeNode.isHover.html | 19 + .../vendor/zTree/api/en/treeNode.isLastNode.html | 28 + .../vendor/zTree/api/en/treeNode.isParent.html | 28 + .../vendor/zTree/api/en/treeNode.level.html | 25 + .../webroot/vendor/zTree/api/en/treeNode.name.html | 25 + .../vendor/zTree/api/en/treeNode.nocheck.html | 26 + .../webroot/vendor/zTree/api/en/treeNode.open.html | 30 + .../vendor/zTree/api/en/treeNode.parentTId.html | 27 + .../webroot/vendor/zTree/api/en/treeNode.tId.html | 25 + .../vendor/zTree/api/en/treeNode.target.html | 24 + .../webroot/vendor/zTree/api/en/treeNode.url.html | 25 + .../vendor/zTree/api/en/treeNode.zAsync.html | 28 + .../vendor/zTree/api/en/zTreeObj.addNodes.html | 42 + .../zTree/api/en/zTreeObj.cancelEditName.html | 30 + .../zTree/api/en/zTreeObj.cancelSelectedNode.html | 35 + .../zTree/api/en/zTreeObj.checkAllNodes.html | 29 + .../vendor/zTree/api/en/zTreeObj.checkNode.html | 44 + .../vendor/zTree/api/en/zTreeObj.copyNode.html | 47 + .../vendor/zTree/api/en/zTreeObj.destroy.html | 25 + .../vendor/zTree/api/en/zTreeObj.editName.html | 29 + .../vendor/zTree/api/en/zTreeObj.expandAll.html | 30 + .../vendor/zTree/api/en/zTreeObj.expandNode.html | 50 + .../api/en/zTreeObj.getChangeCheckedNodes.html | 24 + .../zTree/api/en/zTreeObj.getCheckedNodes.html | 28 + .../zTree/api/en/zTreeObj.getNodeByParam.html | 32 + .../vendor/zTree/api/en/zTreeObj.getNodeByTId.html | 27 + .../vendor/zTree/api/en/zTreeObj.getNodeIndex.html | 30 + .../vendor/zTree/api/en/zTreeObj.getNodes.html | 26 + .../zTree/api/en/zTreeObj.getNodesByFilter.html | 43 + .../zTree/api/en/zTreeObj.getNodesByParam.html | 31 + .../api/en/zTreeObj.getNodesByParamFuzzy.html | 32 + .../zTree/api/en/zTreeObj.getSelectedNodes.html | 23 + .../vendor/zTree/api/en/zTreeObj.hideNode.html | 29 + .../vendor/zTree/api/en/zTreeObj.hideNodes.html | 29 + .../vendor/zTree/api/en/zTreeObj.moveNode.html | 49 + .../zTree/api/en/zTreeObj.reAsyncChildNodes.html | 42 + .../vendor/zTree/api/en/zTreeObj.refresh.html | 24 + .../zTree/api/en/zTreeObj.removeChildNodes.html | 32 + .../vendor/zTree/api/en/zTreeObj.removeNode.html | 34 + .../vendor/zTree/api/en/zTreeObj.selectNode.html | 34 + .../zTree/api/en/zTreeObj.setChkDisabled.html | 44 + .../vendor/zTree/api/en/zTreeObj.setEditable.html | 27 + .../vendor/zTree/api/en/zTreeObj.setting.html | 14 + .../vendor/zTree/api/en/zTreeObj.showNode.html | 31 + .../vendor/zTree/api/en/zTreeObj.showNodes.html | 29 + .../zTree/api/en/zTreeObj.transformToArray.html | 27 + .../api/en/zTreeObj.transformTozTreeNodes.html | 44 + .../vendor/zTree/api/en/zTreeObj.updateNode.html | 37 + .../resources/webroot/vendor/zTree/css/demo.css | 33 + .../webroot/vendor/zTree/css/zTreeStyle/ReadMe.txt | 1 + .../vendor/zTree/css/zTreeStyle/img/Thumbs.db | Bin 0 -> 23552 bytes .../zTree/css/zTreeStyle/img/diy/1_close.png | Bin 0 -> 601 bytes .../vendor/zTree/css/zTreeStyle/img/diy/1_open.png | Bin 0 -> 580 bytes .../vendor/zTree/css/zTreeStyle/img/diy/2.png | Bin 0 -> 570 bytes .../vendor/zTree/css/zTreeStyle/img/diy/3.png | Bin 0 -> 762 bytes .../vendor/zTree/css/zTreeStyle/img/diy/4.png | Bin 0 -> 399 bytes .../vendor/zTree/css/zTreeStyle/img/diy/5.png | Bin 0 -> 710 bytes .../vendor/zTree/css/zTreeStyle/img/diy/6.png | Bin 0 -> 432 bytes .../vendor/zTree/css/zTreeStyle/img/diy/7.png | Bin 0 -> 534 bytes .../vendor/zTree/css/zTreeStyle/img/diy/8.png | Bin 0 -> 529 bytes .../vendor/zTree/css/zTreeStyle/img/diy/9.png | Bin 0 -> 467 bytes .../vendor/zTree/css/zTreeStyle/img/diy/Thumbs.db | Bin 0 -> 19968 bytes .../vendor/zTree/css/zTreeStyle/img/line_conn.gif | Bin 0 -> 45 bytes .../vendor/zTree/css/zTreeStyle/img/loading.gif | Bin 0 -> 381 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.gif | Bin 0 -> 5564 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.gifbak | Bin 0 -> 5564 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.png | Bin 0 -> 11206 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.pngbak | Bin 0 -> 11173 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.psd | Bin 0 -> 93494 bytes .../vendor/zTree/css/zTreeStyle/zTreeStyle.css | 107 + .../webroot/vendor/zTree/js/jquery.ztree.all.js | 3506 ++ .../vendor/zTree/js/jquery.ztree.all.min.js | 160 + .../webroot/vendor/zTree/js/jquery.ztree.core.js | 1684 + .../vendor/zTree/js/jquery.ztree.core.min.js | 69 + .../vendor/zTree/js/jquery.ztree.excheck.js | 629 + .../vendor/zTree/js/jquery.ztree.excheck.min.js | 34 + .../webroot/vendor/zTree/js/jquery.ztree.exedit.js | 1191 + .../vendor/zTree/js/jquery.ztree.exedit.min.js | 53 + .../webroot/vendor/zTree/js/jquery.ztree.exhide.js | 363 + .../vendor/zTree/js/jquery.ztree.exhide.min.js | 22 + .../resources/webroot/vendor/zTree/log v3.x.txt | 207 + .../main/resources/webroot/vendor/zTree/readme.txt | 2 + .../webroot/vendor/zTree/zTree.v3.jquery.json | 35 + umc-iui/pom.xml | 31 + .../webroot/umc-drill/createtestdata.html | 618 + .../main/resources/webroot/umc-drill/css/itm.css | 342 + .../main/resources/webroot/umc-drill/css/vnf.css | 916 + .../i18n/ngict-umc-monitor-i18n-en-US.properties | 24 + .../i18n/ngict-umc-monitor-i18n-zh-CN.properties | 24 + .../webroot/umc-drill/images/aos_view-fm.gif | Bin 0 -> 205 bytes .../resources/webroot/umc-drill/images/arrow.png | Bin 0 -> 3075 bytes .../webroot/umc-drill/images/details_close.png | Bin 0 -> 3306 bytes .../webroot/umc-drill/images/details_open1.png | Bin 0 -> 3304 bytes .../resources/webroot/umc-drill/images/down.png | Bin 0 -> 2938 bytes .../resources/webroot/umc-drill/images/filter.png | Bin 0 -> 6756 bytes .../main/resources/webroot/umc-drill/images/up.png | Bin 0 -> 2926 bytes .../main/resources/webroot/umc-drill/index.html | 26 + .../resources/webroot/umc-drill/js/Constants.js | 26 + .../webroot/umc-drill/js/avalon.modern.js | 4455 ++ .../resources/webroot/umc-drill/js/commonUtil.js | 52 + .../src/main/resources/webroot/umc-drill/js/d3.js | 9253 ++++ .../resources/webroot/umc-drill/js/echarts-all.js | 40 + .../webroot/umc-drill/js/jquery-1.10.2.min.js | 19 + .../webroot/umc-drill/js/mockdataController.js | 587 + .../webroot/umc-drill/js/monitorHeadChart.js | 94 + .../resources/webroot/umc-drill/js/monitors.js | 494 + .../webroot/umc-drill/js/vnfController.js | 607 + .../resources/webroot/umc-drill/monitorns.html | 613 + .../resources/webroot/umc-fm/css/alarmsQuery.css | 735 + .../main/resources/webroot/umc-fm/css/delete.me | 0 .../webroot/umc-fm/html/fm_currentAlarm_view.html | 364 + .../main/resources/webroot/umc-fm/i18n/delete.me | 0 .../i18n/ngict-curalarms-iui-i18n-en-US.properties | 108 + .../i18n/ngict-curalarms-iui-i18n-zh-CN.properties | 98 + .../main/resources/webroot/umc-fm/images/Thumbs.db | Bin 0 -> 20992 bytes .../webroot/umc-fm/images/aos_view-fm.gif | Bin 0 -> 205 bytes .../main/resources/webroot/umc-fm/images/arrow.png | Bin 0 -> 5680 bytes .../webroot/umc-fm/images/details_close.png | Bin 0 -> 3300 bytes .../webroot/umc-fm/images/details_open.png | Bin 0 -> 3304 bytes .../main/resources/webroot/umc-fm/images/down.png | Bin 0 -> 2938 bytes .../resources/webroot/umc-fm/images/filter.png | Bin 0 -> 7780 bytes .../resources/webroot/umc-fm/images/statistics.png | Bin 0 -> 25116 bytes .../main/resources/webroot/umc-fm/images/up.png | Bin 0 -> 2926 bytes .../main/resources/webroot/umc-fm/js/CommonUtil.js | 42 + .../main/resources/webroot/umc-fm/js/alarmConds.js | 261 + .../webroot/umc-fm/js/alarmsServerPageTable.js | 514 + .../main/resources/webroot/umc-fm/js/alarmsUtil.js | 1154 + .../resources/webroot/umc-fm/js/avalon.modern.js | 4935 ++ .../webroot/umc-fm/js/curAlarmsController.js | 475 + .../src/main/resources/webroot/umc-fm/js/delete.me | 0 .../main/resources/webroot/umc-monitor/css/dac.css | 220 + .../umc-monitor/css/dataTables.bootstrap.css | 331 + .../webroot/umc-monitor/css/monitorSetting.css | 167 + .../resources/webroot/umc-monitor/dacList.html | 253 + .../i18n/loadi18nApp_ngict-umc-monitor.js | 42 + .../i18n/umc-monitor-iui-i18n-en-US.properties | 103 + .../i18n/umc-monitor-iui-i18n-zh-CN.properties | 103 + .../webroot/umc-monitor/images/throbber.gif | Bin 0 -> 9257 bytes .../webroot/umc-monitor/js/dacController.js | 275 + .../umc-monitor/js/monitorSettingController.js | 435 + .../webroot/umc-monitor/js/monitorSettingUtil.js | 169 + .../webroot/umc-monitor/monitorSetting.html | 487 + .../webroot/umc-monitor/monitorSettingList.html | 126 + .../main/resources/webroot/umc-pm/css/delete.me | 0 .../resources/webroot/umc-pm/css/meataskQuery.css | 872 + .../webroot/umc-pm/css/performanceChart.css | 45 + .../resources/webroot/umc-pm/css/pmQueryBox.css | 299 + .../webroot/umc-pm/html/index/indexManage.html | 163 + .../webroot/umc-pm/html/index/indexView.html | 74 + .../umc-pm/html/meatask/meataskQueryRule.html | 184 + .../umc-pm/html/meatask/meataskQueryView.html | 151 + .../webroot/umc-pm/html/meataskQueryView.html | 149 + .../main/resources/webroot/umc-pm/i18n/delete.me | 0 .../umc-pm/i18n/ngict-pm-iui-i18n-en-US.properties | 130 + .../umc-pm/i18n/ngict-pm-iui-i18n-zh-CN.properties | 131 + .../webroot/umc-pm/images/aos_view-fm.gif | Bin 0 -> 205 bytes .../main/resources/webroot/umc-pm/images/arrow.png | Bin 0 -> 5680 bytes .../main/resources/webroot/umc-pm/images/chart.png | Bin 0 -> 1727 bytes .../resources/webroot/umc-pm/images/delete.png | Bin 0 -> 3029 bytes .../webroot/umc-pm/images/details_close.png | Bin 0 -> 3300 bytes .../webroot/umc-pm/images/details_open.png | Bin 0 -> 3304 bytes .../main/resources/webroot/umc-pm/images/down.png | Bin 0 -> 2938 bytes .../resources/webroot/umc-pm/images/filter.png | Bin 0 -> 7780 bytes .../resources/webroot/umc-pm/images/statistics.png | Bin 0 -> 25116 bytes .../main/resources/webroot/umc-pm/images/table.png | Bin 0 -> 1668 bytes .../main/resources/webroot/umc-pm/images/up.png | Bin 0 -> 2926 bytes .../src/main/resources/webroot/umc-pm/js/avalon.js | 5875 ++ .../main/resources/webroot/umc-pm/js/commonUtil.js | 69 + .../resources/webroot/umc-pm/js/dataRangeUtil.js | 354 + .../src/main/resources/webroot/umc-pm/js/delete.me | 0 .../resources/webroot/umc-pm/js/i18n/loadi18n.js | 23 + .../webroot/umc-pm/js/index/indexController.js | 228 + .../webroot/umc-pm/js/index/indexManage.js | 187 + .../resources/webroot/umc-pm/js/meatask/echarts.js | 54502 +++++++++++++++++++ .../umc-pm/js/meatask/meataskQueryController.js | 843 + .../webroot/umc-pm/js/meatask/performanceChart.js | 181 + .../src/main/resources/webroot/umc-pm/js/pmUtil.js | 458 + .../resources/webroot/umc-pm/json/counters.json | 25 + .../main/resources/webroot/umc-pm/json/index.json | 18 + .../resources/webroot/umc-pm/json/indexes.json | 50 + .../umc-pm/json/meatask/meatasks_content.json | 97 + .../webroot/umc-pm/json/meatask/moType.json | 25 + .../webroot/umc-pm/json/meatask/moType1.json | 9 + .../webroot/umc-pm/json/meatask/resourceType.json | 29 + .../webroot/umc-pm/json/meatask/resources.json | 115 + .../webroot/umc-pm/json/meatask/resources1.json | 35 + .../webroot/umc-pm/json/meatask/resources2.json | 30 + .../resources/webroot/umc-pm/json/meatasks.json | 97 + .../webroot/umc-pm/json/meatasks_content.json | 94 + .../webroot/umc-pm/json/resourceType.json | 8 + .../main/resources/webroot/umc-pm/json/test.json | 152 + .../webroot/umc-pm/json/thresholdList.json | 116 + .../main/resources/webroot/umc-topo/css/main.css | 161 + .../main/resources/webroot/umc-topo/images/NS.png | Bin 0 -> 22438 bytes .../main/resources/webroot/umc-topo/images/NS1.png | Bin 0 -> 23065 bytes .../main/resources/webroot/umc-topo/images/VDU.png | Bin 0 -> 21080 bytes .../resources/webroot/umc-topo/images/VDU1.png | Bin 0 -> 21168 bytes .../main/resources/webroot/umc-topo/images/VNF.png | Bin 0 -> 22868 bytes .../resources/webroot/umc-topo/images/VNF1.png | Bin 0 -> 23757 bytes .../resources/webroot/umc-topo/images/VNFC.png | Bin 0 -> 20496 bytes .../resources/webroot/umc-topo/images/VNFC1 .png | Bin 0 -> 21207 bytes .../webroot/umc-topo/images/off/Bridge.gif | Bin 0 -> 426 bytes .../webroot/umc-topo/images/off/Computer.gif | Bin 0 -> 328 bytes .../resources/webroot/umc-topo/images/off/Hub.gif | Bin 0 -> 441 bytes .../webroot/umc-topo/images/off/InternetServer.gif | Bin 0 -> 1106 bytes .../webroot/umc-topo/images/off/MiniComputer.gif | Bin 0 -> 600 bytes .../webroot/umc-topo/images/off/Multiplexer.gif | Bin 0 -> 571 bytes .../webroot/umc-topo/images/off/Router.gif | Bin 0 -> 631 bytes .../webroot/umc-topo/images/off/Server.gif | Bin 0 -> 523 bytes .../webroot/umc-topo/images/off/Switch.gif | Bin 0 -> 1052 bytes .../webroot/umc-topo/images/off/TerminalServer.gif | Bin 0 -> 455 bytes .../resources/webroot/umc-topo/images/off/vim.png | Bin 0 -> 2990 bytes .../webroot/umc-topo/images/on/Bridge.gif | Bin 0 -> 443 bytes .../webroot/umc-topo/images/on/BridgeMinus.gif | Bin 0 -> 476 bytes .../webroot/umc-topo/images/on/BridgePlus.gif | Bin 0 -> 491 bytes .../webroot/umc-topo/images/on/Computer.png | Bin 0 -> 14541 bytes .../umc-topo/images/on/ComputerMinusbak.gif | Bin 0 -> 507 bytes .../webroot/umc-topo/images/on/ComputerPlusbak.gif | Bin 0 -> 520 bytes .../webroot/umc-topo/images/on/Computerbak.gif | Bin 0 -> 1180 bytes .../resources/webroot/umc-topo/images/on/Hub.gif | Bin 0 -> 5813 bytes .../webroot/umc-topo/images/on/HubPlus.gif | Bin 0 -> 805 bytes .../webroot/umc-topo/images/on/InternetServer.gif | Bin 0 -> 1103 bytes .../webroot/umc-topo/images/on/MiniComputer.gif | Bin 0 -> 710 bytes .../webroot/umc-topo/images/on/Multiplexer.gif | Bin 0 -> 594 bytes .../webroot/umc-topo/images/on/Router.gif | Bin 0 -> 672 bytes .../webroot/umc-topo/images/on/Server.gif | Bin 0 -> 519 bytes .../webroot/umc-topo/images/on/Switch.gif | Bin 0 -> 1818 bytes .../webroot/umc-topo/images/on/TerminalServer.gif | Bin 0 -> 489 bytes .../webroot/umc-topo/images/on/hostMinus.png | Bin 0 -> 11968 bytes .../webroot/umc-topo/images/on/hostPlus.png | Bin 0 -> 12005 bytes .../resources/webroot/umc-topo/images/on/vdu.png | Bin 0 -> 8569 bytes .../webroot/umc-topo/images/on/vimMinus.png | Bin 0 -> 20055 bytes .../webroot/umc-topo/images/on/vimMinusbak.png | Bin 0 -> 3109 bytes .../webroot/umc-topo/images/on/vimPlus.png | Bin 0 -> 20150 bytes .../webroot/umc-topo/images/on/vimPlusbak.png | Bin 0 -> 3157 bytes .../main/resources/webroot/umc-topo/images/vim.png | Bin 0 -> 27134 bytes .../webroot/umc-topo/js/physicalTopology.js | 356 + .../webroot/umc-topo/js/serviceTopology.js | 503 + .../resources/webroot/umc-topo/js/topoDialog.js | 165 + .../main/resources/webroot/umc-topo/js/topoTool.js | 344 + .../webroot/umc-topo/physicalTopology.html | 24 + .../webroot/umc-topo/serviceTopology.html | 24 + 1607 files changed, 535660 insertions(+) create mode 100644 nsoc-iui/pom.xml create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/package.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/software.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/template.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/down.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/images/up.png create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/component/commonUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/component/loadi18n_nsoc.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/component/serverPageTable.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/hostMirror/hmController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/hostMirror/hmUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/hostMirror/host-validate.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/package/pmController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/package/pmUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/softwareMirror/smController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/softwareMirror/smUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmDetailController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmDetailUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/tmUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/template/topoUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/validate.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppDetailController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppDetailUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/virtualApplication/vmAppUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/vnfm/vnfm-validate.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/vnfm/vnfmController.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/js/vnfm/vnfmUtil.js create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/softwareMirror.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/template.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/topology.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html create mode 100644 nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html create mode 100644 openoiui-standlone/pom.xml create mode 100644 openoiui-standlone/src/main/assembly/run.bat create mode 100644 openoiui-standlone/src/main/assembly/run.sh create mode 100644 openoiui-standlone/src/main/assembly/stop.bat create mode 100644 openoiui-standlone/src/main/assembly/stop.sh create mode 100644 openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js create mode 100644 openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-nsoc/i18n/loadi18n-openo-nsoc.js create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-nsoc/i18n/openo-nsoc-i18n-en-US.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-nsoc/i18n/openo-nsoc-i18n-zh-CN.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-roc/i18n/loadi18n-openo-roc.js create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-roc/i18n/openo-roc-i18n-en-US.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-roc/i18n/openo-roc-i18n-zh-CN.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-umc/i18n/loadi18n-openo-umc.js create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-umc/i18n/openo-umc-i18n-en-US.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/hsif/openo-umc/i18n/openo-umc-i18n-zh-CN.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-framework-integration-i18n-en-US.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-framework-integration-i18n-zh-CN.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-portal-login-integration-i18n-en-US.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/i18n/web-portal-login-integration-i18n-zh-CN.properties create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/logo.png create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/netnumenLogo.png create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/zte_logo_16.gif create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/zte_logo_white.png create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/img/integration/ztelogo.png create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/js/core/const.js create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/json/main-page.json create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/login.html create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html create mode 100644 openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt create mode 100644 pom.xml create mode 100644 roc-iui/pom.xml create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/i18n/roc-rs-view-iui-i18n-en-US.properties create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/i18n/roc-rs-view-iui-i18n-zh-CN.properties create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/images/down.png create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/images/up.png create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/js/resController.js create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/js/resUtil.js create mode 100644 roc-iui/src/main/resources/webroot/roc-rs-view/resView.html create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/i18n/roc-sdn-iui-i18n-en-US.properties create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/i18n/roc-sdn-iui-i18n-zh-CN.properties create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/js/sdn-validate.js create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/js/sdnController.js create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/js/sdnUtil.js create mode 100644 roc-iui/src/main/resources/webroot/roc-sdn/sdnView.html create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/skill.css create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/vim.css create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/i18n/roc-vim-iui-i18n-en-US.properties create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/i18n/roc-vim-iui-i18n-zh-CN.properties create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/client-cometd.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/jqBootstrapValidation.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/js/vimUtil.js create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/vimChart.html create mode 100644 roc-iui/src/main/resources/webroot/roc-vim/vimView.html create mode 100644 uiframe-iui/pom.xml create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/selection.json create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/style.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/css/component.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/backstretch/jquery.backstretch.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/AckExtension.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/ReloadExtension.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/TimeStampExtension.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/cometd/TimeSyncExtension.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-ack.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-reload.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-timestamp.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd-timesync.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/cometd/jquery/jquery.cometd.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/loading-spinner-grey.gif create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/sort_asc.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/sort_both.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/images/sort_desc.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/data-tables/jquery.dataTables.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/README.md create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/jquery.validate.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/jquery.validate.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/additional-methods.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/additional-methods.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/jquery.validate.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/jquery.validate.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ar.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ar.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_bg.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_bg.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ca.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ca.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_cs.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_cs.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_da.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_da.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_de.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_de.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_el.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_el.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es_AR.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_et.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_et.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_eu.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_eu.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fa.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fa.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fi.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fi.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fr.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_fr.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_gl.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_gl.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_he.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_he.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hr.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hr.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hu.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_hu.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_id.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_id.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_is.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_is.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_it.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_it.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ja.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ja.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ka.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ka.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_kk.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_kk.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ko.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ko.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lt.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lt.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lv.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_lv.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_my.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_my.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_nl.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_nl.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_no.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_no.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pl.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pl.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_BR.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_PT.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ro.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ro.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ru.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_ru.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_si.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_si.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sk.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sk.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sl.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sl.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr_lat.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sv.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_sv.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_th.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_th.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tj.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tj.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tr.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_tr.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_uk.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_uk.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_vi.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_vi.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh_TW.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_de.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_de.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_es_CL.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_fi.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_fi.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_nl.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_nl.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_pt.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/js/localization/methods_pt.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.10.2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.11.2.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.11.2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.11.2.min.map create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-1.4.4.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-2.1.3.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-2.1.3.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-2.1.3.min.map create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-migrate-1.2.1.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery-migrate-1.2.1.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery/jquery.reveal.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/select2/select2-custom.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/select2/select2.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/select2/select2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/README.md create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/css/uniform.default.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/css/uniform.default.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/css/uniform.default.scss create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/bg-input-focus.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/bg-input.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/sprite.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/images/sprite_original.png create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/jquery.uniform.js create mode 100644 uiframe-iui/src/main/resources/webroot/component/thirdparty/uniform/jquery.uniform.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/about.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/i18n/readme.txt create mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/img/readme.txt create mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/js/custom-const.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/appRes/js/custom.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/changepwd.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/animate.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/animate.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/changepwd-apk.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/changepwd.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/custom_default.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/login-apk.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/login.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/more-operation.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/ngict-component.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/plugins.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/plugins.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/print.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/print.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-custom.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-custom.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-ict-bootstrap.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-ict.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style-responsive.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/style.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/black_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/blue_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/brown_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/grey_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/light_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/purple_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/zteblue_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight2_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight3_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight4_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight_ifrm.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/themes/ztebluelight_ifrm.css.gz create mode 100644 uiframe-iui/src/main/resources/webroot/framework/css/zte-style.css create mode 100644 uiframe-iui/src/main/resources/webroot/framework/default.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-i18n-en-US.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-i18n-zh-CN.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-integration-i18n-en-US.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-framework-integration-i18n-zh-CN.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-i18n-en-US.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-i18n-zh-CN.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-integration-i18n-en-US.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/i18n/web-portal-login-integration-i18n-zh-CN.properties create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/about/about-bg-dark.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/about/about-bg-light.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/about/about-netnumen.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/accordion-plusminus.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ajax-loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ajax-modal-loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/arrow-down.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/avatar.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/bg-opacity.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/bg-white-lock.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/bg-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-checked-disabled.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-checked.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-disabled.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-hover.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/checkbox-init.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-checked-disabled.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-checked.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-disabled.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-hover.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/checkbox-radio/radio-init.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/chrome_icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/datatable-row-openclose.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/empty.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/firefox_icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search-close-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search-close.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/hor-menu-search.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-color-close.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-color.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-img-down.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/icon-img-up.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/input-spinner.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/logo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/logo_white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/netnumenLogo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_bg_1.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_bg_2.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_bg_3.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_logo_16.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/zte_logo_white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/integration/ztelogo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/loading-spinner-grey.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/1.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/2.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/3.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/4.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/5.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/icon/6.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/logo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/1.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/2.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/3.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/4.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/mainpage/pic/5.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/menu-toggler.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/overlay-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-collapse-icon-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-collapse-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-config-icon-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-config-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-expand-icon-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-expand-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-reload-icon-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-reload-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-remove-icon-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/portlet-remove-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/remove-icon-small.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/reset_password.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/NFV.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/NS.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VDU.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VIM.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VNF.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VNFC.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/VNFM.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/breakLink.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/common_dc.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/common_ncd.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/common_sc.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/host.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-Virtual network.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-bind.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-dns.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-ems.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-mediator.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-netnumen.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-ntp.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-ota.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-tomcat.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-trend.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-tsm.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app-weblogic.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-app.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-hacmp.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-nec.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-ns.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-sg.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster-vcs.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-cluster.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-mssql.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-oracle.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-sybase.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database-sybaseiq.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-database.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-dellmd.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-emc.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-eternus.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-fujitsu.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hds.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hpaio.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hpeva.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-hpmsa.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-ibm.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-ibmsm.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-macrosan.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-netapp.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-sun.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-diskraid-zte.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-checkpoint.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-cisco.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-cisco2.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-h3c.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-juniper.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-neteye.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-zte.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-ztemf.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall-zteutm.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-firewall.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-gather.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-group-dev.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-ibp-ibp2000.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-ibp.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-net.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-alteon.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-appdirector.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-atca-lb10.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-cisco-ucs.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-dcs.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-delta.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-dp.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-f5bigip.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-f5bigip2.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-gbe2c.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-hpblc.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-ibm-blade.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-imm.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-secfox.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-secsis.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-segw.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-vc.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-zteatca.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-zteips.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-ztepower.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-ztesgs.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other-zxsdr-nt.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-other.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router-cisco.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router-juniper.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router-zte.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-router.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-controller.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-host.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-switch.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-sdn-vnet.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-aix.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-hpux.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-klinux.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-redhat.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-solaris.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-suse.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-windows.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server-zxve.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-server.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-cisco-mds.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-md3000.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-netvault.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-ops.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-sanswitch-brocade.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-sanswitch-hp.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage-sanswitch-zte.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-storage.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-at.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-cisco.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-h3c.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-juniper.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch-zte.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-switch.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-tapelib-hpmsl.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-tapelib-ibmts.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it-tapelib-sunts.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/it.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/networkTree.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/new.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/popupmenufollower.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/resourceType.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/stop.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/tree-icon.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-moc-root.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-moc-uca-public.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-commongroup20x20.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-group20x20.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-root.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-undefinedgroup20x20.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-virtual20x20.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/uep-topo-wsf-disconnected8x8.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/usf-amf-try-activate.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/ressvgs/usf-amf-try-active-wait.svg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-blue.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-brown.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-purple.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-red.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/search-icon.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/select-caret.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-menu-arrow-right.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-menu-arrow-rtl.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-menu-arrow.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-blue.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-brown.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-light.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close-purple.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-search-close.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-toggler-grey.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/sidebar-toggler-light.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/logo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/logo_white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/netnumenLogo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_bg_1.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_bg_2.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_bg_3.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_logo_ white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_logo_16.gif create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/zte_logo_white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/source/ztelogo.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/syncfusion-icons-white.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/img/user.png create mode 100644 uiframe-iui/src/main/resources/webroot/framework/index.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/Main2moreMenu.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/ZteFrameWork.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/const.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/hk.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/core/pym.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/fm_light.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n-login.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18n.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/international/loadi18nApp_universal.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/json2.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/login.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/mainpage/about.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/mainpage/ict.main.page.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/moreOperation.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/security/security.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/js/tools.js create mode 100644 uiframe-iui/src/main/resources/webroot/framework/json/main-page.json create mode 100644 uiframe-iui/src/main/resources/webroot/framework/login.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/main-page.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html create mode 100644 uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modal.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modalmanager.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-select/bootstrap-select.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-select/bootstrap-select.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-validation/jqBootstrapValidation.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/bootstrap-wizard/jquery.bootstrap.wizard.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/cometd/cometd.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/cometd/jquery.cometd.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DT_bootstrap.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DT_bootstrap.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DataTableICT.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DataTableSmartClient.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/DataTableSmartClientApp.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/app-test-i18n-datatable-zh-CN.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/app-universal-i18n-datatable-en-US.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/app-universal-i18n-datatable-zh-CN.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/dataTable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/loading-spinner-grey.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/sort_asc.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/sort_both.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/images/sort_desc.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/jquery.dataTables.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/jquery.dataTables.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/data-tables/style-datatable.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/delete.me create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/echarts/echarts-all.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/CHANGELOG.md create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/README.md create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/bower.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/banner.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/custom.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/custom.styl create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/icheck.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/arrow-bottom.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/arrow-top.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/header-line.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-fork.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-github.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-lab.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-options.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/ie/icon-star.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.eot create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.ttf create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-bold.woff create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.eot create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.ttf create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/montserrat-regular.woff create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/css/normalize.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/index.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/custom.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/custom.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/jquery.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/demo/js/zepto.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/icheck.jquery.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/icheck.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/icheck.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/all.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/_all.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/aero.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/aero.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/aero@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/blue.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/blue.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/blue@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/flat.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/flat.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/flat@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/green.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/green.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/green@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/grey.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/grey.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/grey@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/orange.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/orange.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/orange@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/pink.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/pink.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/pink@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/purple.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/purple.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/purple@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/red.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/red.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/red@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/yellow.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/yellow.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/flat/yellow@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/futurico/futurico.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/futurico/futurico.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/futurico/futurico@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/_all.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/aero.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/blue.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/green.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/grey.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/line.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/line.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/line@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/orange.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/pink.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/purple.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/red.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/line/yellow.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/_all.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/aero.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/aero.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/aero@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/blue.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/blue.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/blue@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/green.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/green.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/green@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/grey.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/grey.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/grey@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/minimal.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/minimal.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/minimal@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/orange.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/orange.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/orange@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/pink.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/pink.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/pink@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/purple.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/purple.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/purple@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/red.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/red.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/red@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/yellow.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/yellow.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/minimal/yellow@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/polaris/polaris.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/polaris/polaris.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/polaris/polaris@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/_all.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/aero.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/aero.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/aero@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/blue.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/blue.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/blue@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/green.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/green.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/green@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/grey.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/grey.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/grey@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/orange.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/orange.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/orange@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/pink.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/pink.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/pink@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/purple.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/purple.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/purple@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/red.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/red.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/red@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/square.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/square.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/square@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/yellow.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/yellow.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/icheck/skins/square/yellow@2x.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/DashboardConfig-jq.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/DashboardICT-jq.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/DashboardICT.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/c3.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/c3.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/components.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/facebox.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/ict-chart-dashboard.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/css/transition.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3-angular.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3-angular.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3-angular.min.js.map create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/c3.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/d3.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/facebox.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/assets/js/portlet-draggable-jq.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/c3Chart.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/demo-barchart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/demo-linechart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/ict-barchart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/ict-linechart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/demo/index3.html create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/CPU\347\273\237\350\256\241.png" create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/closelabel.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/delete.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/open.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/remove.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/remove_red.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/shrink.png create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\345\221\212\350\255\246\347\273\237\350\256\241.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\200\247\350\203\275\347\273\237\350\256\241A.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\200\247\350\203\275\347\273\237\350\256\241B.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\200\247\350\203\275\347\273\237\350\256\241C.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/dashboard-jq/images/\346\227\245\345\277\227\347\273\237\350\256\241.png" create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/demo/demo-barchart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/demo/demo-linechart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/ict-barchart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-chart/ict-linechart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardConfig-jq.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardConfig-jq.json.sdn create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardConfig.json create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/DashboardICT.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/c3.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/c3.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/components.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/facebox.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/ict-chart-dashboard.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/css/transition.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/angular.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/angular.min.js.map create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3-angular.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3-angular.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3-angular.min.js.map create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/c3.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/d3.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/facebox.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/assets/js/portlet-draggable-jq.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/c3Chart.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/demo-barchart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/demo-linechart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/ict-barchart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/ict-linechart-c3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/demo/index3.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/ict.dashboard.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/ict.dashboard.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/ict.dashboard.js.bak create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/CPU\347\273\237\350\256\241.png" create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/alarm.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/bar.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/closelabel.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/cpu.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/delete.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/gauge.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/line.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/lineBar.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/map.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/open.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/pie.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/remove.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/remove_red.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/shrink.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/stacked.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/zoom.png create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\345\221\212\350\255\246\347\273\237\350\256\241.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\200\247\350\203\275\347\273\237\350\256\241A.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\200\247\350\203\275\347\273\237\350\256\241B.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\200\247\350\203\275\347\273\237\350\256\241C.png" create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/images/\346\227\245\345\277\227\347\273\237\350\256\241.png" create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/index4.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/avalon.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/d3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/facebox.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-dashboard/js/freewall.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/css/serverPageTable.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/images/details_close.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/images/details_open.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/readme.txt create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/serverPageTable.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/serverPageTable_demo.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-serverpagetable/serverpagetable.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/css/bootstrap-dt.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/css/bootstrap.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/js/bootstrap.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/js/bootstrap.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/bootstrap/js/bootstrap2-typeahead.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/css/jquery-ui.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/css/multi-handle-slider.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/index.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/external/jquery/jquery.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_flat_10_000000_40x100.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_222222_256x240.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_228ef1_256x240.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_ef8c08_256x240.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_ffd27a_256x240.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/images/ui-icons_ffffff_256x240.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/index.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.structure.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.structure.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.theme.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/jquery-ui-1.11.4.custom/jquery-ui.theme.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/js/avalon.modern.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/js/jquery-1.10.2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-slider/js/multi-handle-slider.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/demo.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/skill.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/skillsData.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-sunburst/sunburst.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap-wizard/jquery.bootstrap.wizard.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/css/bootstrap-dt.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/css/bootstrap.min.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/js/bootstrap.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/js/bootstrap.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/bootstrap/js/bootstrap2-typeahead.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/ict-wizard.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/ict_wizard_view.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.10.2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.11.2.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.11.2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-1.11.2.min.map create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-2.1.3.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-2.1.3.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-2.1.3.min.map create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-migrate-1.2.1.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/jquery/jquery-migrate-1.2.1.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/ngict-component.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ict/ict-wizard/plugins.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/css/jquery.fileupload.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/img/loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/img/progressbar.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/js/jquery.fileupload.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/js/jquery.iframe-transport.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/jQuery-File-Upload/js/vendor/jquery.ui.widget.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ystep/css/ystep.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/ystep/ystep.js create mode 100644 "uiframe-iui/src/main/resources/webroot/vendor/zTree/QUI \346\241\206\346\236\266\344\273\213\347\273\215.txt" create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/README.md create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/API_cn.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/API_en.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/api.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/common.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/common_ie6.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/apiMenu.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/apiMenu.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/background.jpg create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/chinese.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/close.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/contact-bg.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/english.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/header-bg.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/lightbulb.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_arrow.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_arrow.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_bg.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/overlay_close_IE6.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/zTreeStandard.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/img/zTreeStandard.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/jquery-1.6.2.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/jquery.ztree.core-3.5.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/apiCss/zTreeStyleForApi.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree._z.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree.destroy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree.getZTreeObj.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/fn.zTree.init.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.autoParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.contentType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.dataFilter.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.dataType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.otherParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.type.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.async.url.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeAsync.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeCheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeCollapse.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDblClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDrag.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDragOpen.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeDrop.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeEditName.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeExpand.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeMouseDown.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeMouseUp.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeRemove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeRename.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.beforeRightClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onAsyncError.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onAsyncSuccess.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onCheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onCollapse.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDblClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDrag.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDragMove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onDrop.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onExpand.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onMouseDown.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onMouseUp.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onNodeCreated.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onRemove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onRename.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.callback.onRightClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.autoCheckTrigger.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.chkDisabledInherit.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.chkStyle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.chkboxType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.nocheckInherit.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.check.radioType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.keep.leaf.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.keep.parent.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.checked.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.children.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.name.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.title.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.key.url.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.idKey.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.pIdKey.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.data.simpleData.rootPId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.autoOpenTime.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.borderMax.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.borderMin.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.inner.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.isCopy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.isMove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.minMoveSize.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.next.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.drag.prev.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.editNameSelectAll.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.removeTitle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.renameTitle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.showRemoveBtn.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.edit.showRenameBtn.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.treeId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.treeObj.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.addDiyDom.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.addHoverDom.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.autoCancelSelected.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.dblClickExpand.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.expandSpeed.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.fontCss.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.nameIsHTML.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.removeHoverDom.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.selectedMulti.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.showIcon.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.showLine.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.showTitle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/setting.view.txtSelectedEnable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.check_Child_State.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.check_Focus.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.checked.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.checkedOld.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.children.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.chkDisabled.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.click.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.diy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.editNameFlag.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getCheckStatus.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getNextNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getParentNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.getPreNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.halfCheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.icon.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.iconClose.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.iconOpen.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.iconSkin.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isAjaxing.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isFirstNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isHidden.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isHover.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isLastNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.isParent.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.level.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.name.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.nocheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.open.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.parentTId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.tId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.target.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.url.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/treeNode.zAsync.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.addNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.cancelEditName.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.cancelSelectedNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.checkAllNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.checkNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.copyNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.destroy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.editName.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.expandAll.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.expandNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getCheckedNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodeByParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodeByTId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodeIndex.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodesByFilter.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodesByParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.getSelectedNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.hideNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.hideNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.moveNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.reAsyncChildNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.refresh.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.removeChildNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.removeNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.selectNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.setChkDisabled.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.setEditable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.setting.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.showNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.showNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.transformToArray.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.transformTozTreeNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/cn/zTreeObj.updateNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree._z.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree.destroy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree.getZTreeObj.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/fn.zTree.init.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.autoParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.contentType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.dataFilter.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.dataType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.otherParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.type.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.async.url.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeAsync.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeCheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeCollapse.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDblClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDrag.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDragOpen.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeDrop.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeEditName.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeExpand.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeMouseDown.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeMouseUp.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeRemove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeRename.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.beforeRightClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onAsyncError.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onAsyncSuccess.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onCheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onCollapse.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDblClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDrag.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDragMove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onDrop.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onExpand.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onMouseDown.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onMouseUp.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onNodeCreated.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onRemove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onRename.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.callback.onRightClick.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.autoCheckTrigger.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.chkDisabledInherit.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.chkStyle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.chkboxType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.nocheckInherit.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.check.radioType.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.keep.leaf.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.keep.parent.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.checked.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.children.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.name.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.title.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.key.url.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.idKey.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.pIdKey.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.data.simpleData.rootPId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.autoExpandTrigger.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.autoOpenTime.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.borderMax.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.borderMin.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.inner.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.isCopy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.isMove.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.maxShowNodeNum.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.minMoveSize.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.next.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.drag.prev.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.editNameSelectAll.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.enable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.removeTitle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.renameTitle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.showRemoveBtn.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.edit.showRenameBtn.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.treeId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.treeObj.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.addDiyDom.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.addHoverDom.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.autoCancelSelected.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.dblClickExpand.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.expandSpeed.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.fontCss.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.nameIsHTML.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.removeHoverDom.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.selectedMulti.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.showIcon.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.showLine.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.showTitle.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/setting.view.txtSelectedEnable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.check_Child_State.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.check_Focus.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.checked.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.checkedOld.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.children.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.chkDisabled.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.click.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.diy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.editNameFlag.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getCheckStatus.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getNextNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getParentNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.getPreNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.halfCheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.icon.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.iconClose.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.iconOpen.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.iconSkin.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isAjaxing.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isFirstNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isHidden.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isHover.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isLastNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.isParent.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.level.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.name.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.nocheck.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.open.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.parentTId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.tId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.target.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.url.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/treeNode.zAsync.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.addNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.cancelEditName.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.cancelSelectedNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.checkAllNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.checkNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.copyNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.destroy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.editName.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.expandAll.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.expandNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getChangeCheckedNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getCheckedNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodeByParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodeByTId.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodeIndex.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodesByFilter.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodesByParam.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.getSelectedNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.hideNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.hideNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.moveNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.reAsyncChildNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.refresh.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.removeChildNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.removeNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.selectNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.setChkDisabled.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.setEditable.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.setting.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.showNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.showNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.transformToArray.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.transformTozTreeNodes.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/api/en/zTreeObj.updateNode.html create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/demo.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/ReadMe.txt create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/1_close.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/1_open.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/2.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/3.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/4.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/5.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/6.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/7.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/8.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/9.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/diy/Thumbs.db create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/line_conn.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/loading.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.gif create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.gifbak create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.png create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.pngbak create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/img/zTreeStandard.psd create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/css/zTreeStyle/zTreeStyle.css create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.all.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.all.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.core.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.core.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.excheck.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.excheck.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exedit.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exedit.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exhide.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/js/jquery.ztree.exhide.min.js create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/log v3.x.txt create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/readme.txt create mode 100644 uiframe-iui/src/main/resources/webroot/vendor/zTree/zTree.v3.jquery.json create mode 100644 umc-iui/pom.xml create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/createtestdata.html create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/css/itm.css create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/css/vnf.css create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/i18n/ngict-umc-monitor-i18n-en-US.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/i18n/ngict-umc-monitor-i18n-zh-CN.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/aos_view-fm.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/arrow.png create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/details_close.png create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/details_open1.png create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/down.png create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/filter.png create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/images/up.png create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/index.html create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/Constants.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/avalon.modern.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/commonUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/d3.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/echarts-all.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/jquery-1.10.2.min.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/mockdataController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/monitorHeadChart.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/monitors.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/js/vnfController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-drill/monitorns.html create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/css/alarmsQuery.css create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/css/delete.me create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/html/fm_currentAlarm_view.html create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/i18n/delete.me create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/i18n/ngict-curalarms-iui-i18n-en-US.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/i18n/ngict-curalarms-iui-i18n-zh-CN.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/Thumbs.db create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/aos_view-fm.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/arrow.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/details_close.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/details_open.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/down.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/filter.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/statistics.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/images/up.png create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/CommonUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/alarmConds.js create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/alarmsServerPageTable.js create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/alarmsUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/avalon.modern.js create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/curAlarmsController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-fm/js/delete.me create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/css/dac.css create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/css/dataTables.bootstrap.css create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/css/monitorSetting.css create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/dacList.html create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/i18n/loadi18nApp_ngict-umc-monitor.js create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/i18n/umc-monitor-iui-i18n-en-US.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/i18n/umc-monitor-iui-i18n-zh-CN.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/images/throbber.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/js/dacController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/js/monitorSettingController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/js/monitorSettingUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/monitorSetting.html create mode 100644 umc-iui/src/main/resources/webroot/umc-monitor/monitorSettingList.html create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/delete.me create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/meataskQuery.css create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/performanceChart.css create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/css/pmQueryBox.css create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/index/indexManage.html create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/index/indexView.html create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/meatask/meataskQueryRule.html create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/meatask/meataskQueryView.html create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/html/meataskQueryView.html create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/i18n/delete.me create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/i18n/ngict-pm-iui-i18n-en-US.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/i18n/ngict-pm-iui-i18n-zh-CN.properties create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/aos_view-fm.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/arrow.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/chart.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/delete.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/details_close.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/details_open.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/down.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/filter.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/statistics.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/table.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/images/up.png create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/avalon.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/commonUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/dataRangeUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/delete.me create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/i18n/loadi18n.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/index/indexController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/index/indexManage.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/meatask/echarts.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/meatask/meataskQueryController.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/meatask/performanceChart.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/js/pmUtil.js create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/counters.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/index.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/indexes.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/meatasks_content.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/moType.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/moType1.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resourceType.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resources.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resources1.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatask/resources2.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatasks.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/meatasks_content.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/resourceType.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/test.json create mode 100644 umc-iui/src/main/resources/webroot/umc-pm/json/thresholdList.json create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/css/main.css create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/NS.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/NS1.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VDU.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VDU1.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNF.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNF1.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNFC.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/VNFC1 .png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Bridge.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Computer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Hub.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/InternetServer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/MiniComputer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Multiplexer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Router.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Server.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/Switch.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/TerminalServer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/off/vim.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Bridge.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/BridgeMinus.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/BridgePlus.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Computer.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/ComputerMinusbak.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/ComputerPlusbak.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Computerbak.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Hub.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/HubPlus.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/InternetServer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/MiniComputer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Multiplexer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Router.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Server.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/Switch.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/TerminalServer.gif create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/hostMinus.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/hostPlus.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vdu.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimMinus.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimMinusbak.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimPlus.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/on/vimPlusbak.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/images/vim.png create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/physicalTopology.js create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/serviceTopology.js create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/topoDialog.js create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/js/topoTool.js create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/physicalTopology.html create mode 100644 umc-iui/src/main/resources/webroot/umc-topo/serviceTopology.html diff --git a/nsoc-iui/pom.xml b/nsoc-iui/pom.xml new file mode 100644 index 00000000..a34ec340 --- /dev/null +++ b/nsoc-iui/pom.xml @@ -0,0 +1,31 @@ + + + + 4.0.0 + + org.openo.orchestrator.openoiui + openoiui-parent + 0.0.1-SNAPSHOT + + org.openo.orchestrator.openoiui + nsoc-iui + jar + openo/openoiui/nsoc-iui + Open-O nsoc-iui + diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html b/nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html new file mode 100644 index 00000000..dff2a80a --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/csarPackage.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + + + + + +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css new file mode 100644 index 00000000..18da5d3b --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/datatable-sort.css @@ -0,0 +1,30 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +table.table thead .sorting, +table.table thead .sorting_asc, +table.table thead .sorting_desc, +table.table thead .sorting_asc_disabled, +table.table thead .sorting_desc_disabled { + cursor: pointer; + *cursor: hand; +} + +table.table thead .sorting { background: url('../images/sort_both.png') no-repeat center right; } +table.table thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } +table.table thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } + +table.table thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } +table.table thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css new file mode 100644 index 00000000..220b5172 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/fileupload.css @@ -0,0 +1,81 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@charset "UTF-8"; + +.file-caption { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; +} + +.file-caption .glyphicon { + display: inline-block; + min-width: 18px; + margin-top: 2px; +} + +.file-caption-name { + display: inline-block; + overflow: hidden; + max-height: 20px; + padding-right: 10px; + word-break: break-all; +} + +.file-caption-ellipsis { + position: absolute; + right: 10px; + margin-top: -6px; + font-size: 1.2em; + display: none; + font-weight: bold; + cursor: default; +} + +.file-drop-zone{ + border:1px dashed #aaa; + border-radius:4px; + height:100%; + text-align:center; + vertical-align:middle; + margin:12px 15px 12px 12px; + padding:5px +} +.file-drop-zone-title{ + color:#aaa; + font-size:20px; + padding:20px 10px +} +.fileupload-btn { + padding-bottom: 10px; +} + +.fileupload-input { + position: relative; + display: table; +} + +.file-preview { + border-radius:5px; + border:1px solid #ddd; + padding:5px; + width:100%; + margin-bottom:5px +} + +.upload { + width: 50%; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css new file mode 100644 index 00000000..b637e66d --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/hostMirror.css @@ -0,0 +1,447 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ +.redFont{ + color:red; +} +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-default>i { + color: #aaa; +} + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*增加daterangepicker的css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_host_table_div { + margin-top: 15px; +} + +#ict_host_table_div label { + font-weight: 100; +}s + +#ict_host_table_div table { + width: 100% !important; +} + +.upload { + width:60%; +} +.myPreview { + height: 100px; +} + +.uploadBtn { + margin-top:10px; +} + +.input-group .form-control { + height: 34px !important; +} + +.input-group .btn { + font-size: 14px !important; +} + +.form-horizontal .btn-center { + text-align: center; + margin-bottom: 15px; +} + +.blueactive { + color: #ffffff !important; + background-color: #5b9bd1; +} + +/* .process-modal { + position:fixed; + top:0; + right:0; + bottom:0; + left:0; + z-index:1000; +} +.process-content { + width: 200px; + margin: 200px auto; + padding:15px; + border: 1px solid #ddd; + background-color: #eee; + text-align:center; +} */ \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/package.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/package.css new file mode 100644 index 00000000..e6be6b36 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/package.css @@ -0,0 +1,415 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ +.redFont{ + color:red; +} +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-default>i { + color: #aaa; +} + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*����daterangepicker��css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_package_table_div { + margin-top: 15px; +} + +#ict_package_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_package_table_div table { + width: 100% !important; +} + +.upload { + width:60%; + margin-top: 10px; +} +.myPreview { + height: 100px; +} + +span.status:hover { + color: #2A69AC; + cursor: pointer; +} + +.input-group .form-control { + height: 34px !important; +} + +.input-group .btn { + font-size: 14px !important; +} + +.package-drop-zone-title{ + color:#aaa; + font-size:20px; + padding:15px 10px +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css new file mode 100644 index 00000000..b007c1b9 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/animate.min.css @@ -0,0 +1,21 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@charset "UTF-8";/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2014 Daniel Eden +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css new file mode 100644 index 00000000..6e452b2a --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/platform/skill.css @@ -0,0 +1,89 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: 'Open Sans', sans-serif; + background-color: #f1f3fa; + width: '100%'; + height: '100%'; + margin-top: 10px; +} +div.skills-sunburst{ + font-size: 12px; + font-weight: 400; + text-align:center; +} + +#skillmap .skills-wrapper { + margin-top: 10px; + overflow: auto; +} +#skillmap .skills-sunburst { + float: left; + width: 500px; + margin-left: -80px; +} +#skillmap .skills-sunburst svg { + font: 11px 'Source Sans Pro', sans-serif; + font-weight: 900; + + cursor: pointer; +} +#skillmap .skills-chart { + float: right; + font-family: 'Source Sans Pro', sans-serif; + font-size: 15px; + margin: 80px 20px 0 0; +} +#skillmap .skills-chart .breadcumb-text { + font-size: 13px; + font-weight: 700; +} +#skillmap .skills-chart #skills-chart-line { + fill: none; + stroke-width: 3.5px; +} +#skillmap .skills-chart .axis path, +#skillmap .skills-chart .axis line { + fill: none; +} +#skillmap .skills-chart .x-axis path, +#skillmap .skills-chart .y-axis path { + stroke: #444; + stroke-width: 1px; + shape-rendering: geometricPrecision; +} + +#explanation { + position: absolute; + top: 165px; + left: 170px; + width: 140px; + text-align: center; + color: #666; + margin-top:30px; +} + +#percentage { + font-size: 2em; +} + +#endlabel{ + font-sizte:1.5em; +} + +div.skills-sunburst text{ + text-anchor: middle; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/software.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/software.css new file mode 100644 index 00000000..491a9d93 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/software.css @@ -0,0 +1,423 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ +.redFont{ + color:red; +} +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-default>i { + color: #aaa; +} + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*增加daterangepicker的css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_software_table_div { + margin-top: 10px; +} + +#ict_software_table_div label { + font-weight: 100; +}s + +#ict_software_table_div table { + width: 100% !important; +} + +.upload { + width:60%; +} +.myPreview { + height: 100px; +} + +.uploadBtn { + margin-top:10px; +} + +.file-input { + display: inline; + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; +} + +.input-group .btn { + font-size: 14px !important; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/template.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/template.css new file mode 100644 index 00000000..1de221a7 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/template.css @@ -0,0 +1,405 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ +.redFont{ + color:red; +} +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +a { + text-decoration: none !important; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-default>i { + color: #aaa; +} + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*����daterangepicker��css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_template_table_div { + margin-top: 15px; +} + +#ict_template_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_template_table_div table { + width: 100% !important; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css new file mode 100644 index 00000000..3eb721e6 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/templateDetail.css @@ -0,0 +1,480 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ +.redFont{ + color:red; +} +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +a { + text-decoration: none !important; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:800px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-default>i { + color: #aaa; +} + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="detail-conds-zone"] { + display: inline; +} + +div[data-name="detail-conds-zone"] select,div[data-name="detail-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*����daterangepicker��css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#right-menu { + position:absolute; + top:0; + right:0; + width:420px; + height:100%; + border-left:4px solid rgb(58,174,218); + background-color:rgba(255,255,255,.95); + padding-left:19px; + padding-right:15px; + padding-top:20px; + z-index:9999; + overflow-y: auto; +} + +#right-menu .btn{ + min-width: 30px !important; + letter-spacing :normal !important; +} + +.rigth { + float: right; +} +.right-button-pointer { + display:inline-block; + cursor:pointer +} +.floating-panel { + width:400px; + display:none +} + +title{height:25px;position:relative;top:20px;font-size:15px} + +#ict_nodes_table_div { + margin-top: 15px; +} + +#ict_nodes_table_div label { + font-weight: 100; +} + +#ict_nodes_table_div table { + width: 100% !important; +} + +.nodesDetail { + margin-top: 15px; +} + +.nodesDetail label { + font-weight: 100; +} + +.nodesDetail table { + width:100%; + table-layout: fixed; + word-wrap:break-word; +} + +.step { + text-align: center; + padding-top: 60px; +} + +.step div { + text-align: left; +} + +div.separator-sline { + height:28px ; + width:3px; +} + +.titlefont { + font-size:16px; +} + +.td_nodeId { + font-size: small; +} + +.iconBtn { + margin-left:15px; + min-width:30px; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css new file mode 100644 index 00000000..a4e1d3dd --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/topology.css @@ -0,0 +1,393 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +.container-fluid { + background-color: #fff; + padding: 0; +} + + +div[data-name="topo_zone"] { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +p[tooltip], div[tooltip], td { + overflow: hidden; + text-overflow: ellipsis; +} + + + +.bpContainer { + position: relative; + display: block; + height: 100%; + padding: 40px; +} + + +.box { + position: relative; + display: inline-block; + min-width: 260px; + min-height: 170px; + border-width: 2px; + border-color: #136e9d; + border-style: solid; + background-color: #fff; + vertical-align: top; + padding: 2px; + border-radius: 6px; + margin: 0 60px 40px 0; +} + + +.box .piProgress, .line .piProgress { + position: absolute; + top: -12px; + left: -27px; + z-index: 1; +} +/* .piProgress { + position: relative; + display: inline-block; +} */ +.box .piProgress .circle, .line .piProgress .circle { + background: #136e9d; + border: 2px solid #d3dfe2; + width: 43px; + height: 43px; + top: 5.5px; + left: 5.5px; + border-radius: 21px; + font-size: 14px; +} +.box .piProgress .smallCircle { + background: #136e9d; + border: 2px solid #d3dfe2; + width: 30px; + height: 30px; + left: 11px; + border-radius: 21px; + font-size: 12px; + cursor: pointer; +} +.piProgress .circle, .piProgress .smallCircle { + position: absolute; + display: box; + box-pack: center; + box-align: center; + background-color: #46b8da; + color: #fff; + font-size: 100%; + z-index: 3; +} + +.bpContainer i.gs-node-icon { + position: absolute; + top: 10px; + left: 9px; + font-size: 23px; +} + +.bpContainer i.gs-cp-icon { + position: absolute; + top: 5px; + left: 5px; + font-size: 15px; +} + +.bpContainer .box .head, .bpContainer .line .head { + display: block; + background-color: #136e9d; + color: #fff; + padding: 2px 10px 3px 25px; + border-radius: 3px; + font-size: 20px; + height: 35px; +} + +.bpContainer .box .holder { + display: block; + padding: 5px 25px; + margin-top: 1px; + background-color: #fff; +} + +.bpContainer .box .nest { + min-height:130px; + cursor:pointer; +} + +.bpContainer .box .nest .plus { + position: absolute; + bottom:0; + right:5px; +} + +.bpContainer .box .boxHover~div { + background-color:#eaf1f7; +} + +.bpContainer .boxHover{ + cursor:pointer; +} + +.bpContainer .box .box .appHover{ + cursor:pointer; +} + + +.bpContainer .box .box .appHover p { + background-color:#eaf1f7; +} + +.bpContainer .box .box { + border-color: #3aaeda; + min-width: 170px; + margin: 15px; +} + +.bpContainer .box .box .head { + background-color: #3aaeda; +} + +.bpContainer .box .box .piProgress .circle { + background-color: #3aaeda; +} + +.bpContainer .box .box .holder { + text-align: center; + background-color: #fff; + min-height: 126px; +} + +.bpContainer .box .box .boxHover~div { + background-color:#eaf1f7; +} + +.bpContainer .app { + position: relative; + display: inline-block; + width: 47px; + height: 47px; + text-align: center; + border-radius: 3px; + margin: 10px 0; +} + +.bpContainer .app .piProgress { + top: 0; + left: -6px; +} + +.bpContainer .box .box .piProgress .circle{ + background-color: #3aaeda; +} + +.bpContainer .app p { + position: relative; + top: 50px; + margin: 0; + color: #555869; + text-align: center; + font-size: 15px; +} + + + .coordinates { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; +} + +.bpContainer .box .piProgress .circle>.badge, .bpContainer .line .piProgress .circle>.badge { + position:absolute; + display:inline-block; + z-index:1; + top:-8px; + left:20px; + min-width:20px; + border-radius:10px; + padding:3px!important; + vertical-align:baseline; + white-space:nowrap; + text-align:center; + background-color:#2f3334; + text-decoration:none; + font-size:14px; + color:#fff; + line-height:15px; + font-style:normal; + font-weight:400; + opacity:1 +} + +.header { + border-top:2px solid #4b6b8b; + background-color:#e8edf2; + height:40px; + padding:5px 20px +} + +.header .title { + display:inline-block; + font-size:18px; + color:#29AAEE; + line-height:28px +} + +.containList { + overflow-y:scroll; +} + +div.separator-icon { + text-align: center; + line-height: 0 +} + +.networksContainer{ + white-space:nowrap; + margin:40px 0 0 20px; + height:100% +} + +.networksContainer .network{ + position: relative; + display:inline-block; + text-align:center; + min-width:70px; + margin:0 10px 0 0 +} + +.networksContainer .subnet{ + display:inline-block; + text-align:center; + min-width:70px; + margin:0 10px 0 0 +} + +.networksContainer .subnet .line{ + position:relative; + display:inline-block; + vertical-align:top +} + +.networksContainer .name { + display:block; + width:100%; + background-color:#797B86; + color:#fff; + padding:2px 6px; + border-radius:5px; + text-align:center; + margin:0 0 10px; + overflow:hidden; + cursor: pointer; + text-overflow:ellipsis +} + +.networksContainer .network .name>.badge { + position:absolute; + display:inline-block; + z-index:1; + top:-9px; + right:-9px; + min-width:20px; + border-radius:10px; + padding:3px!important; + vertical-align:baseline; + white-space:nowrap; + text-align:center; + background-color:#2f3334; + text-decoration:none; + font-size:14px; + color:#fff; + line-height:15px; + font-style:normal; + font-weight:400; + opacity:1 +} + +.networksContainer .subnet .line .vlan{ + position:relative; + display:inline-block; + width:21px; + height:500px; + background-color:#149bdf; + color:#fff; + border-radius:5px; + vertical-align:top; + margin:0 10px 0 0; + cursor:pointer +} + +.networksContainer .subnet .vlan .badge { + position:absolute; + display:inline-block; + z-index:1; + top:-8px; + left:10px; + min-width:20px; + border-radius:10px; + padding:3px!important; + vertical-align:baseline; + white-space:nowrap; + text-align:center; + background-color:#2f3334; + text-decoration:none; + font-size:14px; + color:#fff; + line-height:15px; + font-style:normal; + font-weight:400; + opacity:1 +} + +.networksContainer .subnet .line .vlan:last-child{ + margin:0 +} + +.networksContainer .subnet .line .vlan>p{ + position:absolute; + display:block; + transform:rotate(90deg); + -ms-transform:rotate(90deg); + -webkit-transform:rotate(90deg); + white-space:nowrap; + color:#fff; + top:5px; + right:0; + left:1px +} + +.networksContainer .subnet .line .vlan>p.cidr{ + width:200px; + top:auto; + left:-90px; + bottom:85px; + color:#fff; + text-align:right +} + +.topoZone { + display: inline-block; + float: left; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css new file mode 100644 index 00000000..0458cc3d --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/virtualApplication.css @@ -0,0 +1,502 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ +.redFont{ + color:red; +} +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +a { + text-decoration: none !important; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +select { + border-width: 1px; + padding: 2px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-default>i { + color: #aaa; +} + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*����daterangepicker��css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_virtualApplication_table_div { + margin-top: 15px; +} + +#ict_virtualApplication_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_virtualApplication_table_div table { + width: 100% !important; +} + +.uploadBtn { + margin-top:10px; +} + +.btn-operation { + min-width: 30px; + line-height: 1; +} + +tr select { + width: 80px; +} + +.span-action { + float:left; +} + +.btn i { + padding-right: 0 !important; +} + +.vmapp-margin { + margin-bottom: 20px; +} + +.vmapp-form-title { + padding:8px; + margin-bottom:5px; + margin-left:20px; + border-left: 2px solid #5b9bd1; + color:#1A78CA; +} + +.input-group .input-control { + height : 34px !important; +} + +.input-group .input-control[disabled] { + cursor: default; + background-color: #fff; +} + +.input-group .input-group-btn .btn-default { + color: #333; + font-size: 14px; + min-width: 34px; +} + +.modal-scrollable { + overflow: auto !important; +} + +td.icheckbox { + text-align: center; +} + +td .icheckbox_square-aero { + margin-right: 0; +} + +/*卡片面板样式*/ +.hpanel { + background-color: none; + border: none; + box-shadow: none; + margin-bottom: 5px; +} + +.hpanel .panel-body { + border: 1px solid #e4e5e7; + border-radius: 2px; + position: relative; +} + +.hpanel > .panel-footer { + color: inherit; + border: 1px solid #e4e5e7; + border-top: none; + font-size: 90%; + background: #f7f9fa; + height:40px; + padding: 5px 10px; +} + +.hpanel > .panel-footer .pull-right a{ + margin-left: 5px; +} + +.hpanel > .panel-footer .pull-right .btn{ + min-width: 30px !important; +} + +.hpanel_show { + background-color: #f7f9fa; +} + +.hpanel .panel-info { + overflow:hidden; + white-space:nowrap; + text-overflow:ellipsis; +} + +.tipArea { + border-bottom: 1px solid #d4d4d4; + width: 95%; + margin-bottom: 15px; + margin-left: 15px; + padding-bottom: 5px; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css b/nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css new file mode 100644 index 00000000..c4b588b4 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/css/vnfm.css @@ -0,0 +1,492 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ + +.grey { + background-color: #e5e5e5; + color: #333; +} + +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ + + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*增加daterangepicker的css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_res_table_div { + margin-top: 15px; +} + +#ict_res_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_res_table_div table { + width: 100% !important; +} + +.control-label .required { + color: #e02222; + font-size: 12px; + padding-left: 2px; +} + +#ict_vim_table tbody tr{ + cursor:pointer; +} + + +/*卡片面板样式*/ +.animated-panel { + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.hpanel { + background-color: none; + border: none; + box-shadow: none; + margin-bottom: 25px; + +} + +.hpanel .panel-body { + border: 1px solid #e4e5e7; + border-radius: 2px; + padding: 20px; + position: relative; +} +.h-200 { + min-height: 220px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-xl div { + margin-bottom: 15px; +} + +.text-success { + color: #0d638f; +} +.hpanel > .panel-footer { + color: inherit; + border: 1px solid #e4e5e7; + border-top: none; + font-size: 90%; + background: #f7f9fa; + height:40px; + padding: 5px 15px; +} +.color_cloud{ + color:#ccc; +} +.stats-title{ + +} + +h3{ + margin-top: 10px; + margin-bottom: 40px; + font-weight: 200; +} + +.blue-font{ + color:#428bca; +} + +.hpanel > .panel-footer .pull-right a{ + margin-left: 5px; +} + +.hpanel > .panel-footer .pull-right .btn{ + min-width: 30px !important; +} + +.font-bold { + font-weight: 600; + margin-bottom: 15px; +} + +.hpanel_show{ + background-color: #f7f9fa; +} + +.vnfm-padding { + padding-left: 0; +} \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html b/nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html new file mode 100644 index 00000000..29503035 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/hostMirror.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ +
+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties b/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties new file mode 100644 index 00000000..77d757c4 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-en-US.properties @@ -0,0 +1,316 @@ +# +# Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +//table +nfv-nso-iui-table-sLengthMenu=View _MENU_ records +nfv-nso-iui-table-sZeroRecords=No matching records found +nfv-nso-iui-table-sInfo=Found total _TOTAL_ records +nfv-nso-iui-table-sInfoEmpty=No records found to show +nfv-nso-iui-table-sGroupActions=_TOTAL_ records selected: +nfv-nso-iui-table-sAjaxRequestGeneralError=Could not complete request. Please check your internet connection. +nfv-nso-iui-table-sEmptyTable=No data available in table +nfv-nso-iui-table-sPrevious=Prev +nfv-nso-iui-table-sNext=Next +nfv-nso-iui-table-sPage=Page +nfv-nso-iui-table-sPageOf=of +nfv-nso-iui-table-sProcess=Processing... + +//common +nfv-nso-iui-common-tip=Tip: + +//package table colums +nfv-package-iui-title=Package +nfv-package-iui-field-name=Name +nfv-package-iui-field-type=Type +nfv-package-iui-field-size=Size +nfv-package-iui-field-createTime=Create Time +nfv-package-iui-field-status=Status +nfv-package-iui-field-operation=Operation + +nfv-package-iui-status-tip=Taps to Activate +nfv-package-iui-status-active=Activate +nfv-package-iui-status-activating=Activating +nfv-package-iui-status-inactive=Nonactivate +nfv-package-iui-status-deleting =Deleting +nfv-package-iui-status-deletefail = Delete Fail + +nfv-package-iui-message-upload-success=Csar package imported successfully. +nfv-package-iui-message-upload-fail=Csar package imported failed. +nfv-package-iui-message-delete-confirm=Do you want to delete the current package? +nfv-package-iui-message-delete-success=Csar package deleted successfully. +nfv-package-iui-message-upload-csar-exist=The package already exists, whether to re upload? +nfv-package-iui-message-upload-csar-deletionpending=This package is referenced in an instance. whether to re upload? + +nfv-package-iui-drop-zone-title=Drag & drop files here … +nfv-package-iui-drop-zone-selectBtn=Browse +nfv-package-iui-drop-zone-removeBtn=Remove +nfv-package-iui-drop-zone-uploadBtn=Upload + +//template table colums +nfv-template-iui-title=Service Template +nfv-template-iui-field-templatename=Name +nfv-template-iui-field-producttype=Type +nfv-template-iui-field-vendor=Vendor +nfv-template-iui-field-version=Version +nfv-template-iui-field-flavor=Flavor + +//template detail table colums +nfv-templateDetail-iui-title=Node Template +nfv-templateDetail-iui-field-nodeId=ID +nfv-templateDetail-iui-field-nodetypename=Name +nfv-templateDetail-iui-field-type=Type +nfv-templateDetail-iui-field-containedin=Contained In +nfv-templateDetail-iui-field-deployedon=Deployed On +nfv-templateDetail-iui-field-connectedto=Conected To +nfv-templateDetail-iui-field-virtuallinksto=Virtual Links To + +nfv-templateDetail-nodesTab-iui-tab-general=General +nfv-templateDetail-nodesTab-iui-tab-properties=Properties +nfv-templateDetail-nodesTab-iui-tab-relationShips=RelationShips +nfv-templateDetail-nodesTab-iui-field-key=Key +nfv-templateDetail-nodesTab-iui-field-value=Value +nfv-templateDetail-nodesTab-iui-field-property=Property +nfv-templateDetail-nodesTab-iui-field-sourceNodeName=Source Node +nfv-templateDetail-nodesTab-iui-field-targetNodeName=Target Node +nfv-templateDetail-nodesTab-iui-field-type=Type +nfv-templateDetail-nodesTab-iui-btn-close=Close +nfv-templateDetail-nodesTab-iui-title-nodeDetail=Node Detail + +nfv-templateDetail-executionTab-iui-field-currentStepName=Name +nfv-templateDetail-executionTab-iui-field-currentStepStatus=Status +nfv-templateDetail-executionTab-iui-field-currentStepDesc=Description +nfv-templateDetail-executionTab-iui-field-executionTime=Execution Time + +//topo +nfv-topology-iui-vnf-tip=Click to view the nested topology +nfv-topology-iui-btn-return-tip=Return +nfv-topology-iui-message-error=Query Topology Information failed. + +//virtual application table colums +nfv-virtualApplication-iui-title=Lifecycle +nfv-virtualApplication-iui-field-name=Name +nfv-virtualApplication-iui-field-template=Template +nfv-virtualApplication-iui-field-createDate=Create Time +nfv-virtualApplication-iui-field-status=Status +nfv-virtualApplication-iui-field-updateDate=Update Time +nfv-virtualApplication-iui-field-action=Action +nfv-virtualApplication-iui-field-operation=Operation + +nfv-virtualApplication-iui-scale-field-type=Type +nfv-virtualApplication-iui-scale-field-num=Number +nfv-virtualApplication-iui-scale-field-name=Name +nfv-virtualApplication-iui-scale-field-operation=Operation + +nfv-virtualApplication-iui-operation-init=init +nfv-virtualApplication-iui-operation-conf=configure +nfv-virtualApplication-iui-operation-start=start +nfv-virtualApplication-iui-operation-stop=stop +nfv-virtualApplication-iui-operation-scaleIn=scale-in +nfv-virtualApplication-iui-operation-scaleOut=scale-out +nfv-virtualApplication-iui-operation-delete=delete + +nfv-virtualApplication-iui-status-normal=Deployed +nfv-virtualApplication-iui-status-finish=Finish +nfv-virtualApplication-iui-status-failed=Failed + +nfv-virtualApplication-iui-status-processing=Deploying +nfv-virtualApplication-iui-status-init=Deploying +nfv-virtualApplication-iui-status-conf=Configuring +nfv-virtualApplication-iui-status-start=Starting +nfv-virtualApplication-iui-status-stop=Stoping +nfv-virtualApplication-iui-status-scaleIn=Scaling in +nfv-virtualApplication-iui-status-scaleOut=Scaling out +nfv-virtualApplication-iui-status-execute=Executing +nfv-virtualApplication-iui-status-delete=Deleting + +nfv-virtualApplication-iui-text-title=Create Application +nfv-virtualApplication-iui-text-createVm=Create +nfv-virtualApplication-iui-text-name=Name +nfv-virtualApplication-iui-text-description=Description +nfv-virtualApplication-iui-text-template=Template +nfv-virtualApplication-iui-text-templateDes=Template Description +nfv-virtualApplication-iui-text-vnfm=VNFM +nfv-virtualApplication-iui-text-tab-basic=Basic Info +nfv-virtualApplication-iui-text-tab-flavor=Flavor Parameters +nfv-virtualApplication-iui-text-tab-operationParam=Operation Parameters + +nfv-virtualApplication-iui-text-flavor=Flavor +nfv-virtualApplication-iui-text-flavorDesc=Flavor Description +nfv-virtualApplication-iui-text-flavor-numberOfInstances=NumberOfInstances +nfv-virtualApplication-iui-text-flavor-refNodeFlavor=RefNodeFlavor +nfv-virtualApplication-iui-text-flavor-affinity=Affinity +nfv-virtualApplication-iui-text-flavor-redundancyModel=RedundancyModel +nfv-virtualApplication-iui-text-flavor-capability=Capability +nfv-virtualApplication-iui-text-input-planTitle=Plan + +nfv-virtualApplication-iui-text-scale-name=VNF Name +nfv-virtualApplication-iui-text-scale-oeprationType=Operation Type +nfv-virtualApplication-iui-text-scale-oeprationType-type=Type +nfv-virtualApplication-iui-text-scale-oeprationType-instance=Instance +nfv-virtualApplication-iui-text-scale-vduBtn-title=Add VDU +nfv-virtualApplication-iui-text-scale-vnf-title=VNF List +nfv-virtualApplication-iui-text-scale-vnf-name=VNF +nfv-virtualApplication-iui-text-scale-vnf-vduType=VDU Type +nfv-virtualApplication-iui-text-scale-vnf-num=Number +nfv-virtualApplication-iui-text-scale-vnf-vduInstance=VDU Instance +nfv-virtualApplication-iui-text-scale-vnf-numTip=Number +nfv-virtualApplication-iui-text-scale-vnf-nameTip=Name +nfv-virtualApplication-iui-text-scale-type-title=VDU Type +nfv-virtualApplication-iui-text-scale-instance-title=VDU Instance +nfv-virtualApplication-iui-text-scale-instance-cancelBtn=Cancel +nfv-virtualApplication-iui-text-scale-instance-confirmBtn=Confirm +nfv-virtualApplication-iui-text-scale-validate-message=The VNF is already selected +nfv-virtualApplication-iui-text-scale-out-modal-title=ScaleOut Parameters +nfv-virtualApplication-iui-text-scale-in-modal-title=ScaleIn Parameters + +nfv-virtualApplication-iui-text-createBtn=Create +nfv-virtualApplication-iui-text-cancelBtn=Cancel +nfv-virtualApplication-iui-text-confirmBtn=Confirm +nfv-virtualApplication-iui-text-previousBtn=Previous +nfv-virtualApplication-iui-text-nextBtn=Next +nfv-virtualApplication-iui-text-params=Parameters + +nfv-virtualApplication-iui-message-delete-confirm=Do you want to delete the current application? +nfv-virtualApplication-iui-message-delete-success=Application deleted successfully. +nfv-virtualApplication-iui-message-delete-fail = Application deleted failed. +nfv-virtualApplication-iui-message-create-success=Application created successfully. +nfv-virtualApplication-iui-message-create-fail=Application created failed. + +nfv-virtualApplication-iui-validate-instanceName=Please enter a name +nfv-virtualApplication-iui-validate-serviceTemplateName=Please select a service tempalte +nfv-virtualApplication-iui-validate-flavor=Please select a flavor +nfv-virtualApplication-iui-validate-vimId=Please select a VIM +nfv-virtualApplication-iui-validate-vnfmId=Please select a VNFM +nfv-virtualApplication-iui-validate-inputParam=This field is required +nfv-virtualApplication-iui-validate-noinputParam=Don't need to input parameters +nfv-virtualApplication-iui-validate-digits=Please enter only digits +nfv-virtualApplication-iui-validate-range=Please enter a value between {0} and {1} + +//virtual application detail table colums +nfv-virtualApplicationDetail-iui-field-nodeId=ID +nfv-virtualApplicationDetail-iui-field-nodeName=Name +nfv-virtualApplicationDetail-iui-field-nodeType=Node Type +nfv-virtualApplicationDetail-iui-field-templateType=Template Type +nfv-virtualApplicationDetail-iui-field-host=IP +nfv-virtualApplicationDetail-iui-field-createTime=Create Time + +nfv-virtualApplicationDetail-iui-field-currentStepName=Name +nfv-virtualApplicationDetail-iui-field-currentStepStatus=Status +nfv-virtualApplicationDetail-iui-field-percent=Progress +nfv-virtualApplicationDetail-iui-field-currentStepDesc=Description +nfv-virtualApplicationDetail-iui-field-executionTime=Execution Time + +nfv-virtualApplicationDetail-iui-text-events=Events +nfv-virtualApplicationDetail-iui-text-nodeDetail=Node Detail +nfv-virtualApplicationDetail-iui-btn-close=Close + +//host image table colums +nfv-host-iui-title=Image +nfv-host-iui-field-name=Name +nfv-host-iui-field-size=Size +nfv-host-iui-field-vimUser=Tenant +nfv-host-iui-field-createTime=Create Time +nfv-host-iui-field-status=Status +nfv-host-iui-field-progress=Progress +nfv-host-iui-field-operation=Operation + +nfv-host-iui-operation-delete=Delete + +nfv-host-iui-text-title=Upload Image +nfv-host-iui-text-uploadImage=Upload +nfv-host-iui-text-local=Local +nfv-host-iui-text-url=Url +nfv-host-iui-text-image=Image File +nfv-host-iui-text-imageurl=Image Url +nfv-host-iui-text-name=Image Name +nfv-host-iui-text-tenant=Tenant +nfv-host-iui-btn-upload=Upload +nfv-host-iui-btn-cancel=Cancel + +nfv-host-iui-validate-file=Please select a host file +nfv-host-iui-validate-hosturl-required=Please enter a url +nfv-host-iui-validate-hosturl-url=Please enter the right url +nfv-host-iui-validate-hostName=Please enter a host name +nfv-host-iui-validate-vim=Please select a vim + +nfv-host-iui-message-upload-success=Image upload successfully. +nfv-host-iui-message-upload-failed=Image upload fails. +nfv-host-iui-message-delete-confirm=Do you want to delete the current image? +nfv-host-iui-message-delete-success=Image deleted successfully. +nfv-host-iui-message-delete-failed=Image deleted fails. + +nfv-host-iui-progress-uploading=uploading +nfv-host-iui-progress-success=upload success +nfv-host-iui-progress-fail=upload failed + +//software image table colums +nfv-software-iui-title=Software Image +nfv-software-iui-field-name=Name +nfv-software-iui-field-size=Size +nfv-software-iui-field-type=Type +nfv-software-iui-field-version=Version +nfv-software-iui-field-location=Location +nfv-software-iui-field-createTime=Create Time +nfv-software-iui-field-operation=Operation + +nfv-software-iui-action-delete=Delete + +nfv-software-iui-text-title=Upload Image +nfv-software-iui-text-uploadImage=Upload +nfv-software-iui-text-image=Image File +nfv-software-iui-text-image-select=Browse +nfv-software-iui-text-image-remove=Remove +nfv-software-iui-text-type=Type +nfv-software-iui-text-version=Version +nfv-software-iui-btn-upload=Upload +nfv-software-iui-btn-cancel=Cancel + +nfv-software-iui-message-delete-confirm=Do you want to delete the current image? +nfv-software-iui-message-delete-success=Image deleted successfully. + +//vnfm +nfv-vnfm-iui-title=VNFM Manage +nfv-vnfm-iui-message-title=vnfm info +nfv-vnfm-iui-message-query-fail=Query vnfm failed. +nfv-vnfm-iui-message-save-success=Save successfully. +nfv-vnfm-iui-message-save-fail=Save failed. +nfv-vnfm-iui-message-update-success=Update successfully. +nfv-vnfm-iui-message-update-fail=Update failed. +nfv-vnfm-iui-message-delete-confirm=Do you want to delete the current vnfm? +nfv-vnfm-iui-message-delete-success=Vnfm deleted successfully. +nfv-vnfm-iui-message-delete-fail=Vnfm deleted failed. + +nfv-vnfm-iui-test-update=Modify vnfm info +nfv-vnfm-iui-text-register=Register vnfm info +nfv-vnfm-iui-text-name=Name +nfv-vnfm-iui-text-moc=Type +nfv-vnfm-iui-text-vendor=Vendor +nfv-vnfm-iui-text-userName=Username +nfv-vnfm-iui-text-password=Password +nfv-vnfm-iui-text-cancelBtn=cancel +nfv-vnfm-iui-text-saveBtn=save +nfv-vnfm-iui-text-registerBtn=Register +nfv-vnfm-iui-text-status-normal=Normal +nfv-vnfm-iui-text-status-fail=Alarm +nfv-vnfm-iui-text-total=Total +nfv-vnfm-iui-text-total-vnfm= of vnfm + +nfv-vnfm-iui-validate-name=Please enter a name +nfv-vnfm-iui-validate-moc=Please enter the vnfm type +nfv-vnfm-iui-validate-vim=Please select a VIM +nfv-vnfm-iui-validate-url-required=Please enter the URL +nfv-vnfm-iui-validate-url=Please enter the right URL +nfv-vnfm-iui-text-url-tip=Example: http://10.0.0.1 \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties b/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties new file mode 100644 index 00000000..961f7e60 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/i18n/nfv-nso-iui-i18n-zh-CN.properties @@ -0,0 +1,316 @@ +# +# Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +//表格相关 +nfv-nso-iui-table-sLengthMenu=每页 _MENU_ 条结果 +nfv-nso-iui-table-sZeroRecords=没有匹配结果 +nfv-nso-iui-table-sInfo=总共找到 _TOTAL_ 条结果 +nfv-nso-iui-table-sInfoEmpty=共 0 项 +nfv-nso-iui-table-sGroupActions=_TOTAL_ 条结果被选择: +nfv-nso-iui-table-sAjaxRequestGeneralError=不能完成请求,请检查您的网络连接情况。 +nfv-nso-iui-table-sEmptyTable=表中数据为空 +nfv-nso-iui-table-sPrevious=前页 +nfv-nso-iui-table-sNext=下页 +nfv-nso-iui-table-sPage=第 +nfv-nso-iui-table-sPageOf=页,总页数: +nfv-nso-iui-table-sProcess=处理中... + +//common +nfv-nso-iui-common-tip=提示: + +//包管理表格字段名称定义 +nfv-package-iui-title=包管理 +nfv-package-iui-field-name=名称 +nfv-package-iui-field-type=类型 +nfv-package-iui-field-size=大小 +nfv-package-iui-field-createTime=创建时间 +nfv-package-iui-field-status=状态 +nfv-package-iui-field-operation=操作 + +nfv-package-iui-status-tip=点击激活 +nfv-package-iui-status-active=激活 +nfv-package-iui-status-activating=激活中 +nfv-package-iui-status-inactive=未激活 +nfv-package-iui-status-deleting = 删除中 +nfv-package-iui-status-deletefail = 删除失败 + +nfv-package-iui-message-upload-success=包导入成功。 +nfv-package-iui-message-upload-fail=包导入失败。 +nfv-package-iui-message-delete-confirm=确定要删除当前包? +nfv-package-iui-message-delete-success=包删除成功。 +nfv-package-iui-message-upload-csar-exist=包已经存在,是否重新上传? +nfv-package-iui-message-upload-csar-deletionpending=实例中引用了此包,是否重新上传? + +nfv-package-iui-drop-zone-title=拖拽文件到这里 … +nfv-package-iui-drop-zone-selectBtn=选择 +nfv-package-iui-drop-zone-removeBtn=移除 +nfv-package-iui-drop-zone-uploadBtn=上传 + +//模板管理表格字段名称定义 +nfv-template-iui-title=模板管理 +nfv-template-iui-field-templatename=名称 +nfv-template-iui-field-producttype=类型 +nfv-template-iui-field-vendor=厂商 +nfv-template-iui-field-version=版本 +nfv-template-iui-field-flavor=规格 + +//模板明细表格字段名称定义 +nfv-templateDetail-iui-title=节点模板 +nfv-templateDetail-iui-field-nodeId=ID +nfv-templateDetail-iui-field-nodetypename=名称 +nfv-templateDetail-iui-field-type=类型 +nfv-templateDetail-iui-field-containedin=归属 +nfv-templateDetail-iui-field-deployedon=部署 +nfv-templateDetail-iui-field-connectedto=业务连接 +nfv-templateDetail-iui-field-virtuallinksto=网络连接 + +nfv-templateDetail-nodesTab-iui-tab-general=概况 +nfv-templateDetail-nodesTab-iui-tab-properties=属性 +nfv-templateDetail-nodesTab-iui-tab-relationShips=关系 +nfv-templateDetail-nodesTab-iui-field-key=关键字 +nfv-templateDetail-nodesTab-iui-field-value=值 +nfv-templateDetail-nodesTab-iui-field-property=属性 +nfv-templateDetail-nodesTab-iui-field-sourceNodeName=源节点 +nfv-templateDetail-nodesTab-iui-field-targetNodeName=目标节点 +nfv-templateDetail-nodesTab-iui-field-type=类型 +nfv-templateDetail-nodesTab-iui-btn-close=关闭 +nfv-templateDetail-nodesTab-iui-title-nodeDetail=节点详情 + +nfv-templateDetail-executionTab-iui-field-currentStepName=名称 +nfv-templateDetail-executionTab-iui-field-currentStepStatus=状态 +nfv-templateDetail-executionTab-iui-field-currentStepDesc=描述 +nfv-templateDetail-executionTab-iui-field-executionTime=执行时间 + +//topo +nfv-topology-iui-vnf-tip=点击查看嵌套拓扑图 +nfv-topology-iui-btn-return-tip=返回 +nfv-topology-iui-message-error=查询拓扑图模板信息失败 + +//虚拟应用表格字段名称定义 +nfv-virtualApplication-iui-title=生命周期管理 +nfv-virtualApplication-iui-field-name=名称 +nfv-virtualApplication-iui-field-template=模板 +nfv-virtualApplication-iui-field-createDate=创建时间 +nfv-virtualApplication-iui-field-status=状态 +nfv-virtualApplication-iui-field-updateDate=更新时间 +nfv-virtualApplication-iui-field-action=动作 +nfv-virtualApplication-iui-field-operation=操作 + +nfv-virtualApplication-iui-scale-field-type=类型 +nfv-virtualApplication-iui-scale-field-num=数量 +nfv-virtualApplication-iui-scale-field-name=名称 +nfv-virtualApplication-iui-scale-field-operation=操作 + +nfv-virtualApplication-iui-operation-init=部署 +nfv-virtualApplication-iui-operation-conf=配置 +nfv-virtualApplication-iui-operation-start=启动 +nfv-virtualApplication-iui-operation-stop=停止 +nfv-virtualApplication-iui-operation-scaleIn=缩容 +nfv-virtualApplication-iui-operation-scaleOut=扩容 +nfv-virtualApplication-iui-operation-delete=删除 + +nfv-virtualApplication-iui-status-normal=已部署 +nfv-virtualApplication-iui-status-finish=执行完成 +nfv-virtualApplication-iui-status-failed=执行失败 + +nfv-virtualApplication-iui-status-processing=部署中 +nfv-virtualApplication-iui-status-execute=执行中 +nfv-virtualApplication-iui-status-init=部署中 +nfv-virtualApplication-iui-status-conf=配置执行中 +nfv-virtualApplication-iui-status-start=启动执行中 +nfv-virtualApplication-iui-status-stop=停止执行中 +nfv-virtualApplication-iui-status-scaleIn=缩容执行中 +nfv-virtualApplication-iui-status-scaleOut=扩容执行中 +nfv-virtualApplication-iui-status-delete=删除执行中 + +nfv-virtualApplication-iui-text-title=创建应用 +nfv-virtualApplication-iui-text-createVm=创建应用 +nfv-virtualApplication-iui-text-name=名称 +nfv-virtualApplication-iui-text-description=描述 +nfv-virtualApplication-iui-text-template=模板 +nfv-virtualApplication-iui-text-templateDes=模板描述 +nfv-virtualApplication-iui-text-vnfm=VNFM +nfv-virtualApplication-iui-text-tab-basic=基本信息 +nfv-virtualApplication-iui-text-tab-flavor=规格参数 +nfv-virtualApplication-iui-text-tab-operationParam=输入参数 + +nfv-virtualApplication-iui-text-flavor=规格 +nfv-virtualApplication-iui-text-flavorDesc=规格描述 +nfv-virtualApplication-iui-text-flavor-numberOfInstances=实例数 +nfv-virtualApplication-iui-text-flavor-refNodeFlavor=引用规格 +nfv-virtualApplication-iui-text-flavor-affinity=亲和力 +nfv-virtualApplication-iui-text-flavor-redundancyModel=容灾模式 +nfv-virtualApplication-iui-text-flavor-capability=能力 +nfv-virtualApplication-iui-text-input-planTitle=Plan + +nfv-virtualApplication-iui-text-scale-name=VNF名称 +nfv-virtualApplication-iui-text-scale-oeprationType=操作类型 +nfv-virtualApplication-iui-text-scale-oeprationType-type=类型 +nfv-virtualApplication-iui-text-scale-oeprationType-instance=实例 +nfv-virtualApplication-iui-text-scale-vduBtn-title=添加VDU +nfv-virtualApplication-iui-text-scale-vnf-title=已选择的VNF +nfv-virtualApplication-iui-text-scale-vnf-name=VNF +nfv-virtualApplication-iui-text-scale-vnf-vduType=VDU类型 +nfv-virtualApplication-iui-text-scale-vnf-num=数量 +nfv-virtualApplication-iui-text-scale-vnf-vduInstance=VDU实例 +nfv-virtualApplication-iui-text-scale-vnf-numTip=实例数 +nfv-virtualApplication-iui-text-scale-vnf-nameTip=名称 +nfv-virtualApplication-iui-text-scale-type-title=VDU类型 +nfv-virtualApplication-iui-text-scale-instance-title=VDU实例 +nfv-virtualApplication-iui-text-scale-instance-cancelBtn=取消 +nfv-virtualApplication-iui-text-scale-instance-confirmBtn=确定 +nfv-virtualApplication-iui-text-scale-validate-message=该VNF已选择 +nfv-virtualApplication-iui-text-scale-out-modal-title=扩容参数 +nfv-virtualApplication-iui-text-scale-in-modal-title=缩容参数 + +nfv-virtualApplication-iui-text-createBtn=创建 +nfv-virtualApplication-iui-text-cancelBtn=取消 +nfv-virtualApplication-iui-text-previousBtn=上一步 +nfv-virtualApplication-iui-text-nextBtn=下一步 +nfv-virtualApplication-iui-text-confirmBtn=确定 +nfv-virtualApplication-iui-text-params=参数 + +nfv-virtualApplication-iui-message-delete-confirm=确定要删除当前应用? +nfv-virtualApplication-iui-message-delete-success=应用删除成功。 +nfv-virtualApplication-iui-message-delete-fail=应用删除失败。 +nfv-virtualApplication-iui-message-create-success=应用创建成功。 +nfv-virtualApplication-iui-message-create-fail=应用创建失败。 + +nfv-virtualApplication-iui-validate-instanceName=请输入名称 +nfv-virtualApplication-iui-validate-serviceTemplateName=请选择服务模板 +nfv-virtualApplication-iui-validate-flavor=请选择规格 +nfv-virtualApplication-iui-validate-vimId=请选择VIM +nfv-virtualApplication-iui-validate-vnfmId=请选择VNFM +nfv-virtualApplication-iui-validate-inputParam=请输入参数 +nfv-virtualApplication-iui-validate-noinputParam=无需输入参数 +nfv-virtualApplication-iui-validate-digits=只能输入整数 +nfv-virtualApplication-iui-validate-range=请输入在 {0} 和 {1} 之间的值 + +//节点明细表格字段名称定义 +nfv-virtualApplicationDetail-iui-field-nodeId=ID +nfv-virtualApplicationDetail-iui-field-nodeName=名称 +nfv-virtualApplicationDetail-iui-field-nodeType=节点类型 +nfv-virtualApplicationDetail-iui-field-templateType=模板类型 +nfv-virtualApplicationDetail-iui-field-host=IP +nfv-virtualApplicationDetail-iui-field-createTime=创建时间 + +nfv-virtualApplicationDetail-iui-field-currentStepName=名称 +nfv-virtualApplicationDetail-iui-field-currentStepStatus=状态 +nfv-virtualApplicationDetail-iui-field-percent=当前进度 +nfv-virtualApplicationDetail-iui-field-currentStepDesc=描述 +nfv-virtualApplicationDetail-iui-field-executionTime=执行时间 + +nfv-virtualApplicationDetail-iui-text-events=事件 +nfv-virtualApplicationDetail-iui-text-nodeDetail=节点详情 +nfv-virtualApplicationDetail-iui-btn-close=关闭 + +//主机镜像表格字段名称定义 +nfv-host-iui-title=主机镜像 +nfv-host-iui-field-name=名称 +nfv-host-iui-field-size=大小 +nfv-host-iui-field-vimUser=租户 +nfv-host-iui-field-createTime=创建时间 +nfv-host-iui-field-status=状态 +nfv-host-iui-field-progress=进度 +nfv-host-iui-field-operation=操作 + +nfv-host-iui-operation-delete=删除 + +nfv-host-iui-text-title=上传镜像 +nfv-host-iui-text-uploadImage=上传镜像 +nfv-host-iui-text-local=本地上传 +nfv-host-iui-text-url=URL上传 +nfv-host-iui-text-image=镜像文件 +nfv-host-iui-text-imageurl=镜像URL +nfv-host-iui-text-name=镜像名称 +nfv-host-iui-text-tenant=租户 +nfv-host-iui-btn-upload=上传 +nfv-host-iui-btn-cancel=取消 + +nfv-host-iui-validate-file=请选择镜像文件 +nfv-host-iui-validate-hosturl-required=请输入URL地址 +nfv-host-iui-validate-hosturl-url=请输入正确的URL地址 +nfv-host-iui-validate-hostName=请输入镜像名称 +nfv-host-iui-validate-vim=请选择VIM + +nfv-host-iui-message-upload-success=镜像上传成功。 +nfv-host-iui-message-upload-failed=镜像上传失败。 +nfv-host-iui-message-delete-confirm=确定要删除当前镜像? +nfv-host-iui-message-delete-success=镜像删除成功。 +nfv-host-iui-message-delete-failed=镜像删除失败。 + +nfv-host-iui-progress-uploading=上传中 +nfv-host-iui-progress-success=上传成功 +nfv-host-iui-progress-fail=上传失败 + +//软件镜像表格字段名称定义 +nfv-software-iui-title=软件镜像 +nfv-software-iui-field-name=名称 +nfv-software-iui-field-size=大小 +nfv-software-iui-field-type=类型 +nfv-software-iui-field-version=版本 +nfv-software-iui-field-location=位置 +nfv-software-iui-field-createTime=创建时间 +nfv-software-iui-field-operation=操作 + +nfv-software-iui-action-delete=删除 + +nfv-software-iui-text-title=上传镜像 +nfv-software-iui-text-uploadImage=上传镜像 +nfv-software-iui-text-image=镜像文件 +nfv-software-iui-text-image-select=选择 +nfv-software-iui-text-image-remove=移除 +nfv-software-iui-text-type=类型 +nfv-software-iui-text-version=版本 +nfv-software-iui-btn-upload=上传 +nfv-software-iui-btn-cancel=取消 + +nfv-software-iui-message-delete-confirm=确定要删除当前镜像? +nfv-software-iui-message-delete-success=镜像删除成功。 + +//vnfm +nfv-vnfm-iui-title=VNFM管理 +nfv-vnfm-iui-message-title=vnfm信息 +nfv-vnfm-iui-message-query-fail=查询vnfm失败。 +nfv-vnfm-iui-message-save-success=保存成功。 +nfv-vnfm-iui-message-save-fail=保存失败。 +nfv-vnfm-iui-message-update-success=修改成功。 +nfv-vnfm-iui-message-update-fail=修改失败。 +nfv-vnfm-iui-message-delete-confirm=确定删除所选vnfm信息? +nfv-vnfm-iui-message-delete-success=删除成功 +nfv-vnfm-iui-message-delete-fail=删除失败 + +nfv-vnfm-iui-test-update=修改vnfm信息 +nfv-vnfm-iui-text-register=注册vnfm信息 +nfv-vnfm-iui-text-name=名称 +nfv-vnfm-iui-text-moc=类型 +nfv-vnfm-iui-text-vendor=厂商 +nfv-vnfm-iui-text-userName=接入用户 +nfv-vnfm-iui-text-password=接入密码 +nfv-vnfm-iui-text-cancelBtn=取消 +nfv-vnfm-iui-text-saveBtn=保存 +nfv-vnfm-iui-text-registerBtn=注册vnfm +nfv-vnfm-iui-text-status-normal=正常 +nfv-vnfm-iui-text-status-fail=报警 +nfv-vnfm-iui-text-total=共 +nfv-vnfm-iui-text-total-vnfm= vnfm + +nfv-vnfm-iui-validate-name=请输入名称 +nfv-vnfm-iui-validate-moc=请输入vnfm类型 +nfv-vnfm-iui-validate-vim=请选择VIM +nfv-vnfm-iui-validate-url-required=请输入URL +nfv-vnfm-iui-validate-url=请输入正确的URL +nfv-vnfm-iui-text-url-tip=例如:http://10.0.0.1 \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/down.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/down.png new file mode 100644 index 00000000..f7732ba8 Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/down.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png new file mode 100644 index 00000000..cdba2dfc Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_blue.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png new file mode 100644 index 00000000..18ba67ed Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/pointes_green.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png new file mode 100644 index 00000000..a88d7975 Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png new file mode 100644 index 00000000..fb11dfe2 Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_asc_disabled.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png new file mode 100644 index 00000000..18670406 Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_both.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png new file mode 100644 index 00000000..def071ed Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png new file mode 100644 index 00000000..c9fdd8a1 Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/sort_desc_disabled.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/images/up.png b/nsoc-iui/src/main/resources/webroot/nsoc/images/up.png new file mode 100644 index 00000000..8bd53741 Binary files /dev/null and b/nsoc-iui/src/main/resources/webroot/nsoc/images/up.png differ diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/js/component/commonUtil.js b/nsoc-iui/src/main/resources/webroot/nsoc/js/component/commonUtil.js new file mode 100644 index 00000000..abc4cd63 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/js/component/commonUtil.js @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var commonUtil = {}; +commonUtil.arrayRemove = function( aryInstance , index ){ + if(aryInstance == undefined || aryInstance == null){ + return; + } + for(var i=0,n=0;i 2006-07-02 08:09:04.423 +// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 +commonUtil.parseDate = function( dateObj , format){ + var o = { + "M+" : dateObj.getMonth()+1, //month + "d+" : dateObj.getDate(), //day + "h+" : dateObj.getHours(), //hour + "m+" : dateObj.getMinutes(), //minute + "s+" : dateObj.getSeconds(), //second + "q+" : Math.floor((dateObj.getMonth()+3)/3), //quarter + "S" : dateObj.getMilliseconds() //millisecond + } + if(/(y+)/.test(format)) format=format.replace(RegExp.$1, + (dateObj.getFullYear()+"").substr(4 - RegExp.$1.length)); + for(var k in o) + if(new RegExp("("+ k +")").test(format)) + format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : + ("00"+ o[k]).substr((""+ o[k]).length)); + return format; +}; + +//tooltip +commonUtil.showMessage = function(message, type) { + $.growl({ + icon: "fa fa-envelope-o fa-lg", + title: "  " + $.i18n.prop("nfv-nso-iui-common-tip"), + message: message + },{ + type: type + }); +}; + +commonUtil.registerCometdMessage = function(url, channel, callback) { + var cometd = new $.Cometd(); + var cometdURL = location.protocol + "//" + location.host + url; + cometd.configure({ + url : cometdURL, + logLevel : "info" + }); + // unregister websocket transport, use long-polling transport + cometd.unregisterTransport('websocket'); + // store channel object parameters(this object include channel and callback function), start from arguments[1] + var _args = arguments; + + cometd.addListener("/meta/handshake", function(handshake){ + if(handshake.successful === true) { + cometd.batch(function() { + //subscribe channel + cometd.subscribe(channel, function(message){ + callback.call(this, message.data); + }); + }); + } + }); + cometd.handshake(); +} + +commonUtil.format = function() { + if(arguments.length == 0) { + return null; + } + var str = arguments[0]; + for(var i=0; i ' + oLang.sPage + ' ' + + '' + + '' + + ' ' + + oLang.sPageOf + ' ' + + '' + ); + + var els = $('a', nPaging); + + $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler ); + $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler); + + $('.pagination-panel-input', nPaging).bind('change.DT', function(e) { + var oPaging = oSettings.oInstance.fnPagingInfo(); + e.preventDefault(); + var page = parseInt($(this).val()); + if (page > 0 && page < oPaging.iTotalPages) { + if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) { + fnDraw( oSettings ); + } + } else { + $(this).val(oPaging.iPage + 1); + } + }); + + $('.pagination-panel-input', nPaging).bind('keypress.DT', function(e) { + var oPaging = oSettings.oInstance.fnPagingInfo(); + if (e.which == 13) { + var page = parseInt($(this).val()); + if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) { + if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) { + fnDraw( oSettings ); + } + } else { + $(this).val(oPaging.iPage + 1); + } + e.preventDefault(); + } + }); + }, + + "fnUpdate": function ( oSettings, fnDraw ) { + var iListLength = 5; + var oPaging = oSettings.oInstance.fnPagingInfo(); + var an = oSettings.aanFeatures.p; + var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2); + + if ( oPaging.iTotalPages < iListLength) { + iStart = 1; + iEnd = oPaging.iTotalPages; + } + else if ( oPaging.iPage <= iHalf ) { + iStart = 1; + iEnd = iListLength; + } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) { + iStart = oPaging.iTotalPages - iListLength + 1; + iEnd = oPaging.iTotalPages; + } else { + iStart = oPaging.iPage - iHalf + 1; + iEnd = iStart + iListLength - 1; + } + + + for ( i=0, iLen=an.length ; i'+j+'') + .insertBefore( $('li.next:first', an[i])[0] ) + .bind('click', function (e) { + e.preventDefault(); + oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength; + fnDraw( oSettings ); + } ); + } + + // Add / remove disabled classes from the static elements + if ( oPaging.iPage === 0 ) { + $('a.prev', an[i]).addClass('disabled'); + } else { + $('a.prev', an[i]).removeClass('disabled'); + } + + if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) { + $('a.next', an[i]).addClass('disabled'); + } else { + $('a.next', an[i]).removeClass('disabled'); + } + } + } + } +} ); + +serverPageTable.getRestPara = function( cond , tableSetting ){ + var pageNo=tableSetting._iDisplayStart/tableSetting._iDisplayLength+1; + var pageSize = tableSetting._iDisplayLength; + var queryParameter={"pageNo":pageNo,"pageSize":tableSetting._iDisplayLength,groupId:["it.group.database=02","it.group.server=01"]}, + newData={"data":JSON.stringify(queryParameter)}; + //put the pageinfo in cond if there is a pageinfo + var pageInfo = vm.logInfo[vm.logType].pageInfo; + if(pageInfo != null && serverPageTable.perpagenumber == pageSize){ + cond.idEnd = pageInfo.pageStart[pageNo - 1]; + cond.idStart = pageInfo.pageStart[pageNo]; + if(!cond.idStart){ //the last page + cond.idStart = 0; + } + + }else{ + delete cond.idStart; + delete cond.idEnd; + vm.logInfo[vm.logType].pageInfo = null; + pageNo = 1; + tableSetting._iDisplayStart = 0; + } + var data = { + cond:JSON.stringify(cond), + perpagenumber:pageSize, + pageNo:pageNo, + needPageInfo:vm.logInfo[vm.logType].pageInfo == null + }; + serverPageTable.perpagenumber = pageSize; + return data; +}; + + + +serverPageTable.initDataTable = function( setting ,cond , divId) { + //transform colomn + var column = setting.columns; + //empty table + $('#'+ divId).children().remove(); + var tableId = setting.tableId; + var tableEleStr = '' + + '' + +'' + + '' + + '' + +'' + +'' + +'
'; + $('#'+ divId).append(tableEleStr); + //$('#'+ tableId).append(' '); + var trEle = $('#'+ tableId + ' > thead >tr'); + //var dataTableColumn = []; + for ( var one in column){ + var th = '' + column[one].name + ''; + trEle.append(th); + } + var table = $("#" + tableId).dataTable({ + //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout + //"sDom" : "<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>", + "sDom": '<"top"rt><"bottom"lip>', + "oLanguage": setting.language,//language + //"bJQueryUI": true, + "bPaginate": setting.paginate,// page button + "bFilter": false,// search bar + "bAutoWidth":true,//automatically set colum width + "bLengthChange": true,// record number in each row + "iDisplayLength": 10,// row number in each page + "bSort": setting.sort ? true : false,// sort + "bInfo": setting.info,// Showing 1 to 10 of 23 entries + "bWidth": true, + "bScrollCollapse": true, + "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button + "bProcessing": true, + "bServerSide": false, + "bDestroy": true, + "bSortCellsTop": true, + "sAjaxSource": setting.restUrl, + "aoColumns": setting.columns, + "aoColumnDefs": [ + { + sDefaultContent: '', + aTargets: [ '_all' ] + } + ], + "fnServerData": function (sSource, aoData, fnCallback, oSettings) { + oSettings.jqXHR = $.ajax({ + "type": 'get', + "url": sSource, + "dataType": "json", + //"data":serverPageTable.getRestPara(cond,oSettings), + "success": function (resp) { + oSettings.iDraw = oSettings.iDraw + 1; + + resp = resp || []; + var data = {}; + data.aaData = resp; + var totalCounts = resp.length; + + data.iTotalRecords = totalCounts; + data.iTotalDisplayRecords = totalCounts; + data.sEcho = oSettings; + fnCallback(data); + }, + "error": function(resp) { + var data = {}; + data.aaData = []; + var totalCounts = 0; + + data.iTotalRecords = totalCounts; + data.iTotalDisplayRecords = totalCounts; + data.sEcho = oSettings; + fnCallback(data); + } + }); + } + }); +}; + +serverPageTable.initTableWithData = function( setting , divId , tableData) { + //transform colomn + var column = setting.columns; + //empty table + $('#'+ divId).children().remove(); + var tableId = setting.tableId; + var tableEleStr = '' + + '' + +'' + + '' + + '' + +'' + +'' + +'
'; + $('#'+ divId).append(tableEleStr); + var trEle = $('#'+ tableId + ' > thead >tr'); + for ( var one in column){ + var th = '' + column[one].name + ''; + trEle.append(th); + } + var table = $("#" + tableId).dataTable({ + "sDom" : "<'row'<'col-md-12 col-sm-12'lip>r>>", + "oLanguage": setting.language,//language + //"bJQueryUI": true, + "bPaginate": setting.paginate,// page button + "bFilter": false,// search bar + "bAutoWidth":true,//automatically set the column width + "bLengthChange": true,// record number in each row + "iDisplayLength": 10,// row number in each page + "bSort": setting.sort ? true : false,// sort + "bInfo": setting.info,// Showing 1 to 10 of 23 entries + "bWidth": true, + "bScrollCollapse": true, + "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button + "bProcessing": false, + "bServerSide": false, + "bDestroy": true, + "bSortCellsTop": true, + "sAjaxSource": tableData, + "aoColumns": setting.columns, + "fnServerData": function (sSource, aoData, fnCallback, oSettings) { + oSettings.iDraw = oSettings.iDraw + 1; + var resp = tableData || []; + var data = {}; + data.aaData = resp; + var totalCounts = resp.length; + + data.iTotalRecords = totalCounts; + data.iTotalDisplayRecords = totalCounts; + data.sEcho = oSettings; + fnCallback(data); + } + }); +}; + + +serverPageTable.initDataTableForEvent = function( setting ,cond , divId) { + //transform colomn + var column = setting.columns; + //empty table + $('#'+ divId).children().remove(); + var tableId = setting.tableId; + var tableEleStr = '' + + '' + +'' + + '' + + '' + +'' + +'' + +'
'; + $('#'+ divId).append(tableEleStr); + var trEle = $('#'+ tableId + ' > thead >tr'); + for ( var one in column){ + var th = '' + column[one].name + ''; + trEle.append(th); + } + var table = $("#" + tableId).dataTable({ + "sDom": '<"top"rt><"bottom"lip>', + "oLanguage": setting.language,//language + //"bJQueryUI": true, + "bPaginate": setting.paginate,// page button + "bFilter": false,// search bar + "bAutoWidth":true,//automatically set the column width + "bLengthChange": true,// record number in each row + "iDisplayLength": 10,// row number in each page + "bSort": setting.sort ? true : false,// 排序 + "bInfo": setting.info,// Showing 1 to 10 of 23 entries + "bWidth": true, + "bScrollCollapse": true, + "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button + "bProcessing": true, + "bServerSide": false, + "bDestroy": true, + "bSortCellsTop": true, + "sAjaxSource": setting.restUrl, + "aoColumns": setting.columns, + "aoColumnDefs": [ + { + sDefaultContent: '', + aTargets: [ '_all' ] + } + ], + "fnServerData": function (sSource, aoData, fnCallback, oSettings) { + oSettings.jqXHR = $.ajax({ + "type": 'get', + "url": sSource, + "dataType": "json", + //"data":serverPageTable.getRestPara(cond,oSettings), + "success": function (resp) { + oSettings.iDraw = oSettings.iDraw + 1; + + var result = []; + for(var i=0;i  " + +$.i18n.prop("nfv-nso-iui-table-sProcess")+"", + "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"), + "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"), + "sInfo": " " + $.i18n.prop("nfv-nso-iui-table-sInfo"), + "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"), + "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"), + "sAjaxRequestGeneralError":$.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"), + "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"), + "oPaginate": { + "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"), + "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"), + "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"), + "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf") + } + }, + $restUrl : { + uploadHostImage: '/api/nsoc/v1/hostimages', + queryHostInfoUrl: "/api/nsoc/v1/hostimages", + delHostUrl: "/api/nsoc/v1/hostimages/", + updateHostUrl: "/api/nsoc/v1/hostimages/", + queryVimInfoUrl : "/api/roc/v1/resource/vims" + }, + $initTable: function() { + var setting = { + language : vm.$language, + paginate : true, + info : true, + columns : vm.$hostTableFields.table, + restUrl : vm.$restUrl.queryHostInfoUrl, + tableId : vm.$tableId + }; + serverPageTable.initDataTable(setting, {}, vm.$tableId + '_div'); + }, + uploadHostImage : { + vimSelectItems : [], + tenant : "", + localVisible : true, + /*$initUpload : function() { + var fileLanguage = getLanguage(); + if (lang == "zh-CN") { + fileLanguage = "zh"; + } else { + fileLanguage = "en"; + } + $("#hostfile").fileinput({ + language: fileLanguage, + showPreview : false, + showUpload : false, + uploadExtraData : function(){ + var index = $("#vim").val(); + var selectVim = vm.uploadHostImage.vimSelectItems[index]; + var vimid = selectVim.oid; + var extraData = { + url : $("#hosturl").val(), + name : $("#hostName").val(), + vimid : vimid + } + return extraData; + }, + uploadUrl : vm.$restUrl.uploadHostImage, + layoutTemplates : {progress : ''}, //hide progress + ajaxSettings : { + success : function(resp) { + commonUtil.showMessage($.i18n.prop("nfv-host-iui-message-upload-success"), "success"); + refreshByCond(); + }, + error : function(resp) { + commonUtil.showMessage($.i18n.prop("nfv-host-iui-message-upload-failed"), "warning"); + } + } + }); + },*/ + $initUpload : function() { + var maxChunkSize = 20000000; //20M + $("#hostForm").fileupload({ + url : vm.$restUrl.uploadHostImage, + maxNumberOfFiles : 1, + maxChunkSize : maxChunkSize, + autoUpload : false, + add : function(e, data) { + $("#fileName").text(data.files[0].name); + $("#fileremove").attr("disabled", false); + + $("#uploadBtn").remove(); + $('').insertAfter('.fileinput-upload-button'); + $('#confirm').on('click', function(e){ + e.preventDefault(); + + var fileName = $('.file-caption-name').eq(0).text(); + var existPackage = pmUtil.getExistPackageByName(fileName); + if(existPackage == 0){//0:package is not exist + $('a.fileinput-upload-button').trigger('click'); + return; + } + var msg = ""; + if(existPackage == 1){//1:package not exist, instance reference this csar + msg = $.i18n.prop("nfv-package-iui-message-upload-csar-deletionpending"); + } + if(existPackage == 2){//2:package exist + msg = $.i18n.prop("nfv-package-iui-message-upload-csar-exist"); + } + + bootbox.confirm(msg, function(result){ + if(result) { + $('a.fileinput-upload-button').trigger('click'); + } + }); + }); + },*/ + $initUpload : function() { + $("#fileupload").fileupload({ + url : vm.$restUrl.uploadPackageUrl, + dropZone: $('#dropzone'), + maxNumberOfFiles : 1, + maxChunkSize : 20000000, //20M + autoUpload : false, + add : function(e, data) { + $("#bar").css('width', '0%'); + $("#persent").text('0%'); + $("#fileName").text(data.files[0].name); + $("#fileremove").attr("disabled", false); + $("#filesubmit").attr("disabled", false); + + $("#filesubmit").remove(); + $(''; +}; + +vmAppUtil.statusRender = function(obj) { + var attr = 'class="label label-success"'; + var status = $.i18n.prop("nfv-virtualApplication-iui-status-" + obj.aData.instanceStatus); + if (obj.aData.instanceStatus == "failed") { + attr = 'class="label label-danger"'; + } else if (obj.aData.instanceStatus == "processing") { + status = $.i18n.prop("nfv-virtualApplication-iui-status-" + obj.aData.instanceOperating); + if (status.indexOf("nfv-virtualApplication") > -1) { + status = $.i18n.prop("nfv-virtualApplication-iui-status-execute"); + } + } + return '' + status + ''; +}; + +vmAppUtil.delRender = function(obj) { + return ''; +}; + +vmAppUtil.dateRender = function(obj) { + var date = new Date(obj.aData[obj.mDataProp]); + return commonUtil.parseDate(date, "yyyy-MM-dd hh:mm:ss"); +}; + +vmAppUtil.deleteVmApp = function(instanceId, servicetemplateid) { + bootbox.confirm($.i18n.prop("nfv-virtualApplication-iui-message-delete-confirm"), function(result){ + if(result) { + var url = vm.$restUrl.deleteAppinstancesUrl + instanceId; + $.ajax({ + type : "delete", + url : url, + dataType : "json", + success : function(resp) { + if(resp.deleteresult == "true"){ + var packageurl = vm.$restUrl.delInstanceTemplateUrl + servicetemplateid; + commonUtil.delete(packageurl, function(resp) { + refreshByCond(); + }); + }else{ + commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-delete-fail"), vmAppUtil.TYPE_DANGER); + refreshByCond(); + } + }, + error : function() { + commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-delete-fail"), vmAppUtil.TYPE_DANGER); + refreshByCond(); + } + }); + } + }); +}; + +vmAppUtil.execute = function(row) { + var oSelect = $("tbody tr select").eq(row); + var operation = oSelect.find("option:selected").val(); + if (operation) { + var table = $('#' + vm.$tableId).dataTable(); + var templateId = table.fnGetData(row)["serviceTemplateId"]; + var url = vm.$restUrl.queryOperationParamsUrl + templateId + "/operations/" + operation + "/parameters"; + //query operation params + commonUtil.get(url, null, function(data) { + //empty operation params + vm.vmAppDialog.operationParams = []; + //empty template input params + vm.vmAppDialog.templateInputParams = []; + if(vmAppUtil.isScaleOperation(operation)) { + vm.vmAppScaleDialog.operation = operation; + vm.vmAppScaleDialog.currentRow = row; + vm.vmAppScaleDialog.instanceId = table.fnGetData(row)["instanceId"]; + vm.vmAppScaleDialog.templateId = templateId; + vm.vmAppScaleDialog.$initScaleParams(); + $("#scaleModal").modal("show"); + } else if ((data && data.length > 0)) { + vm.vmAppDialog.type = "execute"; + vm.vmAppDialog.title = $.i18n.prop("nfv-virtualApplication-iui-text-params"); + vm.vmAppDialog.btnTitle = $.i18n.prop("nfv-virtualApplication-iui-text-confirmBtn"); + vm.vmAppDialog.operation = operation; + vm.vmAppDialog.currentRow = row; + vm.vmAppDialog.templateId = templateId; + vm.vmAppDialog.operationParams = data; + vm.vmAppDialog.$initData(); + $("#vmAppDialog").modal("show"); + } else { + var group = { + flavor : "", + flavorParams : [], + operationParams : [] + } + vmAppUtil.executeOperation(group, row, operation); + } + }); + } +}; + +vmAppUtil.executeOperation = function(group, row, operation) { + vmAppUtil.changeBtnStatus("processing", operation, row, true); + var table = $('#' + vm.$tableId).dataTable(); + var instanceId = table.fnGetData(row)["instanceId"]; + var url = vm.$restUrl.executeOperationUrl + instanceId + "/operations/" + operation; + $.ajax({ + type : "POST", + url : url, + data : JSON.stringify(group), + contentType : "application/json", + dataType : "json", + error : function() { + vmAppUtil.changeBtnStatus("failed", operation, row, false); + } + }); + if(vmAppUtil.isScaleOperation(operation)) { + $("#scaleModal").modal("hide"); + } else { + $("#vmAppDialog").modal("hide"); + } +}; + +vmAppUtil.changeBtnStatus = function(status, operation, row, disabled) { + var table = $('#' + vm.$tableId).dataTable(); + var oBtn = $("tbody tr button i.ict-start").eq(row).parent(); + var oSelect = $("tbody tr select").eq(row); + + oSelect.attr("disabled", disabled); + oBtn.attr("disabled", disabled); + table.fnUpdate(status, row, vmAppUtil.COLUMN_STATUS_INDEX, false, false); + table.fnUpdate(operation, row, vmAppUtil.COLUMN_OPERATION_INDEX, false, false); +}; + +vmAppUtil.queryTemplate = function() { + var url = vm.$restUrl.queryServiceTemplate + "&status=Enabled"; + commonUtil.get(url, null, function(data) { + vm.vmAppDialog.templateSelectItems = data || []; + }); +}; + +vmAppUtil.queryFlavorParam = function(templateId, flavorName) { + var url = vm.$restUrl.queryFlavorParamUrl + templateId + "/flavors/" + flavorName + "/parameters"; + commonUtil.get(url, null, function(data) { + vm.vmAppDialog.flavorParams = data || []; + }); +}; + +vmAppUtil.queryVimInfo = function() { + var url = vm.$restUrl.queryVimInfoUrl; + commonUtil.get(url, null, function(resp) { + if (resp) { + vm.vmAppDialog.vimSelectItems = resp.data; + } + }); +}; + +vmAppUtil.queryVnfmInfo = function() { + var url = vm.$restUrl.queryVnfmInfoUrl; + commonUtil.get(url, null, function(resp) { + if (resp) { + vm.vmAppDialog.vnfmSelectItems = resp.data; + } + }); +}; + +vmAppUtil.queryVnfInfo = function(templateId) { + var url = vm.$restUrl.queryVnfInfoUrl + templateId + "/vnftemplates"; + commonUtil.get(url, null, function(resp) { + if (resp) { + vm.vmAppDialog.vnfItems = resp; + } + }); +}; + +vmAppUtil.newApp = function(param) { + $.ajax({ + type : "POST", + url : vm.$restUrl.newAppinstancesUrl, + contentType : "application/json", + data : JSON.stringify(param), + dataType : "text", + success : function(data) { + refreshByCond(); + commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-create-success"), vmAppUtil.TYPE_SUCCESS); + }, + error : function() { + refreshByCond(); + commonUtil.showMessage($.i18n.prop("nfv-virtualApplication-iui-message-create-fail"), vmAppUtil.TYPE_DANGER); + } + }); + $("#vmAppDialog").modal("hide"); + +}; + +vmAppUtil.isScaleOperation = function(operation) { + if(operation == "scaleIn" || operation == "scaleOut") { + return true; + } else { + return false; + } +} + +vmAppUtil.generateGourpParams = function(data) { + var groupParams = []; + $.each(data, function(index, group){ + var groupParam = { + groupName : group.groupName, + params : [] + } + $.each(group.params, function(index, element){ + var id = vm.vmAppDialog.$getGoupParamKey(group.groupName, element.key); + var value = $("#" + id).val(); + if(value) { + var param = { + key : element.key, + value : value + } + groupParam.params.push(param); + } + }); + if(groupParam.params.length) { + groupParams.push(groupParam); + } + }); + return groupParams; +} + +vmAppUtil.generateAdditionalParams = function(data) { + var additionalParams = []; + $.each(data, function(index, group){ + var param = { + key : "object_" + group.groupName, //前缀objec_标识为value是一个对象字符串,方便plan解析参数 + value : "" + } + var templateParam = {}; + $.each(group.params, function(index, element){ + var id = vm.vmAppDialog.$getGoupParamKey(group.groupName, element.key); + var value = $("#" + id).val(); + if(value) { + templateParam[element.key] = value; + } else { + templateParam[element.key] = ""; + } + }); + param.value = JSON.stringify(templateParam); + additionalParams.push(param); + }); + return additionalParams; +} + +vmAppUtil.generateVNFRelationInfos = function(data) { + var vnfRelationInfos = []; + $.each(data, function(index, element){ + var info = { + vnfdid : element.templateid, + vnfmid : $("#" + element.templateid).val() + } + vnfRelationInfos.push(info); + }); + return vnfRelationInfos; +} + +vmAppUtil.delVduRender = function(obj) { + return ''; +} + +vmAppUtil.deleteVdu = function(vduId, vnfId) { + var oTable = $("#" + vm.vmAppScaleDialog.$tableId).dataTable(); + var tableData = oTable.fnGetData(); + for(i=0;i'; +} + +vmAppUtil.queryScalableVnfInfo = function(templateId) { + var url = vm.$restUrl.queryVnfInfoUrl + templateId + "/vnftemplates"; + $.ajax({ + type : "GET", + url : url, + dataType : "json", + success : function(resp) { + resp = resp || []; + for(var i=0; i -1)) { + vnfData.vduTypeList.push(nodetemplates[j]); + } + } + + if(vnfData.vduTypeList.length) { + vm.vmAppScaleDialog.vnfSelectItems.push(vnfData); + } + } + } + }); +} + +vmAppUtil.queryScalableVduInstance = function(instanceId, vnfTemplateId, vduTypeList) { + //query vnf instances by ns id + var vnfUrl = vm.$restUrl.queryRocInfoBaseUrl + "/vnfs?nsId=" + instanceId; + //var vnfUrl = vm.$restUrl.queryRocInfoBaseUrl + "/vnfs/" + instanceId; + $.ajax({ + type : "GET", + url : vnfUrl, + dataType : "json", + success : function(resp) { + if(resp.operationResult == "SUCCESS") { + var data = resp.data; + for(var i=0; i + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/template.html b/nsoc-iui/src/main/resources/webroot/nsoc/template.html new file mode 100644 index 00000000..cbc6528c --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/template.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html b/nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html new file mode 100644 index 00000000..bb9917ba --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/templateDetail.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+

{{nodesTab.nodesDetail.detailTitle}}

+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/topology.html b/nsoc-iui/src/main/resources/webroot/nsoc/topology.html new file mode 100644 index 00000000..661ae238 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/topology.html @@ -0,0 +1,122 @@ + +
+
+
+
+
+
0
+ {{network.name}} +
+
+
+
+
0
+

{{subnet.name}}

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
1
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
1
+
+
+ +
+
+
+
+
+ +
+
+
+
+ +
1
+
+
+

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + +
+
+ + + + + + + + + +
+
+
\ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html new file mode 100644 index 00000000..76cff61d --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplication.html @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html new file mode 100644 index 00000000..31e66b31 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationDetail.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+

{{nodesTab.nodesDetail.detailTitle}}

+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html new file mode 100644 index 00000000..552422f9 --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/virtualApplicationScale.html @@ -0,0 +1,152 @@ + + + + \ No newline at end of file diff --git a/nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html b/nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html new file mode 100644 index 00000000..199d02da --- /dev/null +++ b/nsoc-iui/src/main/resources/webroot/nsoc/vnfmView.html @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+
+
+ + +
+
+ +
+
+

+
+
URL:
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openoiui-standlone/pom.xml b/openoiui-standlone/pom.xml new file mode 100644 index 00000000..bc6ebe05 --- /dev/null +++ b/openoiui-standlone/pom.xml @@ -0,0 +1,195 @@ + + + + 4.0.0 + + org.openo.orchestrator.openoiui + openoiui-parent + 0.0.1-SNAPSHOT + + org.openo.orchestrator.openoiui + openoiui-standlone + pom + openo/openoiui/openoiui-standlone + Open-O iui openoiui-standlone + + target/version + target/assembly + openo-iui + + + + org.openo.orchestrator.openoiui + uiframe-iui + ${project.version} + + + org.openo.orchestrator.openoiui + roc-iui + ${project.version} + + + org.openo.orchestrator.openoiui + umc-iui + ${project.version} + + + org.openo.orchestrator.openoiui + nsoc-iui + ${project.version} + + + org.openo.orchestrator.hsif.components + iuicontainer + 0.0.1-SNAPSHOT + + + org.openo.orchestrator.hsif.components + iuicontainertmpl + 0.0.1-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack-resources + + unpack + + process-resources + + + + org.openo.orchestrator.openoiui + uiframe-iui + + + org.openo.orchestrator.openoiui + roc-iui + + + org.openo.orchestrator.openoiui + umc-iui + + + org.openo.orchestrator.openoiui + nsoc-iui + + + org.openo.orchestrator.hsif.components + iuicontainertmpl + + + ${assemblyDirectory} + META-INF\/** + false + true + + + + copy-iuicontainer + + copy + + + generate-resources + + + + org.openo.orchestrator.hsif.components + iuicontainer + ${assemblyDirectory} + openoiui.jar + + + + + + + + maven-resources-plugin + + + copy-conf-resources + + prepare-package + + copy-resources + + + ${assemblyDirectory} + + + ${basedir}/src/main/assembly + false + + + true + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + package + package + + + + + + + + + run + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + package + + attach-artifact + + + + + ${versionDirectory}/${packagename}-${project.version}.zip + zip + + + + + + + + + diff --git a/openoiui-standlone/src/main/assembly/run.bat b/openoiui-standlone/src/main/assembly/run.bat new file mode 100644 index 00000000..d345ea91 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/run.bat @@ -0,0 +1,20 @@ +@REM +@REM Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM +@echo off +title openoiui-service +set RUNHOME=%~dp0 +cd /d %RUNHOME% +"%JAVA_HOME%\bin\java.exe" -jar openoiui.jar \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/run.sh b/openoiui-standlone/src/main/assembly/run.sh new file mode 100644 index 00000000..7b363ab0 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/run.sh @@ -0,0 +1,5 @@ +#!/bin/bash +DIRNAME=`dirname $0` +RUNHOME=`cd $DIRNAME/; pwd` +cd $RUNHOME +$JAVA_HOME/bin/java -Djava.security.egd=file:/dev/urandom -jar openoiui.jar diff --git a/openoiui-standlone/src/main/assembly/stop.bat b/openoiui-standlone/src/main/assembly/stop.bat new file mode 100644 index 00000000..6de98b76 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/stop.bat @@ -0,0 +1,34 @@ +@REM +@REM Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM +@echo off +title stopping openoiui-service + +set HOME=%~dp0 +set Main_Class="openoiui.jar" + +echo ================== umc-service info ============================================= +echo HOME=$HOME +echo Main_Class=%Main_Class% +echo =============================================================================== + +echo ### Stopping umc-service +cd /d %HOME% + +rem set JAVA_HOME=D:\WorkSoftware\jdk1.7.0_60 +for /f "delims=" %%i in ('"%JAVA_HOME%\bin\jcmd"') do ( + call find_kill_process "%%i" %Main_Class% +) +exit diff --git a/openoiui-standlone/src/main/assembly/stop.sh b/openoiui-standlone/src/main/assembly/stop.sh new file mode 100644 index 00000000..77513ba1 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/stop.sh @@ -0,0 +1,43 @@ +# +# Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +#!/bin/bash +DIRNAME=`dirname $0` +HOME=`cd $DIRNAME/; pwd` +Main_Class="openoiui.jar" + +echo ================== umc-service info ============================================= +echo HOME=$HOME +echo Main_Class=$Main_Class +echo =============================================================================== +cd $HOME; pwd + +echo @WORK_DIR@ $HOME + +function save_service_pid(){ + service_pid=`ps -ef | grep $Main_Class | grep -v grep | awk '{print $2}'` + echo @service_pid@ $service_pid +} + +function kill_service_process(){ + ps -p $service_pid + if [ $? == 0 ]; then + kill -9 $service_pid + fi +} + +save_service_pid; +echo @C_CMD@ kill -9 $service_pid +kill_service_process; \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js b/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js new file mode 100644 index 00000000..b106a38d --- /dev/null +++ b/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.js @@ -0,0 +1,302 @@ + +/**openo tools**/ +// generate a random graph +function oTopo() { + + var topo; + + /** + * + * @param id: The id of DIV which display topological graph. + * @param settings: Init parameters . + * @see [] + */ + this.canvas = function (id, settings) + { + var g = + { + nodes : [],// nodes + edges : [] // links + }; + + topo = new sigma( + { + graph : g, + renderer : + { + // IMPORTANT: + // This works only with the canvas renderer, so the + // renderer type set as "canvas" is necessary here. + container : document.getElementById(id), + type : 'canvas' + }, + settings : settings + }); + + CustomShapes.init(topo); + }; + + + /** + * + * @see [] + */ + this.refresh = function() + { + topo.refresh(); + }; + + + /** + * + * @param id: The id of node. + * @see [] + */ + this.Node = function(id) + { + var pr = this; + this.id = id, + this.label = "", + this.type = "square",/**equilateral,star,square,diamond,circle,cross**/ + this.x = 1, + this.y = 1, + this.size = 10, + this.image = {}; + this.color = "transparent", + this.borderColor = "#1E90FF", + + this.setName = function(v) + { + pr.label = v; + }; + + this.setType = function(v) + { + pr.type = v; + }; + + this.setSize = function(v) + { + pr.size = v; + }; + + this.setImg = function(url) + { + pr.image = + { + url : url, + // scale/clip are ratio values applied on top of 'size' + scale : 1, + clip : 0, + }; + pr.borderColor = "transparent"; + pr.color = "transparent"; + }; + + this.setImgScale = function(s) + { + pr.image.scale = s; + }; + + this.setImgClip = function(c) + { + pr.image.clip = c; + }; + + this.setColor = function(v) + { + pr.color = v; + }; + + this.setBorderColor = function(v) + { + pr.borderColor = v; + }; + + this.setLocation = function(x,y) + { + pr.x = x; + pr.y = y; + }; + + this.setProperty = function(k,v) + { + pr[k] = v; + }; + }; + + /** + * + * @param id: The id of link. + * @see [] + */ + this.Link = function(id) + { + var pr = this; + this.id = id, + this.type = "arrow",/*'line','curve','arrow','curvedArrow','dashed','dotted','parallel','tapered'*/ + this.source = 1, + this.target = 1, + this.size = Math.random(), + this.color = "#1E90FF", + + this.setType = function(v) + { + pr.type = v; + }; + + this.setSize = function(v) + { + pr.size = v; + }; + + this.setConnect = function(s,t) + { + pr.source = s; + pr.target = t; + }; + + this.setColor = function(v) + { + pr.color = v; + }; + + this.setProperty = function(k,v) + { + pr[k] = v; + }; + }; + + /** + * + * @param v: Node object. + * @see [] + */ + this.addNode = function(v) + { + topo.graph.addNode(v); + }; + + /** + * + * @param id: The id of node. + * @see [] + */ + this.dropNode = function(id) + { + topo.graph.dropNode(id); + }; + + + /** + * + * @param v: Link object. + * @see [] + */ + this.addLink = function(v) + { + topo.graph.addEdge(v); + }; + + /** + * + * @param id: The id of link. + * @see [] + */ + this.dropLink = function(id) + { + topo.graph.dropEdge(id); + }; + + /** + * + * @see [] + */ + this.allNodes = function() + { + return topo.graph.nodes(); + }; + + /** + * Define drag and drop object. + */ + var dragListener = null; + + /** + * + * @param b: The node can be dragged and dropped when the parameter is TRUE.Set after canvas init. + * @see [] + */ + this.setDrag = function(b) + { + if (b) + { + dragListener = sigma.plugins.dragNodes(topo, topo.renderers[0]); + } + }; + + /** + * + * @param method: The binding method include:startdrag,drag,drop,dragend. + * @param e: Callback method. + * @see [] + */ + var dragBind = function(method,e) + { + if (null != dragListener) + { + dragListener.bind(method, function(event){ + e(event); + }); + } + }; + + + /** + * + * @param method: The binding method include:rightClick,clickStage,doubleClickStage,rightClickStage,clickNode,clickNodes,clickEdge, + * clickEdges,doubleClickNode,doubleClickNodes,doubleClickEdge,doubleClickEdges,rightClickNode, + * rightClickNodes,rightClickEdge,rightClickEdges,overNode,overNodes,overEdge,overEdges,outNode, + * outNodes,outEdge,outEdges,downNode,downNodes,downEdge,downEdges,upNode,upNodes,upEdge,upEdges + * @param e Callback method. + * @see [] + */ + this.mouseBind = function(method,e) + { + if (null != topo) + { + topo.bind(method, function(event){ + e(event); + }); + } + }; + + + /** + * + * @param obj: The object to be disabled. + * @see [] + */ + this.noright = function(obj) { + if (obj) { + obj.oncontextmenu = function() { + return false; + } + obj.ondragstart = function() { + return false; + } + obj.onselectstart = function() { + return false; + } + obj.onselect = function() { + obj.selection.empty(); + } + obj.oncopy = function() { + obj.selection.empty(); + } + obj.onbeforecopy = function() { + return false; + } + } + } +} diff --git a/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js b/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js new file mode 100644 index 00000000..7c180da2 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/webroot/component/openotopo/openotopo.min.js @@ -0,0 +1,18 @@ +/* sigma.js - A JavaScript library dedicated to graph drawing. - Version: 1.0.3 - Author: Alexis Jacomy, Sciences-Po Médialab - License: MIT */ +(function(a){"use strict";var b={},c=function(a){var d,e,f,g,h;c.classes.dispatcher.extend(this);var i=this,j=a||{};if("string"==typeof j||j instanceof HTMLElement?j={renderers:[j]}:"[object Array]"===Object.prototype.toString.call(j)&&(j={renderers:j}),g=j.renderers||j.renderer||j.container,j.renderers&&0!==j.renderers.length||("string"==typeof g||g instanceof HTMLElement||"object"==typeof g&&"container"in g)&&(j.renderers=[g]),j.id){if(b[j.id])throw'sigma: Instance "'+j.id+'" already exists.';Object.defineProperty(this,"id",{value:j.id})}else{for(h=0;b[h];)h++;Object.defineProperty(this,"id",{value:""+h})}for(b[this.id]=this,this.settings=new c.classes.configurable(c.settings,j.settings||{}),Object.defineProperty(this,"graph",{value:new c.classes.graph(this.settings),configurable:!0}),Object.defineProperty(this,"middlewares",{value:[],configurable:!0}),Object.defineProperty(this,"cameras",{value:{},configurable:!0}),Object.defineProperty(this,"renderers",{value:{},configurable:!0}),Object.defineProperty(this,"renderersPerCamera",{value:{},configurable:!0}),Object.defineProperty(this,"cameraFrames",{value:{},configurable:!0}),Object.defineProperty(this,"camera",{get:function(){return this.cameras[0]}}),Object.defineProperty(this,"events",{value:["click","rightClick","clickStage","doubleClickStage","rightClickStage","clickNode","clickNodes","doubleClickNode","doubleClickNodes","rightClickNode","rightClickNodes","overNode","overNodes","outNode","outNodes","downNode","downNodes","upNode","upNodes"],configurable:!0}),this._handler=function(a){var b,c={};for(b in a.data)c[b]=a.data[b];c.renderer=a.target,this.dispatchEvent(a.type,c)}.bind(this),f=j.renderers||[],d=0,e=f.length;e>d;d++)this.addRenderer(f[d]);for(f=j.middlewares||[],d=0,e=f.length;e>d;d++)this.middlewares.push("string"==typeof f[d]?c.middlewares[f[d]]:f[d]);"object"==typeof j.graph&&j.graph&&(this.graph.read(j.graph),this.refresh()),window.addEventListener("resize",function(){i.settings&&i.refresh()})};if(c.prototype.addCamera=function(b){var d,e=this;if(!arguments.length){for(b=0;this.cameras[""+b];)b++;b=""+b}if(this.cameras[b])throw'sigma.addCamera: The camera "'+b+'" already exists.';return d=new c.classes.camera(b,this.graph,this.settings),this.cameras[b]=d,d.quadtree=new c.classes.quad,c.classes.edgequad!==a&&(d.edgequadtree=new c.classes.edgequad),d.bind("coordinatesUpdated",function(a){e.renderCamera(d,d.isAnimated)}),this.renderersPerCamera[b]=[],d},c.prototype.killCamera=function(a){if(a="string"==typeof a?this.cameras[a]:a,!a)throw"sigma.killCamera: The camera is undefined.";var b,c,d=this.renderersPerCamera[a.id];for(c=d.length,b=c-1;b>=0;b--)this.killRenderer(d[b]);return delete this.renderersPerCamera[a.id],delete this.cameraFrames[a.id],delete this.cameras[a.id],a.kill&&a.kill(),this},c.prototype.addRenderer=function(a){var b,d,e,f,g=a||{};if("string"==typeof g?g={container:document.getElementById(g)}:g instanceof HTMLElement&&(g={container:g}),"string"==typeof g.container&&(g.container=document.getElementById(g.container)),"id"in g)b=g.id;else{for(b=0;this.renderers[""+b];)b++;b=""+b}if(this.renderers[b])throw'sigma.addRenderer: The renderer "'+b+'" already exists.';if(d="function"==typeof g.type?g.type:c.renderers[g.type],d=d||c.renderers.def,e="camera"in g?g.camera instanceof c.classes.camera?g.camera:this.cameras[g.camera]||this.addCamera(g.camera):this.addCamera(),this.cameras[e.id]!==e)throw"sigma.addRenderer: The camera is not properly referenced.";return f=new d(this.graph,e,this.settings,g),this.renderers[b]=f,Object.defineProperty(f,"id",{value:b}),f.bind&&f.bind(["click","rightClick","clickStage","doubleClickStage","rightClickStage","clickNode","clickNodes","clickEdge","clickEdges","doubleClickNode","doubleClickNodes","doubleClickEdge","doubleClickEdges","rightClickNode","rightClickNodes","rightClickEdge","rightClickEdges","overNode","overNodes","overEdge","overEdges","outNode","outNodes","outEdge","outEdges","downNode","downNodes","downEdge","downEdges","upNode","upNodes","upEdge","upEdges"],this._handler),this.renderersPerCamera[e.id].push(f),f},c.prototype.killRenderer=function(a){if(a="string"==typeof a?this.renderers[a]:a,!a)throw"sigma.killRenderer: The renderer is undefined.";var b=this.renderersPerCamera[a.camera.id],c=b.indexOf(a);return c>=0&&b.splice(c,1),a.kill&&a.kill(),delete this.renderers[a.id],this},c.prototype.refresh=function(b){var d,e,f,g,h,i,j=0;for(b=b||{},g=this.middlewares||[],d=0,e=g.length;e>d;d++)g[d].call(this,0===d?"":"tmp"+j+":",d===e-1?"ready:":"tmp"+ ++j+":");for(f in this.cameras)h=this.cameras[f],h.settings("autoRescale")&&this.renderersPerCamera[h.id]&&this.renderersPerCamera[h.id].length?c.middlewares.rescale.call(this,g.length?"ready:":"",h.readPrefix,{width:this.renderersPerCamera[h.id][0].width,height:this.renderersPerCamera[h.id][0].height}):c.middlewares.copy.call(this,g.length?"ready:":"",h.readPrefix),b.skipIndexation||(i=c.utils.getBoundaries(this.graph,h.readPrefix),h.quadtree.index(this.graph.nodes(),{prefix:h.readPrefix,bounds:{x:i.minX,y:i.minY,width:i.maxX-i.minX,height:i.maxY-i.minY}}),h.edgequadtree!==a&&h.settings("drawEdges")&&h.settings("enableEdgeHovering")&&h.edgequadtree.index(this.graph,{prefix:h.readPrefix,bounds:{x:i.minX,y:i.minY,width:i.maxX-i.minX,height:i.maxY-i.minY}}));for(g=Object.keys(this.renderers),d=0,e=g.length;e>d;d++)if(this.renderers[g[d]].process)if(this.settings("skipErrors"))try{this.renderers[g[d]].process()}catch(k){console.log('Warning: The renderer "'+g[d]+'" crashed on ".process()"')}else this.renderers[g[d]].process();return this.render(),this},c.prototype.render=function(){var a,b,c;for(c=Object.keys(this.renderers),a=0,b=c.length;b>a;a++)if(this.settings("skipErrors"))try{this.renderers[c[a]].render()}catch(d){this.settings("verbose")&&console.log('Warning: The renderer "'+c[a]+'" crashed on ".render()"')}else this.renderers[c[a]].render();return this},c.prototype.renderCamera=function(a,b){var c,d,e,f=this;if(b)for(e=this.renderersPerCamera[a.id],c=0,d=e.length;d>c;c++)if(this.settings("skipErrors"))try{e[c].render()}catch(g){this.settings("verbose")&&console.log('Warning: The renderer "'+e[c].id+'" crashed on ".render()"')}else e[c].render();else if(!this.cameraFrames[a.id]){for(e=this.renderersPerCamera[a.id],c=0,d=e.length;d>c;c++)if(this.settings("skipErrors"))try{e[c].render()}catch(g){this.settings("verbose")&&console.log('Warning: The renderer "'+e[c].id+'" crashed on ".render()"')}else e[c].render();this.cameraFrames[a.id]=requestAnimationFrame(function(){delete f.cameraFrames[a.id]})}return this},c.prototype.kill=function(){var a;this.dispatchEvent("kill"),this.graph.kill(),delete this.middlewares;for(a in this.renderers)this.killRenderer(this.renderers[a]);for(a in this.cameras)this.killCamera(this.cameras[a]);delete this.renderers,delete this.cameras;for(a in this)this.hasOwnProperty(a)&&delete this[a];delete b[this.id]},c.instances=function(a){return arguments.length?b[a]:c.utils.extend({},b)},c.version="1.0.3","undefined"!=typeof this.sigma)throw"An object called sigma is already in the global scope.";this.sigma=c}).call(this),function(a){"use strict";function b(a,c){var d,e,f,g;if(arguments.length)if(1===arguments.length&&Object(arguments[0])===arguments[0])for(a in arguments[0])b(a,arguments[0][a]);else if(arguments.length>1)for(g=Array.isArray(a)?a:a.split(/ /),d=0,e=g.length;d!==e;d+=1)f=g[d],C[f]||(C[f]=[]),C[f].push({handler:c})}function c(a,b){var c,d,e,f,g,h,i=Array.isArray(a)?a:a.split(/ /);if(arguments.length)if(b)for(c=0,d=i.length;c!==d;c+=1){if(h=i[c],C[h]){for(g=[],e=0,f=C[h].length;e!==f;e+=1)C[h][e].handler!==b&&g.push(C[h][e]);C[h]=g}C[h]&&0===C[h].length&&delete C[h]}else for(c=0,d=i.length;c!==d;c+=1)delete C[i[c]];else C=Object.create(null)}function d(a,b){var c,d,e,f,g,h,i=Array.isArray(a)?a:a.split(/ /);for(b=void 0===b?{}:b,c=0,e=i.length;c!==e;c+=1)if(h=i[c],C[h])for(g={type:h,data:b||{}},d=0,f=C[h].length;d!==f;d+=1)try{C[h][d].handler(g)}catch(j){}}function e(){var a,b,c,d,e=!1,f=s(),g=x.shift();if(c=g.job(),f=s()-f,g.done++,g.time+=f,g.currentTime+=f,g.weightTime=g.currentTime/(g.weight||1),g.averageTime=g.time/g.done,d=g.count?g.count<=g.done:!c,!d){for(a=0,b=x.length;b>a;a++)if(x[a].weightTime>g.weightTime){x.splice(a,0,g),e=!0;break}e||x.push(g)}return d?g:null}function f(a){var b=x.length;w[a.id]=a,a.status="running",b&&(a.weightTime=x[b-1].weightTime,a.currentTime=a.weightTime*(a.weight||1)),a.startTime=s(),d("jobStarted",q(a)),x.push(a)}function g(){var a,b,c;for(a in v)b=v[a],b.after?y[a]=b:f(b),delete v[a];for(u=!!x.length;x.length&&s()-tc;c++)h(a[c].id,p(a[c],b));A=!1,u||(t=s(),d("start"),g())}else if("object"==typeof a)if("string"==typeof a.id)h(a.id,a);else{A=!0;for(c in a)"function"==typeof a[c]?h(c,p({job:a[c]},b)):h(c,p(a[c],b));A=!1,u||(t=s(),d("start"),g())}else{if("string"!=typeof a)throw new Error("[conrad.addJob] Wrong arguments.");if(k(a))throw new Error('[conrad.addJob] Job with id "'+a+'" already exists.');if("function"==typeof b)f={id:a,done:0,time:0,status:"waiting",currentTime:0,averageTime:0,weightTime:0,job:b};else{if("object"!=typeof b)throw new Error("[conrad.addJob] Wrong arguments.");f=p({id:a,done:0,time:0,status:"waiting",currentTime:0,averageTime:0,weightTime:0},b)}v[a]=f,d("jobAdded",q(f)),u||A||(t=s(),d("start"),g())}return this}function i(a){var b,c,e,f,g=!1;if(Array.isArray(a))for(b=0,c=a.length;c>b;b++)i(a[b]);else{if("string"!=typeof a)throw new Error("[conrad.killJob] Wrong arguments.");for(e=[w,y,v],b=0,c=e.length;c>b;b++)a in e[b]&&(f=e[b][a],B.history&&(f.status="done",z.push(f)),d("jobEnded",q(f)),delete e[b][a],"function"==typeof f.end&&f.end(),g=!0);for(e=x,b=0,c=e.length;c>b;b++)if(e[b].id===a){e.splice(b,1);break}if(!g)throw new Error('[conrad.killJob] Job "'+a+'" not found.')}return this}function j(){var a,b=p(v,w,y);if(B.history)for(a in b)b[a].status="done",z.push(b[a]),"function"==typeof b[a].end&&b[a].end();return v={},y={},w={},x=[],u=!1,this}function k(a){var b=v[a]||w[a]||y[a];return b?p(b):null}function l(a,b){var c;if("string"==typeof a1&&1===arguments.length)return B[a1];c="object"==typeof a1&&1===arguments.length?a1||{}:{},"string"==typeof a1&&(c[a1]=a2);for(var d in c)void 0!==c[d]?B[d]=c[d]:delete B[d];return this}function m(){return u}function n(){return z=[],this}function o(a,b){var c,d,e,f,g,h,i;if(!arguments.length){g=[];for(d in v)g.push(v[d]);for(d in y)g.push(y[d]);for(d in w)g.push(w[d]);g=g.concat(z)}if("string"==typeof a)switch(a){case"waiting":g=r(y);break;case"running":g=r(w);break;case"done":g=z;break;default:h=a}if(a instanceof RegExp&&(h=a),!h&&("string"==typeof b||b instanceof RegExp)&&(h=b),h){if(i="string"==typeof h,g instanceof Array)c=g;else if("object"==typeof g){c=[];for(d in g)c=c.concat(g[d])}else{c=[];for(d in v)c.push(v[d]);for(d in y)c.push(y[d]);for(d in w)c.push(w[d]);c=c.concat(z)}for(g=[],e=0,f=c.length;f>e;e++)(i?c[e].id===h:c[e].id.match(h))&&g.push(c[e])}return q(g)}function p(){var a,b,c={},d=arguments.length;for(a=d-1;a>=0;a--)for(b in arguments[a])c[b]=arguments[a][b];return c}function q(a){var b,c,d;if(!a)return a;if(Array.isArray(a))for(b=[],c=0,d=a.length;d>c;c++)b.push(q(a[c]));else if("object"==typeof a){b={};for(c in a)b[c]=q(a[c])}else b=a;return b}function r(a){var b,c=[];for(b in a)c.push(a[b]);return c}function s(){return Date.now?Date.now():(new Date).getTime()}if(a.conrad)throw new Error("conrad already exists");var t,u=!1,v={},w={},x=[],y={},z=[],A=!1,B={frameDuration:20,history:!0},C=Object.create(null);Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});var D={hasJob:k,addJob:h,killJob:i,killAll:j,settings:l,getStats:o,isRunning:m,clearHistory:n,bind:b,unbind:c,version:"0.1.0"};"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=D),exports.conrad=D),a.conrad=D}(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";var b=this;sigma.utils=sigma.utils||{},sigma.utils.extend=function(){var a,b,c={},d=arguments.length;for(a=d-1;a>=0;a--)for(b in arguments[a])c[b]=arguments[a][b];return c},sigma.utils.dateNow=function(){return Date.now?Date.now():(new Date).getTime()},sigma.utils.pkg=function(a){return(a||"").split(".").reduce(function(a,b){return b in a?a[b]:a[b]={}},b)},sigma.utils.id=function(){var a=0;return function(){return++a}}(),sigma.utils.floatColor=function(a){var b=[0,0,0];return a.match(/^#/)?(a=(a||"").replace(/^#/,""),b=3===a.length?[parseInt(a.charAt(0)+a.charAt(0),16),parseInt(a.charAt(1)+a.charAt(1),16),parseInt(a.charAt(2)+a.charAt(2),16)]:[parseInt(a.charAt(0)+a.charAt(1),16),parseInt(a.charAt(2)+a.charAt(3),16),parseInt(a.charAt(4)+a.charAt(5),16)]):a.match(/^ *rgba? *\(/)&&(a=a.match(/^ *rgba? *\( *([0-9]*) *, *([0-9]*) *, *([0-9]*) *(,.*)?\) *$/),b=[+a[1],+a[2],+a[3]]),256*b[0]*256+256*b[1]+b[2]},sigma.utils.zoomTo=function(a,b,c,d,e){var f,g,h,i=a.settings;g=Math.max(i("zoomMin"),Math.min(i("zoomMax"),a.ratio*d)),g!==a.ratio&&(d=g/a.ratio,h={x:b*(1-d)+a.x,y:c*(1-d)+a.y,ratio:g},e&&e.duration?(f=sigma.misc.animation.killAll(a),e=sigma.utils.extend(e,{easing:f?"quadraticOut":"quadraticInOut"}),sigma.misc.animation.camera(a,h,e)):(a.goTo(h),e&&e.onComplete&&e.onComplete()))},sigma.utils.getQuadraticControlPoint=function(a,b,c,d){return{x:(a+c)/2+(d-b)/4,y:(b+d)/2+(a-c)/4}},sigma.utils.getPointOnQuadraticCurve=function(a,b,c,d,e,f,g){return{x:Math.pow(1-a,2)*b+2*(1-a)*a*f+Math.pow(a,2)*d,y:Math.pow(1-a,2)*c+2*(1-a)*a*g+Math.pow(a,2)*e}},sigma.utils.getPointOnBezierCurve=function(a,b,c,d,e,f,g,h,i){var j=Math.pow(1-a,3),k=3*a*Math.pow(1-a,2),l=3*Math.pow(a,2)*(1-a),m=Math.pow(a,3);return{x:j*b+k*f+l*h+m*d,y:j*c+k*g+l*i+m*e}},sigma.utils.getSelfLoopControlPoints=function(a,b,c){return{x1:a-7*c,y1:b,x2:a,y2:b+7*c}},sigma.utils.getDistance=function(a,b,c,d){return Math.sqrt(Math.pow(c-a,2)+Math.pow(d-b,2))},sigma.utils.getCircleIntersection=function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o;if(h=d-a,i=e-b,j=Math.sqrt(i*i+h*h),j>c+f)return!1;if(jj&&Math.min(c,e)<=a&&a<=Math.max(c,e)&&Math.min(d,f)<=b&&b<=Math.max(d,f)},sigma.utils.isPointOnQuadraticCurve=function(a,b,c,d,e,f,g,h,i){var j=sigma.utils.getDistance(c,d,e,f);if(Math.abs(a-c)>j||Math.abs(b-d)>j)return!1;for(var k,l=sigma.utils.getDistance(a,b,c,d),m=sigma.utils.getDistance(a,b,e,f),n=.5,o=m>l?-.01:.01,p=.001,q=100,r=sigma.utils.getPointOnQuadraticCurve(n,c,d,e,f,g,h),s=sigma.utils.getDistance(a,b,r.x,r.y);q-- >0&&n>=0&&1>=n&&s>i&&(o>p||-p>o);)k=s,r=sigma.utils.getPointOnQuadraticCurve(n,c,d,e,f,g,h),s=sigma.utils.getDistance(a,b,r.x,r.y),s>k?(o=-o/2,n+=o):0>n+o||n+o>1?(o/=2,s=k):n+=o;return i>s},sigma.utils.isPointOnBezierCurve=function(a,b,c,d,e,f,g,h,i,j,k){var l=sigma.utils.getDistance(c,d,g,h);if(Math.abs(a-c)>l||Math.abs(b-d)>l)return!1;for(var m,n=sigma.utils.getDistance(a,b,c,d),o=sigma.utils.getDistance(a,b,e,f),p=.5,q=o>n?-.01:.01,r=.001,s=100,t=sigma.utils.getPointOnBezierCurve(p,c,d,e,f,g,h,i,j),u=sigma.utils.getDistance(a,b,t.x,t.y);s-- >0&&p>=0&&1>=p&&u>k&&(q>r||-r>q);)m=u,t=sigma.utils.getPointOnBezierCurve(p,c,d,e,f,g,h,i,j),u=sigma.utils.getDistance(a,b,t.x,t.y),u>m?(q=-q/2,p+=q):0>p+q||p+q>1?(q/=2,u=m):p+=q;return k>u},sigma.utils.getX=function(b){return b.offsetX!==a&&b.offsetX||b.layerX!==a&&b.layerX||b.clientX!==a&&b.clientX},sigma.utils.getY=function(b){return b.offsetY!==a&&b.offsetY||b.layerY!==a&&b.layerY||b.clientY!==a&&b.clientY},sigma.utils.getWidth=function(b){var c=b.target.ownerSVGElement?b.target.ownerSVGElement.width:b.target.width;return"number"==typeof c&&c||c!==a&&c.baseVal!==a&&c.baseVal.value},sigma.utils.getHeight=function(b){var c=b.target.ownerSVGElement?b.target.ownerSVGElement.height:b.target.height;return"number"==typeof c&&c||c!==a&&c.baseVal!==a&&c.baseVal.value},sigma.utils.getDelta=function(b){return b.wheelDelta!==a&&b.wheelDelta||b.detail!==a&&-b.detail},sigma.utils.getOffset=function(a){for(var b=0,c=0;a;)c+=parseInt(a.offsetTop),b+=parseInt(a.offsetLeft),a=a.offsetParent;return{top:c,left:b}},sigma.utils.doubleClick=function(a,b,c){var d,e=0;a._doubleClickHandler=a._doubleClickHandler||{},a._doubleClickHandler[b]=a._doubleClickHandler[b]||[],d=a._doubleClickHandler[b],d.push(function(a){return e++,2===e?(e=0,c(a)):void(1===e&&setTimeout(function(){e=0},sigma.settings.doubleClickTimeout))}),a.addEventListener(b,d[d.length-1],!1)},sigma.utils.unbindDoubleClick=function(a,b){for(var c,d=(a._doubleClickHandler||{})[b]||[];c=d.pop();)a.removeEventListener(b,c);delete(a._doubleClickHandler||{})[b]},sigma.utils.easings=sigma.utils.easings||{},sigma.utils.easings.linearNone=function(a){return a},sigma.utils.easings.quadraticIn=function(a){return a*a},sigma.utils.easings.quadraticOut=function(a){return a*(2-a)},sigma.utils.easings.quadraticInOut=function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)},sigma.utils.easings.cubicIn=function(a){return a*a*a},sigma.utils.easings.cubicOut=function(a){return--a*a*a+1},sigma.utils.easings.cubicInOut=function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)},sigma.utils.loadShader=function(a,b,c,d){var e,f=a.createShader(c);return a.shaderSource(f,b),a.compileShader(f),e=a.getShaderParameter(f,a.COMPILE_STATUS),e?f:(d&&d('Error compiling shader "'+f+'":'+a.getShaderInfoLog(f)),a.deleteShader(f),null)},sigma.utils.loadProgram=function(a,b,c,d,e){var f,g,h=a.createProgram();for(f=0;fg;g++)d[i[g]]=c[i[g]];return this}if(void 0!==d[a])return d[a];for(g=0,h=e.length;h>g;g++)if(void 0!==e[g][a])return e[g][a]}};for(f.embedObjects=function(){var b=e.concat(d).concat(Array.prototype.splice.call(arguments,0));return a.apply({},b)},b=0,c=arguments.length;c>b;b++)f(arguments[b]);return f};"undefined"!=typeof this.sigma?(this.sigma.classes=this.sigma.classes||{},this.sigma.classes.configurable=a):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=a),exports.configurable=a):this.configurable=a}.call(this),function(a){"use strict";function b(a,b,c){var d=function(){var d,e;for(d in h[a])h[a][d].apply(b,arguments);e=c.apply(b,arguments);for(d in g[a])g[a][d].apply(b,arguments);return e};return d}function c(a){var b;for(b in a)"hasOwnProperty"in a&&!a.hasOwnProperty(b)||delete a[b];return a}var d=Object.create(null),e=Object.create(null),f=Object.create(null),g=Object.create(null),h=Object.create(null),i={immutable:!0,clone:!0},j=function(a){return i[a]},k=function(a){var c,e,g;g={settings:a||j,nodesArray:[],edgesArray:[],nodesIndex:Object.create(null),edgesIndex:Object.create(null),inNeighborsIndex:Object.create(null),outNeighborsIndex:Object.create(null),allNeighborsIndex:Object.create(null),inNeighborsCount:Object.create(null),outNeighborsCount:Object.create(null),allNeighborsCount:Object.create(null)};for(c in f)f[c].call(g);for(c in d)e=b(c,g,d[c]),this[c]=e,g[c]=e};k.addMethod=function(a,b){if("string"!=typeof a||"function"!=typeof b||2!==arguments.length)throw"addMethod: Wrong arguments.";if(d[a]||k[a])throw'The method "'+a+'" already exists.';return d[a]=b,g[a]=Object.create(null),h[a]=Object.create(null),this},k.hasMethod=function(a){return!(!d[a]&&!k[a])},k.attach=function(a,b,c,d){if("string"!=typeof a||"string"!=typeof b||"function"!=typeof c||arguments.length<3||arguments.length>4)throw"attach: Wrong arguments.";var e;if("constructor"===a)e=f;else if(d){if(!h[a])throw'The method "'+a+'" does not exist.';e=h[a]}else{if(!g[a])throw'The method "'+a+'" does not exist.';e=g[a]}if(e[b])throw'A function "'+b+'" is already attached to the method "'+a+'".';return e[b]=c,this},k.attachBefore=function(a,b,c){return this.attach(a,b,c,!0)},k.addIndex=function(a,b){if("string"!=typeof a||Object(b)!==b||2!==arguments.length)throw"addIndex: Wrong arguments.";if(e[a])throw'The index "'+a+'" already exists.';var c;e[a]=b;for(c in b){if("function"!=typeof b[c])throw"The bindings must be functions.";k.attach(c,a,b[c])}return this},k.addMethod("addNode",function(a){if(Object(a)!==a||1!==arguments.length)throw"addNode: Wrong arguments.";if("string"!=typeof a.id&&"number"!=typeof a.id)throw"The node must have a string or number id.";if(this.nodesIndex[a.id])throw'The node "'+a.id+'" already exists.';var b,c=a.id,d=Object.create(null);if(this.settings("clone"))for(b in a)"id"!==b&&(d[b]=a[b]);else d=a;return this.settings("immutable")?Object.defineProperty(d,"id",{value:c,enumerable:!0}):d.id=c,this.inNeighborsIndex[c]=Object.create(null),this.outNeighborsIndex[c]=Object.create(null),this.allNeighborsIndex[c]=Object.create(null),this.inNeighborsCount[c]=0,this.outNeighborsCount[c]=0,this.allNeighborsCount[c]=0,this.nodesArray.push(d),this.nodesIndex[d.id]=d,this}),k.addMethod("addEdge",function(a){if(Object(a)!==a||1!==arguments.length)throw"addEdge: Wrong arguments.";if("string"!=typeof a.id&&"number"!=typeof a.id)throw"The edge must have a string or number id.";if("string"!=typeof a.source&&"number"!=typeof a.source||!this.nodesIndex[a.source])throw"The edge source must have an existing node id.";if("string"!=typeof a.target&&"number"!=typeof a.target||!this.nodesIndex[a.target])throw"The edge target must have an existing node id.";if(this.edgesIndex[a.id])throw'The edge "'+a.id+'" already exists.';var b,c=Object.create(null);if(this.settings("clone"))for(b in a)"id"!==b&&"source"!==b&&"target"!==b&&(c[b]=a[b]);else c=a;return this.settings("immutable")?(Object.defineProperty(c,"id",{value:a.id,enumerable:!0}),Object.defineProperty(c,"source",{value:a.source,enumerable:!0}),Object.defineProperty(c,"target",{value:a.target,enumerable:!0})):(c.id=a.id,c.source=a.source,c.target=a.target),this.edgesArray.push(c),this.edgesIndex[c.id]=c,this.inNeighborsIndex[c.target][c.source]||(this.inNeighborsIndex[c.target][c.source]=Object.create(null)),this.inNeighborsIndex[c.target][c.source][c.id]=c,this.outNeighborsIndex[c.source][c.target]||(this.outNeighborsIndex[c.source][c.target]=Object.create(null)),this.outNeighborsIndex[c.source][c.target][c.id]=c,this.allNeighborsIndex[c.source][c.target]||(this.allNeighborsIndex[c.source][c.target]=Object.create(null)),this.allNeighborsIndex[c.source][c.target][c.id]=c,c.target!==c.source&&(this.allNeighborsIndex[c.target][c.source]||(this.allNeighborsIndex[c.target][c.source]=Object.create(null)),this.allNeighborsIndex[c.target][c.source][c.id]=c),this.inNeighborsCount[c.target]++,this.outNeighborsCount[c.source]++,this.allNeighborsCount[c.target]++,this.allNeighborsCount[c.source]++,this}),k.addMethod("dropNode",function(a){if("string"!=typeof a&&"number"!=typeof a||1!==arguments.length)throw"dropNode: Wrong arguments.";if(!this.nodesIndex[a])throw'The node "'+a+'" does not exist.';var b,c,d;for(delete this.nodesIndex[a],b=0,d=this.nodesArray.length;d>b;b++)if(this.nodesArray[b].id===a){this.nodesArray.splice(b,1);break}for(b=this.edgesArray.length-1;b>=0;b--)(this.edgesArray[b].source===a||this.edgesArray[b].target===a)&&this.dropEdge(this.edgesArray[b].id);delete this.inNeighborsIndex[a],delete this.outNeighborsIndex[a],delete this.allNeighborsIndex[a],delete this.inNeighborsCount[a],delete this.outNeighborsCount[a],delete this.allNeighborsCount[a];for(c in this.nodesIndex)delete this.inNeighborsIndex[c][a],delete this.outNeighborsIndex[c][a],delete this.allNeighborsIndex[c][a];return this}),k.addMethod("dropEdge",function(a){if("string"!=typeof a&&"number"!=typeof a||1!==arguments.length)throw"dropEdge: Wrong arguments.";if(!this.edgesIndex[a])throw'The edge "'+a+'" does not exist.';var b,c,d;for(d=this.edgesIndex[a],delete this.edgesIndex[a],b=0,c=this.edgesArray.length;c>b;b++)if(this.edgesArray[b].id===a){this.edgesArray.splice(b,1);break}return delete this.inNeighborsIndex[d.target][d.source][d.id],Object.keys(this.inNeighborsIndex[d.target][d.source]).length||delete this.inNeighborsIndex[d.target][d.source],delete this.outNeighborsIndex[d.source][d.target][d.id],Object.keys(this.outNeighborsIndex[d.source][d.target]).length||delete this.outNeighborsIndex[d.source][d.target],delete this.allNeighborsIndex[d.source][d.target][d.id],Object.keys(this.allNeighborsIndex[d.source][d.target]).length||delete this.allNeighborsIndex[d.source][d.target],d.target!==d.source&&(delete this.allNeighborsIndex[d.target][d.source][d.id],Object.keys(this.allNeighborsIndex[d.target][d.source]).length||delete this.allNeighborsIndex[d.target][d.source]),this.inNeighborsCount[d.target]--,this.outNeighborsCount[d.source]--,this.allNeighborsCount[d.source]--,this.allNeighborsCount[d.target]--,this}),k.addMethod("kill",function(){this.nodesArray.length=0,this.edgesArray.length=0,delete this.nodesArray,delete this.edgesArray,delete this.nodesIndex,delete this.edgesIndex,delete this.inNeighborsIndex,delete this.outNeighborsIndex,delete this.allNeighborsIndex,delete this.inNeighborsCount,delete this.outNeighborsCount,delete this.allNeighborsCount}),k.addMethod("clear",function(){return this.nodesArray.length=0,this.edgesArray.length=0,c(this.nodesIndex),c(this.edgesIndex),c(this.nodesIndex),c(this.inNeighborsIndex),c(this.outNeighborsIndex),c(this.allNeighborsIndex),c(this.inNeighborsCount),c(this.outNeighborsCount),c(this.allNeighborsCount),this}),k.addMethod("read",function(a){var b,c,d;for(c=a.nodes||[],b=0,d=c.length;d>b;b++)this.addNode(c[b]);for(c=a.edges||[],b=0,d=c.length;d>b;b++)this.addEdge(c[b]);return this}),k.addMethod("nodes",function(a){if(!arguments.length)return this.nodesArray.slice(0);if(1===arguments.length&&("string"==typeof a||"number"==typeof a))return this.nodesIndex[a];if(1===arguments.length&&"[object Array]"===Object.prototype.toString.call(a)){ +var b,c,d=[];for(b=0,c=a.length;c>b;b++){if("string"!=typeof a[b]&&"number"!=typeof a[b])throw"nodes: Wrong arguments.";d.push(this.nodesIndex[a[b]])}return d}throw"nodes: Wrong arguments."}),k.addMethod("degree",function(a,b){if(b={"in":this.inNeighborsCount,out:this.outNeighborsCount}[b||""]||this.allNeighborsCount,"string"==typeof a||"number"==typeof a)return b[a];if("[object Array]"===Object.prototype.toString.call(a)){var c,d,e=[];for(c=0,d=a.length;d>c;c++){if("string"!=typeof a[c]&&"number"!=typeof a[c])throw"degree: Wrong arguments.";e.push(b[a[c]])}return e}throw"degree: Wrong arguments."}),k.addMethod("edges",function(a){if(!arguments.length)return this.edgesArray.slice(0);if(1===arguments.length&&("string"==typeof a||"number"==typeof a))return this.edgesIndex[a];if(1===arguments.length&&"[object Array]"===Object.prototype.toString.call(a)){var b,c,d=[];for(b=0,c=a.length;c>b;b++){if("string"!=typeof a[b]&&"number"!=typeof a[b])throw"edges: Wrong arguments.";d.push(this.edgesIndex[a[b]])}return d}throw"edges: Wrong arguments."}),"undefined"!=typeof sigma?(sigma.classes=sigma.classes||Object.create(null),sigma.classes.graph=k):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports.graph=k):this.graph=k}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.classes"),sigma.classes.camera=function(a,b,c,d){sigma.classes.dispatcher.extend(this),Object.defineProperty(this,"graph",{value:b}),Object.defineProperty(this,"id",{value:a}),Object.defineProperty(this,"readPrefix",{value:"read_cam"+a+":"}),Object.defineProperty(this,"prefix",{value:"cam"+a+":"}),this.x=0,this.y=0,this.ratio=1,this.angle=0,this.isAnimated=!1,this.settings="object"==typeof d&&d?c.embedObject(d):c},sigma.classes.camera.prototype.goTo=function(b){if(!this.settings("enableCamera"))return this;var c,d,e=b||{},f=["x","y","ratio","angle"];for(c=0,d=f.length;d>c;c++)if(e[f[c]]!==a){if("number"!=typeof e[f[c]]||isNaN(e[f[c]]))throw'Value for "'+f[c]+'" is not a number.';this[f[c]]=e[f[c]]}return this.dispatchEvent("coordinatesUpdated"),this},sigma.classes.camera.prototype.applyView=function(b,c,d){d=d||{},c=c!==a?c:this.prefix,b=b!==a?b:this.readPrefix;var e,f,g,h=d.nodes||this.graph.nodes(),i=d.edges||this.graph.edges(),j=Math.cos(this.angle),k=Math.sin(this.angle),l=Math.pow(this.ratio,this.settings("nodesPowRatio")),m=Math.pow(this.ratio,this.settings("edgesPowRatio"));for(e=0,f=h.length;f>e;e++)g=h[e],g[c+"x"]=(((g[b+"x"]||0)-this.x)*j+((g[b+"y"]||0)-this.y)*k)/this.ratio+(d.width||0)/2,g[c+"y"]=(((g[b+"y"]||0)-this.y)*j-((g[b+"x"]||0)-this.x)*k)/this.ratio+(d.height||0)/2,g[c+"size"]=(g[b+"size"]||0)/l;for(e=0,f=i.length;f>e;e++)i[e][c+"size"]=(i[e][b+"size"]||0)/m;return this},sigma.classes.camera.prototype.graphPosition=function(a,b,c){var d=0,e=0,f=Math.cos(this.angle),g=Math.sin(this.angle);return c||(d=-(this.x*f+this.y*g)/this.ratio,e=-(this.y*f-this.x*g)/this.ratio),{x:(a*f+b*g)/this.ratio+d,y:(b*f-a*g)/this.ratio+e}},sigma.classes.camera.prototype.cameraPosition=function(a,b,c){var d=0,e=0,f=Math.cos(this.angle),g=Math.sin(this.angle);return c||(d=-(this.x*f+this.y*g)/this.ratio,e=-(this.y*f-this.x*g)/this.ratio),{x:((a-d)*f-(b-e)*g)*this.ratio,y:((b-e)*f+(a-d)*g)*this.ratio}},sigma.classes.camera.prototype.getMatrix=function(){var a=sigma.utils.matrices.scale(1/this.ratio),b=sigma.utils.matrices.rotation(this.angle),c=sigma.utils.matrices.translation(-this.x,-this.y),d=sigma.utils.matrices.multiply(c,sigma.utils.matrices.multiply(b,a));return d},sigma.classes.camera.prototype.getRectangle=function(a,b){var c=this.cameraPosition(a,0,!0),d=this.cameraPosition(0,b,!0),e=this.cameraPosition(a/2,b/2,!0),f=this.cameraPosition(a/4,0,!0).x,g=this.cameraPosition(0,b/4,!0).y;return{x1:this.x-e.x-f,y1:this.y-e.y-g,x2:this.x-e.x+f+c.x,y2:this.y-e.y-g+c.y,height:Math.sqrt(Math.pow(d.x,2)+Math.pow(d.y+2*g,2))}}}.call(this),function(a){"use strict";function b(a,b){var c=b.x+b.width/2,d=b.y+b.height/2,e=a.yd;d++)a.x2>=b[d][0].x&&a.x1<=b[d][1].x&&a.y1+a.height>=b[d][0].y&&a.y1<=b[d][2].y&&c.push(d);return c}function d(a,b){for(var c=[],d=0;4>d;d++)j.collision(a,b[d])&&c.push(d);return c}function e(a,b){var c,d,e=b.level+1,f=Math.round(b.bounds.width/2),g=Math.round(b.bounds.height/2),h=Math.round(b.bounds.x),j=Math.round(b.bounds.y);switch(a){case 0:c=h,d=j;break;case 1:c=h+f,d=j;break;case 2:c=h,d=j+g;break;case 3:c=h+f,d=j+g}return i({x:c,y:d,width:f,height:g},e,b.maxElements,b.maxLevel)}function f(b,d,g){if(g.leveli;i++)g.nodes[h[i]]===a&&(g.nodes[h[i]]=e(h[i],g)),f(b,d,g.nodes[h[i]]);else g.elements.push(b)}function g(c,d){if(d.levelg;g++)c.nodes[f[g]]!==a&&h(b,c.nodes[f[g]],d,e);else for(var j=0,k=c.elements.length;k>j;j++)e[c.elements[j].id]===a&&(e[c.elements[j].id]=c.elements[j]);return e}function i(a,b,c,d){return{level:b||0,bounds:a,corners:j.splitSquare(a),maxElements:c||20,maxLevel:d||4,elements:[],nodes:[]}}var j={pointToSquare:function(a){return{x1:a.x-a.size,y1:a.y-a.size,x2:a.x+a.size,y2:a.y-a.size,height:2*a.size}},isAxisAligned:function(a){return a.x1===a.x2||a.y1===a.y2},axisAlignedTopPoints:function(a){return a.y1===a.y2&&a.x1a.y1?{x1:a.x1-a.height,y1:a.y1,x2:a.x1,y2:a.y1,height:a.height}:a.x1===a.x2&&a.y2f;f++){var g=this.projection(b[f],a),h=this.projection(c[f],a);d.push(g.x*a.x+g.y*a.y),e.push(h.x*a.x+h.y*a.y)}var i=Math.max.apply(Math,d),j=Math.max.apply(Math,e),k=Math.min.apply(Math,d),l=Math.min.apply(Math,e);return i>=l&&j>=k},collision:function(a,b){for(var c=this.axis(a,b),d=!0,e=0;4>e;e++)d=d&&this.axisCollision(c[e],a,b);return d}},k=function(){this._geom=j,this._tree=null,this._cache={query:!1,result:!1}};k.prototype.index=function(a,b){if(!b.bounds)throw"sigma.classes.quad.index: bounds information not given.";var c=b.prefix||"";this._tree=i(b.bounds,0,b.maxElements,b.maxLevel);for(var d=0,e=a.length;e>d;d++)f(a[d],j.pointToSquare({x:a[d][c+"x"],y:a[d][c+"y"],size:a[d][c+"size"]}),this._tree);return this._cache={query:!1,result:!1},this._tree},k.prototype.point=function(a,b){return this._tree?g({x:a,y:b},this._tree)||[]:[]},k.prototype.area=function(a){var b,e,f=JSON.stringify(a);if(this._cache.query===f)return this._cache.result;j.isAxisAligned(a)?(b=c,e=j.axisAlignedTopPoints(a)):(b=d,e=j.rectangleCorners(a));var g=this._tree?h(e,this._tree,b):[],i=[];for(var k in g)i.push(g[k]);return this._cache.query=f,this._cache.result=i,i},"undefined"!=typeof this.sigma?(this.sigma.classes=this.sigma.classes||{},this.sigma.classes.quad=k):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports.quad=k):this.quad=k}.call(this),function(a){"use strict";function b(a,b){var c=b.x+b.width/2,d=b.y+b.height/2,e=a.yd;d++)a.x2>=b[d][0].x&&a.x1<=b[d][1].x&&a.y1+a.height>=b[d][0].y&&a.y1<=b[d][2].y&&c.push(d);return c}function d(a,b){for(var c=[],d=0;4>d;d++)j.collision(a,b[d])&&c.push(d);return c}function e(a,b){var c,d,e=b.level+1,f=Math.round(b.bounds.width/2),g=Math.round(b.bounds.height/2),h=Math.round(b.bounds.x),j=Math.round(b.bounds.y);switch(a){case 0:c=h,d=j;break;case 1:c=h+f,d=j;break;case 2:c=h,d=j+g;break;case 3:c=h+f,d=j+g}return i({x:c,y:d,width:f,height:g},e,b.maxElements,b.maxLevel)}function f(b,d,g){if(g.leveli;i++)g.nodes[h[i]]===a&&(g.nodes[h[i]]=e(h[i],g)),f(b,d,g.nodes[h[i]]);else g.elements.push(b)}function g(c,d){if(d.levelg;g++)c.nodes[f[g]]!==a&&h(b,c.nodes[f[g]],d,e);else for(var j=0,k=c.elements.length;k>j;j++)e[c.elements[j].id]===a&&(e[c.elements[j].id]=c.elements[j]);return e}function i(a,b,c,d){return{level:b||0,bounds:a,corners:j.splitSquare(a),maxElements:c||40,maxLevel:d||8,elements:[],nodes:[]}}var j={pointToSquare:function(a){return{x1:a.x-a.size,y1:a.y-a.size,x2:a.x+a.size,y2:a.y-a.size,height:2*a.size}},lineToSquare:function(a){return a.y1a.y1?{x1:a.x1-a.height,y1:a.y1,x2:a.x1,y2:a.y1,height:a.height}:a.x1===a.x2&&a.y2f;f++){var g=this.projection(b[f],a),h=this.projection(c[f],a);d.push(g.x*a.x+g.y*a.y),e.push(h.x*a.x+h.y*a.y)}var i=Math.max.apply(Math,d),j=Math.max.apply(Math,e),k=Math.min.apply(Math,d),l=Math.min.apply(Math,e);return i>=l&&j>=k},collision:function(a,b){for(var c=this.axis(a,b),d=!0,e=0;4>e;e++)d=d&&this.axisCollision(c[e],a,b);return d}},k=function(){this._geom=j,this._tree=null,this._cache={query:!1,result:!1},this._enabled=!0};k.prototype.index=function(a,b){if(!this._enabled)return this._tree;if(!b.bounds)throw"sigma.classes.edgequad.index: bounds information not given.";var c,d,e,g,h,k=b.prefix||"";this._tree=i(b.bounds,0,b.maxElements,b.maxLevel);for(var l=a.edges(),m=0,n=l.length;n>m;m++)d=a.nodes(l[m].source),e=a.nodes(l[m].target),h={x1:d[k+"x"],y1:d[k+"y"],x2:e[k+"x"],y2:e[k+"y"],size:l[m][k+"size"]||0},"curve"===l[m].type||"curvedArrow"===l[m].type?d.id===e.id?(g={x:d[k+"x"],y:d[k+"y"],size:d[k+"size"]||0},f(l[m],j.selfLoopToSquare(g),this._tree)):(c=sigma.utils.getQuadraticControlPoint(h.x1,h.y1,h.x2,h.y2),f(l[m],j.quadraticCurveToSquare(h,c),this._tree)):f(l[m],j.lineToSquare(h),this._tree);return this._cache={query:!1,result:!1},this._tree},k.prototype.point=function(a,b){return this._enabled&&this._tree?g({x:a,y:b},this._tree)||[]:[]},k.prototype.area=function(a){if(!this._enabled)return[];var b,e,f=JSON.stringify(a);if(this._cache.query===f)return this._cache.result;j.isAxisAligned(a)?(b=c,e=j.axisAlignedTopPoints(a)):(b=d,e=j.rectangleCorners(a));var g=this._tree?h(e,this._tree,b):[],i=[];for(var k in g)i.push(g[k]);return this._cache.query=f,this._cache.result=i,i},"undefined"!=typeof this.sigma?(this.sigma.classes=this.sigma.classes||{},this.sigma.classes.edgequad=k):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports.edgequad=k):this.edgequad=k}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.captors"),sigma.captors.mouse=function(a,b,c){function d(a){var b,c,d;return y("mouseEnabled")&&v.dispatchEvent("mousemove",{x:sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,y:sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),y("mouseEnabled")&&q?(r=!0,s=!0,u&&clearTimeout(u),u=setTimeout(function(){r=!1},y("dragTimeout")),sigma.misc.animation.killAll(x),x.isMoving=!0,d=x.cameraPosition(sigma.utils.getX(a)-o,sigma.utils.getY(a)-p,!0),b=k-d.x,c=l-d.y,(b!==x.x||c!==x.y)&&(m=x.x,n=x.y,x.goTo({x:b,y:c})),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}function e(a){if(y("mouseEnabled")&&q){q=!1,u&&clearTimeout(u),x.isMoving=!1;var b=sigma.utils.getX(a),c=sigma.utils.getY(a);r?(sigma.misc.animation.killAll(x),sigma.misc.animation.camera(x,{x:x.x+y("mouseInertiaRatio")*(x.x-m),y:x.y+y("mouseInertiaRatio")*(x.y-n)},{easing:"quadraticOut",duration:y("mouseInertiaDuration")})):(o!==b||p!==c)&&x.goTo({x:x.x,y:x.y}),v.dispatchEvent("mouseup",{x:b-sigma.utils.getWidth(a)/2,y:c-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),r=!1}}function f(a){if(y("mouseEnabled"))switch(k=x.x,l=x.y,m=x.x,n=x.y,o=sigma.utils.getX(a),p=sigma.utils.getY(a),s=!1,t=(new Date).getTime(),a.which){case 2:break;case 3:v.dispatchEvent("rightclick",{x:o-sigma.utils.getWidth(a)/2,y:p-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey});break;default:q=!0,v.dispatchEvent("mousedown",{x:o-sigma.utils.getWidth(a)/2,y:p-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey})}}function g(a){y("mouseEnabled")&&v.dispatchEvent("mouseout")}function h(a){return y("mouseEnabled")&&v.dispatchEvent("click",{x:sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,y:sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey,isDragging:(new Date).getTime()-t>100&&s}),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1}function i(a){var b,c,d;return y("mouseEnabled")?(c=1/y("doubleClickZoomingRatio"),v.dispatchEvent("doubleclick",{x:o-sigma.utils.getWidth(a)/2,y:p-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),y("doubleClickEnabled")&&(b=x.cameraPosition(sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,!0),d={duration:y("doubleClickZoomDuration")},sigma.utils.zoomTo(x,b.x,b.y,c,d)),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}function j(a){var b,c,d;return y("mouseEnabled")&&y("mouseWheelEnabled")?(c=sigma.utils.getDelta(a)>0?1/y("zoomingRatio"):y("zoomingRatio"),b=x.cameraPosition(sigma.utils.getX(a)-sigma.utils.getWidth(a)/2,sigma.utils.getY(a)-sigma.utils.getHeight(a)/2,!0),d={duration:y("mouseZoomDuration")},sigma.utils.zoomTo(x,b.x,b.y,c,d),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}var k,l,m,n,o,p,q,r,s,t,u,v=this,w=a,x=b,y=c;sigma.classes.dispatcher.extend(this),sigma.utils.doubleClick(w,"click",i),w.addEventListener("DOMMouseScroll",j,!1),w.addEventListener("mousewheel",j,!1),w.addEventListener("mousemove",d,!1),w.addEventListener("mousedown",f,!1),w.addEventListener("click",h,!1),w.addEventListener("mouseout",g,!1),document.addEventListener("mouseup",e,!1),this.kill=function(){sigma.utils.unbindDoubleClick(w,"click"),w.removeEventListener("DOMMouseScroll",j),w.removeEventListener("mousewheel",j),w.removeEventListener("mousemove",d),w.removeEventListener("mousedown",f),w.removeEventListener("click",h),w.removeEventListener("mouseout",g),document.removeEventListener("mouseup",e)}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.captors"),sigma.captors.touch=function(a,b,c){function d(a){var b=sigma.utils.getOffset(B);return{x:a.pageX-b.left,y:a.pageY-b.top}}function e(a){if(D("touchEnabled")){var b,c,e,f,g,h;switch(E=a.touches,E.length){case 1:C.isMoving=!0,w=1,i=C.x,j=C.y,m=C.x,n=C.y,g=d(E[0]),q=g.x,r=g.y;break;case 2:return C.isMoving=!0,w=2,g=d(E[0]),h=d(E[1]),b=g.x,e=g.y,c=h.x,f=h.y,m=C.x,n=C.y,k=C.angle,l=C.ratio,i=C.x,j=C.y,q=b,r=e,s=c,t=f,u=Math.atan2(t-r,s-q),v=Math.sqrt(Math.pow(t-r,2)+Math.pow(s-q,2)),a.preventDefault(),!1}}}function f(a){if(D("touchEnabled")){E=a.touches;var b=D("touchInertiaRatio");switch(z&&(x=!1,clearTimeout(z)),w){case 2:if(1===a.touches.length){e(a),a.preventDefault();break}case 1:C.isMoving=!1,A.dispatchEvent("stopDrag"),x&&(y=!1,sigma.misc.animation.camera(C,{x:C.x+b*(C.x-m),y:C.y+b*(C.y-n)},{easing:"quadraticOut",duration:D("touchInertiaDuration")})),x=!1,w=0}}}function g(a){if(!y&&D("touchEnabled")){var b,c,e,f,g,h,B,F,G,H,I,J,K,L,M,N,O;switch(E=a.touches,x=!0,z&&clearTimeout(z),z=setTimeout(function(){x=!1},D("dragTimeout")),w){case 1:F=d(E[0]),b=F.x,e=F.y,H=C.cameraPosition(b-q,e-r,!0),L=i-H.x,M=j-H.y,(L!==C.x||M!==C.y)&&(m=C.x,n=C.y,C.goTo({x:L,y:M}),A.dispatchEvent("mousemove",{x:F.x-sigma.utils.getWidth(a)/2,y:F.y-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),A.dispatchEvent("drag"));break;case 2:F=d(E[0]),G=d(E[1]),b=F.x,e=F.y,c=G.x,f=G.y,I=C.cameraPosition((q+s)/2-sigma.utils.getWidth(a)/2,(r+t)/2-sigma.utils.getHeight(a)/2,!0),B=C.cameraPosition((b+c)/2-sigma.utils.getWidth(a)/2,(e+f)/2-sigma.utils.getHeight(a)/2,!0),J=Math.atan2(f-e,c-b)-u,K=Math.sqrt(Math.pow(f-e,2)+Math.pow(c-b,2))/v,b=I.x,e=I.y,N=l/K,b*=K,e*=K,O=k-J,g=Math.cos(-J),h=Math.sin(-J),c=b*g+e*h,f=e*g-b*h,b=c,e=f,L=b-B.x+i,M=e-B.y+j,(N!==C.ratio||O!==C.angle||L!==C.x||M!==C.y)&&(m=C.x,n=C.y,o=C.angle,p=C.ratio,C.goTo({x:L,y:M,angle:O,ratio:N}),A.dispatchEvent("drag"))}return a.preventDefault(),!1}}function h(a){var b,c,e;return a.touches&&1===a.touches.length&&D("touchEnabled")?(y=!0,c=1/D("doubleClickZoomingRatio"),b=d(a.touches[0]),A.dispatchEvent("doubleclick",{x:b.x-sigma.utils.getWidth(a)/2,y:b.y-sigma.utils.getHeight(a)/2,clientX:a.clientX,clientY:a.clientY,ctrlKey:a.ctrlKey,metaKey:a.metaKey,altKey:a.altKey,shiftKey:a.shiftKey}),D("doubleClickEnabled")&&(b=C.cameraPosition(b.x-sigma.utils.getWidth(a)/2,b.y-sigma.utils.getHeight(a)/2,!0),e={duration:D("doubleClickZoomDuration"),onComplete:function(){y=!1}},sigma.utils.zoomTo(C,b.x,b.y,c,e)),a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation(),!1):void 0}var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A=this,B=a,C=b,D=c,E=[];sigma.classes.dispatcher.extend(this),sigma.utils.doubleClick(B,"touchstart",h),B.addEventListener("touchstart",e,!1),B.addEventListener("touchend",f,!1),B.addEventListener("touchcancel",f,!1),B.addEventListener("touchleave",f,!1),B.addEventListener("touchmove",g,!1),this.kill=function(){sigma.utils.unbindDoubleClick(B,"touchstart"),B.addEventListener("touchstart",e),B.addEventListener("touchend",f),B.addEventListener("touchcancel",f),B.addEventListener("touchleave",f),B.addEventListener("touchmove",g)}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";if("undefined"==typeof conrad)throw"conrad is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.canvas=function(a,b,c,d){if("object"!=typeof d)throw"sigma.renderers.canvas: Wrong arguments.";if(!(d.container instanceof HTMLElement))throw"Container not found.";var e,f,g,h;for(sigma.classes.dispatcher.extend(this),Object.defineProperty(this,"conradId",{value:sigma.utils.id()}),this.graph=a,this.camera=b,this.contexts={},this.domElements={},this.options=d,this.container=this.options.container,this.settings="object"==typeof d.settings&&d.settings?c.embedObjects(d.settings):c,this.nodesOnScreen=[],this.edgesOnScreen=[],this.jobs={},this.options.prefix="renderer"+this.conradId+":",this.settings("batchEdgesDrawing")?(this.initDOM("canvas","edges"),this.initDOM("canvas","scene"),this.contexts.nodes=this.contexts.scene,this.contexts.labels=this.contexts.scene):(this.initDOM("canvas","scene"),this.contexts.edges=this.contexts.scene,this.contexts.nodes=this.contexts.scene,this.contexts.labels=this.contexts.scene),this.initDOM("canvas","mouse"),this.contexts.hover=this.contexts.mouse,this.captors=[],g=this.options.captors||[sigma.captors.mouse,sigma.captors.touch],e=0,f=g.length;f>e;e++)h="function"==typeof g[e]?g[e]:sigma.captors[g[e]],this.captors.push(new h(this.domElements.mouse,this.camera,this.settings));sigma.misc.bindEvents.call(this,this.options.prefix),sigma.misc.drawHovers.call(this,this.options.prefix),this.resize(!1)},sigma.renderers.canvas.prototype.render=function(b){b=b||{};var c,d,e,f,g,h,i,j,k,l,m,n,o,p={},q=this.graph,r=this.graph.nodes,s=(this.options.prefix||"",this.settings(b,"drawEdges")),t=this.settings(b,"drawNodes"),u=this.settings(b,"drawLabels"),v=this.settings(b,"drawEdgeLabels"),w=this.settings.embedObjects(b,{prefix:this.options.prefix});this.resize(!1),this.settings(b,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(s=!1),this.camera.applyView(a,this.options.prefix,{width:this.width,height:this.height}),this.clear();for(e in this.jobs)conrad.hasJob(e)&&conrad.killJob(e);for(this.edgesOnScreen=[],this.nodesOnScreen=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)p[c[d].id]=c[d];if(s){for(c=q.edges(),d=0,f=c.length;f>d;d++)g=c[d],!p[g.source]&&!p[g.target]||g.hidden||r(g.source).hidden||r(g.target).hidden||this.edgesOnScreen.push(g);if(this.settings(b,"batchEdgesDrawing"))h="edges_"+this.conradId,n=w("canvasEdgesBatchSize"),l=this.edgesOnScreen,f=l.length,k=0,i=Math.min(l.length,k+n),j=function(){for(o=this.contexts.edges.globalCompositeOperation,this.contexts.edges.globalCompositeOperation="destination-over",m=sigma.canvas.edges,d=k;i>d;d++)g=l[d],(m[g.type||this.settings(b,"defaultEdgeType")]||m.def)(g,q.nodes(g.source),q.nodes(g.target),this.contexts.edges,w);if(v)for(m=sigma.canvas.edges.labels,d=k;i>d;d++)g=l[d],g.hidden||(m[g.type||this.settings(b,"defaultEdgeType")]||m.def)(g,q.nodes(g.source),q.nodes(g.target),this.contexts.labels,w);return this.contexts.edges.globalCompositeOperation=o,i===l.length?(delete this.jobs[h],!1):(k=i+1,i=Math.min(l.length,k+n),!0)},this.jobs[h]=j,conrad.addJob(h,j.bind(this));else{for(m=sigma.canvas.edges,c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)g=c[d],(m[g.type||this.settings(b,"defaultEdgeType")]||m.def)(g,q.nodes(g.source),q.nodes(g.target),this.contexts.edges,w);if(v)for(m=sigma.canvas.edges.labels,c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||(m[c[d].type||this.settings(b,"defaultEdgeType")]||m.def)(c[d],q.nodes(c[d].source),q.nodes(c[d].target),this.contexts.labels,w)}}if(t)for(m=sigma.canvas.nodes,c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||(m[c[d].type||this.settings(b,"defaultNodeType")]||m.def)(c[d],this.contexts.nodes,w);if(u)for(m=sigma.canvas.labels,c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||(m[c[d].type||this.settings(b,"defaultNodeType")]||m.def)(c[d],this.contexts.labels,w);return this.dispatchEvent("render"),this},sigma.renderers.canvas.prototype.initDOM=function(a,b){var c=document.createElement(a);c.style.position="absolute",c.setAttribute("class","sigma-"+b),this.domElements[b]=c,this.container.appendChild(c),"canvas"===a.toLowerCase()&&(this.contexts[b]=c.getContext("2d"))},sigma.renderers.canvas.prototype.resize=function(b,c){var d,e=this.width,f=this.height,g=1;if(b!==a&&c!==a?(this.width=b,this.height=c):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,b=this.width,c=this.height),e!==this.width||f!==this.height)for(d in this.domElements)this.domElements[d].style.width=b+"px",this.domElements[d].style.height=c+"px","canvas"===this.domElements[d].tagName.toLowerCase()&&(this.domElements[d].setAttribute("width",b*g+"px"),this.domElements[d].setAttribute("height",c*g+"px"),1!==g&&this.contexts[d].scale(g,g));return this},sigma.renderers.canvas.prototype.clear=function(){var a;for(a in this.domElements)"CANVAS"===this.domElements[a].tagName&&(this.domElements[a].width=this.domElements[a].width);return this},sigma.renderers.canvas.prototype.kill=function(){for(var a,b;b=this.captors.pop();)b.kill();delete this.captors;for(a in this.domElements)this.domElements[a].parentNode.removeChild(this.domElements[a]),delete this.domElements[a],delete this.contexts[a];delete this.domElements,delete this.contexts},sigma.utils.pkg("sigma.canvas.nodes"),sigma.utils.pkg("sigma.canvas.edges"),sigma.utils.pkg("sigma.canvas.labels")}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.webgl=function(a,b,c,d){if("object"!=typeof d)throw"sigma.renderers.webgl: Wrong arguments.";if(!(d.container instanceof HTMLElement))throw"Container not found.";var e,f,g,h;for(sigma.classes.dispatcher.extend(this),this.jobs={},Object.defineProperty(this,"conradId",{value:sigma.utils.id()}),this.graph=a,this.camera=b,this.contexts={},this.domElements={},this.options=d,this.container=this.options.container,this.settings="object"==typeof d.settings&&d.settings?c.embedObjects(d.settings):c,this.options.prefix=this.camera.readPrefix,Object.defineProperty(this,"nodePrograms",{value:{}}),Object.defineProperty(this,"edgePrograms",{value:{}}),Object.defineProperty(this,"nodeFloatArrays",{value:{}}),Object.defineProperty(this,"edgeFloatArrays",{value:{}}),this.settings(d,"batchEdgesDrawing")?(this.initDOM("canvas","edges",!0),this.initDOM("canvas","nodes",!0)):(this.initDOM("canvas","scene",!0),this.contexts.nodes=this.contexts.scene,this.contexts.edges=this.contexts.scene),this.initDOM("canvas","labels"),this.initDOM("canvas","mouse"),this.contexts.hover=this.contexts.mouse,this.captors=[],g=this.options.captors||[sigma.captors.mouse,sigma.captors.touch],e=0,f=g.length;f>e;e++)h="function"==typeof g[e]?g[e]:sigma.captors[g[e]],this.captors.push(new h(this.domElements.mouse,this.camera,this.settings));sigma.misc.bindEvents.call(this,this.camera.prefix),sigma.misc.drawHovers.call(this,this.camera.prefix),this.resize()},sigma.renderers.webgl.prototype.process=function(){var a,b,c,d,e,f,g=this.graph,h=sigma.utils.extend(h,this.options);for(d in this.nodeFloatArrays)delete this.nodeFloatArrays[d];for(d in this.edgeFloatArrays)delete this.edgeFloatArrays[d];for(a=g.edges(),b=0,c=a.length;c>b;b++)e=a[b].type||this.settings(h,"defaultEdgeType"),d=e&&sigma.webgl.edges[e]?e:"def",this.edgeFloatArrays[d]||(this.edgeFloatArrays[d]={edges:[]}),this.edgeFloatArrays[d].edges.push(a[b]);for(a=g.nodes(),b=0,c=a.length;c>b;b++)e=a[b].type||this.settings(h,"defaultNodeType"),d=e&&sigma.webgl.nodes[e]?e:"def",this.nodeFloatArrays[d]||(this.nodeFloatArrays[d]={nodes:[]}),this.nodeFloatArrays[d].nodes.push(a[b]);for(d in this.edgeFloatArrays)for(f=sigma.webgl.edges[d],a=this.edgeFloatArrays[d].edges,b=0,c=a.length;c>b;b++)this.edgeFloatArrays[d].array||(this.edgeFloatArrays[d].array=new Float32Array(a.length*f.POINTS*f.ATTRIBUTES)),a[b].hidden||g.nodes(a[b].source).hidden||g.nodes(a[b].target).hidden||f.addEdge(a[b],g.nodes(a[b].source),g.nodes(a[b].target),this.edgeFloatArrays[d].array,b*f.POINTS*f.ATTRIBUTES,h.prefix,this.settings);for(d in this.nodeFloatArrays)for(f=sigma.webgl.nodes[d],a=this.nodeFloatArrays[d].nodes,b=0,c=a.length;c>b;b++)this.nodeFloatArrays[d].array||(this.nodeFloatArrays[d].array=new Float32Array(a.length*f.POINTS*f.ATTRIBUTES)),a[b].hidden||f.addNode(a[b],this.nodeFloatArrays[d].array,b*f.POINTS*f.ATTRIBUTES,h.prefix,this.settings);return this},sigma.renderers.webgl.prototype.render=function(b){var c,d,e,f,g,h,i=this,j=(this.graph,this.contexts.nodes),k=this.contexts.edges,l=this.camera.getMatrix(),m=sigma.utils.extend(b,this.options),n=this.settings(m,"drawLabels"),o=this.settings(m,"drawEdges"),p=this.settings(m,"drawNodes");this.resize(!1),this.settings(m,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(o=!1),this.clear(),l=sigma.utils.matrices.multiply(l,sigma.utils.matrices.translation(this.width/2,this.height/2));for(f in this.jobs)conrad.hasJob(f)&&conrad.killJob(f);if(o)if(this.settings(m,"batchEdgesDrawing"))(function(){var a,b,c,d,e,f,g,h,i;c="edges_"+this.conradId,i=this.settings(m,"webglEdgesBatchSize"),a=Object.keys(this.edgeFloatArrays),a.length&&(b=0,h=sigma.webgl.edges[a[b]],e=this.edgeFloatArrays[a[b]].array,g=0,f=Math.min(g+i*h.POINTS,e.length/h.ATTRIBUTES),d=function(){return this.edgePrograms[a[b]]||(this.edgePrograms[a[b]]=h.initProgram(k)),f>g&&(k.useProgram(this.edgePrograms[a[b]]),h.render(k,this.edgePrograms[a[b]],e,{settings:this.settings,matrix:l,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(m,"webglOversamplingRatio"),start:g,count:f-g})),f>=e.length/h.ATTRIBUTES&&b===a.length-1?(delete this.jobs[c],!1):(f>=e.length/h.ATTRIBUTES?(b++,e=this.edgeFloatArrays[a[b]].array,h=sigma.webgl.edges[a[b]],g=0,f=Math.min(g+i*h.POINTS,e.length/h.ATTRIBUTES)):(g=f,f=Math.min(g+i*h.POINTS,e.length/h.ATTRIBUTES)),!0)},this.jobs[c]=d,conrad.addJob(c,d.bind(this)))}).call(this);else for(f in this.edgeFloatArrays)h=sigma.webgl.edges[f],this.edgePrograms[f]||(this.edgePrograms[f]=h.initProgram(k)),this.edgeFloatArrays[f]&&(k.useProgram(this.edgePrograms[f]),h.render(k,this.edgePrograms[f],this.edgeFloatArrays[f].array,{ +settings:this.settings,matrix:l,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(m,"webglOversamplingRatio")}));if(p){j.blendFunc(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA),j.enable(j.BLEND);for(f in this.nodeFloatArrays)h=sigma.webgl.nodes[f],this.nodePrograms[f]||(this.nodePrograms[f]=h.initProgram(j)),this.nodeFloatArrays[f]&&(j.useProgram(this.nodePrograms[f]),h.render(j,this.nodePrograms[f],this.nodeFloatArrays[f].array,{settings:this.settings,matrix:l,width:this.width,height:this.height,ratio:this.camera.ratio,scalingRatio:this.settings(m,"webglOversamplingRatio")}))}if(n)for(c=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),this.camera.applyView(a,a,{nodes:c,edges:[],width:this.width,height:this.height}),g=function(a){return i.settings({prefix:i.camera.prefix},a)},d=0,e=c.length;e>d;d++)c[d].hidden||(sigma.canvas.labels[c[d].type||this.settings(m,"defaultNodeType")]||sigma.canvas.labels.def)(c[d],this.contexts.labels,g);return this.dispatchEvent("render"),this},sigma.renderers.webgl.prototype.initDOM=function(a,b,c){var d=document.createElement(a),e=this;d.style.position="absolute",d.setAttribute("class","sigma-"+b),this.domElements[b]=d,this.container.appendChild(d),"canvas"===a.toLowerCase()&&(this.contexts[b]=d.getContext(c?"experimental-webgl":"2d",{preserveDrawingBuffer:!0}),c&&(d.addEventListener("webglcontextlost",function(a){a.preventDefault()},!1),d.addEventListener("webglcontextrestored",function(a){e.render()},!1)))},sigma.renderers.webgl.prototype.resize=function(b,c){var d,e=this.width,f=this.height;if(b!==a&&c!==a?(this.width=b,this.height=c):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,b=this.width,c=this.height),e!==this.width||f!==this.height)for(d in this.domElements)this.domElements[d].style.width=b+"px",this.domElements[d].style.height=c+"px","canvas"===this.domElements[d].tagName.toLowerCase()&&(this.contexts[d]&&this.contexts[d].scale?(this.domElements[d].setAttribute("width",b+"px"),this.domElements[d].setAttribute("height",c+"px")):(this.domElements[d].setAttribute("width",b*this.settings("webglOversamplingRatio")+"px"),this.domElements[d].setAttribute("height",c*this.settings("webglOversamplingRatio")+"px")));for(d in this.contexts)this.contexts[d]&&this.contexts[d].viewport&&this.contexts[d].viewport(0,0,this.width*this.settings("webglOversamplingRatio"),this.height*this.settings("webglOversamplingRatio"));return this},sigma.renderers.webgl.prototype.clear=function(){var a;for(a in this.domElements)"CANVAS"===this.domElements[a].tagName&&(this.domElements[a].width=this.domElements[a].width);return this.contexts.nodes.clear(this.contexts.nodes.COLOR_BUFFER_BIT),this.contexts.edges.clear(this.contexts.edges.COLOR_BUFFER_BIT),this},sigma.renderers.webgl.prototype.kill=function(){for(var a,b;b=this.captors.pop();)b.kill();delete this.captors;for(a in this.domElements)this.domElements[a].parentNode.removeChild(this.domElements[a]),delete this.domElements[a],delete this.contexts[a];delete this.domElements,delete this.contexts},sigma.utils.pkg("sigma.webgl.nodes"),sigma.utils.pkg("sigma.webgl.edges"),sigma.utils.pkg("sigma.canvas.labels")}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";if("undefined"==typeof conrad)throw"conrad is not declared";sigma.utils.pkg("sigma.renderers"),sigma.renderers.svg=function(a,b,c,d){if("object"!=typeof d)throw"sigma.renderers.svg: Wrong arguments.";if(!(d.container instanceof HTMLElement))throw"Container not found.";var e,f,g,h,i=this;for(sigma.classes.dispatcher.extend(this),this.graph=a,this.camera=b,this.domElements={graph:null,groups:{},nodes:{},edges:{},labels:{},hovers:{}},this.measurementCanvas=null,this.options=d,this.container=this.options.container,this.settings="object"==typeof d.settings&&d.settings?c.embedObjects(d.settings):c,this.settings("freeStyle",!!this.options.freeStyle),this.settings("xmlns","http://www.w3.org/2000/svg"),this.nodesOnScreen=[],this.edgesOnScreen=[],this.options.prefix="renderer"+sigma.utils.id()+":",this.initDOM("svg"),this.captors=[],g=this.options.captors||[sigma.captors.mouse,sigma.captors.touch],e=0,f=g.length;f>e;e++)h="function"==typeof g[e]?g[e]:sigma.captors[g[e]],this.captors.push(new h(this.domElements.graph,this.camera,this.settings));window.addEventListener("resize",function(){i.resize()}),sigma.misc.bindDOMEvents.call(this,this.domElements.graph),this.bindHovers(this.options.prefix),this.resize(!1)},sigma.renderers.svg.prototype.render=function(b){b=b||{};var c,d,e,f,g,h,i,j,k,l={},m=this.graph,n=this.graph.nodes,o=(this.options.prefix||"",this.settings(b,"drawEdges")),p=this.settings(b,"drawNodes"),q=(this.settings(b,"drawLabels"),this.settings.embedObjects(b,{prefix:this.options.prefix,forceLabels:this.options.forceLabels}));for(this.settings(b,"hideEdgesOnMove")&&(this.camera.isAnimated||this.camera.isMoving)&&(o=!1),this.camera.applyView(a,this.options.prefix,{width:this.width,height:this.height}),this.hideDOMElements(this.domElements.nodes),this.hideDOMElements(this.domElements.edges),this.hideDOMElements(this.domElements.labels),this.edgesOnScreen=[],this.nodesOnScreen=this.camera.quadtree.area(this.camera.getRectangle(this.width,this.height)),c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)l[c[d].id]=c[d];for(c=m.edges(),d=0,f=c.length;f>d;d++)g=c[d],!l[g.source]&&!l[g.target]||g.hidden||n(g.source).hidden||n(g.target).hidden||this.edgesOnScreen.push(g);if(j=sigma.svg.nodes,k=sigma.svg.labels,p)for(c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||this.domElements.nodes[c[d].id]||(e=(j[c[d].type]||j.def).create(c[d],q),this.domElements.nodes[c[d].id]=e,this.domElements.groups.nodes.appendChild(e),e=(k[c[d].type]||k.def).create(c[d],q),this.domElements.labels[c[d].id]=e,this.domElements.groups.labels.appendChild(e));if(p)for(c=this.nodesOnScreen,d=0,f=c.length;f>d;d++)c[d].hidden||((j[c[d].type]||j.def).update(c[d],this.domElements.nodes[c[d].id],q),(k[c[d].type]||k.def).update(c[d],this.domElements.labels[c[d].id],q));if(j=sigma.svg.edges,o)for(c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)this.domElements.edges[c[d].id]||(h=n(c[d].source),i=n(c[d].target),e=(j[c[d].type]||j.def).create(c[d],h,i,q),this.domElements.edges[c[d].id]=e,this.domElements.groups.edges.appendChild(e));if(o)for(c=this.edgesOnScreen,d=0,f=c.length;f>d;d++)h=n(c[d].source),i=n(c[d].target),(j[c[d].type]||j.def).update(c[d],this.domElements.edges[c[d].id],h,i,q);return this.dispatchEvent("render"),this},sigma.renderers.svg.prototype.initDOM=function(a){var b,c,d,e=document.createElementNS(this.settings("xmlns"),a),f=this.settings("classPrefix");e.style.position="absolute",e.setAttribute("class",f+"-svg"),e.setAttribute("xmlns",this.settings("xmlns")),e.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),e.setAttribute("version","1.1");var g=document.createElement("canvas");g.setAttribute("class",f+"-measurement-canvas"),this.domElements.graph=this.container.appendChild(e);var h=["edges","nodes","labels","hovers"];for(d=0,c=h.length;c>d;d++)b=document.createElementNS(this.settings("xmlns"),"g"),b.setAttributeNS(null,"id",f+"-group-"+h[d]),b.setAttributeNS(null,"class",f+"-group"),this.domElements.groups[h[d]]=this.domElements.graph.appendChild(b);this.container.appendChild(g),this.measurementCanvas=g.getContext("2d")},sigma.renderers.svg.prototype.hideDOMElements=function(a){var b,c;for(c in a)b=a[c],sigma.svg.utils.hide(b);return this},sigma.renderers.svg.prototype.bindHovers=function(a){function b(b){var c=b.data.node,d=g.settings.embedObjects({prefix:a});if(d("enableHovering")){var h=(f[c.type]||f.def).create(c,g.domElements.nodes[c.id],g.measurementCanvas,d);g.domElements.hovers[c.id]=h,g.domElements.groups.hovers.appendChild(h),e=c}}function c(b){var c=b.data.node,d=g.settings.embedObjects({prefix:a});d("enableHovering")&&(g.domElements.groups.hovers.removeChild(g.domElements.hovers[c.id]),e=null,delete g.domElements.hovers[c.id],g.domElements.groups.nodes.appendChild(g.domElements.nodes[c.id]))}function d(){if(e){var b=g.settings.embedObjects({prefix:a});g.domElements.groups.hovers.removeChild(g.domElements.hovers[e.id]),delete g.domElements.hovers[e.id];var c=(f[e.type]||f.def).create(e,g.domElements.nodes[e.id],g.measurementCanvas,b);g.domElements.hovers[e.id]=c,g.domElements.groups.hovers.appendChild(c)}}var e,f=sigma.svg.hovers,g=this;this.bind("overNode",b),this.bind("outNode",c),this.bind("render",d)},sigma.renderers.svg.prototype.resize=function(b,c){var d=this.width,e=this.height,f=1;return b!==a&&c!==a?(this.width=b,this.height=c):(this.width=this.container.offsetWidth,this.height=this.container.offsetHeight,b=this.width,c=this.height),(d!==this.width||e!==this.height)&&(this.domElements.graph.style.width=b+"px",this.domElements.graph.style.height=c+"px","svg"===this.domElements.graph.tagName.toLowerCase()&&(this.domElements.graph.setAttribute("width",b*f),this.domElements.graph.setAttribute("height",c*f))),this},sigma.utils.pkg("sigma.svg.nodes"),sigma.utils.pkg("sigma.svg.edges"),sigma.utils.pkg("sigma.svg.labels")}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.renderers");var b,c=!!a.WebGLRenderingContext;if(c){b=document.createElement("canvas");try{c=!(!b.getContext("webgl")&&!b.getContext("experimental-webgl"))}catch(d){c=!1}}sigma.renderers.def=c?sigma.renderers.webgl:sigma.renderers.canvas}(this),function(){"use strict";sigma.utils.pkg("sigma.webgl.nodes"),sigma.webgl.nodes.def={POINTS:3,ATTRIBUTES:5,addNode:function(a,b,c,d,e){var f=sigma.utils.floatColor(a.color||e("defaultNodeColor"));b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=f,b[c++]=0,b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=f,b[c++]=2*Math.PI/3,b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=f,b[c++]=4*Math.PI/3},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_position"),g=a.getAttribLocation(b,"a_size"),h=a.getAttribLocation(b,"a_color"),i=a.getAttribLocation(b,"a_angle"),j=a.getUniformLocation(b,"u_resolution"),k=a.getUniformLocation(b,"u_matrix"),l=a.getUniformLocation(b,"u_ratio"),m=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.DYNAMIC_DRAW),a.uniform2f(j,d.width,d.height),a.uniform1f(l,1/Math.pow(d.ratio,d.settings("nodesPowRatio"))),a.uniform1f(m,d.scalingRatio),a.uniformMatrix3fv(k,!1,d.matrix),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.enableVertexAttribArray(i),a.vertexAttribPointer(f,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(g,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(h,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,12),a.vertexAttribPointer(i,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),a.drawArrays(a.TRIANGLES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position;","attribute float a_size;","attribute float a_color;","attribute float a_angle;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","varying vec4 color;","varying vec2 center;","varying float radius;","void main() {","radius = a_size * u_ratio;","vec2 position = (u_matrix * vec3(a_position, 1)).xy;","center = position * u_scale;","center = vec2(center.x, u_scale * u_resolution.y - center.y);","position = position +","2.0 * radius * vec2(cos(a_angle), sin(a_angle));","position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);","radius = radius * u_scale;","gl_Position = vec4(position, 0, 1);","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","varying vec2 center;","varying float radius;","void main(void) {","vec4 color0 = vec4(0.0, 0.0, 0.0, 0.0);","vec2 m = gl_FragCoord.xy - center;","float diff = radius - sqrt(m.x * m.x + m.y * m.y);","if (diff > 0.0)","gl_FragColor = color;","else","gl_FragColor = color0;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.nodes"),sigma.webgl.nodes.fast={POINTS:1,ATTRIBUTES:4,addNode:function(a,b,c,d,e){b[c++]=a[d+"x"],b[c++]=a[d+"y"],b[c++]=a[d+"size"],b[c++]=sigma.utils.floatColor(a.color||e("defaultNodeColor"))},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_position"),g=a.getAttribLocation(b,"a_size"),h=a.getAttribLocation(b,"a_color"),i=a.getUniformLocation(b,"u_resolution"),j=a.getUniformLocation(b,"u_matrix"),k=a.getUniformLocation(b,"u_ratio"),l=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.DYNAMIC_DRAW),a.uniform2f(i,d.width,d.height),a.uniform1f(k,1/Math.pow(d.ratio,d.settings("nodesPowRatio"))),a.uniform1f(l,d.scalingRatio),a.uniformMatrix3fv(j,!1,d.matrix),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.vertexAttribPointer(f,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(g,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(h,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,12),a.drawArrays(a.POINTS,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position;","attribute float a_size;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","varying vec4 color;","void main() {","gl_Position = vec4(","((u_matrix * vec3(a_position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","gl_PointSize = a_size * u_ratio * u_scale * 2.0;","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.def={POINTS:6,ATTRIBUTES:7,addEdge:function(a,b,c,d,e,f,g){var h=(a[f+"size"]||1)/2,i=b[f+"x"],j=b[f+"y"],k=c[f+"x"],l=c[f+"y"],m=a.color;if(!m)switch(g("edgeColor")){case"source":m=b.color||g("defaultNodeColor");break;case"target":m=c.color||g("defaultNodeColor");break;default:m=g("defaultEdgeColor")}m=sigma.utils.floatColor(m),d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=0,d[e++]=m,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=1,d[e++]=m,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=0,d[e++]=m,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=0,d[e++]=m,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=1,d[e++]=m,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=0,d[e++]=m},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_color"),g=a.getAttribLocation(b,"a_position1"),h=a.getAttribLocation(b,"a_position2"),i=a.getAttribLocation(b,"a_thickness"),j=a.getAttribLocation(b,"a_minus"),k=a.getUniformLocation(b,"u_resolution"),l=a.getUniformLocation(b,"u_matrix"),m=a.getUniformLocation(b,"u_matrixHalfPi"),n=a.getUniformLocation(b,"u_matrixHalfPiMinus"),o=a.getUniformLocation(b,"u_ratio"),p=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.STATIC_DRAW),a.uniform2f(k,d.width,d.height),a.uniform1f(o,d.ratio/Math.pow(d.ratio,d.settings("edgesPowRatio"))),a.uniform1f(p,d.scalingRatio),a.uniformMatrix3fv(l,!1,d.matrix),a.uniformMatrix2fv(m,!1,sigma.utils.matrices.rotation(Math.PI/2,!0)),a.uniformMatrix2fv(n,!1,sigma.utils.matrices.rotation(-Math.PI/2,!0)),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.enableVertexAttribArray(i),a.enableVertexAttribArray(j),a.vertexAttribPointer(g,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(h,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(i,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),a.vertexAttribPointer(j,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,20),a.vertexAttribPointer(f,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,24),a.drawArrays(a.TRIANGLES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position1;","attribute vec2 a_position2;","attribute float a_thickness;","attribute float a_minus;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_scale;","uniform mat3 u_matrix;","uniform mat2 u_matrixHalfPi;","uniform mat2 u_matrixHalfPiMinus;","varying vec4 color;","void main() {","vec2 position = a_thickness * u_ratio *","normalize(a_position2 - a_position1);","mat2 matrix = a_minus * u_matrixHalfPiMinus +","(1.0 - a_minus) * u_matrixHalfPi;","position = matrix * position + a_position1;","gl_Position = vec4(","((u_matrix * vec3(position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.fast={POINTS:2,ATTRIBUTES:3,addEdge:function(a,b,c,d,e,f,g){var h=((a[f+"size"]||1)/2,b[f+"x"]),i=b[f+"y"],j=c[f+"x"],k=c[f+"y"],l=a.color;if(!l)switch(g("edgeColor")){case"source":l=b.color||g("defaultNodeColor");break;case"target":l=c.color||g("defaultNodeColor");break;default:l=g("defaultEdgeColor")}l=sigma.utils.floatColor(l),d[e++]=h,d[e++]=i,d[e++]=l,d[e++]=j,d[e++]=k,d[e++]=l},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_color"),g=a.getAttribLocation(b,"a_position"),h=a.getUniformLocation(b,"u_resolution"),i=a.getUniformLocation(b,"u_matrix");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.DYNAMIC_DRAW),a.uniform2f(h,d.width,d.height),a.uniformMatrix3fv(i,!1,d.matrix),a.enableVertexAttribArray(g),a.enableVertexAttribArray(f),a.vertexAttribPointer(g,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(f,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.lineWidth(3),a.drawArrays(a.LINES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_position;","attribute float a_color;","uniform vec2 u_resolution;","uniform mat3 u_matrix;","varying vec4 color;","void main() {","gl_Position = vec4(","((u_matrix * vec3(a_position, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(){"use strict";sigma.utils.pkg("sigma.webgl.edges"),sigma.webgl.edges.arrow={POINTS:9,ATTRIBUTES:11,addEdge:function(a,b,c,d,e,f,g){var h=(a[f+"size"]||1)/2,i=b[f+"x"],j=b[f+"y"],k=c[f+"x"],l=c[f+"y"],m=c[f+"size"],n=a.color;if(!n)switch(g("edgeColor")){case"source":n=b.color||g("defaultNodeColor");break;case"target":n=c.color||g("defaultNodeColor");break;default:n=g("defaultEdgeColor")}n=sigma.utils.floatColor(n),d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=m,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=m,d[e++]=0,d[e++]=1,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=i,d[e++]=j,d[e++]=k,d[e++]=l,d[e++]=h,d[e++]=m,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=1,d[e++]=-1,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=1,d[e++]=0,d[e++]=n,d[e++]=k,d[e++]=l,d[e++]=i,d[e++]=j,d[e++]=h,d[e++]=m,d[e++]=1,d[e++]=0,d[e++]=1,d[e++]=1,d[e++]=n},render:function(a,b,c,d){var e,f=a.getAttribLocation(b,"a_pos1"),g=a.getAttribLocation(b,"a_pos2"),h=a.getAttribLocation(b,"a_thickness"),i=a.getAttribLocation(b,"a_tSize"),j=a.getAttribLocation(b,"a_delay"),k=a.getAttribLocation(b,"a_minus"),l=a.getAttribLocation(b,"a_head"),m=a.getAttribLocation(b,"a_headPosition"),n=a.getAttribLocation(b,"a_color"),o=a.getUniformLocation(b,"u_resolution"),p=a.getUniformLocation(b,"u_matrix"),q=a.getUniformLocation(b,"u_matrixHalfPi"),r=a.getUniformLocation(b,"u_matrixHalfPiMinus"),s=a.getUniformLocation(b,"u_ratio"),t=a.getUniformLocation(b,"u_nodeRatio"),u=a.getUniformLocation(b,"u_arrowHead"),v=a.getUniformLocation(b,"u_scale");e=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,c,a.STATIC_DRAW),a.uniform2f(o,d.width,d.height),a.uniform1f(s,d.ratio/Math.pow(d.ratio,d.settings("edgesPowRatio"))),a.uniform1f(t,Math.pow(d.ratio,d.settings("nodesPowRatio"))/d.ratio),a.uniform1f(u,5),a.uniform1f(v,d.scalingRatio),a.uniformMatrix3fv(p,!1,d.matrix),a.uniformMatrix2fv(q,!1,sigma.utils.matrices.rotation(Math.PI/2,!0)),a.uniformMatrix2fv(r,!1,sigma.utils.matrices.rotation(-Math.PI/2,!0)),a.enableVertexAttribArray(f),a.enableVertexAttribArray(g),a.enableVertexAttribArray(h),a.enableVertexAttribArray(i),a.enableVertexAttribArray(j),a.enableVertexAttribArray(k),a.enableVertexAttribArray(l),a.enableVertexAttribArray(m),a.enableVertexAttribArray(n),a.vertexAttribPointer(f,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,0),a.vertexAttribPointer(g,2,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,8),a.vertexAttribPointer(h,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,16),a.vertexAttribPointer(i,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,20),a.vertexAttribPointer(j,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,24),a.vertexAttribPointer(k,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,28),a.vertexAttribPointer(l,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,32),a.vertexAttribPointer(m,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,36),a.vertexAttribPointer(n,1,a.FLOAT,!1,this.ATTRIBUTES*Float32Array.BYTES_PER_ELEMENT,40),a.drawArrays(a.TRIANGLES,d.start||0,d.count||c.length/this.ATTRIBUTES)},initProgram:function(a){var b,c,d;return b=sigma.utils.loadShader(a,["attribute vec2 a_pos1;","attribute vec2 a_pos2;","attribute float a_thickness;","attribute float a_tSize;","attribute float a_delay;","attribute float a_minus;","attribute float a_head;","attribute float a_headPosition;","attribute float a_color;","uniform vec2 u_resolution;","uniform float u_ratio;","uniform float u_nodeRatio;","uniform float u_arrowHead;","uniform float u_scale;","uniform mat3 u_matrix;","uniform mat2 u_matrixHalfPi;","uniform mat2 u_matrixHalfPiMinus;","varying vec4 color;","void main() {","vec2 pos = normalize(a_pos2 - a_pos1);","mat2 matrix = (1.0 - a_head) *","(","a_minus * u_matrixHalfPiMinus +","(1.0 - a_minus) * u_matrixHalfPi",") + a_head * (","a_headPosition * u_matrixHalfPiMinus * 0.6 +","(a_headPosition * a_headPosition - 1.0) * mat2(1.0)",");","pos = a_pos1 + (","(1.0 - a_head) * a_thickness * u_ratio * matrix * pos +","a_head * u_arrowHead * a_thickness * u_ratio * matrix * pos +","a_delay * pos * (","a_tSize / u_nodeRatio +","u_arrowHead * a_thickness * u_ratio",")",");","gl_Position = vec4(","((u_matrix * vec3(pos, 1)).xy /","u_resolution * 2.0 - 1.0) * vec2(1, -1),","0,","1",");","float c = a_color;","color.b = mod(c, 256.0); c = floor(c / 256.0);","color.g = mod(c, 256.0); c = floor(c / 256.0);","color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;","color.a = 1.0;","}"].join("\n"),a.VERTEX_SHADER),c=sigma.utils.loadShader(a,["precision mediump float;","varying vec4 color;","void main(void) {","gl_FragColor = color;","}"].join("\n"),a.FRAGMENT_SHADER),d=sigma.utils.loadProgram(a,[b,c])}}}(),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.canvas.labels"),sigma.canvas.labels.def=function(a,b,c){var d,e=c("prefix")||"",f=a[e+"size"];f0&&(b.beginPath(),b.fillStyle="node"===c("nodeBorderColor")?a.color||c("defaultNodeColor"):c("defaultNodeBorderColor"),b.arc(a[j+"x"],a[j+"y"],k+c("borderSize"),0,2*Math.PI,!0),b.closePath(),b.fill());var m=sigma.canvas.nodes[a.type]||sigma.canvas.nodes.def;m(a,b,c),a.label&&"string"==typeof a.label&&(b.fillStyle="node"===c("labelHoverColor")?a.color||c("defaultNodeColor"):c("defaultLabelHoverColor"),b.fillText(a.label,Math.round(a[j+"x"]+k+3),Math.round(a[j+"y"]+l/3)))}}.call(this),function(){"use strict";sigma.utils.pkg("sigma.canvas.nodes"),sigma.canvas.nodes.def=function(a,b,c){var d=c("prefix")||"";b.fillStyle=a.color||c("defaultNodeColor"),b.beginPath(),b.arc(a[d+"x"],a[d+"y"],a[d+"size"],0,2*Math.PI,!0),b.closePath(),b.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.def=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=a[g+"size"]||1,i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor");if(!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(b[g+"x"],b[g+"y"]),d.lineTo(c[g+"x"],c[g+"y"]),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.curve=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=a[g+"size"]||1,i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor"),l={},m=b[g+"size"],n=b[g+"x"],o=b[g+"y"],p=c[g+"x"],q=c[g+"y"];if(l=b.id===c.id?sigma.utils.getSelfLoopControlPoints(n,o,m):sigma.utils.getQuadraticControlPoint(n,o,p,q),!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(n,o),b.id===c.id?d.bezierCurveTo(l.x1,l.y1,l.x2,l.y2,p,q):d.quadraticCurveTo(l.x,l.y,p,q),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.arrow=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=e("edgeColor"),i=e("defaultNodeColor"),j=e("defaultEdgeColor"),k=a[g+"size"]||1,l=c[g+"size"],m=b[g+"x"],n=b[g+"y"],o=c[g+"x"],p=c[g+"y"],q=Math.max(2.5*k,e("minArrowSize")),r=Math.sqrt(Math.pow(o-m,2)+Math.pow(p-n,2)),s=m+(o-m)*(r-q-l)/r,t=n+(p-n)*(r-q-l)/r,u=(o-m)*q/r,v=(p-n)*q/r;if(!f)switch(h){case"source":f=b.color||i;break;case"target":f=c.color||i;break;default:f=j}d.strokeStyle=f,d.lineWidth=k,d.beginPath(),d.moveTo(m,n),d.lineTo(s,t),d.stroke(),d.fillStyle=f,d.beginPath(),d.moveTo(s+u,t+v),d.lineTo(s+.6*v,t-.6*u),d.lineTo(s-.6*v,t+.6*u),d.lineTo(s+u,t+v),d.closePath(),d.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edges"),sigma.canvas.edges.curvedArrow=function(a,b,c,d,e){var f,g,h,i,j,k=a.color,l=e("prefix")||"",m=e("edgeColor"),n=e("defaultNodeColor"),o=e("defaultEdgeColor"),p={},q=a[l+"size"]||1,r=c[l+"size"],s=b[l+"x"],t=b[l+"y"],u=c[l+"x"],v=c[l+"y"],w=Math.max(2.5*q,e("minArrowSize"));if(p=b.id===c.id?sigma.utils.getSelfLoopControlPoints(s,t,r):sigma.utils.getQuadraticControlPoint(s,t,u,v),b.id===c.id?(f=Math.sqrt(Math.pow(u-p.x1,2)+Math.pow(v-p.y1,2)),g=p.x1+(u-p.x1)*(f-w-r)/f,h=p.y1+(v-p.y1)*(f-w-r)/f,i=(u-p.x1)*w/f,j=(v-p.y1)*w/f):(f=Math.sqrt(Math.pow(u-p.x,2)+Math.pow(v-p.y,2)),g=p.x+(u-p.x)*(f-w-r)/f,h=p.y+(v-p.y)*(f-w-r)/f,i=(u-p.x)*w/f,j=(v-p.y)*w/f),!k)switch(m){case"source":k=b.color||n;break;case"target":k=c.color||n;break;default:k=o}d.strokeStyle=k,d.lineWidth=q,d.beginPath(),d.moveTo(s,t),b.id===c.id?d.bezierCurveTo(p.x2,p.y2,p.x1,p.y1,g,h):d.quadraticCurveTo(p.x,p.y,g,h),d.stroke(),d.fillStyle=k,d.beginPath(),d.moveTo(g+i,h+j),d.lineTo(g+.6*j,h-.6*i),d.lineTo(g-.6*j,h+.6*i),d.lineTo(g+i,h+j),d.closePath(),d.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.def=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=a[g+"size"]||1,i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor");if(!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}f="edge"===e("edgeHoverColor")?a.hover_color||f:a.hover_color||e("defaultEdgeHoverColor")||f,h*=e("edgeHoverSizeRatio"),d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(b[g+"x"],b[g+"y"]),d.lineTo(c[g+"x"],c[g+"y"]),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.curve=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=e("edgeHoverSizeRatio")*(a[g+"size"]||1),i=e("edgeColor"),j=e("defaultNodeColor"),k=e("defaultEdgeColor"),l={},m=b[g+"size"],n=b[g+"x"],o=b[g+"y"],p=c[g+"x"],q=c[g+"y"];if(l=b.id===c.id?sigma.utils.getSelfLoopControlPoints(n,o,m):sigma.utils.getQuadraticControlPoint(n,o,p,q),!f)switch(i){case"source":f=b.color||j;break;case"target":f=c.color||j;break;default:f=k}f="edge"===e("edgeHoverColor")?a.hover_color||f:a.hover_color||e("defaultEdgeHoverColor")||f,d.strokeStyle=f,d.lineWidth=h,d.beginPath(),d.moveTo(n,o),b.id===c.id?d.bezierCurveTo(l.x1,l.y1,l.x2,l.y2,p,q):d.quadraticCurveTo(l.x,l.y,p,q),d.stroke()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.arrow=function(a,b,c,d,e){var f=a.color,g=e("prefix")||"",h=e("edgeColor"),i=e("defaultNodeColor"),j=e("defaultEdgeColor"),k=a[g+"size"]||1,l=c[g+"size"],m=b[g+"x"],n=b[g+"y"],o=c[g+"x"],p=c[g+"y"]; +k=a.hover?e("edgeHoverSizeRatio")*k:k;var q=2.5*k,r=Math.sqrt(Math.pow(o-m,2)+Math.pow(p-n,2)),s=m+(o-m)*(r-q-l)/r,t=n+(p-n)*(r-q-l)/r,u=(o-m)*q/r,v=(p-n)*q/r;if(!f)switch(h){case"source":f=b.color||i;break;case"target":f=c.color||i;break;default:f=j}f="edge"===e("edgeHoverColor")?a.hover_color||f:a.hover_color||e("defaultEdgeHoverColor")||f,d.strokeStyle=f,d.lineWidth=k,d.beginPath(),d.moveTo(m,n),d.lineTo(s,t),d.stroke(),d.fillStyle=f,d.beginPath(),d.moveTo(s+u,t+v),d.lineTo(s+.6*v,t-.6*u),d.lineTo(s-.6*v,t+.6*u),d.lineTo(s+u,t+v),d.closePath(),d.fill()}}(),function(){"use strict";sigma.utils.pkg("sigma.canvas.edgehovers"),sigma.canvas.edgehovers.curvedArrow=function(a,b,c,d,e){var f,g,h,i,j,k,l=a.color,m=e("prefix")||"",n=e("edgeColor"),o=e("defaultNodeColor"),p=e("defaultEdgeColor"),q={},r=e("edgeHoverSizeRatio")*(a[m+"size"]||1),s=c[m+"size"],t=b[m+"x"],u=b[m+"y"],v=c[m+"x"],w=c[m+"y"];if(q=b.id===c.id?sigma.utils.getSelfLoopControlPoints(t,u,s):sigma.utils.getQuadraticControlPoint(t,u,v,w),b.id===c.id?(f=Math.sqrt(Math.pow(v-q.x1,2)+Math.pow(w-q.y1,2)),g=2.5*r,h=q.x1+(v-q.x1)*(f-g-s)/f,i=q.y1+(w-q.y1)*(f-g-s)/f,j=(v-q.x1)*g/f,k=(w-q.y1)*g/f):(f=Math.sqrt(Math.pow(v-q.x,2)+Math.pow(w-q.y,2)),g=2.5*r,h=q.x+(v-q.x)*(f-g-s)/f,i=q.y+(w-q.y)*(f-g-s)/f,j=(v-q.x)*g/f,k=(w-q.y)*g/f),!l)switch(n){case"source":l=b.color||o;break;case"target":l=c.color||o;break;default:l=p}l="edge"===e("edgeHoverColor")?a.hover_color||l:a.hover_color||e("defaultEdgeHoverColor")||l,d.strokeStyle=l,d.lineWidth=r,d.beginPath(),d.moveTo(t,u),b.id===c.id?d.bezierCurveTo(q.x2,q.y2,q.x1,q.y1,h,i):d.quadraticCurveTo(q.x,q.y,h,i),d.stroke(),d.fillStyle=l,d.beginPath(),d.moveTo(h+j,i+k),d.lineTo(h+.6*k,i-.6*j),d.lineTo(h-.6*k,i+.6*j),d.lineTo(h+j,i+k),d.closePath(),d.fill()}}(),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.canvas.extremities"),sigma.canvas.extremities.def=function(a,b,c,d,e){(sigma.canvas.hovers[b.type]||sigma.canvas.hovers.def)(b,d,e),(sigma.canvas.hovers[c.type]||sigma.canvas.hovers.def)(c,d,e)}}.call(this),function(){"use strict";sigma.utils.pkg("sigma.svg.utils"),sigma.svg.utils={show:function(a){return a.style.display="",this},hide:function(a){return a.style.display="none",this}}}(),function(){"use strict";sigma.utils.pkg("sigma.svg.nodes"),sigma.svg.nodes.def={create:function(a,b){var c=(b("prefix")||"",document.createElementNS(b("xmlns"),"circle"));return c.setAttributeNS(null,"data-node-id",a.id),c.setAttributeNS(null,"class",b("classPrefix")+"-node"),c.setAttributeNS(null,"fill",a.color||b("defaultNodeColor")),c},update:function(a,b,c){var d=c("prefix")||"";return b.setAttributeNS(null,"cx",a[d+"x"]),b.setAttributeNS(null,"cy",a[d+"y"]),b.setAttributeNS(null,"r",a[d+"size"]),c("freeStyle")||b.setAttributeNS(null,"fill",a.color||c("defaultNodeColor")),b.style.display="",this}}}(),function(){"use strict";sigma.utils.pkg("sigma.svg.edges"),sigma.svg.edges.def={create:function(a,b,c,d){var e=a.color,f=(d("prefix")||"",d("edgeColor")),g=d("defaultNodeColor"),h=d("defaultEdgeColor");if(!e)switch(f){case"source":e=b.color||g;break;case"target":e=c.color||g;break;default:e=h}var i=document.createElementNS(d("xmlns"),"line");return i.setAttributeNS(null,"data-edge-id",a.id),i.setAttributeNS(null,"class",d("classPrefix")+"-edge"),i.setAttributeNS(null,"stroke",e),i},update:function(a,b,c,d,e){var f=e("prefix")||"";return b.setAttributeNS(null,"stroke-width",a[f+"size"]||1),b.setAttributeNS(null,"x1",c[f+"x"]),b.setAttributeNS(null,"y1",c[f+"y"]),b.setAttributeNS(null,"x2",d[f+"x"]),b.setAttributeNS(null,"y2",d[f+"y"]),b.style.display="",this}}}(),function(){"use strict";sigma.utils.pkg("sigma.svg.edges"),sigma.svg.edges.curve={create:function(a,b,c,d){var e=a.color,f=(d("prefix")||"",d("edgeColor")),g=d("defaultNodeColor"),h=d("defaultEdgeColor");if(!e)switch(f){case"source":e=b.color||g;break;case"target":e=c.color||g;break;default:e=h}var i=document.createElementNS(d("xmlns"),"path");return i.setAttributeNS(null,"data-edge-id",a.id),i.setAttributeNS(null,"class",d("classPrefix")+"-edge"),i.setAttributeNS(null,"stroke",e),i},update:function(a,b,c,d,e){var f=e("prefix")||"";b.setAttributeNS(null,"stroke-width",a[f+"size"]||1);var g=(c[f+"x"]+d[f+"x"])/2+(d[f+"y"]-c[f+"y"])/4,h=(c[f+"y"]+d[f+"y"])/2+(c[f+"x"]-d[f+"x"])/4,i="M"+c[f+"x"]+","+c[f+"y"]+" Q"+g+","+h+" "+d[f+"x"]+","+d[f+"y"];return b.setAttributeNS(null,"d",i),b.setAttributeNS(null,"fill","none"),b.style.display="",this}}}(),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.svg.labels"),sigma.svg.labels.def={create:function(a,b){var c=b("prefix")||"",d=a[c+"size"],e=document.createElementNS(b("xmlns"),"text"),f="fixed"===b("labelSize")?b("defaultLabelSize"):b("labelSizeRatio")*d,g="node"===b("labelColor")?a.color||b("defaultNodeColor"):b("defaultLabelColor");return e.setAttributeNS(null,"data-label-target",a.id),e.setAttributeNS(null,"class",b("classPrefix")+"-label"),e.setAttributeNS(null,"font-size",f),e.setAttributeNS(null,"font-family",b("font")),e.setAttributeNS(null,"fill",g),e.innerHTML=a.label,e.textContent=a.label,e},update:function(a,b,c){var d=c("prefix")||"",e=a[d+"size"],f="fixed"===c("labelSize")?c("defaultLabelSize"):c("labelSizeRatio")*e;return!c("forceLabels")&&ed;d++)if(!y[x[d]])throw new Error('The rescale setting "'+x[d]+'" is not recognized.');var z=~x.indexOf("nodePosition"),A=~x.indexOf("nodeSize"),B=~x.indexOf("edgeSize");for(j="outside"===n("scalingMode")?Math.max(v/Math.max(r-p,1),w/Math.max(s-q,1)):Math.min(v/Math.max(r-p,1),w/Math.max(s-q,1)),k=(n("rescaleIgnoreSize")?0:(n("maxNodeSize")||t)/j)+(n("sideMargin")||0),r+=k,p-=k,s+=k,q-=k,j="outside"===n("scalingMode")?Math.max(v/Math.max(r-p,1),w/Math.max(s-q,1)):Math.min(v/Math.max(r-p,1),w/Math.max(s-q,1)),n("maxNodeSize")||n("minNodeSize")?n("maxNodeSize")===n("minNodeSize")?(f=0,g=+n("maxNodeSize")):(f=(n("maxNodeSize")-n("minNodeSize"))/t,g=+n("minNodeSize")):(f=1,g=0),n("maxEdgeSize")||n("minEdgeSize")?n("maxEdgeSize")===n("minEdgeSize")?(h=0,i=+n("minEdgeSize")):(h=(n("maxEdgeSize")-n("minEdgeSize"))/u,i=+n("minEdgeSize")):(h=1,i=0),d=0,e=m.length;e>d;d++)m[d][b+"size"]=m[d][a+"size"]*(B?h:1)+(B?i:0);for(d=0,e=l.length;e>d;d++)l[d][b+"size"]=l[d][a+"size"]*(A?f:1)+(A?g:0),l[d][b+"x"]=(l[d][a+"x"]-(r+p)/2)*(z?j:1),l[d][b+"y"]=(l[d][a+"y"]-(s+q)/2)*(z?j:1)},sigma.utils.getBoundaries=function(a,b,c){var d,e,f=a.edges(),g=a.nodes(),h=-(1/0),i=-(1/0),j=1/0,k=1/0,l=-(1/0),m=-(1/0);if(c)for(d=0,e=f.length;e>d;d++)h=Math.max(f[d][b+"size"],h);for(d=0,e=g.length;e>d;d++)i=Math.max(g[d][b+"size"],i),l=Math.max(g[d][b+"x"],l),j=Math.min(g[d][b+"x"],j),m=Math.max(g[d][b+"y"],m),k=Math.min(g[d][b+"y"],k);return h=h||1,i=i||1,{weightMax:h,sizeMax:i,minX:j,minY:k,maxX:l,maxY:m}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.middlewares"),sigma.middlewares.copy=function(a,b){var c,d,e;if(b+""!=a+""){for(e=this.graph.nodes(),c=0,d=e.length;d>c;c++)e[c][b+"x"]=e[c][a+"x"],e[c][b+"y"]=e[c][a+"y"],e[c][b+"size"]=e[c][a+"size"];for(e=this.graph.edges(),c=0,d=e.length;d>c;c++)e[c][b+"size"]=e[c][a+"size"]}}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc.animation.running");var b=function(){var a=0;return function(){return""+ ++a}}();sigma.misc.animation.camera=function(c,d,e){if(!(c instanceof sigma.classes.camera&&"object"==typeof d&&d))throw"animation.camera: Wrong arguments.";if("number"!=typeof d.x&&"number"!=typeof d.y&&"number"!=typeof d.ratio&&"number"!=typeof d.angle)throw"There must be at least one valid coordinate in the given val.";var f,g,h,i,j,k,l=e||{},m=sigma.utils.dateNow();return k={x:c.x,y:c.y,ratio:c.ratio,angle:c.angle},j=l.duration,i="function"!=typeof l.easing?sigma.utils.easings[l.easing||"quadraticInOut"]:l.easing,f=function(){var b,e=l.duration?(sigma.utils.dateNow()-m)/l.duration:1;e>=1?(c.isAnimated=!1,c.goTo({x:d.x!==a?d.x:k.x,y:d.y!==a?d.y:k.y,ratio:d.ratio!==a?d.ratio:k.ratio,angle:d.angle!==a?d.angle:k.angle}),cancelAnimationFrame(g),delete sigma.misc.animation.running[g],"function"==typeof l.onComplete&&l.onComplete()):(b=i(e),c.isAnimated=!0,c.goTo({x:d.x!==a?k.x+(d.x-k.x)*b:k.x,y:d.y!==a?k.y+(d.y-k.y)*b:k.y,ratio:d.ratio!==a?k.ratio+(d.ratio-k.ratio)*b:k.ratio,angle:d.angle!==a?k.angle+(d.angle-k.angle)*b:k.angle}),"function"==typeof l.onNewFrame&&l.onNewFrame(),h.frameId=requestAnimationFrame(f))},g=b(),h={frameId:requestAnimationFrame(f),target:c,type:"camera",options:l,fn:f},sigma.misc.animation.running[g]=h,g},sigma.misc.animation.kill=function(a){if(1!==arguments.length||"number"!=typeof a)throw"animation.kill: Wrong arguments.";var b=sigma.misc.animation.running[a];return b&&(cancelAnimationFrame(a),delete sigma.misc.animation.running[b.frameId],"camera"===b.type&&(b.target.isAnimated=!1),"function"==typeof(b.options||{}).onComplete&&b.options.onComplete()),this},sigma.misc.animation.killAll=function(a){var b,c,d=0,e="string"==typeof a?a:null,f="object"==typeof a?a:null,g=sigma.misc.animation.running;for(c in g)e&&g[c].type!==e||f&&g[c].target!==f||(b=sigma.misc.animation.running[c],cancelAnimationFrame(b.frameId),delete sigma.misc.animation.running[c],"camera"===b.type&&(b.target.isAnimated=!1),d++,"function"==typeof(b.options||{}).onComplete&&b.options.onComplete());return d},sigma.misc.animation.has=function(a){var b,c="string"==typeof a?a:null,d="object"==typeof a?a:null,e=sigma.misc.animation.running;for(b in e)if(!(c&&e[b].type!==c||d&&e[b].target!==d))return!0;return!1}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc"),sigma.misc.bindEvents=function(b){function c(a){a&&(h="x"in a.data?a.data.x:h,i="y"in a.data?a.data.y:i);var c,d,e,f,g,k,l,m,n=[],o=h+j.width/2,p=i+j.height/2,q=j.camera.cameraPosition(h,i),r=j.camera.quadtree.point(q.x,q.y);if(r.length)for(c=0,e=r.length;e>c;c++)if(f=r[c],g=f[b+"x"],k=f[b+"y"],l=f[b+"size"],!f.hidden&&o>g-l&&g+l>o&&p>k-l&&k+l>p&&Math.sqrt(Math.pow(o-g,2)+Math.pow(p-k,2))n[d].size){n.splice(d,0,f),m=!0;break}m||n.push(f)}return n}function d(c){function d(a,b){for(r=!1,g=0;ga[g].size){a.splice(g,0,b),r=!0;break}r||a.push(b)}if(!j.settings("enableEdgeHovering"))return[];var e=sigma.renderers.canvas&&j instanceof sigma.renderers.canvas;if(!e)throw new Error("The edge events feature is not compatible with the WebGL renderer");c&&(h="x"in c.data?c.data.x:h,i="y"in c.data?c.data.y:i);var f,g,k,l,m,n,o,p,q,r,s=j.settings("edgeHoverPrecision"),t={},u=[],v=h+j.width/2,w=i+j.height/2,x=j.camera.cameraPosition(h,i),y=[];if(e){var z=j.camera.quadtree.area(j.camera.getRectangle(j.width,j.height));for(l=z,f=0,k=l.length;k>f;f++)t[l[f].id]=l[f]}if(j.camera.edgequadtree!==a&&(y=j.camera.edgequadtree.point(x.x,x.y)),y.length)for(f=0,k=y.length;k>f;f++)m=y[f],o=j.graph.nodes(m.source),p=j.graph.nodes(m.target),n=m[b+"size"]||m["read_"+b+"size"],!m.hidden&&!o.hidden&&!p.hidden&&(!e||t[m.source]||t[m.target])&&sigma.utils.getDistance(o[b+"x"],o[b+"y"],v,w)>o[b+"size"]&&sigma.utils.getDistance(p[b+"x"],p[b+"y"],v,w)>p[b+"size"]&&("curve"==m.type||"curvedArrow"==m.type?o.id===p.id?(q=sigma.utils.getSelfLoopControlPoints(o[b+"x"],o[b+"y"],o[b+"size"]),sigma.utils.isPointOnBezierCurve(v,w,o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"],q.x1,q.y1,q.x2,q.y2,Math.max(n,s))&&d(u,m)):(q=sigma.utils.getQuadraticControlPoint(o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"]),sigma.utils.isPointOnQuadraticCurve(v,w,o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"],q.x,q.y,Math.max(n,s))&&d(u,m)):sigma.utils.isPointOnSegment(v,w,o[b+"x"],o[b+"y"],p[b+"x"],p[b+"y"],Math.max(n,s))&&d(u,m));return u}function e(a){function b(a){j.settings("eventsEnabled")&&(j.dispatchEvent("click",a.data),i=c(a),k=d(a),i.length?(j.dispatchEvent("clickNode",{node:i[0],captor:a.data}),j.dispatchEvent("clickNodes",{node:i,captor:a.data})):k.length?(j.dispatchEvent("clickEdge",{edge:k[0],captor:a.data}),j.dispatchEvent("clickEdges",{edge:k,captor:a.data})):j.dispatchEvent("clickStage",{captor:a.data}))}function e(a){j.settings("eventsEnabled")&&(j.dispatchEvent("doubleClick",a.data),i=c(a),k=d(a),i.length?(j.dispatchEvent("doubleClickNode",{node:i[0],captor:a.data}),j.dispatchEvent("doubleClickNodes",{node:i,captor:a.data})):k.length?(j.dispatchEvent("doubleClickEdge",{edge:k[0],captor:a.data}),j.dispatchEvent("doubleClickEdges",{edge:k,captor:a.data})):j.dispatchEvent("doubleClickStage",{captor:a.data}))}function f(a){j.settings("eventsEnabled")&&(j.dispatchEvent("rightClick",a.data),i=c(a),k=d(a),i.length?(j.dispatchEvent("rightClickNode",{node:i[0],captor:a.data}),j.dispatchEvent("rightClickNodes",{node:i,captor:a.data})):k.length?(j.dispatchEvent("rightClickEdge",{edge:k[0],captor:a.data}),j.dispatchEvent("rightClickEdges",{edge:k,captor:a.data})):j.dispatchEvent("rightClickStage",{captor:a.data}))}function g(a){if(j.settings("eventsEnabled")){var b,c,d,e,f=[],g=[];for(b in l)f.push(l[b]);for(l={},c=0,d=f.length;d>c;c++)j.dispatchEvent("outNode",{node:f[c],captor:a.data});for(f.length&&j.dispatchEvent("outNodes",{nodes:f,captor:a.data}),m={},c=0,e=g.length;e>c;c++)j.dispatchEvent("outEdge",{edge:g[c],captor:a.data});g.length&&j.dispatchEvent("outEdges",{edges:g,captor:a.data})}}function h(a){if(j.settings("eventsEnabled")){i=c(a),k=d(a);var b,e,f,g,h=[],n=[],o={},p=i.length,q=[],r=[],s={},t=k.length;for(b=0;p>b;b++)f=i[b],o[f.id]=f,l[f.id]||(n.push(f),l[f.id]=f);for(e in l)o[e]||(h.push(l[e]),delete l[e]);for(b=0,p=n.length;p>b;b++)j.dispatchEvent("overNode",{node:n[b],captor:a.data});for(b=0,p=h.length;p>b;b++)j.dispatchEvent("outNode",{node:h[b],captor:a.data});for(n.length&&j.dispatchEvent("overNodes",{nodes:n,captor:a.data}),h.length&&j.dispatchEvent("outNodes",{nodes:h,captor:a.data}),b=0;t>b;b++)g=k[b],s[g.id]=g,m[g.id]||(r.push(g),m[g.id]=g);for(e in m)s[e]||(q.push(m[e]),delete m[e]);for(b=0,t=r.length;t>b;b++)j.dispatchEvent("overEdge",{edge:r[b],captor:a.data});for(b=0,t=q.length;t>b;b++)j.dispatchEvent("outEdge",{edge:q[b],captor:a.data});r.length&&j.dispatchEvent("overEdges",{edges:r,captor:a.data}),q.length&&j.dispatchEvent("outEdges",{edges:q,captor:a.data})}}var i,k,l={},m={};a.bind("click",b),a.bind("mousedown",h),a.bind("mouseup",h),a.bind("mousemove",h),a.bind("mouseout",g),a.bind("doubleclick",e),a.bind("rightclick",f),j.bind("render",h)}var f,g,h,i,j=this;for(f=0,g=this.captors.length;g>f;f++)e(this.captors[f])}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc"),sigma.misc.bindDOMEvents=function(a){function b(a){this.attr=function(b){return a.getAttributeNS(null,b)},this.tag=a.tagName,this["class"]=this.attr("class"),this.id=this.attr("id"),this.isNode=function(){return!!~this["class"].indexOf(g.settings("classPrefix")+"-node")},this.isEdge=function(){return!!~this["class"].indexOf(g.settings("classPrefix")+"-edge")},this.isHover=function(){return!!~this["class"].indexOf(g.settings("classPrefix")+"-hover")}}function c(a){if(g.settings("eventsEnabled")){g.dispatchEvent("click",a);var c=new b(a.target);c.isNode()?g.dispatchEvent("clickNode",{node:h.nodes(c.attr("data-node-id"))}):g.dispatchEvent("clickStage"),a.preventDefault(),a.stopPropagation()}}function d(a){if(g.settings("eventsEnabled")){g.dispatchEvent("doubleClick",a);var c=new b(a.target);c.isNode()?g.dispatchEvent("doubleClickNode",{node:h.nodes(c.attr("data-node-id"))}):g.dispatchEvent("doubleClickStage"),a.preventDefault(),a.stopPropagation()}}function e(a){var c=a.toElement||a.target;if(g.settings("eventsEnabled")&&c){var d=new b(c);if(d.isNode())g.dispatchEvent("overNode",{node:h.nodes(d.attr("data-node-id"))});else if(d.isEdge()){var e=h.edges(d.attr("data-edge-id"));g.dispatchEvent("overEdge",{edge:e,source:h.nodes(e.source),target:h.nodes(e.target)})}}}function f(a){var c=a.fromElement||a.originalTarget;if(g.settings("eventsEnabled")){var d=new b(c);if(d.isNode())g.dispatchEvent("outNode",{node:h.nodes(d.attr("data-node-id"))});else if(d.isEdge()){var e=h.edges(d.attr("data-edge-id"));g.dispatchEvent("outEdge",{edge:e,source:h.nodes(e.source),target:h.nodes(e.target)})}}}var g=this,h=this.graph;a.addEventListener("click",c,!1),sigma.utils.doubleClick(a,"click",d),a.addEventListener("touchstart",c,!1),sigma.utils.doubleClick(a,"touchstart",d),a.addEventListener("mouseover",e,!0),a.addEventListener("mouseout",f,!0)}}.call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.misc"),sigma.misc.drawHovers=function(a){function b(){c.contexts.hover.canvas.width=c.contexts.hover.canvas.width;var b,f,g,h,i,j=c.settings("defaultNodeType"),k=c.settings("defaultEdgeType"),l=sigma.canvas.hovers,m=sigma.canvas.edgehovers,n=sigma.canvas.extremities,o=c.settings.embedObjects({prefix:a});if(o("enableHovering")&&o("singleHover")&&Object.keys(d).length&&(h=d[Object.keys(d)[0]],(l[h.type]||l[j]||l.def)(h,c.contexts.hover,o)),o("enableHovering")&&!o("singleHover"))for(b in d)(l[d[b].type]||l[j]||l.def)(d[b],c.contexts.hover,o);if(o("enableEdgeHovering")&&o("singleHover")&&Object.keys(e).length&&(i=e[Object.keys(e)[0]],f=c.graph.nodes(i.source),g=c.graph.nodes(i.target),i.hidden||((m[i.type]||m[k]||m.def)(i,f,g,c.contexts.hover,o),o("edgeHoverExtremities")?(n[i.type]||n.def)(i,f,g,c.contexts.hover,o):((sigma.canvas.nodes[f.type]||sigma.canvas.nodes.def)(f,c.contexts.hover,o),(sigma.canvas.nodes[g.type]||sigma.canvas.nodes.def)(g,c.contexts.hover,o)))),o("enableEdgeHovering")&&!o("singleHover"))for(b in e)i=e[b],f=c.graph.nodes(i.source),g=c.graph.nodes(i.target),i.hidden||((m[i.type]||m[k]||m.def)(i,f,g,c.contexts.hover,o),o("edgeHoverExtremities")?(n[i.type]||n.def)(i,f,g,c.contexts.hover,o):((sigma.canvas.nodes[f.type]||sigma.canvas.nodes.def)(f,c.contexts.hover,o),(sigma.canvas.nodes[g.type]||sigma.canvas.nodes.def)(g,c.contexts.hover,o)))}var c=this,d={},e={};this.bind("overNode",function(a){var c=a.data.node;c.hidden||(d[c.id]=c,b())}),this.bind("outNode",function(a){delete d[a.data.node.id],b()}),this.bind("overEdge",function(a){var c=a.data.edge;c.hidden||(e[c.id]=c,b())}),this.bind("outEdge",function(a){delete e[a.data.edge.id],b()}),this.bind("render",function(a){b()})}}.call(this); + +/**sigma.plugins.dragNodes**/ +(function(){"use strict";function a(a,b){function c(a){var b=window.getComputedStyle(a),c=function(a){return parseInt(b.getPropertyValue(a).replace("px",""))||0};return{left:a.getBoundingClientRect().left+c("padding-left"),top:a.getBoundingClientRect().top+c("padding-top")}}function d(a){t=!1,l.removeEventListener("mousemove",i),l.removeEventListener("mouseup",h),r.length||(p=null)}function e(a){s[a.data.node.id]||(r.push(a.data.node),s[a.data.node.id]=!0,r.length&&!t&&(p=r[r.length-1],n.addEventListener("mousedown",g)))}function f(a){var b=r.map(function(a){return a}).indexOf(a.data.node);r.splice(b,1),delete s[a.data.node.id],r.length&&!t?p=r[r.length-1]:n.removeEventListener("mousedown",g)}function g(a){t=!0;var b=k.graph.nodes().length;if(p&&b>1){n.removeEventListener("mousedown",g),l.addEventListener("mousemove",i),l.addEventListener("mouseup",h);var c,d;for(c in k.cameras)d=k.cameras[c],void 0!==d.edgequadtree&&(d.edgequadtree._enabled=!1);m.settings({mouseEnabled:!1,enableHovering:!1}),k.refresh(),j.dispatchEvent("startdrag",{node:p,captor:a,renderer:m})}}function h(a){t=!1,n.addEventListener("mousedown",g),l.removeEventListener("mousemove",i),l.removeEventListener("mouseup",h);var b,c;for(b in k.cameras)c=k.cameras[b],void 0!==c.edgequadtree&&(c.edgequadtree._enabled=!0);m.settings({mouseEnabled:!0,enableHovering:!0}),k.refresh(),u&&j.dispatchEvent("drop",{node:p,captor:a,renderer:m}),j.dispatchEvent("dragend",{node:p,captor:a,renderer:m}),u=!1,p=null}function i(a){function b(){for(var b=c(m.container),d=a.clientX-b.left,e=a.clientY-b.top,f=Math.cos(o.angle),g=Math.sin(o.angle),h=k.graph.nodes(),i=[],l=0;2>l;l++){var n=h[l],r={x:n.x*f+n.y*g,y:n.y*f-n.x*g,renX:n[q+"x"],renY:n[q+"y"]};i.push(r)}if(i[0].x===i[1].x&&i[0].y===i[1].y){var s=0===i[0].renX?1:i[0].renX,t=0===i[0].renY?1:i[0].renY;d=i[0].x/s*(d-i[0].renX)+i[0].x,e=i[0].y/t*(e-i[0].renY)+i[0].y}else{var s=(i[1].renX-i[0].renX)/(i[1].x-i[0].x),t=(i[1].renY-i[0].renY)/(i[1].y-i[0].y);i[1].x===i[0].x&&(s=t),i[1].y===i[0].y&&(t=s),d=(d-i[0].renX)/s+i[0].x,e=(e-i[0].renY)/t+i[0].y}p.x=d*f-e*g,p.y=e*f+d*g,k.refresh(),u=!0,j.dispatchEvent("drag",{node:p,captor:a,renderer:m})}if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){clearTimeout(d);var d=setTimeout(b,0)}else b()}if(sigma.classes.dispatcher.extend(this),sigma.renderers.webgl&&b instanceof sigma.renderers.webgl)throw new Error("The sigma.plugins.dragNodes is not compatible with the WebGL renderer");var j=this,k=a,l=document.body,m=b,n=b.container.lastChild,o=b.camera,p=null,q="",r=[],s={},t=!1,u=!1;b instanceof sigma.renderers.svg&&(n=b.container.firstChild),q=b instanceof sigma.renderers.webgl?b.options.prefix.substr(5):b.options.prefix,b.bind("overNode",e),b.bind("outNode",f),b.bind("click",d),k.bind("kill",function(){j.unbindAll()}),this.unbindAll=function(){n.removeEventListener("mousedown",g),l.removeEventListener("mousemove",i),l.removeEventListener("mouseup",h),m.unbind("overNode",e),m.unbind("outNode",f)}}if("undefined"==typeof sigma)throw"sigma is not declared";sigma.utils.pkg("sigma.plugins");var b={};sigma.plugins.dragNodes=function(c,d){return b[c.id]||(b[c.id]=new a(c,d)),c.bind("kill",function(){sigma.plugins.killDragNodes(c)}),b[c.id]},sigma.plugins.killDragNodes=function(c){b[c.id]instanceof a&&(b[c.id].unbindAll(),delete b[c.id])}}).call(window); + +/**shape-library**/ +(function(c){var b=[];var m=function(o,n,p){b.push({"name":o,"drawShape":n,"drawBorder":p})};var d=function(){return b};var h=function(n){return function(s,o,t,r,p,q){q.fillStyle=p;q.beginPath();n(s,o,t,r,q);q.closePath();q.fill()}};var j=function(n){return function(s,o,t,r,p,q){q.strokeStyle=p;q.lineWidth=r/5;q.beginPath();n(s,o,t,r,q);q.closePath();q.stroke()}};var f=function(s,n,t,r,q){var o=Math.PI*45/180;q.moveTo(n+r*Math.sin(o),t-r*Math.cos(o));for(var p=1;p<4;p++){q.lineTo(n+Math.sin(o+2*Math.PI*p/4)*r,t-Math.cos(o+2*Math.PI*p/4)*r)}};m("square",h(f),j(f));var i=function(q,n,r,p,o){o.arc(n,r,p,0,Math.PI*2,true)};m("circle",h(i),j(i));var a=function(q,n,r,p,o){o.moveTo(n-p,r);o.lineTo(n,r-p);o.lineTo(n+p,r);o.lineTo(n,r+p)};m("diamond",h(a),j(a));var g=function(r,n,s,q,p){var o=(r.cross&&r.cross.lineWeight)||5;p.moveTo(n-q,s-o);p.lineTo(n-q,s+o);p.lineTo(n-o,s+o);p.lineTo(n-o,s+q);p.lineTo(n+o,s+q);p.lineTo(n+o,s+o);p.lineTo(n+q,s+o);p.lineTo(n+q,s-o);p.lineTo(n+o,s-o);p.lineTo(n+o,s-q);p.lineTo(n-o,s-q);p.lineTo(n-o,s-o)};m("cross",h(g),j(g));var e=function(o,t,s,v,n){var u=(o.equilateral&&o.equilateral.numPoints)||5;var p=((o.equilateral&&o.equilateral.rotate)||0)*Math.PI/180;var r=v;n.moveTo(t+r*Math.sin(p),s-r*Math.cos(p));for(var q=1;qg;g++)e.lineTo(b+Math.sin(f+2*Math.PI*g/4)*d,c-Math.cos(f+2*Math.PI*g/4)*d)};c("square",e(g),f(g));var h=function(a,b,c,d,e){e.arc(b,c,d,0,2*Math.PI,!0)};c("circle",e(h),f(h));var i=function(a,b,c,d,e){e.moveTo(b-d,c),e.lineTo(b,c-d),e.lineTo(b+d,c),e.lineTo(b,c+d)};c("diamond",e(i),f(i));var j=function(a,b,c,d,e){var f=a.cross&&a.cross.lineWeight||5;e.moveTo(b-d,c-f),e.lineTo(b-d,c+f),e.lineTo(b-f,c+f),e.lineTo(b-f,c+d),e.lineTo(b+f,c+d),e.lineTo(b+f,c+f),e.lineTo(b+d,c+f),e.lineTo(b+d,c-f),e.lineTo(b+f,c-f),e.lineTo(b+f,c-d),e.lineTo(b-f,c-d),e.lineTo(b-f,c-f)};c("cross",e(j),f(j));var k=function(a,b,c,d,e){var f=a.equilateral&&a.equilateral.numPoints||5,g=(a.equilateral&&a.equilateral.rotate||0)*Math.PI/180,h=d;e.moveTo(b+h*Math.sin(g),c-h*Math.cos(g));for(var i=1;f>i;i++)e.lineTo(b+Math.sin(g+2*Math.PI*i/f)*h,c-Math.cos(g+2*Math.PI*i/f)*h)};c("equilateral",e(k),f(k));var l=function(a,b,c,d,e){var f=a.star&&a.star.numPoints||5,g=a.star&&a.star.innerRatio||.5,h=d,i=d*g,j=Math.PI/f;e.moveTo(b,c-d);for(var k=0;f>k;k++)e.lineTo(b+Math.sin(j+2*Math.PI*k/f)*i,c-Math.cos(j+2*Math.PI*k/f)*i),e.lineTo(b+Math.sin(2*Math.PI*(k+1)/f)*h,c-Math.cos(2*Math.PI*(k+1)/f)*h)};c("star",e(l),f(l));var m=function(a,b,c,d,e,f){f.fillStyle="yellow",f.beginPath(),f.arc(b,c,d,1.25*Math.PI,0,!1),f.arc(b,c,d,0,.75*Math.PI,!1),f.lineTo(b,c),f.closePath(),f.fill(),f.fillStyle="white",f.strokeStyle="black",f.beginPath(),f.arc(b+d/3,c-d/3,d/4,0,2*Math.PI,!1),f.closePath(),f.fill(),f.stroke(),f.fillStyle="black",f.beginPath(),f.arc(b+4*d/9,c-d/3,d/8,0,2*Math.PI,!1),f.closePath(),f.fill()};c("pacman",m,null),this.ShapeLibrary={enumerate:d,version:"0.1"}}).call(this),function(a){"use strict";if("undefined"==typeof sigma)throw"sigma is not declared";if("undefined"==typeof ShapeLibrary)throw"ShapeLibrary is not declared";sigma.utils.pkg("sigma.canvas.nodes"),sigma.utils.pkg("sigma.svg.nodes");var b=a,c={},d=function(a){b=a},e=function(a,d,e,f,g){if(b&&a.image&&a.image.url){var h=a.image.url,i=a.image.h||1,j=a.image.w||1,k=a.image.scale||1,l=a.image.clip||1,m=c[h];m||(m=document.createElement("IMG"),m.src=h,m.status="loading",m.onerror=function(){/*console.log("error loading",h),*/m.status="error"},m.onload=function(){/*console.log("redraw on image load",h),*/m.status="ok",b.refresh()},c[h]=m);var n=i>j?j/i:1,o=j>i?i/j:1,p=f*k;g.save(),g.beginPath(),g.arc(d,e,f*l,0,2*Math.PI,!0),g.closePath(),g.clip(),"ok"===m.status&&g.drawImage(m,d+Math.sin(-0.7855)*p*n,e-Math.cos(-0.7855)*p*o,p*n*2*Math.sin(-0.7855)*-1,p*o*2*Math.cos(-0.7855)),g.restore()}},f=function(a,c,d){if(b&&a.image&&a.image.url){var e=document.createElementNS(d("xmlns"),"circle"),f=document.createElementNS(d("xmlns"),"clipPath"),g=d("classPrefix")+"-clip-path-"+a.id,h=document.createElementNS(d("xmlns"),"defs"),i=document.createElementNS(d("xmlns"),"image");a.image.url;f.setAttributeNS(null,"id",g),f.appendChild(e),h.appendChild(f);var j=/MSIE [5-9]/.test(navigator.userAgent)?"":document.location.href;j=j.split("#")[0],i.setAttributeNS(null,"class",d("classPrefix")+"-node-image"),i.setAttributeNS(null,"clip-path","url("+j+"#"+g+")"),i.setAttributeNS(null,"pointer-events","none"),i.setAttributeNS("http://www.w3.org/1999/xlink","href",a.image.url),c.appendChild(h),c.appendChild(i)}},g=function(a,b,c){sigma.canvas.nodes[a]=function(a,d,f){var g=(arguments,f("prefix")||""),h=a[g+"size"],i=a.color||f("defaultNodeColor"),j=a.borderColor||i,k=a[g+"x"],l=a[g+"y"];d.save(),b&&b(a,k,l,h,i,d),c&&c(a,k,l,h,j,d),e(a,k,l,h,d),d.restore()},sigma.svg.nodes[a]={create:function(a,b){var c=document.createElementNS(b("xmlns"),"g"),d=document.createElementNS(b("xmlns"),"circle");return c.setAttributeNS(null,"class",b("classPrefix")+"-node-group"),c.setAttributeNS(null,"data-node-id",a.id),d.setAttributeNS(null,"data-node-id",a.id),d.setAttributeNS(null,"class",b("classPrefix")+"-node"),d.setAttributeNS(null,"fill",a.color||b("defaultNodeColor")),c.appendChild(d),f(a,c,b),c},update:function(a,b,c){for(var d=c("classPrefix"),e=a.image.clip||1,f=a.image.h||1,g=a.image.w||1,h=c("prefix")||"",i=a.image.scale||1,j=a[h+"size"],k=a[h+"x"],l=a[h+"y"],m=i*j,n=f>g?g/f:1,o=g>f?f/g:1,p=0,q=b.childNodes;p + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html new file mode 100644 index 00000000..a7dd5610 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fmegabar.html @@ -0,0 +1,62 @@ + +
  • + + + + + + + + +
  • +
  • + + + + + + + + +
  • +
  • + + + + + + + + +
  • + + + \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html new file mode 100644 index 00000000..3c22912a --- /dev/null +++ b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_Fsiderbar.html @@ -0,0 +1,297 @@ + +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html new file mode 100644 index 00000000..517fe12a --- /dev/null +++ b/openoiui-standlone/src/main/assembly/webroot/framework/menus/main_siderbar.html @@ -0,0 +1,231 @@ + +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + + + +
  • +
  • + + + + + + + + + + + +
  • + + + \ No newline at end of file diff --git a/openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt b/openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt new file mode 100644 index 00000000..ac089ae8 --- /dev/null +++ b/openoiui-standlone/src/main/assembly/webroot/framework/menus/readme.txt @@ -0,0 +1,17 @@ +==== + Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==== + +本目录放置菜单。 \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..ac16a3ff --- /dev/null +++ b/pom.xml @@ -0,0 +1,42 @@ + + + + + org.openo.orchestrator + openoparentpom + 0.0.1-SNAPSHOT + + 4.0.0 + org.openo.orchestrator.openoiui + openoiui-parent + pom + openoiui + + http://${openo.project.git.ip}/oipgit/git/Open-O/openoiui.git + http://${openo.project.git.ip}/oipgit/Open-O/openoiui + + + + uiframe-iui + roc-iui + umc-iui + nsoc-iui + openoiui-standlone + + diff --git a/roc-iui/pom.xml b/roc-iui/pom.xml new file mode 100644 index 00000000..81139f2c --- /dev/null +++ b/roc-iui/pom.xml @@ -0,0 +1,31 @@ + + + + 4.0.0 + + org.openo.orchestrator.openoiui + openoiui-parent + 0.0.1-SNAPSHOT + + org.openo.orchestrator.openoiui + roc-iui + jar + openo/openoiui/roc-iui + Open-O roc-iui + diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css b/roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css new file mode 100644 index 00000000..eaeec3ba --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-rs-view/css/res.css @@ -0,0 +1,593 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; + background-color: #f1f3fa !important; + +} + + +.titlefont { + font-size: 16px; + margin-top: 10px; +} + +.separator-line { + height: 1px; + width: 100%; + background: #ddd; + overflow: hidden; + margin-bottom: 15px; + margin-top: 6px; + opacity: 0.6; +} + +div.separator { + margin: 0px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + + +.container-fluid { + background-color: #fff; +} + + + +#right-menu { + position: absolute; + top: 0; + right: 0; + width: 400px; + height: 100%; + border-left: 4px solid rgb(58,174,218); + background-color: rgba(255,255,255,.95); + padding-left: 19px; + padding-right: 13px; + padding-top: 20px; + z-index: 9999; + overflow-y: auto; +} + +.right-button-pointer { + display: inline-block; + cursor: pointer; +} +.rigth { + float: right; + margin-bottom:10px; +} + +.btn-default { + color: #5b9bd1; + background-color: #fff; + border-color: #ccc; +} +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +.nodesDetail{ + margin-top:15px; +} + + +/* blue pill (inspired by iTunes) +*******************************************************************************/ + +.grey { + background-color: #e5e5e5; + color: #333; +} + +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + + + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + + + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ + + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + + + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + + + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*增加daterangepicker的css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +/*table*/ +table{ +font-size: 12px; +} +table .DataTables_sort_wrapper{ +font-size: 14px; +} +table.dataTable tbody th, table.dataTable tbody td{ +padding: 8px 10px 4px 10px !important; +} +table tr:nth-of-type(odd){ + background:#f9f9f9; +} +table tr:nth-of-type(even){ + background:#fff; +} +table td:hover{ + background-color: #f5f5f5; + border-bottom: 1px solid #d0d0d0; + border-top: 1px solid #d0d0d0; +} +table tr td label{ + cursor: pointer; +} +.table-btn span{ +padding-left:5px; +padding-right:5px; + +} + +/*table*/ +table, .dataTables_length, .dataTables_info, .dataTables_paginate{ +font-size: 12px; +} +table .heading{ +font-size: 14px; +background:#fff !important; +} +table.dataTable tbody th, table.dataTable tbody td{ +padding: 8px 10px 4px 10px !important; +} +table tr:nth-of-type(odd){ + background:#f9f9f9; +} +table tr:nth-of-type(even){ + background:#fff; +} +table td:hover{ + background-color: #f5f5f5; + border-bottom: 1px solid #d0d0d0; + border-top: 1px solid #d0d0d0; +} +table tr td label{ + cursor: pointer; +} +.table-btn span{ +padding-left:5px; +padding-right:5px; + +} + +/*** +Responsive & Scrollable Tables +***/ + +.table-scrollable { + width: 100%; + overflow-x: auto; + overflow-y: hidden; + border: 1px solid #dddddd; +} + +.table-scrollable > .table { + width: 100% !important; + margin: 0 !important; + margin-bottom: 0; + background-color: #fff; +} + +.table-scrollable > .table > thead > tr > th, +.table-scrollable > .table > tbody > tr > th, +.table-scrollable > .table > tfoot > tr > th, +.table-scrollable > .table > thead > tr > td, +.table-scrollable > .table > tbody > tr > td, +.table-scrollable > .table > tfoot > tr > td { + white-space: nowrap; +} + +.table-scrollable > .table-bordered { + border: 0; +} +.table-scrollable > .table-bordered > thead > tr > th:first-child, +.table-scrollable > .table-bordered > tbody > tr > th:first-child, +.table-scrollable > .table-bordered > tfoot > tr > th:first-child, +.table-scrollable > .table-bordered > thead > tr > td:first-child, +.table-scrollable > .table-bordered > tbody > tr > td:first-child, +.table-scrollable > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} + +.table-scrollable > .table-bordered > thead > tr > th:last-child, +.table-scrollable > .table-bordered > tbody > tr > th:last-child, +.table-scrollable > .table-bordered > tfoot > tr > th:last-child, +.table-scrollable > .table-bordered > thead > tr > td:last-child, +.table-scrollable > .table-bordered > tbody > tr > td:last-child, +.table-scrollable > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} + +.table-scrollable > .table-bordered > thead > tr:last-child > th, +.table-scrollable > .table-bordered > tbody > tr:last-child > th, +.table-scrollable > .table-bordered > tfoot > tr:last-child > th, +.table-scrollable > .table-bordered > thead > tr:last-child > td, +.table-scrollable > .table-bordered > tbody > tr:last-child > td, +.table-scrollable > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; +} + + + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_res_table_div { + margin-top: 15px; +} + +#ict_res_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_res_table_div table { + width: 100% !important; +} + +.control-label .required { + color: #e02222; + font-size: 12px; + padding-left: 2px; +} + +#ict_vim_table tbody tr{ + cursor:pointer; +} + + + + + +h3{ + margin-top: 10px; + margin-bottom: 40px; + font-weight: 200; +} + +.blue-font{ + color:#428bca; +} + +.hpanel > .panel-footer .pull-right a{ + margin-left: 5px; +} + +.font-bold { + font-weight: 600; + margin-bottom: 15px; +} + +.hpanel_show{ + cursor: pointer; + background-color: #f7f9fa; +} +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js b/roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js new file mode 100644 index 00000000..d4644dc0 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-rs-view/i18n/loadi18nApp_ngict-rs_view.js @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath){ + jQuery.i18n.properties({ + language:lang, + name:propertiesFileNamePrefix, + path:propertiesFilePath, // 资源文件路径 + mode:'map', // 用 Map 的方式使用资源文件中的值 + callback: function() {// 加载成功后设置显示内容 + var i18nItems = $('[name_i18n=com_zte_conductor_roc_rs_view_ui_i18n]'); + for(var i=0;i" + status + ""; + } else if (status === vm.$Status.inactive) { + return " " + status + ""; + } else if (status === vm.$Status.terminated) { + return " " + status + ""; + } else { + return " " + status + ""; + } + +} diff --git a/roc-iui/src/main/resources/webroot/roc-rs-view/resView.html b/roc-iui/src/main/resources/webroot/roc-rs-view/resView.html new file mode 100644 index 00000000..5109301f --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-rs-view/resView.html @@ -0,0 +1,1062 @@ + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + {{vm.resType}}- + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + mocName +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + +
    +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + +
    +
    + + {{res.name}} + +
    + + + + + + + + + + + + + + + + + + +
    +
    + + {{res.name}} + +
    +
    +
    +
    +
    +
    +

    + {{nodesDetail.detailTitle}} +

    +
    + +
    +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    + moc +
    + mocName +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Oid +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    + Oid +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css b/roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css new file mode 100644 index 00000000..558ac201 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-sdn/css/sdn.css @@ -0,0 +1,492 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ + +.grey { + background-color: #e5e5e5; + color: #333; +} + +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color:white !important; + min-height:500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ + + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + +div[data-name="res-conds-zone"] { + display: inline; +} + +div[data-name="res-conds-zone"] select,div[data-name="res-conds-zone"] span + { + /**height:33px;*/ + margin-left: 15px; + color: #5b9bd1; + border-color: #ccc; + font-weight: bold; +} + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*增加daterangepicker的css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_res_table_div { + margin-top: 15px; +} + +#ict_res_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_res_table_div table { + width: 100% !important; +} + +.control-label .required { + color: #e02222; + font-size: 12px; + padding-left: 2px; +} + +#ict_vim_table tbody tr{ + cursor:pointer; +} + + +/*卡片面板样式*/ +.animated-panel { + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.hpanel { + background-color: none; + border: none; + box-shadow: none; + margin-bottom: 25px; + +} + +.hpanel .panel-body { + border: 1px solid #e4e5e7; + border-radius: 2px; + padding: 20px; + position: relative; +} +.h-200 { + min-height: 220px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-xl div { + margin-bottom: 15px; +} + +.text-success { + color: #0d638f; +} +.hpanel > .panel-footer { + color: inherit; + border: 1px solid #e4e5e7; + border-top: none; + font-size: 90%; + background: #f7f9fa; + height:40px; + padding: 5px 15px; +} +.color_cloud{ + color:#ccc; +} +.stats-title{ + +} + +h3{ + margin-top: 10px; + margin-bottom: 40px; + font-weight: 200; +} + +.blue-font{ + color:#428bca; +} + +.hpanel > .panel-footer .pull-right a{ + margin-left: 5px; +} + +.hpanel > .panel-footer .pull-right .btn{ + min-width: 30px !important; +} + +.font-bold { + font-weight: 600; + margin-bottom: 15px; +} + +.hpanel_show{ + background-color: #f7f9fa; +} + +.sdn-padding { + padding-left: 0; +} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js b/roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js new file mode 100644 index 00000000..df993437 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-sdn/i18n/loadi18nApp.js @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath){ + jQuery.i18n.properties({ + language:lang, + name:propertiesFileNamePrefix, + path:propertiesFilePath, + mode:'map', + callback: function() { + var i18nItems = $('[name_i18n=org_openo_nfv_roc_ui_i18n]'); + for(var i=0;i + + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +

    +
    :
    +
    URL :
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css b/roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css new file mode 100644 index 00000000..c71f06b5 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/css/animate.min.css @@ -0,0 +1,23 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@charset "UTF-8"; +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2014 Daniel Eden +*/ +.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css b/roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css new file mode 100644 index 00000000..0193ce71 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/css/bootstrap.css @@ -0,0 +1,4965 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + margin-left: 20px; +} + +.container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 28px; + margin-left: 2.127659574%; + *margin-left: 2.0744680846382977%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .span12 { + width: 99.99999998999999%; + *width: 99.94680850063828%; +} + +.row-fluid .span11 { + width: 91.489361693%; + *width: 91.4361702036383%; +} + +.row-fluid .span10 { + width: 82.97872339599999%; + *width: 82.92553190663828%; +} + +.row-fluid .span9 { + width: 74.468085099%; + *width: 74.4148936096383%; +} + +.row-fluid .span8 { + width: 65.95744680199999%; + *width: 65.90425531263828%; +} + +.row-fluid .span7 { + width: 57.446808505%; + *width: 57.3936170156383%; +} + +.row-fluid .span6 { + width: 48.93617020799999%; + *width: 48.88297871863829%; +} + +.row-fluid .span5 { + width: 40.425531911%; + *width: 40.3723404216383%; +} + +.row-fluid .span4 { + width: 31.914893614%; + *width: 31.8617021246383%; +} + +.row-fluid .span3 { + width: 23.404255317%; + *width: 23.3510638276383%; +} + +.row-fluid .span2 { + width: 14.89361702%; + *width: 14.8404255306383%; +} + +.row-fluid .span1 { + width: 6.382978723%; + *width: 6.329787233638298%; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} + +p small { + font-size: 11px; + color: #999999; +} + +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-family: inherit; + font-weight: bold; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} + +h1 { + font-size: 30px; + line-height: 36px; +} + +h1 small { + font-size: 18px; +} + +h2 { + font-size: 24px; + line-height: 36px; +} + +h2 small { + font-size: 18px; +} + +h3 { + font-size: 18px; + line-height: 27px; +} + +h3 small { + font-size: 14px; +} + +h4, +h5, +h6 { + line-height: 18px; +} + +h4 { + font-size: 14px; +} + +h4 small { + font-size: 12px; +} + +h5 { + font-size: 12px; +} + +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} + +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} + +.page-header h1 { + line-height: 1; +} + +ul, +ol { + padding: 0; + margin: 0 0 9px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li { + line-height: 18px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 18px; +} + +dt, +dd { + line-height: 18px; +} + +dt { + font-weight: bold; + line-height: 17px; +} + +dd { + margin-left: 9px; +} + +.dl-horizontal dt { + float: left; + width: 120px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 130px; +} + +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +.muted { + color: #999999; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #ddd; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} + +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 18px; + font-style: normal; + line-height: 18px; +} + +small { + font-size: 100%; +} + +cite { + font-style: normal; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12.025px; + line-height: 18px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 18px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 18px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 27px; + font-size: 19.5px; + line-height: 36px; + color: #333333; + border: 0; + border-bottom: 1px solid #eee; +} + +legend small { + font-size: 13.5px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 13px; + font-weight: normal; + line-height: 18px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; + color: #333333; +} + +input, +textarea, +select, +.uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; + color: #555555; + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +label input, +label textarea, +label select { + display: block; +} + +input[type="image"], +input[type="checkbox"], +input[type="radio"] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE7 */ + + line-height: normal; + cursor: pointer; + background-color: transparent; + border: 0 \9; + /* IE9 and down */ + + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +input[type="image"] { + border: 0; +} + +input[type="file"] { + width: auto; + padding: initial; + line-height: initial; + background-color: #ffffff; + background-color: initial; + border: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +input[type="button"], +input[type="reset"], +input[type="submit"] { + width: auto; + height: auto; +} + +select, +input[type="file"] { + height: 28px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 28px; +} + +input[type="file"] { + line-height: 18px \9; +} + +select { + width: 220px; + background-color: #ffffff; +} + +select[multiple], +select[size] { + height: auto; +} + +input[type="image"] { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +textarea { + height: auto; +} + +input[type="hidden"] { + display: none; +} + +.radio, +.checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +input, +textarea { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +input:focus, +textarea:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus, +select:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 930px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 850px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 770px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 690px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 610px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 530px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 450px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 370px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 290px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 210px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 130px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 50px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; + border-color: #ddd; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning > label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; + border-color: #c09853; +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: 0 0 6px #dbc59e; + -moz-box-shadow: 0 0 6px #dbc59e; + box-shadow: 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error > label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; + border-color: #b94a48; +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: 0 0 6px #d59392; + -moz-box-shadow: 0 0 6px #d59392; + box-shadow: 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success > label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; + border-color: #468847; +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: 0 0 6px #7aba7b; + -moz-box-shadow: 0 0 6px #7aba7b; + box-shadow: 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, +textarea:focus:required:invalid:focus, +select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 17px 20px 18px; + margin-top: 18px; + margin-bottom: 18px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; + cursor: not-allowed; + background-color: #ffffff; + border-color: #eee; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +:-moz-placeholder { + color: #999999; +} + +::-webkit-input-placeholder { + color: #999999; +} + +.help-block, +.help-inline { + color: #555555; +} + +.help-block { + display: block; + margin-bottom: 9px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-prepend, +.input-append { + margin-bottom: 5px; +} + +.input-prepend input, +.input-append input, +.input-prepend select, +.input-append select, +.input-prepend .uneditable-input, +.input-append .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: middle; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend input:focus, +.input-append input:focus, +.input-prepend select:focus, +.input-append select:focus, +.input-prepend .uneditable-input:focus, +.input-append .uneditable-input:focus { + z-index: 2; +} + +.input-prepend .uneditable-input, +.input-append .uneditable-input { + border-left-color: #ccc; +} + +.input-prepend .add-on, +.input-append .add-on { + display: inline-block; + width: auto; + height: 18px; + min-width: 16px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + vertical-align: middle; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-prepend .add-on, +.input-append .add-on, +.input-prepend .btn, +.input-append .btn { + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend .active, +.input-append .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .uneditable-input { + border-right-color: #ccc; + border-left-color: #eee; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 9px; +} + +legend + .control-group { + margin-top: 18px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 18px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 140px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 160px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 160px; +} + +.form-horizontal .help-block { + margin-top: 9px; + margin-bottom: 0; +} + +.form-horizontal .form-actions { + padding-left: 160px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 18px; +} + +.table th, +.table td { + padding: 8px; + line-height: 18px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapsed; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table tbody tr:hover td, +.table tbody tr:hover th { + background-color: #f5f5f5; +} + +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +[class^="icon-"]:last-child, +[class*=" icon-"]:last-child { + *margin-left: 0; +} + +.icon-white { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; + opacity: 0.3; + filter: alpha(opacity=30); +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown:hover .caret, +.open .caret { + opacity: 1; + filter: alpha(opacity=100); +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 4px 0; + margin: 1px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 8px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; +} + +.open { + *z-index: 1000; +} + +.open .dropdown-menu { + display: block; +} + +.pull-right .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: "\2191"; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; + filter: alpha(opacity=100); +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -ms-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 10px 4px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 13px; + line-height: 18px; + *line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(top, #ffffff, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + /* Buttons in IE7 don't get borders, so darken on hover */ + + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 1px; +} + +.btn-small { + padding: 5px 9px; + font-size: 11px; + line-height: 16px; +} + +.btn-small [class^="icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 14px; +} + +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover, +.btn-inverse, +.btn-inverse:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #ccc; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + background-color: #0074cc; + *background-color: #0055cc; + background-image: -ms-linear-gradient(top, #0088cc, #0055cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); + background-image: -o-linear-gradient(top, #0088cc, #0055cc); + background-image: -moz-linear-gradient(top, #0088cc, #0055cc); + background-image: linear-gradient(top, #0088cc, #0055cc); + background-repeat: repeat-x; + border-color: #0055cc #0055cc #003580; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #0055cc; + *background-color: #004ab3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #004099 \9; +} + +.btn-warning { + background-color: #faa732; + *background-color: #f89406; + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + background-color: #da4f49; + *background-color: #bd362f; + background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + background-color: #5bb75b; + *background-color: #51a351; + background-image: -ms-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + background-color: #414141; + *background-color: #222222; + background-image: -ms-linear-gradient(top, #555555, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); + background-image: -webkit-linear-gradient(top, #555555, #222222); + background-image: -o-linear-gradient(top, #555555, #222222); + background-image: -moz-linear-gradient(top, #555555, #222222); + background-image: linear-gradient(top, #555555, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 2px; + *padding-bottom: 2px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-group { + position: relative; + *margin-left: .3em; + *zoom: 1; +} + +.btn-group:before, +.btn-group:after { + display: table; + content: ""; +} + +.btn-group:after { + clear: both; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 9px; + margin-bottom: 9px; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group > .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .dropdown-toggle { + *padding-top: 4px; + padding-right: 8px; + *padding-bottom: 4px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini.dropdown-toggle { + padding-right: 5px; + padding-left: 5px; +} + +.btn-group > .btn-small.dropdown-toggle { + *padding-top: 4px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large.dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0055cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 7px; + margin-left: 0; +} + +.btn:hover .caret, +.open.btn-group .caret { + opacity: 1; + filter: alpha(opacity=100); +} + +.btn-mini .caret { + margin-top: 5px; +} + +.btn-small .caret { + margin-top: 6px; +} + +.btn-large .caret { + margin-top: 6px; + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-top: 0; + border-bottom: 5px solid #000000; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 0.75; + filter: alpha(opacity=75); +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 18px; + color: #c09853; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert-heading { + color: inherit; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 18px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 18px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav .nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 18px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 8px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 18px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.nav-tabs .dropdown-toggle .caret, +.nav-pills .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav-tabs .dropdown-toggle:hover .caret, +.nav-pills .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +.nav-tabs .active .dropdown-toggle .caret, +.nav-pills .active .dropdown-toggle .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.nav > .dropdown.active > a:hover { + color: #000000; + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 18px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar { + color: #999999; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar .brand { + display: block; + float: left; + padding: 8px 20px 12px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + line-height: 1; + color: #999999; +} + +.navbar .navbar-text { + margin-bottom: 0; + line-height: 40px; +} + +.navbar .navbar-link { + color: #999999; +} + +.navbar .navbar-link:hover { + color: #ffffff; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn { + margin: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 6px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + background-color: #626262; + border: 1px solid #151515; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-search .search-query:focus, +.navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; +} + +.navbar .nav > li { + display: block; + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 9px 10px 11px; + line-height: 19px; + color: #999999; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar .btn { + display: inline-block; + padding: 4px 10px 4px; + margin: 5px 5px 6px; + line-height: 18px; +} + +.navbar .btn-group { + padding: 5px 5px 6px; + margin: 0; +} + +.navbar .nav > li > a:hover { + color: #ffffff; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav .active > a, +.navbar .nav .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #222222; +} + +.navbar .divider-vertical { + width: 1px; + height: 40px; + margin: 0 9px; + overflow: hidden; + background-color: #222222; + border-right: 1px solid #333333; +} + +.navbar .nav.pull-right { + margin-right: 0; + margin-left: 10px; +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + background-color: #2c2c2c; + *background-color: #222222; + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-image: -moz-linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + background-color: #222222; + *background-color: #151515; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #080808 \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown .dropdown-toggle .caret, +.navbar .nav li.dropdown.open .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.active .caret { + opacity: 1; + filter: alpha(opacity=100); +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: transparent; +} + +.navbar .nav li.dropdown.active > .dropdown-toggle:hover { + color: #ffffff; +} + +.navbar .pull-right .dropdown-menu, +.navbar .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right .dropdown-menu:before, +.navbar .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right .dropdown-menu:after, +.navbar .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + list-style: none; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} + +.breadcrumb .active a { + color: #333333; +} + +.pagination { + height: 36px; + margin: 18px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination li { + display: inline; +} + +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + text-decoration: none; + border: 1px solid #ddd; + border-left-width: 0; +} + +.pagination a:hover, +.pagination .active a { + background-color: #f5f5f5; +} + +.pagination .active a { + color: #999999; + cursor: default; +} + +.pagination .disabled span, +.pagination .disabled a, +.pagination .disabled a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination li:first-child a { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination li:last-child a { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin-bottom: 18px; + margin-left: 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, +.pager .disabled a:hover { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-open .dropdown-menu { + z-index: 2050; +} + +.modal-open .dropdown.open { + *z-index: 2050; +} + +.modal-open .popover { + z-index: 2060; +} + +.modal-open .tooltip { + z-index: 2070; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + width: 560px; + margin: -250px 0 0 -280px; + overflow: auto; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -ms-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-body { + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1020; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -2px; +} + +.tooltip.right { + margin-left: 2px; +} + +.tooltip.bottom { + margin-top: 2px; +} + +.tooltip.left { + margin-left: -2px; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top: 5px solid #000000; + border-right: 5px solid transparent; + border-left: 5px solid transparent; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; + border-left: 5px solid transparent; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-right: 5px solid #000000; + border-bottom: 5px solid transparent; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + padding: 5px; +} + +.popover.top { + margin-top: -5px; +} + +.popover.right { + margin-left: 5px; +} + +.popover.bottom { + margin-top: 5px; +} + +.popover.left { + margin-left: -5px; +} + +.popover.top .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top: 5px solid #000000; + border-right: 5px solid transparent; + border-left: 5px solid transparent; +} + +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-right: 5px solid #000000; + border-bottom: 5px solid transparent; +} + +.popover.bottom .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; + border-left: 5px solid transparent; +} + +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} + +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} + +.popover-inner { + width: 280px; + padding: 3px; + overflow: hidden; + background: #000000; + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} + +.popover-title { + padding: 9px 15px; + line-height: 1; + background-color: #f5f5f5; + border-bottom: 1px solid #eee; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} + +.popover-content { + padding: 14px; + background-color: #ffffff; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.popover-content p, +.popover-content ul, +.popover-content ol { + margin-bottom: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 18px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 1; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; +} + +.label, +.badge { + font-size: 10.998px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 18px; + margin-bottom: 18px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + width: 0; + height: 18px; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} + +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); +} + +.progress-warning.progress-striped .bar { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 18px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 18px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -ms-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, +.carousel .next, +.carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, +.carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, +.carousel .prev.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 10px 15px 5px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + color: #ffffff; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/skill.css b/roc-iui/src/main/resources/webroot/roc-vim/css/skill.css new file mode 100644 index 00000000..092c7be4 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/css/skill.css @@ -0,0 +1,89 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: 'Open Sans', sans-serif; + /*background-color: #f1f3fa;*/ + width: '100%'; + height: '100%'; + margin-top: 10px; +} +div.skills-sunburst{ + font-size: 12px; + font-weight: 400; + text-align:center; +} + +#skillmap .skills-wrapper { + margin-top: 10px; + overflow: auto; +} +#skillmap .skills-sunburst { + float: left; + width: 500px; + margin-left: -80px; +} +#skillmap .skills-sunburst svg { + font: 11px 'Source Sans Pro', sans-serif; + font-weight: 900; + + cursor: pointer; +} +#skillmap .skills-chart { + float: right; + font-family: 'Source Sans Pro', sans-serif; + font-size: 15px; + margin: 80px 20px 0 0; +} +#skillmap .skills-chart .breadcumb-text { + font-size: 13px; + font-weight: 700; +} +#skillmap .skills-chart #skills-chart-line { + fill: none; + stroke-width: 3.5px; +} +#skillmap .skills-chart .axis path, +#skillmap .skills-chart .axis line { + fill: none; +} +#skillmap .skills-chart .x-axis path, +#skillmap .skills-chart .y-axis path { + stroke: #444; + stroke-width: 1px; + shape-rendering: geometricPrecision; +} + +#explanation { + position: absolute; + top: 165px; + left: 170px; + width: 140px; + text-align: center; + color: #666; + margin-top:30px; +} + +#percentage { + font-size: 2em; +} + +#endlabel{ + font-sizte:1.5em; +} + +div.skills-sunburst text{ + text-anchor: middle; +} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/vim.css b/roc-iui/src/main/resources/webroot/roc-vim/css/vim.css new file mode 100644 index 00000000..72de455e --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/css/vim.css @@ -0,0 +1,482 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +body { + font-family: microsoft yahei !important; +} + +/* blue pill (inspired by iTunes) +*******************************************************************************/ + +.grey { + background-color: #e5e5e5; + color: #333; +} + +.blue { + + background-color: #5b9bd1; + border-radius: 20px; + color: #fff; + font-weight: bold; + padding: 8px 0; + text-align: center; + width: 100px; +} + +.blue:hover { + background-color: #e8f3fd; + color: #5b9bd1; +} + +.blue.selected { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +.blue.selected:hover { + border: 0; + background-color: #5b9bd1; + color: #fff; +} + +a { + font-weight: bold; + text-decoration: none; +} + +p { + color: #444; + font-size: 14px; + font-weight: normal; + line-height: 21px; + margin: 0 0 12px 0; +} + +p.credit { + border-top: 1px solid #ccc; + font-size: 14px; + line-height: 140%; + margin: 36px 0 12px 0; + padding: 8px 0 0 0; + text-align: center; +} + +ul.column { + float: left; + list-style: none; + width: 675px; +} + +ul.column li { + background: #eee; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: inset 0 1px 1px 0 #c7c7c7; + box-shadow: inset 0 1px 1px 0 #c7c7c7; + float: left; + margin: 10px 0 0 10px; + display: block; + height: 150px; + text-align: center; + width: 215px; +} + +/* Clear Floated Elements +------------------------------------------------------------------------------*/ +.column:after,.button-collection:after,.clearfix:after,div.project-info:after + { + clear: both; + content: ' '; + display: block; + font-size: 0; + line-height: 0; + visibility: hidden; + width: 0; + height: 0; +} + +.container-fluid { + background-color: white !important; + min-height: 500px; +} + +.nav-tabs { + border: 0; +} + +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus + { + border: 0; + border-top: 3px solid #F3565D; +} + +.nav-tabs>li>a { + border-radius: 0; +} + +.nav-tabs>li>a:hover { + background-color: #f1f3fa; + border: 1Px solid #f1f3fa; +} + +.c3 { + margin-top: 120px; +} + +.skills-chart-breadcrumb { + +} + +.blue:selected { + border: 0; + background-color: #5b9bd1; +} + +.btn { + /* border-width: 0; */ + /* padding: 7px 14px; */ + /* font-size: 14px; */ + /* outline: none !important; */ + /* background-image: none !important; */ + /* filter: none; */ + /* -webkit-box-shadow: none; */ + -moz-box-shadow: none; + /* box-shadow: none; */ + /* text-shadow: none; */ +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.input-sm { + padding: 4px 10px; +} + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +/* Bootstrap buttons */ + + +.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active + { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.open .btn-default.dropdown-toggle { + color: #333; + background-color: #ededed; + border-color: #b3b3b3; +} + +.btn-default:active,.btn-default.active { + background-image: none; + background-color: #e0e0e0; + font-weight: bold; +} + +.btn-default:active:hover,.btn-default.active:hover { + background-color: #e6e6e6; +} + +.open .btn-default.dropdown-toggle { + background-image: none; +} + +.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active + { + background-color: #fff; + border-color: #ccc; +} + +.btn-default .badge { + color: #fff; + background-color: #333; +} + + +.btn-default>i[class^="icon-"],.btn-default>i[class*="icon-"] { + color: #8c8c8c; +} + +div[data-name="tab_zone"] div { + background-color: #f1f3fa; + padding: 0px; +} + +div[data-name="cond_zone"] div { + background-color: #fff; + margin-top: 15px; + margin-bottom: 15px; +} + + + + +.input{ + width:250px; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +div.separator { + margin: 20px; +} + +div.separator div { + text-align: center; + line-height: 0; +} + +div.separator-line { + height: 1px !important; + width: 100%; + background: #ddd; + overflow: hidden; +} + +.dropdown-toggle { + color: #5b9bd1; +} + +.calendar-date { + color: #5b9bd1; +} + +.range_inputs { + color: #5b9bd1; +} + +.btn.dropdown-toggle,.btn-group .btn.dropdown-toggle,.btn:hover,.btn:disabled,.btn[disabled],.btn:focus,.btn:active,.btn.active + { + outline: none !important; + background-image: none !important; + filter: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +#skills-chart-breadcrumb { + margin-bottom: 10px +} + +/*增加daterangepicker的css*/ +input[name="daterange"] { + width: 220px; + line-height: 0; + height: 31px; + vertical-align: top; + margin-top: 2px; +} + +.daterangepicker .ranges { + width: 205px; +} + +.daterangepicker .ranges input { + width: 95px !important; +} + +td.details-control { + background: url('../images/details_open.png') no-repeat center center; + cursor: pointer; +} + +tr.shown td.details-control { + background: url('../images/details_close.png') no-repeat center center; +} + +.details table td { + word-wrap: break-word; + word-break: normal; + border-top: 1px solid #dddddd; +} + +.details table tr:first-child td { + border-top: none; +} + +.details table { + table-layout: fixed; + width: 100%; +} + +td.title { + width: 10%; +} + +table.dataTable tbody th,table.dataTable tbody td { + padding: 8px 10px; +} + +div.dataTables_length,div.dataTables_info { + display: inline; +} + +div.dataTables_paginate { + display: inline; + float: right; +} + +div.pagination-panel { + margin-right: 10px; +} + +input.pagination-panel-input { + width: 50px; +} + +#ict_res_table_div { + margin-top: 15px; +} + +#ict_res_table_div label { + font-weight: 100; +} + +.daterangepicker .daterangepicker_start_input label,.daterangepicker .daterangepicker_end_input label + { + color: #5b9bd1; +} + +.daterangepicker .ranges .input-mini { + color: #5b9bd1; +} + +.cancelBtn { + padding: 5px 10px 5px 10px; +} + +.btn:focus,.btn:active:focus,.btn.active:focus { + outline: 0; +} + +#ict_res_table_div table { + width: 100% !important; +} + +.control-label .required { + color: #e02222; + font-size: 12px; + padding-left: 2px; +} + +#ict_vim_table tbody tr{ + cursor:pointer; +} + + +/*卡片面板样式*/ +.animated-panel { + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.hpanel { + background-color: none; + border: none; + box-shadow: none; + margin-bottom: 25px; + +} + +.hpanel .panel-body { + border: 1px solid #e4e5e7; + border-radius: 2px; + padding: 20px; + position: relative; +} +.h-200 { + min-height: 220px; +} +.m-t-xl { + margin-top: 40px; +} +.text-success { + color: #0d638f; +} +.hpanel > .panel-footer { + color: inherit; + border: 1px solid #e4e5e7; + border-top: none; + font-size: 90%; + background: #f7f9fa; + height:40px; + padding: 5px 15px; +} +.color_cloud{ + color:#ccc; +} +.stats-title{ + +} + +h3{ + margin-top: 10px; + margin-bottom: 40px; + font-weight: 200; +} + +.blue-font{ + color:#428bca; +} + +.hpanel > .panel-footer .pull-right a{ + margin-left: 5px; +} + +.hpanel > .panel-footer .pull-right .btn{ + min-width: 30px !important; +} + +.refresh-status-text{ + float: right; +} + +.font { + margin-bottom: 15px; +} + +.hpanel_show{ + cursor: pointer; + background-color: #f7f9fa; +} + diff --git a/roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css b/roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css new file mode 100644 index 00000000..842ff486 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/css/vimChart.css @@ -0,0 +1,54 @@ +body { + color: #333; + font-family: "Microsoft yahei", Verdana, Arial, Helvetica, sans-serif !important; + padding: 0px !important; + margin: 0px !important; + direction: ltr; + background-color: #f1f3fa !important; +} + +.row{ + margin-left: 0px; + margin-right: 0px; +} + +select { + border-width: 1px; + padding: 4px 1px; + border-radius: 4px; +} + +.container-fluid { + background-color: #fff; +} + + +.titlefont { + font-size: 16px; + margin-left: 10px; +} + +.separator-line { + height: 1px; + width: 100%; + background: #ddd; + overflow: hidden; + margin-bottom: 15px; + margin-top: 6px; + opacity: 0.6; +} + +.main { + height: 400px; + /* width: 778px !important; */ + overflow: hidden; + padding: 10px; + margin-bottom: 10px; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js b/roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js new file mode 100644 index 00000000..8b59025f --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/i18n/loadi18nApp.js @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath){ + jQuery.i18n.properties({ + language:lang, + name:propertiesFileNamePrefix, + path:propertiesFilePath, // 资源文件路径 + mode:'map', // 用 Map 的方式使用资源文件中的值 + callback: function() {// 加载成功后设置显示内容 + var i18nItems = $('[name_i18n=com_zte_conductor_ui_i18n]'); + for(var i=0;i - see LICENSE file + * + * http://ReactiveRaven.github.com/jqBootstrapValidation/ + */ + +(function( $ ){ + + var createdElements = []; + + var defaults = { + options: { + prependExistingHelpBlock: false, + sniffHtml: true, // sniff for 'required', 'maxlength', etc + preventSubmit: true, // stop the form submit event from firing if validation fails + submitError: false, // function called if there is an error when trying to submit + submitSuccess: false, // function called just before a successful submit event is sent to the server + semanticallyStrict: false, // set to true to tidy up generated HTML output + autoAdd: { + helpBlocks: true + }, + filter: function () { + // return $(this).is(":visible"); // only validate elements you can see + return true; // validate everything + } + }, + methods: { + init : function( options ) { + + var settings = $.extend(true, {}, defaults); + + settings.options = $.extend(true, settings.options, options); + + var $siblingElements = this; + + var uniqueForms = $.unique( + $siblingElements.map( function () { + return $(this).parents("form")[0]; + }).toArray() + ); + + $(uniqueForms).bind("submit", function (e) { + var $form = $(this); + var warningsFound = 0; + var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); + $inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); + + $inputs.each(function (i, el) { + var $this = $(el), + $controlGroup = $this.parents(".control-group").first(); + if ( + $controlGroup.hasClass("warning") + ) { + $controlGroup.removeClass("warning").addClass("error"); + warningsFound++; + } + }); + + $inputs.trigger("validationLostFocus.validation"); + + if (warningsFound) { + if (settings.options.preventSubmit) { + e.preventDefault(); + } + $form.addClass("error"); + if ($.isFunction(settings.options.submitError)) { + settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true)); + } + } else { + $form.removeClass("error"); + if ($.isFunction(settings.options.submitSuccess)) { + settings.options.submitSuccess($form, e); + } + } + }); + + return this.each(function(){ + + // Get references to everything we're interested in + var $this = $(this), + $controlGroup = $this.parents(".control-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(), + $form = $this.parents("form").first(), + validatorNames = []; + + // create message container if not exists + if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) { + $helpBlock = $('
    '); + $controlGroup.find('.controls').append($helpBlock); + createdElements.push($helpBlock[0]); + } + + // ============================================================= + // SNIFF HTML FOR VALIDATORS + // ============================================================= + + // *snort sniff snuffle* + + if (settings.options.sniffHtml) { + var message = ""; + // --------------------------------------------------------- + // PATTERN + // --------------------------------------------------------- + if ($this.attr("pattern") !== undefined) { + message = "Not in the expected format"; + if ($this.data("validationPatternMessage")) { + message = $this.data("validationPatternMessage"); + } + $this.data("validationPatternMessage", message); + $this.data("validationPatternRegex", $this.attr("pattern")); + } + // --------------------------------------------------------- + // MAX + // --------------------------------------------------------- + if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) { + var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax")); + message = "Too high: Maximum of '" + max + "'"; + if ($this.data("validationMaxMessage")) { + message = $this.data("validationMaxMessage"); + } + $this.data("validationMaxMessage", message); + $this.data("validationMaxMax", max); + } + // --------------------------------------------------------- + // MIN + // --------------------------------------------------------- + if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) { + var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin")); + message = "Too low: Minimum of '" + min + "'"; + if ($this.data("validationMinMessage")) { + message = $this.data("validationMinMessage"); + } + $this.data("validationMinMessage", message); + $this.data("validationMinMin", min); + } + // --------------------------------------------------------- + // MAXLENGTH + // --------------------------------------------------------- + if ($this.attr("maxlength") !== undefined) { + message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters"; + if ($this.data("validationMaxlengthMessage")) { + message = $this.data("validationMaxlengthMessage"); + } + $this.data("validationMaxlengthMessage", message); + $this.data("validationMaxlengthMaxlength", $this.attr("maxlength")); + } + // --------------------------------------------------------- + // MINLENGTH + // --------------------------------------------------------- + if ($this.attr("minlength") !== undefined) { + message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters"; + if ($this.data("validationMinlengthMessage")) { + message = $this.data("validationMinlengthMessage"); + } + $this.data("validationMinlengthMessage", message); + $this.data("validationMinlengthMinlength", $this.attr("minlength")); + } + // --------------------------------------------------------- + // REQUIRED + // --------------------------------------------------------- + if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) { + message = settings.builtInValidators.required.message; + if ($this.data("validationRequiredMessage")) { + message = $this.data("validationRequiredMessage"); + } + $this.data("validationRequiredMessage", message); + } + // --------------------------------------------------------- + // NUMBER + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") { + message = settings.builtInValidators.number.message; + if ($this.data("validationNumberMessage")) { + message = $this.data("validationNumberMessage"); + } + $this.data("validationNumberMessage", message); + } + // --------------------------------------------------------- + // EMAIL + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") { + message = "Not a valid email address"; + if ($this.data("validationValidemailMessage")) { + message = $this.data("validationValidemailMessage"); + } else if ($this.data("validationEmailMessage")) { + message = $this.data("validationEmailMessage"); + } + $this.data("validationValidemailMessage", message); + } + // --------------------------------------------------------- + // MINCHECKED + // --------------------------------------------------------- + if ($this.attr("minchecked") !== undefined) { + message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required"; + if ($this.data("validationMincheckedMessage")) { + message = $this.data("validationMincheckedMessage"); + } + $this.data("validationMincheckedMessage", message); + $this.data("validationMincheckedMinchecked", $this.attr("minchecked")); + } + // --------------------------------------------------------- + // MAXCHECKED + // --------------------------------------------------------- + if ($this.attr("maxchecked") !== undefined) { + message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required"; + if ($this.data("validationMaxcheckedMessage")) { + message = $this.data("validationMaxcheckedMessage"); + } + $this.data("validationMaxcheckedMessage", message); + $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked")); + } + } + + // ============================================================= + // COLLECT VALIDATOR NAMES + // ============================================================= + + // Get named validators + if ($this.data("validation") !== undefined) { + validatorNames = $this.data("validation").split(","); + } + + // Get extra ones defined on the element's data attributes + $.each($this.data(), function (i, el) { + var parts = i.replace(/([A-Z])/g, ",$1").split(","); + if (parts[0] === "validation" && parts[1]) { + validatorNames.push(parts[1]); + } + }); + + // ============================================================= + // NORMALISE VALIDATOR NAMES + // ============================================================= + + var validatorNamesToInspect = validatorNames; + var newValidatorNamesToInspect = []; + + do // repeatedly expand 'shortcut' validators into their real validators + { + // Uppercase only the first letter of each name + $.each(validatorNames, function (i, el) { + validatorNames[i] = formatValidatorName(el); + }); + + // Remove duplicate validator names + validatorNames = $.unique(validatorNames); + + // Pull out the new validator names from each shortcut + newValidatorNamesToInspect = []; + $.each(validatorNamesToInspect, function(i, el) { + if ($this.data("validation" + el + "Shortcut") !== undefined) { + // Are these custom validators? + // Pull them out! + $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) { + newValidatorNamesToInspect.push(el2); + }); + } else if (settings.builtInValidators[el.toLowerCase()]) { + // Is this a recognised built-in? + // Pull it out! + var validator = settings.builtInValidators[el.toLowerCase()]; + if (validator.type.toLowerCase() === "shortcut") { + $.each(validator.shortcut.split(","), function (i, el) { + el = formatValidatorName(el); + newValidatorNamesToInspect.push(el); + validatorNames.push(el); + }); + } + } + }); + + validatorNamesToInspect = newValidatorNamesToInspect; + + } while (validatorNamesToInspect.length > 0) + + // ============================================================= + // SET UP VALIDATOR ARRAYS + // ============================================================= + + var validators = {}; + + $.each(validatorNames, function (i, el) { + // Set up the 'override' message + var message = $this.data("validation" + el + "Message"); + var hasOverrideMessage = (message !== undefined); + var foundValidator = false; + message = + ( + message + ? message + : "'" + el + "' validation failed " + ) + ; + + $.each( + settings.validatorTypes, + function (validatorType, validatorTemplate) { + if (validators[validatorType] === undefined) { + validators[validatorType] = []; + } + if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) { + validators[validatorType].push( + $.extend( + true, + { + name: formatValidatorName(validatorTemplate.name), + message: message + }, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + + if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) { + + var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]); + if (hasOverrideMessage) { + validator.message = message; + } + var validatorType = validator.type.toLowerCase(); + + if (validatorType === "shortcut") { + foundValidator = true; + } else { + $.each( + settings.validatorTypes, + function (validatorTemplateType, validatorTemplate) { + if (validators[validatorTemplateType] === undefined) { + validators[validatorTemplateType] = []; + } + if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) { + $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]); + validators[validatorType].push( + $.extend( + validator, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + } + } + + if (! foundValidator) { + $.error("Cannot find validation info for '" + el + "'"); + } + }); + + // ============================================================= + // STORE FALLBACK VALUES + // ============================================================= + + $helpBlock.data( + "original-contents", + ( + $helpBlock.data("original-contents") + ? $helpBlock.data("original-contents") + : $helpBlock.html() + ) + ); + + $helpBlock.data( + "original-role", + ( + $helpBlock.data("original-role") + ? $helpBlock.data("original-role") + : $helpBlock.attr("role") + ) + ); + + $controlGroup.data( + "original-classes", + ( + $controlGroup.data("original-clases") + ? $controlGroup.data("original-classes") + : $controlGroup.attr("class") + ) + ); + + $this.data( + "original-aria-invalid", + ( + $this.data("original-aria-invalid") + ? $this.data("original-aria-invalid") + : $this.attr("aria-invalid") + ) + ); + + // ============================================================= + // VALIDATION + // ============================================================= + + $this.bind( + "validation.validation", + function (event, params) { + + var value = getValue($this); + + // Get a list of the errors to apply + var errorsFound = []; + + $.each(validators, function (validatorType, validatorTypeArray) { + if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { + $.each(validatorTypeArray, function (i, validator) { + if (settings.validatorTypes[validatorType].validate($this, value, validator)) { + errorsFound.push(validator.message); + } + }); + } + }); + + return errorsFound; + } + ); + + $this.bind( + "getValidators.validation", + function () { + return validators; + } + ); + + // ============================================================= + // WATCH FOR CHANGES + // ============================================================= + $this.bind( + "submit.validation", + function () { + return $this.triggerHandler("change.validation", {submitting: true}); + } + ); + $this.bind( + [ + "keyup", + "focus", + "blur", + "click", + "keydown", + "keypress", + "change" + ].join(".validation ") + ".validation", + function (e, params) { + + var value = getValue($this); + + var errorsFound = []; + + $controlGroup.find("input,textarea,select").each(function (i, el) { + var oldCount = errorsFound.length; + $.each($(el).triggerHandler("validation.validation", params), function (j, message) { + errorsFound.push(message); + }); + if (errorsFound.length > oldCount) { + $(el).attr("aria-invalid", "true"); + } else { + var original = $this.data("original-aria-invalid"); + $(el).attr("aria-invalid", (original !== undefined ? original : false)); + } + }); + + $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation"); + + errorsFound = $.unique(errorsFound.sort()); + + // Were there any errors? + if (errorsFound.length) { + // Better flag it up as a warning. + $controlGroup.removeClass("success error").addClass("warning"); + + // How many errors did we find? + if (settings.options.semanticallyStrict && errorsFound.length === 1) { + // Only one? Being strict? Just output it. + $helpBlock.html(errorsFound[0] + + ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); + } else { + // Multiple? Being sloppy? Glue them together into an UL. + $helpBlock.html("
    • " + errorsFound.join("
    • ") + "
    " + + ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); + } + } else { + $controlGroup.removeClass("warning error success"); + if (value.length > 0) { + $controlGroup.addClass("success"); + } + $helpBlock.html($helpBlock.data("original-contents")); + } + + if (e.type === "blur") { + $controlGroup.removeClass("success"); + } + } + ); + $this.bind("validationLostFocus.validation", function () { + $controlGroup.removeClass("success"); + }); + }); + }, + destroy : function( ) { + + return this.each( + function() { + + var + $this = $(this), + $controlGroup = $this.parents(".control-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(); + + // remove our events + $this.unbind('.validation'); // events are namespaced. + // reset help text + $helpBlock.html($helpBlock.data("original-contents")); + // reset classes + $controlGroup.attr("class", $controlGroup.data("original-classes")); + // reset aria + $this.attr("aria-invalid", $this.data("original-aria-invalid")); + // reset role + $helpBlock.attr("role", $this.data("original-role")); + // remove all elements we created + if (createdElements.indexOf($helpBlock[0]) > -1) { + $helpBlock.remove(); + } + + } + ); + + }, + collectErrors : function(includeEmpty) { + + var errorMessages = {}; + this.each(function (i, el) { + var $el = $(el); + var name = $el.attr("name"); + var errors = $el.triggerHandler("validation.validation", {includeEmpty: true}); + errorMessages[name] = $.extend(true, errors, errorMessages[name]); + }); + + $.each(errorMessages, function (i, el) { + if (el.length === 0) { + delete errorMessages[i]; + } + }); + + return errorMessages; + + }, + hasErrors: function() { + + var errorMessages = []; + + this.each(function (i, el) { + errorMessages = errorMessages.concat( + $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : [] + ); + }); + + return (errorMessages.length > 0); + }, + override : function (newDefaults) { + defaults = $.extend(true, defaults, newDefaults); + } + }, + validatorTypes: { + callback: { + name: "callback", + init: function ($this, name) { + return { + validatorName: name, + callback: $this.data("validation" + name + "Callback"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function ($this, value, validator) { + if (validator.lastValue === value && validator.lastFinished) { + return !validator.lastValid; + } + + if (validator.lastFinished === true) + { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + + var rrjqbvValidator = validator; + var rrjqbvThis = $this; + executeFunctionByName( + validator.callback, + window, + $this, + value, + function (data) { + if (rrjqbvValidator.lastValue === data.value) { + rrjqbvValidator.lastValid = data.valid; + if (data.message) { + rrjqbvValidator.message = data.message; + } + rrjqbvValidator.lastFinished = true; + rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + rrjqbvThis.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + } + ); + } + + return false; + + } + }, + ajax: { + name: "ajax", + init: function ($this, name) { + return { + validatorName: name, + url: $this.data("validation" + name + "Ajax"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function ($this, value, validator) { + if (""+validator.lastValue === ""+value && validator.lastFinished === true) { + return validator.lastValid === false; + } + + if (validator.lastFinished === true) + { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + $.ajax({ + url: validator.url, + data: "value=" + value + "&field=" + $this.attr("name"), + dataType: "json", + success: function (data) { + if (""+validator.lastValue === ""+data.value) { + validator.lastValid = !!(data.valid); + if (data.message) { + validator.message = data.message; + } + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }, + failure: function () { + validator.lastValid = true; + validator.message = "ajax call failed"; + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }); + } + + return false; + + } + }, + regex: { + name: "regex", + init: function ($this, name) { + return {regex: regexFromString($this.data("validation" + name + "Regex"))}; + }, + validate: function ($this, value, validator) { + return (!validator.regex.test(value) && ! validator.negative) + || (validator.regex.test(value) && validator.negative); + } + }, + required: { + name: "required", + init: function ($this, name) { + return {}; + }, + validate: function ($this, value, validator) { + return !!(value.length === 0 && ! validator.negative) + || !!(value.length > 0 && validator.negative); + }, + blockSubmit: true + }, + match: { + name: "match", + init: function ($this, name) { + var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first(); + element.bind("validation.validation", function () { + $this.trigger("change.validation", {submitting: true}); + }); + return {"element": element}; + }, + validate: function ($this, value, validator) { + return (value !== validator.element.val() && ! validator.negative) + || (value === validator.element.val() && validator.negative); + }, + blockSubmit: true + }, + max: { + name: "max", + init: function ($this, name) { + return {max: $this.data("validation" + name + "Max")}; + }, + validate: function ($this, value, validator) { + return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative) + || (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative); + } + }, + min: { + name: "min", + init: function ($this, name) { + return {min: $this.data("validation" + name + "Min")}; + }, + validate: function ($this, value, validator) { + return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative) + || (parseFloat(value) >= parseFloat(validator.min) && validator.negative); + } + }, + maxlength: { + name: "maxlength", + init: function ($this, name) { + return {maxlength: $this.data("validation" + name + "Maxlength")}; + }, + validate: function ($this, value, validator) { + return ((value.length > validator.maxlength) && ! validator.negative) + || ((value.length <= validator.maxlength) && validator.negative); + } + }, + minlength: { + name: "minlength", + init: function ($this, name) { + return {minlength: $this.data("validation" + name + "Minlength")}; + }, + validate: function ($this, value, validator) { + return ((value.length < validator.minlength) && ! validator.negative) + || ((value.length >= validator.minlength) && validator.negative); + } + }, + maxchecked: { + name: "maxchecked", + init: function ($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function () { + $this.trigger("change.validation", {includeEmpty: true}); + }); + return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements}; + }, + validate: function ($this, value, validator) { + return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative) + || (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative); + }, + blockSubmit: true + }, + minchecked: { + name: "minchecked", + init: function ($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function () { + $this.trigger("change.validation", {includeEmpty: true}); + }); + return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements}; + }, + validate: function ($this, value, validator) { + return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative) + || (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative); + }, + blockSubmit: true + } + }, + builtInValidators: { + email: { + name: "Email", + type: "shortcut", + shortcut: "validemail" + }, + validemail: { + name: "Validemail", + type: "regex", + regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}", + message: "Not a valid email address" + }, + passwordagain: { + name: "Passwordagain", + type: "match", + match: "password", + message: "Does not match the given password" + }, + positive: { + name: "Positive", + type: "shortcut", + shortcut: "number,positivenumber" + }, + negative: { + name: "Negative", + type: "shortcut", + shortcut: "number,negativenumber" + }, + number: { + name: "Number", + type: "regex", + regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?", + message: "Must be a number" + }, + integer: { + name: "Integer", + type: "regex", + regex: "[+-]?\\\d+", + message: "No decimal places allowed" + }, + positivenumber: { + name: "Positivenumber", + type: "min", + min: 0, + message: "Must be a positive number" + }, + negativenumber: { + name: "Negativenumber", + type: "max", + max: 0, + message: "Must be a negative number" + }, + required: { + name: "Required", + type: "required", + message: "This is required" + }, + checkone: { + name: "Checkone", + type: "minchecked", + minchecked: 1, + message: "Check at least one option" + } + } + }; + + var formatValidatorName = function (name) { + return name + .toLowerCase() + .replace( + /(^|\s)([a-z])/g , + function(m,p1,p2) { + return p1+p2.toUpperCase(); + } + ) + ; + }; + + var getValue = function ($this) { + // Extract the value we're talking about + var value = $this.val(); + var type = $this.attr("type"); + if (type === "checkbox") { + value = ($this.is(":checked") ? value : ""); + } + if (type === "radio") { + value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : ""); + } + return value; + }; + + function regexFromString(inputstring) { + return new RegExp("^" + inputstring + "$"); + } + + /** + * Thanks to Jason Bunting via StackOverflow.com + * + * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910 + * Short link: http://tinyurl.com/executeFunctionByName + **/ + function executeFunctionByName(functionName, context /*, args*/) { + var args = Array.prototype.slice.call(arguments).splice(2); + var namespaces = functionName.split("."); + var func = namespaces.pop(); + for(var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func].apply(this, args); + } + + $.fn.jqBootstrapValidation = function( method ) { + + if ( defaults.methods[method] ) { + return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof method === 'object' || ! method ) { + return defaults.methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.jqBootstrapValidation' ); + return null; + } + + }; + + $.jqBootstrapValidation = function (options) { + $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments); + }; + +})( jQuery ); diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js new file mode 100644 index 00000000..1f797f0c --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/js/vim-validate.js @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * Created by 10184303 on 15-11-17. + */ +var form = $('#vim_form'); +var error = $('.alert-danger', form); +var success = $('.alert-success', form); +form.validate({ + doNotHideMessage: true, //this option enables to show the error/success messages on tab switch. + errorElement: 'span', //default input error message container + errorClass: 'help-block', // default input error message class + focusInvalid: false, // do not focus the last invalid input + rules: { + url: { + required: true, + url:true, + maxlength:50 + //,repeatedName: true + }, + vimName:{ + required: true + }, + userName:{ + required: true, + maxlength:20 + }, + password:{ + required: true, + maxlength:20 + }, + tenant:{ + required: true, + maxlength:20 + } + }, + messages: { + url: { + //required: $.i18n.prop('com_zte_ums_zenic_topology_connectmanager_enter_name') + required: $.i18n.prop('com_zte_ums_eco_roc_vim_auth_url_require_message'), + url: $.i18n.prop('com_zte_ums_eco_roc_vim_auth_url_alarm_message') + }, + vimName:{ + required: $.i18n.prop('com_zte_ums_eco_roc_vim_name_alarm_message') + }, + userName:{ + required: $.i18n.prop('com_zte_ums_eco_roc_vim_username_alarm_message') + }, + password:{ + required: $.i18n.prop('com_zte_ums_eco_roc_vim_password_alarm_message') + }, + tenant:{ + required: $.i18n.prop('com_zte_ums_eco_roc_vim_tenant_alarm_message') + } + }, + errorPlacement: function (error, element) { // render error placement for each input type + error.insertAfter(element); // for other inputs, just perform default behavior + }, + + invalidHandler: function (event, validator) { //display error alert on form submit + success.hide(); + error.show(); + //ZteFrameWork.scrollTo(error, -200); + }, + + highlight: function (element) { // hightlight error inputs + $(element) + .closest('.form-group').removeClass('has-success').addClass('has-error'); // set error class to the control group + }, + + unhighlight: function (element) { // revert the change done by hightlight + $(element) + .closest('.form-group').removeClass('has-error'); // set error class to the control group + }, + + success: function (label) { + label + .addClass('valid') // mark the current input as valid and display OK icon + .closest('.form-group').removeClass('has-error'); // set success class to the control group + }, + + submitHandler: function (form) { + success.show(); + error.hide(); + //add here some ajax code to submit your form or just call form.submit() if you want to submit the form without ajax + } + +}); diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js new file mode 100644 index 00000000..259f83df --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/js/vimChart.js @@ -0,0 +1,383 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var vimChart = {}; + + + + var labelTop = { + normal : { + label : { + show : true, + position : 'outer', + formatter :function (params){ + var total=params.series.data[1].value+params.series.data[0].value; + var util=params.series.data[0].util; + // return total+util+"中的"+"\n"+params.value+util+"已使用" ; + return $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_used')+params.value+util+"\n"+ + $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_total')+ total+util; + }, + textStyle: { + baseline : 'bottom', + fontWeight:'normal' + + } + }, + labelLine : { + show : true + } + } +}; + + +var labelFromatter = { + normal : { + label : { + formatter :function (params){ + return params.series.data[0].name+"\n"+(100-params.percent).toFixed(0) + '%' + }, + textStyle: { + baseline : 'center', + color:"#000", + fontWeight:'bold' + + + } + } + } +} +var labelBottom = { + normal : { + color: '#ccc', + label : { + show : true, + position : 'center' + }, + labelLine : { + show : false + } + }, + emphasis: { + color: 'rgba(0,0,0,0)' + } +}; + +var radius = [40, 55]; + + var vimPieChart; + +vimChart.vimPieChartInit = function(){ + vimPieChart = echarts.init(document.getElementById('vimPieChartDiv')); + vimPieChart.showLoading({ + text : "Loading", + effect :"whirling", + textStyle : { + fontSize : 20 + } +}); + +} + +vimChart.vimPieChart = function(data){ + +var option = { + animation:true, + legend: { + x : 'left', + y:"top", + data:[ + $.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_cpu'), + $.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_memory'), + $.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_disk') + ], + orient: 'vertical' + }, + color:["#578ebe","#44b6ae","#DABA36"], + title : { + text: '', + subtext: '', + x: 'center' + }, + toolbox: { + show : true, + + feature : { + saveAsImage : { + show : true, + title : $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_save_picture'), + type : 'png', + lang : [$.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_click_save')] + } + } + }, + series : [ + { + type : 'pie', + center : ['15%', '55%'], + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_cpu'), value:data.usage.cpu,itemStyle : labelTop,util:''}, + {name:'other', value:data.resource.cpu -data.usage.cpu, itemStyle : labelBottom} + + ] + }, + { + type : 'pie', + center : ['40%', '55%'], + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_memory'), value:data.usage.memoryMb,itemStyle : labelTop,util:'MB' }, + {name:'other', value:data.resource.memoryMb - data.usage.memoryMb,itemStyle : labelBottom} + + ] + }, + { + type : 'pie', + center : ['65%', '55%'], + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_vim_disk'), value:data.usage.diskGb,itemStyle : labelTop,util:'GB'}, + {name:'other', value:data.resource.diskGb -data.usage.diskGb, itemStyle : labelBottom} + + ] + } + + ] +}; + + + // 为echarts对象加载数据 + vimPieChart.hideLoading(); + vimPieChart.setOption(option); + window.onresize = vimPieChart.resize; + + +} + +vimChart.getPieCenter=function(n){ + var center; + switch(n) + { + case 1: + center=['15%', '30%']; + break; + case 2: + center=['40%', '30%']; + break; + case 3: + center=['65%', '30%']; + break; + case 4: + center=['15%', '80%']; + break; + case 5: + center=['40%', '80%']; + break; + case 6: + center=['65%', '80%']; + break; + case 7: + center=['90%', '80%']; + break; + + } + return center; +} + + + var tenantPieChart; +vimChart.tenantPieChartInit = function(){ + tenantPieChart= echarts.init(document.getElementById('tenantPieChartDiv')); + + tenantPieChart.showLoading({ + text : "Loading", + effect :"whirling", + textStyle : { + fontSize : 20 + } +}); +} +vimChart.tenantPieChart = function(data){ + +var legend_data=new Array(); +var series=new Array(); +var n=0; + +if(data.quota.instances!=-1){ + n++; + +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_instances')); +var instances_series={ + type : 'pie', + center : vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_instances'), value:data.usage.instances,itemStyle : labelTop,util:''}, + {name:'other', value:data.quota.instances -data.usage.instances, itemStyle : labelBottom} + + ] + }; + series.push(instances_series); + +} +if(data.quota.cpu!=-1){ +n++; +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_cpu')); +var cpu_series={ + type : 'pie', + center : vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_cpu'), value:data.usage.cpu,itemStyle : labelTop,util:'' }, + {name:'other', value:data.quota.cpu -data.usage.cpu,itemStyle : labelBottom} + + ] + }; + series.push(cpu_series); +} +if(data.quota.memoryMb!=-1){ + n++; +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_memoryMb')); +var memoryMb_series={ + type : 'pie', + center : vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_memoryMb'), value:data.usage.memoryMb,itemStyle : labelTop,util:'MB'}, + {name:'other', value:data.quota.memoryMb -data.usage.memoryMb, itemStyle : labelBottom} + + ] + }; + series.push(memoryMb_series); +} +if(data.quota.floatingIps!=-1){ + n++; +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_floatingIps')); +var floatingIps_series={ + type : 'pie', + center :vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_floatingIps'), value:data.usage.floatingIps,itemStyle : labelTop,util:''}, + {name:'other', value:data.quota.floatingIps -data.usage.floatingIps, itemStyle : labelBottom} + + ] + }; + series.push(floatingIps_series); +} +if(data.quota.securityGroups!=-1){ + n++; +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_securityGroups')); +var securityGroups_series={ + type : 'pie', + center :vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_securityGroups'), value:data.usage.securityGroups,itemStyle : labelTop,util:''}, + {name:'other', value:data.quota.securityGroups -data.usage.securityGroups, itemStyle : labelBottom} + + ] + }; + series.push(securityGroups_series); +} +if(data.quota.volumes!=-1){ + n++; +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumes')); +var volumes_series={ + type : 'pie', + center :vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumes'), value:data.usage.volumes,itemStyle : labelTop,util:''}, + {name:'other', value:data.quota.volumes -data.usage.volumes, itemStyle : labelBottom} + + ] + }; + series.push(volumes_series); +} +if(data.quota.volumeStorage!=-1){ + n++; +legend_data.push($.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumeStorage')); +var volumeStorage_series={ + type : 'pie', + center :vimChart.getPieCenter(n), + radius : radius, + itemStyle : labelFromatter, + data : [ + {name:$.i18n.prop('com_zte_ums_eco_roc_vim_resource_tenant_volumeStorage'), value:data.usage.volumeStorage,itemStyle : labelTop,util:'GB'}, + {name:'other', value:data.quota.volumeStorage -data.usage.volumeStorage, itemStyle : labelBottom} + + ] + }; + series.push(volumeStorage_series); +} + + +var option = { + animation:true, + legend: { + x : 'left', + y:"top", + data:legend_data, + orient: 'vertical' + }, + color:["#578ebe","#44b6ae","#DABA36","#F79695","#9699e0","#57b5e3","#48c79c"], + title : { + text: '', + subtext: '', + x: 'center' + }, + toolbox: { + show : true, + feature : { + saveAsImage : { + show : true, + title : $.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_save_picture'), + type : 'png', + lang : [$.i18n.prop('com_zte_ums_eco_roc_vim_resource_chart_click_save')] + } + } + }, + series : series +}; + + + // 为echarts对象加载数据 + tenantPieChart.hideLoading(); + tenantPieChart.setOption(option); + window.onresize = tenantPieChart.resize; + + +} + +vimChart.growl=function(message,type){ + $.growl({ + icon: "fa fa-envelope-o fa-lg", + title: "  " + $.i18n.prop('com_zte_ums_eco_roc_vim_title_notice'), + message: message+"        " + },{ + type: type, + delay:0 + }); +} \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js new file mode 100644 index 00000000..1e9126b9 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/js/vimChartController.js @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var vm = avalon + .define({ + $id : "vimChartController", + $vimChartUrl : '../../api/vim/v1/{vim_id}/resource', + $tenantChartUrl : '../../api/vim/v1/{vim_id}/resource/{tenant_name}', + $tenantListUrl : '../../api/vim/v1/{vim_id}/tenants', + $tenantRoleUrl : '../../api/vim/v1/{vim_id}/roles', + vimInfo:{ + name:name, + id:id, + tenant:tenant, + isAdmin:true + }, + tenantSelectList: { + condName : $.i18n.prop("com_zte_ums_eco_roc_vim_type"), + component_type : 'select', + selectItems : [] + }, + initChart : function() { + + //判断租户是否有admin权限 + var tenantRoleUrl=vm.$tenantRoleUrl.replace("{vim_id}",vm.vimInfo.id); + $.ajax({ + "type": 'get', + "url": tenantRoleUrl, + "dataType": "json", + success: function (resp) { + vm.vimInfo.isAdmin= (resp==null)?false:resp.isAdminRole; + + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + vimChart.growl("get [tenant Role] is error :"+textStatus+":"+errorThrown,"danger"); + }, + complete: function() { + if(vm.vimInfo.isAdmin==true){ + + //获取全部资源使用情况 + vm.vimChartLoad(); + + //获取租户列表 + vm.vimListLoad(); + } + + } + }); + //获取租户资源使用情况 + vm.tenantChartLoad(); + }, + gotoVimPage:function(){ + window.parent.ZteFrameWork.goToURLByIDAndNewAction('eco_roc_vimmgr'); + }, + vimListLoad:function(){ + var tenantListUrl=vm.$tenantListUrl.replace("{vim_id}",vm.vimInfo.id); + $.ajax({ + "type": 'get', + "url": tenantListUrl, + "dataType": "json", + success: function (resp) { + vm.tenantSelectList.selectItems= (resp==null)?[]:resp; + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + vimChart.growl("get [tenant List] is error :"+textStatus+":"+errorThrown,"danger"); + } + }); + }, + vimChartLoad:function(){ + var viminitData={ + "resource": { + "cpu": 0, + "memoryMb": 503, + "diskGb": 9.8 + }, + "usage": { + "cpu": 0, + "memoryMb": 0, + "diskGb": 0 + } + } + + vimChart.vimPieChartInit(); + + var vimChartUrl=vm.$vimChartUrl.replace("{vim_id}",vm.vimInfo.id); + + + + $.ajax({ + "type": 'get', + "url": vimChartUrl, + "dataType": "json", + success: function (resp) { + var vimData= (resp==null)?viminitData:resp; + vimChart.vimPieChart(vimData); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + vimChart.growl("get [virtual machine manager resource using status] is error :"+textStatus+":"+errorThrown,"danger"); + } + }); + + }, + tenantChartLoad:function(){ + var tenantChartUrl=vm.$tenantChartUrl.replace("{vim_id}",vm.vimInfo.id).replace("{tenant_name}",vm.vimInfo.tenant); + + var tenantinitData={ + "tenant_name": "", + "errormsg":"", + "quota": { + "cpu": 0, + "memoryMb": 0, + "instances": 0, + "floatingIps": 0, + "securityGroups": 0, + "volumeStorage": 0, + "volumes": 0 + }, + "usage": { + "cpu": 0, + "memoryMb": 0, + "instances": 0, + "floatingIps": 0, + "securityGroups": 0, + "volumeStorage": 0, + "volumes": 0 + } + }; + vimChart.tenantPieChartInit(); + $.ajax({ + "type": 'get', + "url": tenantChartUrl, + "dataType": "json", + success: function (resp) { + var tenantData= (resp==null)?tenantinitData:resp; + if(tenantData.errormsg!=null) + { + vimChart.growl(tenantData.errormsg,"danger"); + } + vimChart.tenantPieChart(tenantData); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + vimChart.growl("get [tenant quota using status] occur error :"+textStatus+":"+errorThrown,"danger"); + } + }); + + } + +}); +avalon.scan(); +vm.initChart(); \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js b/roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js new file mode 100644 index 00000000..6b2f0fb8 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/js/vimController.js @@ -0,0 +1,315 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var vm = avalon + .define({ + $id : "vimController", + vimInfo : [], + vimStatusTime:$.i18n.prop('com_zte_ums_eco_roc_vim_getting_info'), + ifSearch : 0, + server_rtn:{ + info_block:false, + warning_block:false, + rtn_info:"", + $RTN_SUCCESS:"RTN_SUCCESS", + $RTN_FAILED:"RTN_FAILED", + wait : $.i18n.prop('com_zte_ums_eco_roc_vim_checking_status') + }, + executeWait : {clazz : 'alert-info', visible : true, text : $.i18n.prop('com_zte_ums_eco_roc_vim_checking_status')}, + executeError : {clazz : 'alert-danger', visible : true, text : 'error'}, + $Status :{ + success:"active", + failed:"inactive", + displayActive: $.i18n.prop('com_zte_ums_eco_roc_vim_normal'), + displayInactive: $.i18n.prop('com_zte_ums_eco_roc_vim_abnormal') + }, + isSave : true, + action : {ADD : 'add', UPDATE : 'update'}, + $queryVimInfoUrl : '../../api/roc/v1/resource/vims', + $addVimInfoUrl : '../../api/vim/v1/', + $updateVimInfoUrl : '../../api/roc/v1/resource/vims/', + $delVimInfoUrl : '../../api/vim/v1/{vim_id}', + $initTable : function() { + $.ajax({ + "type": 'get', + "url": vm.$queryVimInfoUrl, + "dataType": "json", + "success": function (resp) { + if(resp.operationResult=="SUCCESS") + { + vm.vimInfo = (resp==null)?[]:resp.data; + for(var i = 0; i < vm.vimInfo.length; i ++){ + var vimInstance = vm.vimInfo[i]; + var checkTime = vimInstance.checkTime; + if("" != checkTime){ + vm.vimStatusTime = checkTime; + break; + } + } + } + else{ + vm.vimInfo=[]; + bootbox.alert($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_query_failed")); + return; + } + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + bootbox.alert($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_query_failed") + textStatus+":"+errorThrown); + return; + }, + complete: function() { + resUtil.tooltipVimStatus(); + } + }); + + }, + $vimType: { + condName : $.i18n.prop("com_zte_ums_eco_roc_vim_type"), + component_type : 'select', + selectItems : [ + { + cond_value : 'TECS', + name : "TECS", + value : true + }, + { + cond_value : 'openstack', + name :"openstack", + value : true + } + ] + }, + addVim : { + titleName: $.i18n.prop("com_zte_ums_eco_roc_vim_register_info"), + vimId : "", + vimName : "", + hostName : '', + userName : "", + tenant : "", + password : "", + ipAddress : '', + url : "", + saveType :"add", + status : "", + vimMoc :"nfv.vim.opencos", + vimType :"TECS", + vendor :"" + }, + $showVimTable : function(el, action) { + vm.isSave = false; + if(vm.action.ADD == action){ + vm.addVim.vimId = ""; + vm.addVim.vimName = ""; + vm.addVim.userName = ""; + vm.addVim.password = ""; + vm.addVim.url = ""; + vm.addVim.tenant = ""; + vm.addVim.vendor = ""; + vm.addVim.saveType = "add"; + vm.addVim.vimType = "TECS"; + vm.addVim.titleName = $.i18n.prop("com_zte_ums_eco_roc_vim_register_info"); + + } else { + vm.addVim.vimId = el.oid; + vm.addVim.vimName = el.name; + vm.addVim.url = el.url; + vm.addVim.userName = el.userName; + vm.addVim.password = el.password; + vm.addVim.tenant = el.user; + vm.addVim.saveType = "update"; + vm.addVim.titleName = $.i18n.prop('com_zte_ums_eco_roc_vim_modify_info'); + vm.addVim.vimType = el.type; + vm.addVim.vendor = el.vendor; + } + vm.executeError.visible=false; + vm.executeWait.visible=false; + $(".form-group").each(function () { + $(this).removeClass('has-success'); + $(this).removeClass('has-error'); + $(this).find(".help-block[id]").remove(); + }); + $("#addVimDlg").modal("show"); + }, + + $saveVimTable : function() { + vm.isSave = true; + success.hide(); + error.hide(); + if (form.valid() == false) { + vm.isSave = false; + return false; + } + vm.executeWait.visible = true; + vm.executeError.visible = false; + if(vm.addVim.saveType=="add") { + //不能重复添加 + /* + for( var i = 0; i < vm.vimInfo.length; i ++ ){ + if(vm.addVim.url == vm.vimInfo[i].url){ + resUtil.growl($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_title") + 'already exists',"info"); + $('#addVimDlg').modal('hide'); + return; + } + } + */ + if('TECS' == vm.addVim.vimType){ + vm.addVim.vimMoc = 'nfv.vim.opencos'; + var url = vm.addVim.url; + var from = url.indexOf('//') + 2; + var to = url.lastIndexOf(':'); + vm.addVim.ipAddress = url.substring( from, to ); + } else if('openstack' == vm.addVim.vimType){ + vm.addVim.vimMoc = 'nfv.vim.openstack'; + } + vm.persistVim(); + } else if( vm.addVim.saveType == "update" ){ + vm.updateVim(); + } + }, + //新增vim + persistVim : function(){ + $.ajax({ + type : "Post", + url : vm.$addVimInfoUrl, + data : JSON.stringify({ + vimName : vm.addVim.vimName, + tenant :vm.addVim.tenant, + vimType : vm.addVim.vimType, + hostName: "", + ipAddress: vm.addVim.ipAddress, + url : vm.addVim.url, + userName : vm.addVim.userName, + password : vm.addVim.password, + vimMoc:vm.addVim.vimMoc, + vendor: vm.addVim.vendor + }), + async : false, + dataType : "json", + contentType : 'application/json', + success : function(data) { + vm.executeWait.visible=false; + vm.executeError.visible=false; + if ( 0 == data.respCode ) { + vm.addVim.vimId = data.result.vimId; + vm.addVim.status = data.result.status; + vm.addVim.name = data.result.vimName; + vm.addVim.oid = data.result.vimId; + vm.addVim.user = data.result.tenant; + vm.addVim.type = data.result.vimType; + var newVim=jQuery.extend({}, vm.addVim); + vm.vimInfo.push(newVim); + + $('#addVimDlg').modal('hide'); + resUtil.growl($.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_title") + $.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_save_success"),"success"); + } else{ + vm.executeError.visible=true; + vm.executeError.text = $.i18n.prop("com_zte_ums_eco_roc_vim_growl_msg_save_failed"); + } + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + vm.executeError.visible = true; + vm.executeError.text = textStatus+":"+errorThrown; + vm.executeWait.visible = false; + vm.isSave = false; + } + }); + }, + //更新vim + updateVim : function(){ + $.ajax({ + type : "Put", + url : vm.$updateVimInfoUrl+vm.addVim.vimId, + contentType : 'application/json', + data : JSON.stringify({ + name : vm.addVim.vimName, + userName : vm.addVim.userName, + password : vm.addVim.password, + url : vm.addVim.url, + user:vm.addVim.tenant, + type : vm.addVim.vimType, + vendor : vm.addVim.vendor + }), + dataType : "json", + async : false, + success : function(data) { + vm.executeWait.visible=false; + vm.executeError.visible=false; + if (data.operationResult == "SUCCESS") { + for(var i=0;i + + + + + + + + + + + + + + + +
    +
    + +
    +
    + {{vimInfo.name}} +
    +
    + + +
    +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    +
    + {{vimInfo.tenant}} +
    + + + +
    +
    + +
    + +
    + +
    + +
    + +
    + + +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/roc-iui/src/main/resources/webroot/roc-vim/vimView.html b/roc-iui/src/main/resources/webroot/roc-vim/vimView.html new file mode 100644 index 00000000..86dd5814 --- /dev/null +++ b/roc-iui/src/main/resources/webroot/roc-vim/vimView.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    + +
    +
    +

    +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uiframe-iui/pom.xml b/uiframe-iui/pom.xml new file mode 100644 index 00000000..49457abd --- /dev/null +++ b/uiframe-iui/pom.xml @@ -0,0 +1,31 @@ + + + + 4.0.0 + + org.openo.orchestrator.openoiui + openoiui-parent + 0.0.1-SNAPSHOT + + org.openo.orchestrator.openoiui + uiframe-iui + jar + openo/openoiui/uiframe-iui + Open-O UI framework + diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt new file mode 100644 index 00000000..e39b5440 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/Read Me.txt @@ -0,0 +1,7 @@ +Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. + +To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts + +You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. + +You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css new file mode 100644 index 00000000..98b7a55d --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.css @@ -0,0 +1,152 @@ +body { + padding: 0; + margin: 0; + font-family: sans-serif; + font-size: 1em; + line-height: 1.5; + color: #555; + background: #fff; +} +h1 { + font-size: 1.5em; + font-weight: normal; +} +small { + font-size: .66666667em; +} +a { + color: #e74c3c; + text-decoration: none; +} +a:hover, a:focus { + box-shadow: 0 1px #e74c3c; +} +.bshadow0, input { + box-shadow: inset 0 -2px #e7e7e7; +} +input:hover { + box-shadow: inset 0 -2px #ccc; +} +input, fieldset { + font-family: sans-serif; + font-size: 1em; + margin: 0; + padding: 0; + border: 0; +} +input { + color: inherit; + line-height: 1.5; + height: 1.5em; + padding: .25em 0; +} +input:focus { + outline: none; + box-shadow: inset 0 -2px #449fdb; +} +.glyph { + font-size: 16px; + width: 15em; + padding-bottom: 1em; + margin-right: 4em; + margin-bottom: 1em; + float: left; + overflow: hidden; +} +.liga { + width: 80%; + width: calc(100% - 2.5em); +} +.talign-right { + text-align: right; +} +.talign-center { + text-align: center; +} +.bgc1 { + background: #f1f1f1; +} +.fgc1 { + color: #999; +} +.fgc0 { + color: #000; +} +p { + margin-top: 1em; + margin-bottom: 1em; +} +.mvm { + margin-top: .75em; + margin-bottom: .75em; +} +.mtn { + margin-top: 0; +} +.mtl, .mal { + margin-top: 1.5em; +} +.mbl, .mal { + margin-bottom: 1.5em; +} +.mal, .mhl { + margin-left: 1.5em; + margin-right: 1.5em; +} +.mhmm { + margin-left: 1em; + margin-right: 1em; +} +.mls { + margin-left: .25em; +} +.ptl { + padding-top: 1.5em; +} +.pbs, .pvs { + padding-bottom: .25em; +} +.pvs, .pts { + padding-top: .25em; +} +.unit { + float: left; +} +.unitRight { + float: right; +} +.size1of2 { + width: 50%; +} +.size1of1 { + width: 100%; +} +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.hidden-true { + display: none; +} +.textbox0 { + width: 3em; + background: #f1f1f1; + padding: .25em .5em; + line-height: 1.5; + height: 1.5em; +} +#testDrive { + display: block; + padding-top: 24px; + line-height: 1.5; +} +.fs0 { + font-size: 16px; +} +.fs1 { + font-size: 16px; +} + diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js new file mode 100644 index 00000000..52f25145 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo-files/demo.js @@ -0,0 +1,30 @@ +if (!('boxShadow' in document.body.style)) { + document.body.setAttribute('class', 'noBoxShadow'); +} + +document.body.addEventListener("click", function(e) { + var target = e.target; + if (target.tagName === "INPUT" && + target.getAttribute('class').indexOf('liga') === -1) { + target.select(); + } +}); + +(function() { + var fontSize = document.getElementById('fontSize'), + testDrive = document.getElementById('testDrive'), + testText = document.getElementById('testText'); + function updateTest() { + testDrive.innerHTML = testText.value || String.fromCharCode(160); + if (window.icomoonLiga) { + window.icomoonLiga(testDrive); + } + } + function updateSize() { + testDrive.style.fontSize = fontSize.value + 'px'; + } + fontSize.addEventListener('change', updateSize, false); + testText.addEventListener('input', updateTest, false); + testText.addEventListener('change', updateTest, false); + updateSize(); +}()); diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html new file mode 100644 index 00000000..a3cdefc9 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/demo.html @@ -0,0 +1,5015 @@ + + + + + IcoMoon Demo + + + + + +
    +

    Font Name: ZteIctIcons (Glyphs: 311)

    +
    +
    +

    Grid Size: Unknown

    +
    +
    + + + + ict-NFV +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-VNFM +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-VNF +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-VNFC +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-VIM +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-VDU +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-host +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-NS +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-moc-uca-public +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-topo-commongroup20x20 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-vapel_chgpile +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-car +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-chgpile +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-chgposition +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-chgstation +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-common_dc +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-common_ncd +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-common_ncd_break +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-common_sc +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-networkTree +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-resourceType +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-tree-icon +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-topo-group20x20 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-topo-root +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-topo-virtual20x20 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-common_ncd_stop +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-moc-root +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-uep-topo-undefinedgroup20x20 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-analysis +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-bindingRelationship +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-browsePolicy +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-businessManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-cardData +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-dailyManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-enterpriseCustomer +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-equipmentBlacklist +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-equipmentModel +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-examine +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-failureList +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-familyCustomer +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-fileTool +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-groupManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-notice +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-policy +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-portal +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-recordQuery +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-resourceManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-ruleManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-sucessRate +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-terminalManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-tools +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-track +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-userManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-versionManagment +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-workOrder +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-save +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Magnifier +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-zoomIn +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-zoomOut +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-delete +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-refresh +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-modify +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-new +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-cpu +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-memory +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-currentAlarm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-noticeAlarm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-historyAlarm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-close +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-table +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-next +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-pre +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-roleset +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-role +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-user +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-empty +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-noticeFilter +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-alarmTurn +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-advice +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-clearAlarm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-alarmBox +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-afreshDef +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-alarmFilter +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-manAnalysis +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-drill +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-gear +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-process +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-unacknownledge +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-acknownledge +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Operation +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-cloud +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-computer +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-alarm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-import +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-export +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Admin +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-allSelected +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-angleRight +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-arrowLeft +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-arrowLeftAll +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-arrowRight +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-arrowRightAll +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-autoFind +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-back +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-ball +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-bell +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-blackList +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-breakLink +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-cancle +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-circle +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-closeTree +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-configmap +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-department +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-detail +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-displaySwitch +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-file +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-filter +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-find +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-folder +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-forceOut +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-fullScreen +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Graphical +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-helpTip +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-hide +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-history +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-launchingTower +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-layout +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-legendhide +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-legendshow +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-link +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-lock +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-ltArrow +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Maintain +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-maximize +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Monitor +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-move +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-newShortcut +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-openTree +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-poNode +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-print +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-product +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-rbArrow +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-reduction +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-rename +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-select +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-selectAll +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-selectLeft +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-selectRight +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-show +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-shrink +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-start +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-stop +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-stretch +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-strikeOut +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-Synchronous +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-toRight +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-treefile +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-treeFolder +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-unlock +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-userCompare +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-userDispatch +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-xml +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-zoomOverView +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-zoomReset +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-hillstone +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-ubuntu +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-tru64 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-sever-as400 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-fileserver +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-sapccms +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-activedirectory +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-sliverstream +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-oracleas +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-freeBSD +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-exchange2007 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-exchange2003 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-dotnet +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-lenovo +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-router-alu7750 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-nds +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-php +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-glassfish +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-telnet +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-dns +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-url +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-database-mysql +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-ping +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-ftp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-rest +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-soap +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-macos +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-openbsd +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-debian +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-iis +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-mailserver +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-websphere +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-apache +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-jboss +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-a10bala +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-cluster-vcs +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-hpeva +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-zte +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-h3c +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-ibm-blade +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-secfox +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-segw +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-zteatca +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-zteips +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-sdn-controller +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-hpux +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-ops +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-sanswitch-brocade +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-bind +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-dns +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-ems +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-mediator +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-ntp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-ota +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-tomcat +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-trend +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-tsm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-weblogic +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-cluster +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-cluster-hacmp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-cluster-nec +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-cluster-ns +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-cluster-sg +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-database +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-database-mssql +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-database-oracle +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-database-sybase +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-database-sybaseiq +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-dellmd +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-emc +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-eternus +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-fujitsu +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-hds +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-hpaio +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-hpmsa +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-ibm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-ibmsm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-macrosan +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-netapp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-diskraid-sun +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-checkpoint +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-cisco +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-cisco2 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-juniper +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-neteye +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-zte +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-ztemf +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-firewall-zteutm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-gather +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-ibp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-ibp-ibp2000 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-net +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-alteon +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-appdirector +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-atca-lb10 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-cisco-ucs +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-dcs +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-delta +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-dp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-e9000 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-f5bigip +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-f5bigip2 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-gbe2c +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-h3c +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-hpblc +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-imm +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-secsis +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-vc +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-ztepower +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-ztesgs +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-other-zxsdr-nt +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-router +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-router-cisco +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-router-juniper +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-router-zte +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-sdn-host +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-sdn-switch +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-aix +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-klinux +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-redhat +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-solaris +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-suse +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-windows +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-server-zxve +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-cisco-mds +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-md3000 +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-netvault +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-sanswitch-zte +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-switch-at +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-switch-cisco +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-switch-h3c +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-switch-juniper +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-switch-zte +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-tapelib-hpmsl +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-tapelib-ibmts +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-tapelib-sunts +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-Virtualnetwork +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-app-netnumen +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-sdn-vnet +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-storage-sanswitch-hp +
    +
    + + +
    +
    + liga: + +
    +
    +
    +
    + + + + ict-it-switch +
    +
    + + +
    +
    + liga: + +
    +
    +
    + + +
    +

    Font Test Drive

    + + + +
      +
    +
    + +
    +

    Generated by IcoMoon

    +
    + + + + diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot new file mode 100644 index 00000000..7ee2ef90 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.eot differ diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg new file mode 100644 index 00000000..369a4139 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.svg @@ -0,0 +1,321 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf new file mode 100644 index 00000000..1333d3b2 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.ttf differ diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff new file mode 100644 index 00000000..c038d133 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/fonts/ZteIctIcons.woff differ diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/selection.json b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/selection.json new file mode 100644 index 00000000..bd39cd4e --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/selection.json @@ -0,0 +1,9569 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M176.567 573.586c11.703-14.263 27.721-67.584 27.721-67.584v-92.745l-103.424-9.874-100.864 10.898v92.745c0 0 15.945 53.321 27.794 67.803 39.058 48.421 53.979 63.415 73.070 83.017h1.463v-1.097h1.317c18.798-19.529 33.792-34.45 72.923-83.163zM103.131 617.179h-1.024v0.878h-1.024c-14.775-15.36-26.478-16.311-57.198-54.199-9.143-11.557-21.723-53.248-21.723-53.248v-72.485l78.921-8.631 80.896 7.826v72.485c0 0-12.434 41.618-21.577 52.882-30.72 38.181-42.423 39.205-57.271 54.491z", + "M166.4 454.144l-65.097-6.217-63.415 6.875v58.368c0 0 10.021 33.499 17.481 42.642 24.576 30.574 34.085 31.451 45.934 43.593h0.878v-0.731h0.878c11.776-12.069 21.285-12.946 45.934-43.52 7.461-8.997 17.408-42.642 17.408-42.642v-58.368z", + "M901.12 498.395c67.584 0 122.441-22.455 122.441-50.395 0-0.293 0-0.512 0-0.805 0-0.146 0-0.585 0-0.805-1.682-27.209-56.027-48.933-122.441-48.933-67.438 0.146-122.295 22.747-122.295 50.542 0 27.867 54.857 50.395 122.295 50.395z", + "M901.632 509.806c-67.511 0-122.368-22.601-122.368-50.395 0-1.682-0.731-6.949-0.878-10.167v31.525c0.439 4.754 0.878 9.874 0.878 12.142 0 27.794 54.857 50.469 122.368 50.469 67.584 0 122.368-22.674 122.368-50.469v-33.573c0 27.867-54.784 50.469-122.368 50.469z", + "M901.632 558.738c-67.511 0-122.368-22.747-122.368-50.395 0-1.609-0.731-6.583-0.878-9.655v29.403c0.439 4.827 0.878 9.874 0.878 12.069 0 28.087 54.857 50.542 122.368 50.542 67.584-0.146 122.368-22.528 122.368-50.688v-31.817c0 27.794-54.784 50.542-122.368 50.542z", + "M901.632 605.842c-67.511 0-122.368-22.455-122.368-50.395 0-1.536-0.731-6.583-0.878-9.728v31.013c0.146 1.024 0.439 2.267 0.439 2.999 0 28.014 54.857 50.395 122.295 50.395 67.584 0 122.441-22.601 122.441-50.395 0-0.731 0.219-1.975 0.439-2.999v-21.285c0 27.867-54.784 50.395-122.368 50.395z", + "M623.835 37.522c0-20.699-17.701-37.376-39.57-37.376h-94.427c-21.87-0.073-39.643 16.677-39.643 37.376v54.711h173.568l0.073-54.711z", + "M450.267 247.369c0 20.626 17.701 37.376 39.57 37.376h94.501c21.943 0 39.57-16.75 39.57-37.376v-136.411h-173.641v136.411zM537.015 194.341c8.85 0 16.018 6.729 16.018 15.067s-7.168 14.994-16.018 14.994c-8.704 0-15.872-6.802-15.872-15.067s7.022-14.994 15.872-14.994z", + "M669.769 858.258c0 10.018-56.62 18.139-126.464 18.139s-126.464-8.121-126.464-18.139c0-10.018 56.62-18.139 126.464-18.139s126.464 8.121 126.464 18.139z", + "M418.67 874.496v121.051c0 0 27.721 28.306 128.512 28.453 106.423 0 122.661-28.453 122.661-28.453v-121.051c0 0-68.608 11.849-124.343 11.849-66.487 0.073-126.83-11.849-126.83-11.849zM501.979 965.559v0h-16.018v16.238l-25.673-24.43 25.673-23.771v16.165h16.018v15.799zM540.745 1009.737l-25.746-24.283h16.969v-15.141h16.896v15.141h16.969l-25.088 24.283zM578.926 949.687h16.018v-16.165l25.673 23.845-25.673 24.283v-16.165h-16.018v-15.799zM548.864 930.158v15.067h-16.969v-15.067h-16.969l25.673-24.357 25.234 24.357h-16.969z", + "M382.025 154.697l-23.406-53.687c-18.139 7.973-35.621 16.896-52.224 26.99l30.208 50.103c14.482-8.777 29.623-16.603 45.422-23.406z", + "M281.819 217.673l-38.181-44.325c-19.529 16.823-37.742 35.401-54.199 55.296l45.056 37.303c14.409-17.408 30.354-33.646 47.323-48.274z", + "M196.096 321.829l-50.761-29.111c-9.655 16.969-18.286 34.597-25.746 52.663l54.053 22.309c6.51-15.653 13.97-31.086 22.455-45.861z", + "M909.897 367.689l54.126-22.309c-7.607-18.359-16.091-35.986-25.746-52.736l-50.688 29.038c8.411 14.702 15.799 30.062 22.309 46.007z", + "M893.294 227.328c-16.823-20.334-35.547-39.351-55.808-56.466l-37.888 44.544c17.481 14.994 33.865 31.525 48.494 49.225l45.202-37.303z", + "M697.125 152.357c15.799 6.656 31.013 14.263 45.641 22.894l29.55-50.469c-16.75-9.801-34.304-18.578-52.37-26.258l-22.821 53.833z", + "M697.051 885.102l22.967 53.833c18.139-7.753 35.547-16.53 52.297-26.112l-29.257-50.688c-14.702 8.411-29.989 16.165-46.007 22.967z", + "M798.354 823.15l37.595 44.837c19.749-16.603 38.181-34.962 54.93-54.711l-44.544-37.888c-14.702 17.335-30.866 33.426-47.982 47.762z", + "M885.321 720.018l50.542 29.403c9.801-16.75 18.505-34.231 26.185-52.224l-53.833-22.967c-6.656 15.726-14.19 31.013-22.894 45.787z", + "M175.543 674.231l-53.76 22.967c7.753 18.139 16.53 35.547 26.112 52.224l50.615-29.257c-8.485-14.629-16.165-30.062-22.967-45.934z", + "M191.561 811.593c16.018 19.383 33.938 37.595 53.321 54.053l38.034-44.398c-16.823-14.409-32.402-30.208-46.299-46.958l-45.056 37.303z", + "M306.542 910.19c16.75 10.094 34.231 19.090 52.005 26.843l23.406-53.541c-15.506-6.802-30.72-14.629-45.422-23.406l-29.989 50.103z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "NFV" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 314, + "id": 310, + "prevSize": 16, + "code": 59795, + "name": "NFV" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M785.481 880.786h-555.081l92.306-294.766h203.703v-73.143h-257.39l-78.921 252.050-102.619-420.937v-63.561h225.134l81.993 85.797h247.589v-73.143h-216.283l-81.993-85.797h-329.582v141.093l146.578 605.55h655.872l100.718-105.399-52.882-50.615z", + "M1020.050 696.393c-13.239-39.936-56.466-61.952-96.768-48.64-28.965 9.655-47.909 34.816-51.639 63.195l-264.558-0.293c-0.731-4.169-1.609-8.265-2.853-12.288-4.096-12.142-10.971-22.235-19.383-30.501l160.841-265.874c16.018 5.998 33.938 7.168 51.273 1.39 40.155-13.312 61.879-56.686 48.494-96.914-13.312-40.155-56.539-61.952-96.768-48.64-40.082 13.312-61.806 56.686-48.567 96.841 3.73 11.118 9.801 20.846 17.554 28.745l-161.573 266.606c-15.287-5.266-32.037-5.998-48.64-0.585-40.155 13.312-61.952 56.613-48.64 96.768 13.312 40.302 56.613 62.025 96.841 48.64 24.576-8.119 42.13-27.502 49.152-50.469l269.824 0.219c13.312 40.155 56.686 61.879 96.695 48.567 40.302-13.385 62.025-56.686 48.713-96.768z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "VNFM" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 315, + "id": 309, + "prevSize": 16, + "code": 59796, + "name": "VNFM" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M706.267 645.632c-29.989 0-55.589 17.627-67.73 42.935l-246.93-81.993c0.805-4.023 1.317-8.119 1.317-12.507 0-12.361-3.365-24.064-8.631-34.523l232.448-198.29c13.166 10.533 29.403 17.042 47.25 17.042 41.545 0 75.41-33.719 75.41-75.337 0-41.545-33.865-75.264-75.41-75.264-41.618 0-75.337 33.719-75.337 75.337 0 11.63 2.779 22.455 7.534 32.256l-233.253 198.949c-12.654-9.728-28.233-15.579-45.275-15.579-41.691 0-75.41 33.646-75.41 75.264 0 41.691 33.719 75.264 75.41 75.264 25.454 0 47.835-12.434 61.513-31.89l251.831 83.749c0 41.618 33.719 75.264 75.264 75.264 41.691 0 75.557-33.646 75.557-75.264-0.073-41.618-33.792-75.41-75.557-75.41z", + "M512 0c-282.258 0-512 229.742-512 512 0 282.331 229.742 512 512 512 282.331 0 512-229.669 512-512 0-282.258-229.669-512-512-512zM512 950.857c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857 438.857 196.827 438.857 438.857-196.827 438.857-438.857 438.857z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "VNF" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 316, + "id": 308, + "prevSize": 16, + "code": 59797, + "name": "VNF" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M536.869 599.698c-24.21 0-44.763 14.19-54.638 34.597l-198.729-66.048c0.585-3.218 1.024-6.583 1.024-10.094 0-9.947-2.706-19.383-6.949-27.721l187.246-159.671c10.533 8.485 23.625 13.751 38.034 13.751 33.499 0 60.709-27.209 60.709-60.709s-27.209-60.709-60.709-60.709-60.709 27.282-60.709 60.782c0 9.362 2.194 18.066 5.998 25.966l-187.831 160.183c-10.167-7.826-22.674-12.581-36.425-12.581-33.499 0-60.709 27.136-60.709 60.635s27.209 60.635 60.709 60.635c20.48 0 38.546-10.021 49.518-25.673l202.752 67.365c0 33.573 27.209 60.635 60.709 60.635s60.782-27.063 60.782-60.635c-0.073-33.499-27.209-60.709-60.782-60.709z", + "M1024 360.594l-192.073-99.547-192.146 99.547 192.146 99.621 192.073-99.621zM831.927 299.666l117.321 60.928-117.321 60.928-117.467-60.928 117.467-60.928z", + "M831.927 551.278l-105.253-54.638h-74.679l179.931 93.33 179.931-93.33h-74.679z", + "M831.927 681.106l-105.253-54.784h-74.679l179.931 93.403 179.931-93.403h-74.679z", + "M821.394 822.857c-79.36 79.067-188.782 128-309.394 128-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857c97.792 0 187.904 32.549 260.974 86.894h109.861c-93.33-98.304-224.914-160.037-370.834-160.037-282.331 0-512 229.669-512 512 0 282.258 229.669 512 512 512 165.376 0 312.247-79.141 405.87-201.143h-96.475z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "VNFC" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 317, + "id": 307, + "prevSize": 16, + "code": 59798, + "name": "VNFC" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M992.11 634.734l-49.591-20.773c1.097-10.167 3.072-19.968 3.072-30.354 0-10.459-1.829-20.041-3.072-30.135l49.737-20.919c26.917-11.337 39.058-44.178 27.063-73.509l-14.994-36.571c-11.922-29.403-43.447-43.959-70.363-32.549l-49.591 20.773c-9.582-12.361-20.261-23.845-32.11-34.377l22.894-49.079c12.361-26.697-0.366-59.246-28.745-72.85l-35.401-16.75c-28.16-13.531-61.147-2.926-73.435 23.771l-4.169 8.85h-122.88l-4.169-8.923c-12.434-26.697-45.349-37.303-73.509-23.771l-35.401 16.823c-8.046 3.877-14.409 9.435-19.749 15.799h-69.266l-81.993-85.797h-329.655v141.166l146.578 605.623h394.24c14.043 5.339 28.599 5.12 41.253 0h186.149c14.117 5.705 30.647 6.071 46.007-1.317l35.328-17.115c25.088-11.776 36.864-38.546 30.939-63.049l22.821-23.845-42.423-40.594c9.509-9.070 18.578-18.432 26.77-28.745l49.371 20.919c26.917 11.191 58.514-3.218 70.437-32.622l14.994-36.498c12.142-29.55-0.219-62.098-27.136-73.582zM400.384 563.127c-0.951 6.729-2.048 13.458-2.048 20.48 0 10.459 1.975 20.187 3.072 30.501l-49.664 20.773c-26.917 11.337-39.131 43.886-27.136 73.435l15.141 36.498c11.849 29.403 43.447 43.886 70.29 32.622l49.371-20.626c9.728 12.288 20.48 23.698 32.037 34.231l-22.821 49.079c-2.706 5.778-3.657 11.849-4.096 17.92h-251.611l92.306-294.912h95.159zM841.070 583.753c0 94.574-75.776 171.593-169.033 171.593-93.477 0-169.179-77.019-169.179-171.593 0-7.095 1.243-13.824 2.048-20.699h4.096v-22.674c19.017-73.801 84.48-128.366 163.109-128.366 93.184 0 168.96 76.727 168.96 171.739zM715.118 857.966h-10.094c3.218-0.512 6.583-0.512 9.728-1.024l0.366 1.024zM638.683 857.966h-10.094l0.512-1.024c3.145 0.585 6.437 0.585 9.582 1.024zM69.925 257.536h225.207l81.993 85.797h99.035l15.287 32.914c-11.703 10.533-22.382 22.016-32.11 34.377l-49.445-20.699c-26.843-11.337-58.368 3.145-70.217 32.549l-15.067 36.571c-4.242 10.313-4.535 20.846-3.145 30.939h-69.998l-78.921 252.197-102.619-421.010v-63.634z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "VIM" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 318, + "id": 306, + "prevSize": 16, + "code": 59799, + "name": "VIM" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M153.161 185.125h315.465v73.143h-315.465v-73.143z", + "M153.161 331.41h315.465v73.143h-315.465v-73.143z", + "M360.009 572.562c0 27.146-22.006 49.152-49.152 49.152s-49.152-22.006-49.152-49.152c0-27.146 22.006-49.152 49.152-49.152s49.152 22.006 49.152 49.152z", + "M429.714 779.849h-237.714c-15.799 0-28.599 16.384-28.599 36.571s12.8 36.571 28.599 36.571h237.714c15.799 0 28.599-16.384 28.599-36.571s-12.8-36.571-28.599-36.571z", + "M951.589 841.143h-38.034c-40.009 0-72.411 32.402-72.411 72.485v12.288h-103.424v-377.929h104.96c5.705 34.304 34.158 60.928 70.071 60.928h38.034c40.009 0 72.411-32.402 72.411-72.411v-38.034c0-40.009-32.402-72.485-72.411-72.485h-38.034c-40.009 0-72.411 32.402-72.411 72.485v12.873h-102.546v-386.999h105.179c6.363 33.499 34.45 59.392 69.778 59.392h38.034c40.009 0 72.411-32.402 72.411-72.485v-37.961c0-40.009-32.402-72.485-72.411-72.485h-38.034c-40.009 0-72.411 32.402-72.411 72.485v14.482h-119.369v0.219h-19.822v423.424h-79.433v-406.894c0-57.637-45.568-104.521-101.669-104.521h-418.45c-56.027 0-101.595 46.885-101.595 104.521v815.031c0 57.563 45.568 104.448 101.595 104.448h418.45c56.101 0 101.669-46.885 101.669-104.521v-371.566h79.433v414.354h19.822v0.219h122.368c5.413 34.597 34.085 61.513 70.217 61.513h38.034c40.009 0 72.411-32.402 72.411-72.411v-37.961c0-40.082-32.402-72.485-72.411-72.485zM548.571 919.479c0 17.335-12.8 31.378-28.526 31.378h-418.45c-15.726 0-28.453-14.043-28.453-31.378v-814.958c0-17.335 12.727-31.378 28.453-31.378h418.45c15.726 0 28.526 14.043 28.526 31.378v814.958z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "VDU" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 319, + "id": 305, + "prevSize": 16, + "code": 59800, + "name": "VDU" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M336.238 185.125h315.465v73.143h-315.465v-73.143z", + "M703.122 0h-418.45c-56.027 0-101.595 46.885-101.595 104.521v815.031c0 57.563 45.568 104.448 101.595 104.448h418.523c56.101 0 101.669-46.885 101.669-104.521v-814.958c-0.073-57.637-45.641-104.521-101.742-104.521zM731.648 919.479c0 17.262-12.8 31.378-28.526 31.378h-418.45c-15.653 0-28.453-14.043-28.453-31.378v-814.958c0-17.335 12.727-31.378 28.453-31.378h418.523c15.726 0 28.526 14.043 28.526 31.378v814.958z", + "M336.238 331.41h315.465v73.143h-315.465v-73.143z", + "M543.086 572.562c0 27.146-22.006 49.152-49.152 49.152s-49.152-22.006-49.152-49.152c0-27.146 22.006-49.152 49.152-49.152s49.152 22.006 49.152 49.152z", + "M612.791 779.849h-237.714c-15.799 0-28.599 16.384-28.599 36.571s12.8 36.571 28.599 36.571h237.714c15.799 0 28.599-16.384 28.599-36.571s-12.8-36.571-28.599-36.571z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "host" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 320, + "id": 304, + "prevSize": 16, + "code": 59801, + "name": "host" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M512 0c-282.331 0-512 229.669-512 512 0 239.031 164.864 439.808 386.779 495.835 0.366 0.585 1.097 1.536 1.317 1.755l1.463-1.097c39.278 9.801 80.165 15.506 122.441 15.506 282.258 0 512-229.742 512-512 0-282.331-229.742-512-512-512zM469.358 888.832c-11.995-14.775-29.477-24.869-49.957-24.869-15.799 0-29.769 6.363-41.106 15.726-3.145-6.29-6.363-12.434-9.582-19.237 43.081-19.383 92.891-47.982 145.701-90.478 8.631 4.242 18.066 7.168 28.379 7.168 24.576 0 45.129-14.117 56.247-34.158 135.753-12.507 248.174-65.024 320.366-108.617 4.315 1.17 8.485 2.341 13.093 2.633-5.047 16.969-11.045 33.499-18.066 49.591-56.174 36.279-192.366 123.026-242.249 143.579-53.029 21.87-143.726 44.837-202.825 58.661zM82.798 420.937l4.974 5.705c0.878-0.805 64.219-52.955 183.735-90.77-17.554 46.226-30.574 95.232-35.474 145.92-3.291 34.597-3.584 68.315-1.682 101.083-1.463 0.805-2.779 1.829-4.169 2.779-70.949-47.909-123.904-101.083-152.503-133.047 1.463-10.679 2.926-21.358 5.12-31.671zM512 73.143c77.019 0 149.358 20.041 212.261 55.003-1.536 26.551-4.901 67.218-11.41 115.054-6.29 3.365-12.142 7.314-16.969 12.434-62.757-11.63-133.12-18.871-207.506-16.018-36.059 1.463-69.851 4.681-101.449 9.289-1.243-2.341-2.926-4.389-4.389-6.51 45.787-76.507 97.719-136.777 128-169.179 0.512 0 0.951-0.073 1.463-0.073zM934.107 393.435c10.533 37.303 16.53 76.434 16.677 116.955-4.901-1.17-9.582-2.926-14.775-2.926-35.986 0-65.17 29.111-65.17 65.17 0 7.022 1.902 13.531 4.023 19.822-64.585 37.23-158.427 78.921-268.873 91.355 2.56-2.926 5.193-5.413 7.826-8.338 72.119-80.603 113.737-201.509 137.801-312.174 16.969-2.267 31.525-10.679 41.691-23.406 81.774 24.503 135.241 50.761 140.8 53.541zM292.791 577.682c-1.682-29.403-1.463-59.538 1.463-90.331 4.754-49.591 18.651-97.719 37.157-143.141 24.795-0.512 45.714-14.994 56.247-35.694 32.037-4.974 65.975-8.923 102.985-10.386 67.365-2.56 131.877 4.096 190.098 14.775 2.414 11.703 7.095 22.382 14.921 30.866-22.016 104.96-59.977 219.502-125.44 292.718-4.242 4.681-8.411 8.777-12.654 13.385-4.827-1.243-9.509-2.999-14.702-2.999-25.893 0-47.762 15.36-58.295 37.23-54.857-5.851-106.203-20.992-152.942-41.765 0.146-1.536 0.951-2.926 0.951-4.608-0-26.99-16.384-50.176-39.79-60.050zM457.435 739.767c-40.667 30.208-78.775 51.566-112.128 66.633-13.019-32.841-25.088-69.413-34.523-108.91 45.056 19.602 94.062 34.67 146.651 42.277zM904.119 316.123c-25.893-10.533-59.611-22.747-99.401-34.45-5.12-17.262-16.603-31.305-32.329-39.278 3.803-28.891 6.363-54.93 8.119-76.873 51.712 40.229 94.062 91.648 123.611 150.601zM424.594 81.92c-29.038 34.889-62.683 79.872-93.915 132.389-0.146 0-0.293-0.146-0.439-0.146-34.962 0-62.83 27.575-64.512 62.098-69.632 20.773-122.88 45.861-158.72 66.926 55.369-132.389 173.787-232.082 317.586-261.266zM74.24 534.162c32.475 31.89 75.703 69.339 128.146 104.082 0.219 29.842 20.919 53.906 48.494 61.221 10.386 46.811 24.283 89.893 39.497 128.146-37.595 11.849-61.879 14.263-66.414 14.629-86.967-75.922-143.506-185.417-149.723-308.078zM288.987 889.271c7.68-2.048 15.945-4.535 24.722-7.387 4.608 9.728 9.216 18.944 13.751 27.721-13.239-6.144-26.039-12.873-38.473-20.334zM512 950.857c-10.679 0-21.065-0.878-31.525-1.536 0.366-1.024 0.366-2.048 0.658-3.072 60.709-14.19 155.648-38.107 213.504-62.098 31.086-12.873 89.6-47.177 144.896-81.115-80.384 90.478-197.266 147.822-327.534 147.822z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "NS" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 321, + "id": 303, + "prevSize": 16, + "code": 59802, + "name": "NS" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M86 0c-47.477 0-86 38.076-86 84v514c0 45.924 38.523 82 86 82h234v90h-184v82h280v-172h192v172h280v-82h-184v-90h234c47.477 0 86-36.076 86-82v-514c0-45.924-38.523-84-86-84h-852zM110 108h804v454h-804v-454zM136 946v80h752v-80h-752z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-moc-uca-public" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 322, + "id": 302, + "prevSize": 16, + "code": 59803, + "name": "uep-moc-uca-public" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M2 262v192h96v320c-55.192 13.323-96 62.716-96 122 0 69.49 56.51 126 126 126s126-56.51 126-126c0-57.76-38.954-107.215-92-122v-320h320v320c-54.028 14.132-94 63.542-94 122 0 69.49 56.51 126 126 126s126-56.51 126-126c0-58.458-39.972-107.868-94-122v-320h320v320c-53.356 14.581-94 64.019-94 122 0 69.49 56.51 126 126 126s126-56.51 126-126c0-58.632-39.727-108.036-94-122v-320h96v-192h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-topo-commongroup20x20" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 323, + "id": 301, + "prevSize": 16, + "code": 59804, + "name": "uep-topo-commongroup20x20" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M741.841 94.115c0-39.983-32.256-72.239-72.099-72.239h-375.529c-39.983 0-72.239 32.256-72.239 72.239v58.508h519.82v-58.508z", + "M745.472 980.713v-2.327c0 0.465-0.093 0.884-0.186 1.164 0.093 0.372 0.186 0.745 0.186 1.164z", + "M218.345 980.713c0-0.465 0.14-0.838 0.186-1.164-0.047-0.372-0.186-0.745-0.186-1.164v2.327z", + "M840.285 212.247h-98.351v-49.105h-519.913v128.047h519.866v-29.137h25.553v24.902h10.892c-0.605 26.577-5.353 228.492-7.075 279.459-4.561 138.333-7.121 198.796-21.83 231.098-24.25 53.248-103.098 64.698-119.901 66.607v-195.072h40.169c39.796 0 72.192-32.349 72.192-72.099v-295.331h-519.866v295.284c0 39.75 32.209 72.099 72.239 72.099h40.076v283.276c0 3.724 0.605 7.075 1.583 10.473h-99.514c-9.635 0-17.361 7.354-17.873 16.803 0.512 9.356 8.239 16.803 17.873 16.803h491.055c9.495 0 17.315-7.447 17.92-16.803-0.605-9.449-8.425-16.803-17.92-16.803h-99.421c0.977-3.351 1.396-6.749 1.396-10.38v-49.105c38.121-7.447 118.551-15.453 154.065-92.346 21.225-46.173 22.295-125.719 24.948-241.478 3.072-134.004 5.958-261.911 6.423-282.484h9.495v-24.902h15.919v-49.804h-0zM693.62 320.652c9.914 0 18.060 8.052 18.060 18.060 0 9.914-8.145 18.106-18.060 18.106-10.1 0-18.106-8.192-18.106-18.106 0.047-10.007 8.052-18.060 18.106-18.060zM435.852 642.979l30.906-96.815-45.056-11.729 84.294-145.315-23.366 114.502 45.754 20.48-92.532 118.877z" + ], + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "vapel_chgpile" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 2, + 2, + 2, + 2 + ] + } + }, + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "properties": { + "order": 324, + "id": 300, + "prevSize": 16, + "code": 59805, + "name": "vapel_chgpile" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M792.529 781.359v2.932c-1.955 0.093-28.393 4.887-44.544 8.052-12.241 0-203.124 0.326-333.405 0.326-66.979 0-117.9-0.093-120.413-0.326-7.494-0.559-53.76-9.588-55.715-9.961l0.652-3.305c-15.407 15.22-24.948 32.489-23.924 44.963 1.722 22.714 46.685 44.823 62.883 50.223 0.931 0.419 2.7 0.791 4.841 0.977l-0.233-0.279c2.095-1.35 20.62-12.753 29.091-12.753l418.257 0.372c0.093 0.093 6.33 4.375 14.941 9.961l-1.815 2.746c13.917-1.908 24.948-4.096 31.558-6.377 40.96-14.662 41.565-52.317 41.565-52.689-0.652-9.449-10.845-22.481-23.738-34.863z", + "M749.009 741.19c-16.989-4.887-182.737-21.132-236.544-22.947-1.908-0.093-3.91-0.093-6.097-0.093-59.252 0-219.555 23.505-221.184 23.831-42.449 13.731-78.103 59.159-76.288 85.178 1.769 25.507 47.709 50.129 64.186 56.273 12.567 4.701 136.099 10.38 202.426 13.312 21.69 0.977 38.772 1.722 45.847 2.095 2.7 0.233 6.796 0.326 12.288 0.326 56.273 0 211.27-8.471 245.62-21.969 41.612-16.198 43.241-54.877 43.706-67.444 0.605-13.359-43.892-59.578-73.961-68.561zM775.959 872.262c-36.631 13.172-194.42 20.108-242.362 20.108-5.446 0-9.588-0.093-12.288-0.279-6.842-0.559-23.599-1.21-44.823-2.095-69.911-2.886-186.927-7.633-199.727-12.055-12.567-4.329-63.535-27.089-65.536-53.62-1.955-25.135 33.652-67.119 77.824-80.198 1.862-0.186 159.372-21.364 217.74-21.364 2.141 0 4.189 0.093 6.097 0.093 52.829 1.629 216.111 16.291 232.82 20.666 16.524 4.561 72.937 48.826 74.24 72.332 0.559 8.471-5.585 42.775-43.985 56.413z", + "M747.66 788.527c6.33-1.117 38.028-7.168 44.032-8.052-16.989-16.244-38.167-30.767-46.825-33.187-16.57-4.655-179.293-18.897-232.029-20.527-1.908-0.093-3.863-0.093-6.004-0.093-58.135 0-215.412 20.992-216.948 21.225-7.866 2.374-15.546 5.632-22.714 9.775 11.823 1.117 60.090 6.051 66.56 6.703 7.308 0.559 378.321 0 382.045-0.093 12.381-1.443 45.196-5.12 47.709-5.585l0.698 3.863c-3.025 0.559-46.266 5.353-48.175 5.539-10.193 0-169.658 0.372-279.412 0.372-56.972 0-100.585-0.093-103.145-0.372-7.401-0.652-68.655-6.796-69.26-6.842l0.186-1.815c-9.263 5.492-17.687 12.195-24.902 19.316 3.863 0.745 47.942 9.216 54.97 9.868 7.354 0.512 448.791-0.093 453.213-0.093z", + "M311.761 865.932c-5.073 0-16.477 6.051-23.319 10.1 33.327 3.724 131.863 7.727 188.276 10.054 21.271 0.977 37.981 1.629 44.87 2.001 2.653 0.233 6.703 0.326 12.009 0.326 44.172 0 150.807-4.934 208.617-13.079-6.935-4.468-12.335-8.145-13.871-9.309l-416.582-0.093z", + "M1016.367 742.4c-1.303-12.986-5.26-37.841-5.26-44.265 0-6.47-15.593-79.5-15.593-79.5l-10.426-24.669-28.625-27.415-40.401-26.065-32.489-14.383-14.429-10.426-8.518-14.615c6.749-0.465 58.321-4.329 64.372-8.099 6.423-4.003 10.752-5.772 10.147-7.121-0.745-1.35-4.375-20.34-9.123-24.716-4.794-4.422-38.26-10.799-43.008-10.519-4.841 0.326-8.099 0.326-8.099 0.326s-11.543 17.268-10.193 27.415c1.303 10.193 2.048 12.567 2.048 12.567l-9.402 4.655-1.21-2.001-20.852-29.975-33.792-55.994-27.415-39.052-24.809-18.292-11.683-7.82c0 0-129.117-13.731-221.044-12.288-102.54 1.722-210.851 12.847-210.851 12.847l-8.425 6.051-20.806 19.084-84.759 103.331c-5.399 7.727-10.193 13.731-14.941 19.409l-10.938-4.98c0 0 0.745-2.374 2.001-12.567 1.35-10.147-10.193-27.415-10.193-27.415s-3.351 0-8.099-0.326c-4.748-0.419-38.26 6.051-43.008 10.426-4.748 4.422-8.425 23.412-9.123 24.762s3.724 3.025 10.147 7.121c6.33 4.003 62.883 8.239 64.512 8.332-4.143 4.655-8.332 9.169-12.986 14.289-11.683 13.033-37.841 23.459-46.918 30.022-9.123 6.563-69.027 41.658-69.027 53.434 0 11.683-26.065 98.956-26.065 98.956s0 19.549-1.303 27.322c-1.303 7.866-1.303 43.008-2.56 57.344-1.303 14.476 5.167 118.598 5.167 118.598l4.608 10.985c-0.559 7.494-0.279 22.807 10.333 27.276 1.303 0.465 4.003 1.303 7.82 2.513 1.164 4.329 26.81 33.187 40.076 34.956 13.591 1.955 43.38 3.212 51.153 3.212s18.665-8.657 21.923-9.914c0.047 0 0-0.14 0-0.14 39.657 9.263 74.473 16.756 77.824 15.965 7.773-2.001 12.335-3.91 18.758-3.91 6.516 0 213.085 17.455 231.191 16.756 18.153-0.652 286.255-16.756 296.029-16.756 9.635 0 10.333 0.652 20.015 2.56 4.608 0.977 44.218-6.982 86.807-16.943-0.698 2.095-1.024 5.585 1.862 8.611 4.608 4.608 59.625-1.908 69.958-5.167 10.38-3.212 31.092-30.348 31.092-30.348l-9.216 2.234c7.447-2.42 12.847-4.608 15.034-6.191 15.546-10.985 14.336-23.971 14.336-23.971l-3.351 0.605 6.516-8.378c-0.047-0.047 6.516-144.756 5.213-157.743zM983.599 870.167c-3.91 8.657-33.745 29.929-43.38 33.373-9.681 3.444-112.035 23.040-115.433 22.854-3.584-0.326-12.521-8.099-14.057-14.569-1.583-6.516 25.321-40.96 34.444-47.709 9.123-6.703 94.72-36.538 108.218-41.705 13.545-5.167 40.401-22.854 40.401-22.854s3.537 40.215-10.193 70.609zM781.079 880.361c-37.283 14.615-198.191 22.249-247.063 22.249-5.539 0-9.728-0.093-12.614-0.279-6.982-0.465-24.111-1.164-45.754-2.234-71.215-3.165-190.511-8.751-203.636-13.498-12.753-4.841-64.652-30.208-66.7-59.671-1.955-28.020 34.257-74.705 79.313-89.228 1.908-0.279 162.49-23.971 222.022-23.971 2.188 0 4.282 0.093 6.237 0.186 53.853 1.815 220.3 18.013 237.382 23.087 30.999 9.169 77.545 55.855 76.893 72.425-0.419 13.172-2.141 53.76-46.080 70.935zM841.356 655.779c8.844-5.818 132.841-49.338 132.841-49.338s12.428 32.442 13.452 39.331c0.977 6.842-3.398 33.14-6.516 37.004-3.025 3.724-35.933 26.345-40.215 26.95-4.236 0.838-20.852-8.564-24.017-8.564-2.932 0-55.808 16.896-75.729 19.363-20.015 2.7-57.204-16.57-57.204-16.57s48.593-42.403 57.391-48.175zM288.861 408.343c17.687-11.776 42.915-24.157 60.556-26.298 0 0 56.739-9.961 143.22-12.567l-0.047-0.326c12.055-0.233 23.692-0.326 34.956-0.279 11.264-0.047 22.807 0 34.816 0.279l-0.093 0.326c86.435 2.607 143.081 12.567 143.081 12.567 17.734 2.095 43.008 14.476 60.742 26.298l52.317 59.206c0 10.705-3.677 19.875-14.476 19.875l-281.367-0.652-281.414 0.652c-10.705 0-14.476-9.123-14.476-19.875l62.185-59.206zM45.708 646.237c1.024-6.842 14.895-40.96 14.895-40.96s126.836 45.568 135.68 51.34c8.844 5.818 57.391 48.361 57.391 48.361s-37.143 19.037-57.111 16.57c-19.968-2.56-72.797-19.503-75.823-19.503-2.979 0-19.689 9.263-24.017 8.657-4.282-0.884-41.425-22.249-44.451-26.065-3.025-3.77-7.54-31.651-6.563-38.4zM33.932 801.699c0 0 26.95 17.78 40.401 22.807 13.452 5.12 99.049 34.909 108.218 41.705s36.073 41.239 34.444 47.756c-1.583 6.423-10.519 14.196-14.010 14.476-3.444 0.279-105.798-19.27-115.479-22.761-9.728-3.537-39.471-24.855-43.334-33.466-13.731-30.441-10.24-70.516-10.24-70.516z" + ], + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "car" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 2, + 2, + 2, + 2, + 2 + ] + } + }, + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "properties": { + "order": 325, + "id": 299, + "prevSize": 16, + "code": 59806, + "name": "car" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M286.627 163.421h521.263v128.372h-521.263v-128.372z", + "M807.889 94.208c0-40.029-32.396-72.378-72.378-72.378h-376.553c-39.936 0-72.425 32.303-72.425 72.378v58.647h521.309v-58.647z", + "M811.473 982.202c0 0.372 0.093 0.791 0.093 1.21v-2.607c0 0.605-0.093 0.977-0.093 1.396z", + "M282.996 983.412c0-0.512 0.14-0.977 0.14-1.21 0-0.372-0.14-0.791-0.14-1.35v2.56z", + "M793.46 965.26h-99.84c0.977-3.258 1.536-6.842 1.536-10.473v-284.067h40.355c39.889 0 72.378-32.396 72.378-72.471v-296.029h-521.309v296.029c0 39.983 32.442 72.378 72.425 72.378h40.308v284.16c0 3.491 0.512 7.075 1.536 10.287h-99.747c-9.635 0-17.361 7.447-17.967 16.989 0.652 9.309 8.332 16.803 17.967 16.803h492.358c9.542 0 17.315-7.494 18.013-16.803-0.698-9.449-8.425-16.803-18.013-16.803zM759.529 321.443c9.914 0 18.060 8.099 18.060 18.153 0 9.961-8.145 18.106-18.060 18.106-10.007 0-18.199-8.099-18.199-18.106 0.14-10.054 8.239-18.153 18.199-18.153zM501.062 644.655l31.046-97.094-45.242-11.543 84.48-145.873-23.273 114.828 45.708 20.527-92.719 119.156z" + ], + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "chgpile" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 2, + 2, + 2, + 2, + 2 + ] + } + }, + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "properties": { + "order": 326, + "id": 298, + "prevSize": 16, + "code": 59807, + "name": "chgpile" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M550.959 563.805c-9.635-1.815-28.998-2.746-58.089-2.746h-39.005v113.478h44.172c31.837 0 53.108-2.095 63.86-6.284 10.705-4.189 19.084-10.705 25.181-19.642s9.169-19.27 9.169-31.092c0-14.569-4.329-26.531-12.8-35.98-8.518-9.449-19.363-15.36-32.489-17.734z", + "M977.455 395.636h-930.909c-25.693 0-46.545 20.852-46.545 46.545v488.727c0 25.74 20.852 46.545 46.545 46.545h930.909c25.74 0 46.545-20.806 46.545-46.545v-488.727c0-25.74-20.806-46.545-46.545-46.545zM666.112 678.353c-8.844 16.71-20.294 29.929-33.932 39.471s-27.695 15.825-41.751 18.897c-19.27 3.817-47.244 5.725-83.782 5.725h-52.783v150.807h-80.71v-399.779h129.536c49.152 0 81.129 2.001 96.023 6.004 22.9 6.004 42.077 19.037 57.53 39.145s23.18 45.987 23.18 77.824c0.047 24.529-4.422 45.196-13.312 61.905z" + ], + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "chgposition" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 2, + 2 + ] + } + }, + "attrs": [ + { + "fill": "rgb(124, 133, 150)" + }, + { + "fill": "rgb(124, 133, 150)" + } + ], + "properties": { + "order": 327, + "id": 297, + "prevSize": 16, + "code": 59808, + "name": "chgposition" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M667.741 391.913h-638.697v-138.799l638.697-11.171z", + "M995.002 439.529l-618.17-0.652-347.788-35.468h638.697z", + "M995.002 426.217l-327.261-34.304v-149.969l327.261 53.388z", + "M150.761 412.672h63.86v600.111h-63.86v-600.111z", + "M635.811 412.672h63.814v600.111h-63.814v-600.111z", + "M348.393 417.792h63.86v503.948h-63.86v-503.948z", + "M853.085 434.176h63.86v487.564h-63.86v-487.564z", + "M475.881 760.273h71.075v161.466h-71.075v-161.466z", + "M739.142 760.273h71.075v161.466h-71.075v-161.466z", + "M285.091 776.378l-24.716 23.645v160.954h17.594l26.205-23.18v-161.42z", + "M834.001 815.197l-24.716 23.599v161.001h17.641l26.159-23.18v-161.42z" + ], + "attrs": [ + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "chgstation" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + } + }, + "attrs": [ + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + }, + { + "fill": "rgb(123, 131, 147)" + } + ], + "properties": { + "order": 328, + "id": 296, + "prevSize": 16, + "code": 59809, + "name": "chgstation" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM266.182 72.723h490.182c43.596 0 80 32.73 80 72.736v738.906c0 40-36.404 72.723-80 72.723h-490.182c-43.596 0-78.545-32.723-78.545-72.723v-738.906c0-40.006 34.95-72.736 78.545-72.736zM667.636 189.088c-41.36 0-73.529 12.877-98.909 37.818-25.38 24.947-37.818 59.635-37.818 104.73 0 42.63 12.572 77.242 37.818 101.818 25.246 24.582 56.788 34.912 96 34.912 31.691 0 59.387-5.952 80-20.365 20.613-14.355 34.773-37.338 43.636-66.906l-58.182-14.554c-4.969 19.846-11.859 34.4-23.273 43.642s-26.336 11.635-42.182 11.635c-21.486 0-38.935-5.824-52.364-20.358-13.429-14.547-20.364-38.483-20.364-72.736-0-32.275 6.734-55.398 20.364-69.811 13.63-14.419 31.929-23.277 53.818-23.277 15.846 0 29.648 3.456 40.727 11.635 11.078 8.128 18.326 20.864 21.818 34.912l58.182-14.547c-6.715-21.683-17.117-37.869-30.545-49.453-22.56-19.59-52.605-29.094-88.727-29.094zM242.909 194.912v270.547h113.455c22.023 0 39.203-1.984 52.364-5.824 17.591-5.184 30.387-14.042 40.727-23.277 13.697-12.198 24.614-26.835 32-46.547 6.042-16.141 8.727-35.885 8.727-58.182-0-25.382-2.282-46.688-8.727-64-6.446-17.306-16.737-31.68-29.091-43.635-12.355-11.949-26.314-21.504-43.636-26.182-12.892-3.456-33.608-2.88-58.182-2.88h-107.636zM302.545 238.554h26.182c24.306 0 41.129 1.216 49.455 2.88 11.146 2.24 21.839 8.256 29.091 14.541 7.251 6.272 10.517 14.976 14.545 26.182 4.028 11.213 7.273 25.6 7.273 46.554-0 20.941-3.244 37.318-7.273 49.446-4.029 12.134-8.167 20.89-14.545 26.189-6.379 5.312-15.059 9.414-24.727 11.629-7.386 1.728-19.712 2.88-36.364 2.88h-43.636v-180.365zM272 599.283c-15.139 0-27.636 10.374-27.636 23.264 0 12.902 12.498 23.277 27.636 23.277h485.818c15.139 0 27.636-10.374 27.636-23.277 0-12.89-12.498-23.264-27.636-23.264h-485.818zM272 733.101c-15.139 0-27.636 10.381-27.636 23.27 0 12.896 12.498 23.27 27.636 23.27h485.818c15.139 0 27.636-10.374 27.636-23.27 0-12.89-12.498-23.27-27.636-23.27h-485.818z" + ], + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "common_dc" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 7 + ], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 9 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + } + ], + "properties": { + "order": 329, + "id": 295, + "prevSize": 16, + "code": 59810, + "name": "common_dc" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M152 0c-84.32 0-152 67.68-152 152v720c0 84.32 67.68 152 152 152h720c84.32 0 152-67.68 152-152v-720c0-84.32-67.68-152-152-152zM104 166h98l202 264v-264h94v302c-17.538-5.098-37.024-8-56-8-37.084 0-71.491 11.742-102 30l-144-186v258h-92zM456 551.336c40.013 0 73.010 10.353 98 34 14.874 13.982 26.562 33.824 34 60l-66 16c-3.868-16.956-9.729-30.18-22-40-12.272-9.825-28.448-14-46-14-24.246 0-44.902 8.593-60 26-15.098 17.401-22 45.029-22 84-0 41.357 7.125 72.45 22 90s36.2 24 60 24c17.552 0 31.356-4.844 44-16s20.496-28.050 26-52l64 20c-9.818 35.705-25.168 60.673-48 78s-50.896 28-86 28c-43.434 0-80.036-16.33-108-46-27.965-29.676-42-68.532-42-120-0-54.437 13.887-97.879 42-128s64.186-44 110-44zM646 557.336h122c27.221 0 47.72-0.168 62 4 19.188 5.652 34.315 17.573 48 32s24.86 31.105 32 52c7.14 20.901 10 47.359 10 78-0 26.924-3.307 50.515-10 70-8.181 23.796-20.828 41.27-36 56-11.454 11.156-26.514 19.754-46 26-14.577 4.63-33.606 8-58 8h-124zM712 611.336v216h50c18.445 0 31.819 0.055 40-2 10.71-2.672 18.934-7.606 26-14s13.537-17.345 18-32c4.463-14.65 6-34.714 6-60s-1.538-44.464-6-58c-4.463-13.536-11.968-24.413-20-32-8.033-7.582-17.654-13.317-30-16-9.223-2.341-27.077-2-54-2z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "common_ncd" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 330, + "id": 294, + "prevSize": 16, + "code": 59811, + "name": "common_ncd" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M820 0l-40 4 12 66 40-4-12-66zM678 22c-39.083 0-68 30.966-68 70 0 39.021 28.917 70 68 70 10.831 0 22.823-1.648 32-6l48 46 36-38-48-48c2.62-7.392 4-15.725 4-24 0-39.034-32.916-70-72-70zM948 44l-90 60 30 46 90-62-30-44zM150 98c-84.081 0-150 66.045-150 150v626c0 83.962 65.919 150 150 150h628c84.081 0 150-66.038 150-150v-420c-97.009 35.552-219.538 4.931-304-82-79.068-81.382-102.955-187.984-68-274h-406zM1020 168l-66 12 4 40 66-12-4-40zM662 190l-66 12 4 38 66-10-4-40zM858 218l-38 38 38 36c-2.531 7.27-6 15.866-6 24 0 39.027 30.916 70 70 70s72-30.973 72-70c0-39.027-32.917-72-72-72-10.992 0-20.719 3.507-30 8l-34-34zM732 260l-90 62 28 44 92-58-30-48zM104 288h92l190 232v-232h88v266c-16.509-4.523-34.138-8-52-8-34.907 0-67.282 9.908-96 26l-136-164v228h-86v-348zM826 344l-40 2 10 66 40-4-10-64zM436 598c37.664 0 68.477 9.161 92 30 14.001 12.316 24.999 30.929 32 54l-62 14c-3.641-14.94-10.449-27.349-22-36-11.552-8.66-25.478-12-42-12-22.823 0-41.788 8.66-56 24-14.212 15.33-22 39.655-22 74-0 36.445 7.998 62.541 22 78 14.002 15.463 33.597 22 56 22 16.522 0 28.098-4.188 40-14 11.901-9.831 20.819-24.9 26-46l60 18c-9.241 31.46-24.508 52.727-46 68-21.493 15.263-46.956 24-80 24-40.885 0-75.677-13.848-102-40s-40-60.647-40-106c0-47.971 13.537-85.458 40-112s60.875-40 104-40zM614 604h116c25.623 0 44.558 0.525 58 4 18.062 4.961 31.118 15.279 44 28 12.881 12.707 23.279 27.585 30 46s10 40.996 10 68c-0 23.724-3.7 44.832-10 62-7.701 20.972-19.719 37.012-34 50-10.782 9.827-23.658 16.496-42 22-13.722 4.047-33.037 8-56 8h-116v-288zM676 652v190h48c17.362 0 30.299-0.237 38-2 10.081-2.381 17.349-6.368 24-12 6.651-5.637 11.799-15.088 16-28s6-31.719 6-54c0-22.286-1.8-38.074-6-50-4.201-11.936-10.439-21.316-18-28s-16.379-11.634-28-14c-8.681-2.095-26.657-2-52-2h-28z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "common_ncd_break" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 331, + "id": 293, + "prevSize": 16, + "code": 59812, + "name": "common_ncd_break" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM192 146h628c26.012 0 49.542 11.019 68 26 22.109 17.944 38 42.938 38 72v380c0 53.325-48.83 96-106 96h-252c13.755 26.81 28.292 66.589 12 86-28.199 33.594-107.060 33.030-136 0-16.62-18.976-2.325-59.030 10-86h-262c-57.17 0-104-42.675-104-96v-380c0-29.062 13.891-54.056 36-72 18.458-14.981 41.988-26 68-26zM308 228c-31.688 0-57.594 4.438-80 14s-40.094 23.719-52 42c-11.906 18.282-18 39-18 60-0 32.625 12.687 59.313 38 82 18 16.125 49.375 28.938 94 40 34.687 8.625 58.25 14.625 68 18 14.25 5.063 22.281 11.156 28 18s10 16.25 10 26c-0 15.188-6.407 28.656-20 40s-35.188 16-62 16c-25.313 0-45.094-5.25-60-18s-25.125-32.812-30-60l-80 8c5.437 46.125 22.062 79.906 50 104s67.875 36 120 36c35.812 0 66-3.969 90-14s42.875-25.375 56-46c13.125-20.625 18-42.375 18-66-0-26.062-5.032-48.281-16-66s-26.594-31.781-46-42c-19.407-10.219-49.5-20.437-90-30s-65.5-19.187-76-28c-8.25-6.937-12-14.25-12-24-0-10.687 5.187-19.625 14-26 13.687-9.937 31.812-16 56-16 23.437 0 40.281 4.719 52 14s20.437 24.813 24 46l82-4c-1.313-37.875-13.844-67.312-40-90s-66.25-34-118-34zM728 228c-57.75 0-104.563 18.032-140 56s-54 91.375-54 160c-0 64.875 18.75 116.594 54 154s79.25 56 134 56c44.25 0 81.218-10.156 110-32s49.625-55 62-100l-80-26c-6.938 30.188-20.063 51.938-36 66s-33.875 22-56 22c-30 0-55.25-11.875-74-34s-28-59.875-28-112c-0-49.125 10.969-84.062 30-106s43.437-32 74-32c22.125 0 40.531 5.625 56 18s25.125 28.625 30 50l82-20c-9.375-33-23.25-58.375-42-76-31.5-29.812-71.563-44-122-44zM418 814c1.096 8.128 5.046 14.406 10 20 35.944 40.614 134.977 41.312 170 0 4.685-5.504 7.107-12.186 8-20 62.661 8.262 104 25.222 104 44 0 27.11-88.3 48-198 48s-200-20.89-200-48c0-18.778 43.339-35.738 106-44z" + ], + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "common_sc" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 7 + ], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [ + 9 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + } + ], + "properties": { + "order": 332, + "id": 292, + "prevSize": 16, + "code": 59813, + "name": "common_sc" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M496 0c-88.366 0-160 71.634-160 160 0 24.616 6.069 47.168 16 68-2.717-0.137-5.249 0-8 0-88.366 0-160 71.634-160 160 0 27.456 5.815 53.421 18 76-66.58 19.363-116 79.172-116 152 0 35.129 12.807 67.609 32 94-67.806 18.571-118 80.301-118 154 0 88.366 71.634 160 160 160 46.834 0 88.74-19.93 118-52 29.284 32.474 72.829 52 120 52 45.179 0 84.906-17.887 114-48 29.094 30.113 70.821 48 116 48 47.171 0 88.716-19.526 118-52 29.26 32.070 71.166 52 118 52 88.366 0 160-71.634 160-160 0-75.074-52.257-136.747-122-154 18.745-26.206 30-59.324 30-94 0-80.039-59.259-144.213-136-156 8.096-19.142 12-41.909 12-64 0-88.366-71.634-160-160-160-4.843 0-9.266 1.579-14 2 12.979-23.123 22-49.597 22-78 0-88.366-71.634-160-160-160zM486 320c3.384 0.214 6.562 0 10 0 4.814 0 9.294 0.416 14 0-4.875 8.722-10.808 16.369-14 26-2.494-9.021-6.040-17.694-10-26zM494 438c1.789 6.866 3.354 13.525 6 20-4.77 0.246-9.349 1.346-14 2 3.459-6.858 5.543-14.62 8-22z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "networkTree" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 333, + "id": 291, + "prevSize": 16, + "code": 59814, + "name": "networkTree" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M192 0c-105.522 0-190 84.478-190 190v644c0 105.522 84.478 190 190 190h644c105.522 0 190-84.478 190-190v-644c0-105.522-84.478-190-190-190h-644zM800 96c52.598 0 96 43.403 96 96s-43.402 96-96 96c-52.598 0-94-43.403-94-96s41.402-96 94-96zM156 108h446v176h-446v-176zM804 418c52.598 0 96 43.403 96 96s-43.402 96-96 96c-52.598 0-94-43.403-94-96s41.402-96 94-96zM150 424h444v176h-444v-176zM156 740h446v176h-446v-176zM808 740c52.598 0 94 43.402 94 96s-41.402 96-94 96c-52.598 0-96-43.402-96-96s43.402-96 96-96z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "resourceType" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 334, + "id": 290, + "prevSize": 16, + "code": 59815, + "name": "resourceType" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M384 0h256v256h-56.617v128h312.617v384h128v256h-384v-256h128v-256h-512v256h128v256h-384v-256h128v-384h322.873v-128h-66.873v-256z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "tree-icon" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 335, + "id": 289, + "prevSize": 16, + "code": 59816, + "name": "tree-icon" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M0 256v192h96v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h96v-192z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-topo-group20x20" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 336, + "id": 288, + "prevSize": 16, + "code": 59817, + "name": "uep-topo-group20x20" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M86 0c-47.477 0-86 38.523-86 86v532c0 47.477 38.523 86 86 86h350l-44 172c108.143 38.808 178.516 26.928 240 0l-34-172h340c47.477 0 86-38.523 86-86v-532c0-47.477-38.523-86-86-86h-852zM110 112h804v468h-804v-468z", + "M304 840c-37.227 19.359-60 45.155-60 72 0 62.25 120.094 112 268 112s268-49.75 268-112c0-26.845-22.773-52.641-60-72-22.376 63.518-106.109 112-208 112s-185.624-48.482-208-112z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-topo-root" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 337, + "id": 287, + "prevSize": 16, + "code": 59818, + "name": "uep-topo-root" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M0 515.003h192v508.997h-192v-508.997z", + "M623.819 0v384l136-122v762h128v-746l136 122v-384l-192 172-208-188z", + "M298.857 515.003h192v508.997h-192v-508.997z", + "M597.714 515.003h192v508.997h-192v-508.997z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-topo-virtual20x20" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 338, + "id": 286, + "prevSize": 16, + "code": 59819, + "name": "uep-topo-virtual20x20" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M814-0.002c-115.833 0-208 94.371-208 210 0 115.623 92.167 208 208 208s210-92.377 210-208c0-115.629-94.167-210-210-210zM152 93.998c-84.432 0-152 67.717-152 152v626c0 84.277 67.568 152 152 152h628c84.432 0 150-67.723 150-152v-392c-35.867 16.242-74.050 26-116 26-157.445 0-286-126.827-286-284 0-45.721 10.802-89.719 30-128h-406zM704 105.998h70v206h-70v-206zM856 105.998h70v206h-70v-206zM110 291.998h84l176 228v-228h80v260c-15.173-4.433-31.583-6-48-6-32.083 0-61.605 10.229-88 26l-124-160v222h-80v-342zM414 597.998c34.617 0 62.38 9.577 84 30 12.869 12.071 23.565 27.389 30 50l-56 14c-3.346-14.642-9.383-25.522-20-34-10.617-8.487-24.815-12-40-12-20.976 0-38.938 6.966-52 22-13.062 15.024-18 40.34-18 74-0 35.718 5.131 60.85 18 76 12.869 15.155 31.41 22 52 22 15.185 0 27.061-4.383 38-14 10.938-9.635 17.238-25.321 22-46l56 18c-8.494 30.833-22.246 53.032-42 68-19.754 14.959-43.63 24-74 24-37.577 0-69.807-14.37-94-40s-36-59.552-36-104c0-47.014 11.678-83.987 36-110s56.364-38 96-38zM578 603.998h106c23.55 0 41.646-1.406 54 2 16.601 4.862 30.16 15.533 42 28 11.839 12.453 19.823 25.952 26 44s10 41.535 10 68c-0 23.25-4.21 43.175-10 60-7.078 20.553-16.874 37.271-30 50-9.909 9.631-23.142 16.606-40 22-12.612 3.966-28.895 6-50 6h-108v-280zM636 649.998v186h42c15.957 0 28.922-0.275 36-2 9.265-2.333 15.887-6.48 22-12 6.113-5.524 12.139-15.346 16-28s4-30.163 4-52c0-21.841-0.141-38.312-4-50-3.861-11.698-11.051-19.449-18-26s-15.319-11.681-26-14c-7.979-2.053-22.707-2-46-2h-26z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "common_ncd_stop" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 339, + "id": 285, + "prevSize": 16, + "code": 59820, + "name": "common_ncd_stop" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M120 205.183l-58 124h894l-30-64h-424l-16-60zM0 430l64 594h898l62-594z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-moc-root" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 340, + "id": 284, + "prevSize": 16, + "code": 59821, + "name": "uep-moc-root" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M0 256v192h96v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h96v-192zM64 832h128v128h-128zM448 832h128v128h-128zM832 832h128v128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "uep-topo-undefinedgroup20x20" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [], + "100148206110015523011231311471124133150124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 341, + "id": 283, + "prevSize": 16, + "code": 59822, + "name": "uep-topo-undefinedgroup20x20" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M288.414 402.18c0 0.009 0 0.020 0 0.030 0 79.643-64.564 144.207-144.207 144.207s-144.207-64.564-144.207-144.207c0-0.011 0-0.021 0-0.032-0-0.007-0-0.018-0-0.029 0-79.643 64.564-144.207 144.207-144.207s144.207 64.564 144.207 144.207c0 0.011-0 0.021-0 0.032z", + "M287.26 811.728c0 0.007 0 0.016 0 0.025 0 64.352-52.167 116.519-116.519 116.519s-116.519-52.167-116.519-116.519c0-0.009 0-0.017 0-0.026-0-0.006-0-0.015-0-0.023 0-64.352 52.167-116.519 116.519-116.519s116.519 52.167 116.519 116.519c0 0.009-0 0.017-0 0.026z", + "M716.419 898.252c0 0.008 0 0.017 0 0.026 0 69.449-56.299 125.748-125.748 125.748s-125.748-56.299-125.748-125.748c0-0.009 0-0.019 0-0.028-0-0.006-0-0.016-0-0.025 0-69.449 56.299-125.748 125.748-125.748s125.748 56.299 125.748 125.748c0 0.009-0 0.019-0 0.028z", + "M748.721 227.979c0 0.014 0 0.031 0 0.047 0 124.243-100.719 224.963-224.963 224.963s-224.963-100.719-224.963-224.963c0-0.017 0-0.033 0-0.050-0-0.011-0-0.028-0-0.045 0-124.243 100.719-224.963 224.963-224.963s224.963 100.719 224.963 224.963c0 0.017-0 0.033-0 0.050z", + "M1025.598 541.773c0 0.011 0 0.024 0 0.037 0 97.483-79.026 176.509-176.509 176.509s-176.509-79.026-176.509-176.509c0-0.013 0-0.026 0-0.039-0-0.009-0-0.022-0-0.035 0-97.483 79.026-176.509 176.509-176.509s176.509 79.026 176.509 176.509c0 0.013-0 0.026-0 0.039z", + "M526.066 635.219c0 0.006 0 0.013 0 0.020 0 51.609-41.837 93.446-93.446 93.446s-93.446-41.837-93.446-93.446c0-0.007 0-0.014 0-0.021-0-0.005-0-0.012-0-0.019 0-51.609 41.837-93.446 93.446-93.446s93.446 41.837 93.446 93.446c0 0.007-0 0.014-0 0.021z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "analysis" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 342, + "id": 282, + "prevSize": 16, + "code": 59823, + "name": "analysis" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M316-2c-95.089 0-172 76.911-172 172 0 92.48 72.524 167.929 164 172-90.194 5.431-162 78.44-162 170 0 86.687 64.634 158.002 148 170-84.072 11.37-148 82.811-148 170 0 95.089 76.911 172 172 172s172-76.911 172-172c0-87.422-65.601-158.925-150-170 84.346-11.124 150-82.616 150-170 0-92.33-72.732-167.706-164-172 90.194-5.431 162-78.44 162-170 0-95.089-76.911-172-172-172zM750 206c-95.089 0-172 76.911-172 172s76.911 172 172 172c-94.127 1.118-170 77.608-170 172 0 95.089 76.911 172 172 172s174-76.911 174-172c0-95.089-78.911-172-174-172 94.18-1.057 170-77.569 170-172 0-95.089-76.911-172-172-172z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "bindingRelationship" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 343, + "id": 281, + "prevSize": 16, + "code": 59824, + "name": "bindingRelationship" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M0 0v1024h1024v-1024h-1024zM64 232h896v744h-896v-744zM154 380v64h386v-64h-386zM154 586v64h738v-64h-738zM154 798v64h738v-64h-738z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "browsePolicy" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 344, + "id": 280, + "prevSize": 16, + "code": 59825, + "name": "browsePolicy" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M0 0v1024h1024v-1024h-1024zM122 120h780v584h-198v198h-384v-198h-198v-584zM234 234v64h556v-64h-556zM234 446v64h556v-64h-556z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "businessManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 345, + "id": 279, + "prevSize": 16, + "code": 59826, + "name": "businessManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M0 205.472v818.528h1024v-818.528zM66 269.472h896v108.902h-896zM66 544.378h896v415.622h-896zM726 699.098v192h192v-192zM108 827.098v64h156v-64zM314 827.098v64h64v-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "cardData" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 346, + "id": 278, + "prevSize": 16, + "code": 59827, + "name": "cardData" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M340-4l-34 6-286 48 12 34 22 76h-54v862h1024v-585.229l-295.229-276.771h-262.771l-14-120-64 6 12 114h-46l-10-128zM282 72l8 88h-78l-22-50-44 18 12 32h-34l-20-58zM64 224h118l84 216 10 22 24-4 48-6 30-6-2-30-16-192h368.771v212.771h231.229v521.229h-896zM240 224h56l12 150zM142 578v64h762v-64zM142 764v64h762v-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "dailyManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 347, + "id": 277, + "prevSize": 16, + "code": 59828, + "name": "dailyManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M512 0l-512 322h1024l-512-322zM512 114c26.51 0 48 21.49 48 48s-21.49 48-48 48c-26.51 0-48-21.49-48-48s21.49-48 48-48z", + "M55.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174zM301.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174zM547.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174zM793.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174z", + "M33.331 897.344h957.338l33.331 126.656h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "enterpriseCustomer" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 348, + "id": 276, + "prevSize": 16, + "code": 59829, + "name": "enterpriseCustomer" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M96 0v1024h832v-554c-16.551 23.661-38.104 28.804-64 42v448h-704v-896h422c23.693-31.685 58.349-54.324 98-64h-584zM816 26c-114.539 0-206 93.461-206 208s91.461 208 206 208c114.54 0 208-93.461 208-208s-93.46-208-208-208zM220 120v64h248v-64h-248zM710 196h214v76h-214v-76zM220 222v206h248v-206h-248zM220 464v98h248v-98h-248zM218 646v64h578v-64h-578zM224 798v64h580v-64h-580z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "equipmentBlacklist" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 349, + "id": 275, + "prevSize": 16, + "code": 59830, + "name": "equipmentBlacklist" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M962.030 47.968c-8.838 62.893-26.692 87.763-47.41 100.083-20.708 12.307-50.544 12.506-82.517 12.282-31.978 0-67.463-2.432-98.328 22.835-15.428 12.595-26.625 30.035-29.849 52.672-0.25 1.728 0.198 3.52 0.011 5.248-51.048-20.41-232.3-46.931-275.527-8.051-1.923 1.792-5.16 1.664-7.021 3.52l-421.389 419.59 367.856 367.853 421.389-419.635c1.8-1.792 3.59-3.392 5.265-5.312 47.548-52.435 13.878-252.998-27.359-308.89-2.946-19.462-4.849-36.262-3.511-45.651 1.751-12.32 4.106-15.181 7.021-17.562 5.823-4.736 28.684-7.251 61.453-7.027 32.769 0.006 75.936 1.664 114.126-21.062 38.191-22.714 65.175-68.762 75.499-142.221l-59.699-8.781zM623.738 344.115c31.034 0 56.189 25.158 56.185 56.192 0.001 31.027-25.154 56.179-56.183 56.179s-56.184-25.152-56.185-56.179c-0.001-31.034 25.154-56.192 56.183-56.192z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "equipmentModel" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 350, + "id": 274, + "prevSize": 16, + "code": 59831, + "name": "equipmentModel" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M160 8c-25.903 30.044-41.331 62.192-48 94h-106v924h670c10.497 1.078 21.219 2 32 2 8.767 0 17.417-1.283 26-2h40v-6c140.119-31.085 246-156.583 246-306s-105.881-273.317-246-304v-308h-158c5.279-16.405 16.044-33.491 32-52l-48-42c-25.903 30.044-41.331 62.192-48 94h-80c5.311-16.271 14.187-33.658 30-52l-48-42c-25.903 30.044-41.331 62.192-48 94h-82c5.819-16.405 16.044-33.491 32-52l-50-42c-25.903 30.044-41.331 62.192-48 94h-82c5.279-16.405 16.044-33.491 32-52l-48-42zM86 182h28c8.23 31.167 24.037 60.201 44 88l52-36c-13.274-18.483-23.611-34.856-30-52h82c8.815 31.148 24.048 60.216 44 88l52-36c-13.245-18.443-23.056-34.89-30-52h80c8.23 31.167 24.037 60.201 44 88l52-36c-13.274-18.483-23.611-34.856-30-52h80c8.23 31.167 24.037 60.201 44 88l52-36c-13.274-18.483-23.611-34.856-30-52h76v220c-166.907 6.305-300 143.532-300 312 0 91.892 40.922 174.406 104 232h-414v-764zM888 582l46 44-226 230-28 26-22-30-128-180 52-38 106 150 200-202z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "examine" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 351, + "id": 273, + "prevSize": 16, + "code": 59832, + "name": "examine" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M0 0v1024h818v-106l-64 8v34h-690v-896h690v106l64 8v-178h-818zM730 228c-163.35 0-296 130.65-296 294s132.65 296 296 296c163.35 0 294-132.65 294-296s-130.65-294-294-294zM132 246v64h306v-64h-306zM704 324h48c17.845 0 35.574 14.224 34 32l-18 200c-1.574 17.776-14.155 32-32 32h-10c-17.845 0-30.060-14.261-32-32l-22-200c-1.94-17.739 14.155-32 32-32zM132 434v64h226v-64h-226zM132 622v64h226v-64h-226zM728 624c27.036 0 50 20.964 50 48s-22.964 50-50 50c-27.036 0-48-22.964-48-50s20.964-48 48-48zM132 812v64h354v-64h-354z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "failureList" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 352, + "id": 272, + "prevSize": 16, + "code": 59833, + "name": "failureList" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M448-0.001c-99.149 0-184 84.858-184 184s84.851 178 184 178c99.149 0 174-78.858 174-178s-74.851-184-174-184zM286 373.999c-129.705 57.273-217.877 186.935-226 336l-60 250c284.445-318.778 236-372.086 236 66h276.671v-270.561c3.512-99.722 66.764-160.188 121.919-172.125-17.49-54.214-25.625-122.175 3.41-167.313-5.942-21.014-17.153-35.182-36-42-1.835-1.639-2.149 0-4 0-40.421 38.476-89.792 64-150 64s-117.579-25.524-158-64c-1.347-1.639-2.68 1.639-4 0zM786 397.999c-60.168 0-112 51.224-112 112s51.832 110 112 110c60.168 0 106-49.224 106-110s-45.832-112-106-112zM1014 409.999c-65.69 147.654-105.651 269.621-246 250-36.537 0-71.471-14.414-96-38-0.818-1.005-1.199 1.005-2 0-74.281 35.109-67.145 38.621-110 130l4.464 254 63.536-178h10v192h254v-192h12c97.602-38.567 100.046-313.036 110-418z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "familyCustomer" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 353, + "id": 271, + "prevSize": 16, + "code": 59834, + "name": "familyCustomer" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 39 + }, + { + "icon": { + "paths": [ + "M256 22v150h64v-54h398v54h64v-150h-526zM8 242v294h132v-64h96v64h600v-64h96v64h100v-294h-1024zM0 596v428h1024v-428h-92v64h-96v-64h-600v64h-96v-64h-140zM404 658l224 152-224 152v-304z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "fileTool" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 354, + "id": 270, + "prevSize": 16, + "code": 59835, + "name": "fileTool" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 40 + }, + { + "icon": { + "paths": [ + "M0 0v1024h1024v-1024h-1024zM448 64h128v896h-128v-896zM120 112h208v210h-208v-210zM696 112h208v210h-208v-210zM120 414h208v210h-208v-210zM696 414h208v210h-208v-210zM120 716h208v210h-208v-210zM696 716h208v210h-208v-210z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "groupManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 355, + "id": 269, + "prevSize": 16, + "code": 59836, + "name": "groupManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 41 + }, + { + "icon": { + "paths": [ + "M830 4.002c-3.954 0-6.163 1.654-10 2-21.087 1.899-42.52 9.182-60 20-150.563 49.266-299.814 132.472-452 140v310l470 160c6.045 2.682 13.576 4.251 20 6 2.196 0.595 3.76 1.518 6 2 8.682 1.868 16.664 2 26 2 62.639 0 110.185-44.115 142-102s50-131.924 50-216c0-84.083-18.185-164.115-50-222-31.815-57.892-79.361-102-142-102zM830 64.002c25.474 0 58.072 20.828 84 68 25.928 47.179 42 119.755 42 196 0 76.238-16.072 142.828-42 190-25.928 47.179-58.526 68-84 68s-56.072-20.821-82-68c-25.928-47.172-44-113.762-44-190 0-76.245 18.072-148.821 44-196 25.928-47.172 56.526-68 82-68zM72 166.002c-33.614 0-60 26.386-60 60v190c0 33.614 26.386 60 60 60h172v-310h-172zM830 226.002c-17.38 0-30 49.537-30 110s12.62 108 30 108c17.38 0 32-47.537 32-108s-14.62-110-32-110zM330 570.002c-6.68-0.112-12.981 0.409-20 2-9.358 2.121-19.412 5.042-28 10l-58 34c-34.354 19.839-42.526 54.103-34 84 32.971 115.619 74.038 226.209 176 302 25.476 18.866 55.648 31.828 90 12l56-32c34.353-19.834 64.686-68.57 36-84-110.803-59.587-141.877-183.942-176-304-4.781-16.821-21.959-23.665-42-24z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "notice" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 356, + "id": 268, + "prevSize": 16, + "code": 59837, + "name": "notice" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 42 + }, + { + "icon": { + "paths": [ + "M516 0l-182 362h362l-180-362zM270 490l-104 206h696l-102-206h-490zM100 824l-100 200h1024l-100-200h-824z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "policy" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 357, + "id": 267, + "prevSize": 16, + "code": 59838, + "name": "policy" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 43 + }, + { + "icon": { + "paths": [ + "M0 0v1024h1024v-1024h-1024zM74 74h876v132h-876v-132zM126 104v64h64v-64h-64zM258 104v64h64v-64h-64zM390 104v64h64v-64h-64zM74 270h876v680h-876v-680zM510 326l-284 194h572l-288-194zM272 558v320h478v-320h-478zM448 738h126v138h-126v-138z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "portal" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 358, + "id": 266, + "prevSize": 16, + "code": 59839, + "name": "portal" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 44 + }, + { + "icon": { + "paths": [ + "M0 0v1024h818v-98h-64v34h-690v-896h690v114h64v-178h-818zM572 180c-147.574 0-268 123.722-268 276s120.426 276 268 276c50.852 0 97.535-16.556 138-42 2.376 5.114 5.882 11.751 10 16l188 194c19.466 20.086 50.534 20.086 70 0l24-24c19.466-20.086 19.466-51.914 0-72l-188-196c-4.077-4.207-9.099-7.555-14-10 24.048-41.386 38-90.234 38-142 0-152.278-118.426-276-266-276zM572 254c107.326 0 194 91.253 194 202s-86.674 200-194 200c-107.326 0-196-89.253-196-200s88.674-202 196-202zM134 466v64h82c-5.078-20.817-9.052-41.784-10-64h-72zM138 654v64h204c-24.807-17.419-47.038-40.025-66-64h-138zM138 824v64h452v-64h-452z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "recordQuery" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 359, + "id": 265, + "prevSize": 16, + "code": 59840, + "name": "recordQuery" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 45 + }, + { + "icon": { + "paths": [ + "M116 30l-114 528h-2l2 6-2 6h2l102 454h840l78-454h2l-2-6 2-6h-2l-114-528h-792zM162 84h700l84 398h-868l84-398zM328 140v48h370v-48h-370zM236 250v58h554v-58h-554zM190 362v64h646v-64h-646zM378 750h268v60h-268v-60z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "resourceManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 360, + "id": 264, + "prevSize": 16, + "code": 59841, + "name": "resourceManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 46 + }, + { + "icon": { + "paths": [ + "M0 768h1024v256h-1024v-256z", + "M155.869 132.442h192v535.838h-192v-535.838z", + "M880.115 476.282v192h-427.888v-192h427.888z", + "M871.413 132.442v192h-427.888v-192h427.888z", + "M0 0v1024h1024v-1024h-1024zM60 60h904v901.997h-904v-901.997z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "ruleManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 361, + "id": 263, + "prevSize": 16, + "code": 59842, + "name": "ruleManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 47 + }, + { + "icon": { + "paths": [ + "M908 4l-440 1016h82l438-1016h-80zM586 56c-28.986 0-55.758 11.758-76 32s-34 50.999-34 88c0 37.001 13.758 67.758 34 88s47.014 32 76 32c28.986 0 55.758-11.758 76-32s34-50.999 34-88c0-37.001-13.758-67.758-34-88s-47.014-32-76-32zM586 104c24.033 0 45.497 11.497 60 26s22 29.982 22 46c0 16.018-7.497 33.497-22 48s-35.967 24-60 24c-24.033 0-45.497-9.497-60-24s-22-31.982-22-48c0-16.018 7.497-31.497 22-46s35.967-26 60-26zM462 342l-208 428-124-200-132 84 208 204 22 26 28-22 380-448-174-72zM872 740c-28.986 0-55.758 11.758-76 32s-36 50.999-36 88c0 37.001 15.758 67.758 36 88s47.014 32 76 32c28.986 0 53.758-11.758 74-32s36-50.999 36-88c0-37.001-15.758-67.758-36-88s-45.014-32-74-32zM872 788c24.033 0 45.497 11.497 60 26s20 29.982 20 46c0 16.018-5.497 33.497-20 48s-35.967 24-60 24c-24.033 0-45.497-9.497-60-24s-22-31.982-22-48c0-16.018 7.497-31.497 22-46s35.967-26 60-26z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "sucessRate" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 362, + "id": 262, + "prevSize": 16, + "code": 59843, + "name": "sucessRate" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 48 + }, + { + "icon": { + "paths": [ + "M340 0c-188.394 0-340 151.606-340 340v344c0 188.394 151.606 340 340 340h344c188.394 0 340-151.606 340-340v-344c0-188.394-151.606-340-340-340h-344zM340 60h344c156.193 0 280 123.807 280 280v344c0 156.193-123.807 280-280 280h-344c-156.193 0-280-123.807-280-280v-344c0-156.193 123.807-280 280-280zM294 152l-118 98 140 172-148 204 116 86 224-284-214-276zM526 616v96h96v-96h-96zM758 616v96h96v-96h-96z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "terminalManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 363, + "id": 261, + "prevSize": 16, + "code": 59844, + "name": "terminalManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 49 + }, + { + "icon": { + "paths": [ + "M232 10c-61.702 26.098-104 88.791-104 160 0 63.406 36.891 118.173 88 148v142h-28c-102.784 0-188 79.286-188 174v216c0 94.714 85.216 174 188 174h648c102.784 0 188-79.286 188-174v-216c0-94.714-85.216-174-188-174h-90v-272.744l32.242 10.697h75.758c9.891-1.512 13.281-2.842 20-18 16.523-50.182 124.738-56.639 146-37.954 3.52-58.704-84.581-96.842-148-94-38.653-1.549-114 0-114 0-12.518 0.026-23.19 12.302-28 28h-56v-8c0-29.134-22.866-54-52-54h-20c-29.134 0-54 24.866-54 54v108c0 29.134 24.866 54 54 54h20c10.645 0 19.738-4.604 28-10v240h-270v-138c55.309-28.606 92-85.473 92-152 0-71.885-45.362-134.327-108-160 0.91 2.929 4 6.714 4 10v176c0 15.687-14.009 28-28 28h-80c-13.991 0-28-12.313-28-28v-176c0-3.286 3.090-7.071 4-10-0.589 0.241-3.414-0.248-4 0zM188 560h648c45.538 0 82 32.037 82 74v16h-812v-16c0-41.963 36.462-74 82-74zM106 714h812v136c0 41.963-36.462 76-82 76h-648c-45.538 0-82-34.037-82-76z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "tools" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 364, + "id": 260, + "prevSize": 16, + "code": 59845, + "name": "tools" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 50 + }, + { + "icon": { + "paths": [ + "M386.288 150.611c-64.504 2.92-124.19 43.881-109.558 141.846 15.955 106.825 15.406 172.256 93.327 158.057 87.588-15.961 108.823-82.844 103.471-164.136-5.847-88.81-26.616-138.511-87.24-135.767zM670.326 166.822c-46.129 2.217-72.376 54.29-93.327 119.556-33.015 102.851-30.356 144.937 48.692 149.951 88.855 5.637 118.134-31.147 131.875-111.45 13.208-77.193-5.994-141.384-64.923-156.030-7.366-1.831-15.727-2.343-22.317-2.026zM112.394 359.327c-60.726 0-106.386 63.689-111.586 141.846-7.171 107.77 33.666 156.045 111.586 141.846 87.588-15.961 115.64-60.605 109.558-141.846-5.847-78.094-48.831-141.846-109.558-141.846zM923.931 373.512c-43.702 4.545-86.594 41.033-113.615 93.213-49.679 95.935-32.478 154.168 44.635 172.241 86.68 20.316 129.302-8.204 156.221-85.107 25.876-73.924 13.064-150.038-42.606-174.268-13.918-6.057-30.067-7.594-44.635-6.079zM493.817 497.12c-80.695 0-167.197 57.335-200.855 176.294-89.884 44.495-159.755 129.365-137.961 214.795 35.956 140.948 185.98 135.767 338.817 135.767s326.644 1.514 326.644-143.872c0-145.386-173.807-382.983-326.644-382.983z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "track" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 365, + "id": 259, + "prevSize": 16, + "code": 59846, + "name": "track" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M325.771 135.155c-83.461 0-153.836 70.365-153.836 153.834 0 83.463 70.375 150.816 153.836 150.816s147.803-67.353 147.803-150.816c0-83.469-64.342-153.834-147.803-153.834zM190.033 448.859c-109.183 48.214-183.195 158.051-190.033 283.537h404.954l113.039-250.144c-12.772-8.111-48.521-27.215-62.517-33.393-1.545-1.312-1.458 0-3.017 0l-126.689 189.911-132.721-189.911c-1.134-1.312-1.905 1.312-3.016 0z", + "M703.355 355.176c-83.461 0-153.836 70.365-153.836 153.834 0 83.463 70.375 150.816 153.836 150.816s147.804-67.354 147.804-150.816c0-83.469-64.342-153.834-147.804-153.834zM567.617 668.88c-109.183 48.214-183.195 158.051-190.033 283.537h645.509c-6.838-125.486-80.85-235.323-190.033-283.537-1.546-1.312-1.459 0-3.017 0-71.621 110.94-177.699 111.193-259.41 0-1.134-1.312-1.905 1.312-3.016 0z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "userManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 366, + "id": 258, + "prevSize": 16, + "code": 59847, + "name": "userManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 52 + }, + { + "icon": { + "paths": [ + "M128 0.25v481.997h-128l112 540.806h802l110-540.806h-128v-481.997zM192 64.25h640v417.997h-640zM244 192.25v64h270v-64zM242 322.246v64h520v-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "versionManagment" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 367, + "id": 257, + "prevSize": 16, + "code": 59848, + "name": "versionManagment" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 53 + }, + { + "icon": { + "paths": [ + "M116 0v1024h792v-722h2l-282-300v-2h-512zM176 60h390v302h282v600h-672v-902zM628 96l192 206h-192v-206zM374 98v106h-114v84h114v112l140-154-140-148zM650 452v106h-114v84h114v112l140-154-140-148zM374 616v106h-114v84h114v112l140-154-140-148z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "workOrder" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 368, + "id": 256, + "prevSize": 16, + "code": 59849, + "name": "workOrder" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 54 + }, + { + "icon": { + "paths": [ + "M550.254 155.429h109.714v158.501h-109.714v-158.501z", + "M262.071 597.504h499.785v73.143h-499.785v-73.143z", + "M262.071 786.432h499.785v73.143h-499.785v-73.143z", + "M914.286 0h-804.571c-60.489 0-109.714 49.225-109.714 109.714v804.571c0 60.489 49.225 109.714 109.714 109.714h804.571c60.489 0 109.714-49.225 109.714-109.714v-804.571c0-60.489-49.225-109.714-109.714-109.714zM764.928 82.286v268.142c0 20.187-16.457 36.571-36.571 36.571h-432.786c-20.187 0-36.571-16.384-36.571-36.571v-268.142h505.929zM950.857 914.286c0 20.114-16.457 36.571-36.571 36.571h-804.571c-20.187 0-36.571-16.457-36.571-36.571v-804.571c0-20.187 16.384-36.571 36.571-36.571h76.142v277.285c0 60.489 49.225 109.714 109.714 109.714h432.786c60.489 0 109.714-49.225 109.714-109.714v-277.285h76.215c20.114 0 36.571 16.384 36.571 36.571v804.571z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "save" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 369, + "id": 255, + "prevSize": 16, + "code": 59850, + "name": "save" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 55 + }, + { + "icon": { + "paths": [ + "M214.894 482.304c18.286-163.401 164.571-276.553 291.621-280.137 1.317 0 2.414 0.366 3.657 0.439-184.466-52.882-342.162 94.574-295.278 279.698z", + "M1002.569 871.058l-146.578-120.686c-13.824-13.751-31.744-19.822-49.883-19.822l-41.984-41.984c53.833-70.875 86.309-158.72 86.309-254.318 0-232.302-189.074-421.376-421.449-421.376-232.302 0-421.303 189.001-421.303 421.376 0 232.302 189.001 421.303 421.303 421.303 98.231 0 188.489-34.011 260.169-90.551l41.253 41.253c0.146 17.993 5.998 35.84 19.822 49.81l120.686 146.578c28.599 28.672 74.825 28.672 103.424 0v-0.073l28.087-28.014c28.745-28.526 28.745-74.898 0.146-103.497zM428.983 782.263c-192 0-348.16-156.16-348.16-348.087 0-192 156.16-348.233 348.16-348.233 192.073 0 348.306 156.233 348.306 348.233s-156.233 348.087-348.306 348.087z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Magnifier" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 370, + "id": 254, + "prevSize": 16, + "code": 59851, + "name": "Magnifier" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 56 + }, + { + "icon": { + "paths": [ + "M1002.569 871.058l-146.578-120.686c-13.824-13.824-31.744-19.822-49.81-19.822l-41.984-41.984c53.833-70.802 86.235-158.72 86.235-254.318 0-232.302-189.074-421.376-421.449-421.376-232.302 0-421.303 189.001-421.303 421.376 0 232.302 189.001 421.303 421.303 421.303 98.231 0 188.416-34.011 260.169-90.551l41.326 41.326c0.073 17.993 5.998 35.84 19.822 49.737l120.686 146.578c28.599 28.599 74.825 28.599 103.424 0l28.087-28.087c28.672-28.599 28.672-74.898 0.073-103.497zM428.983 782.336c-192 0-348.16-156.16-348.16-348.16s156.16-348.233 348.16-348.233c192.073 0 348.306 156.233 348.306 348.233s-156.233 348.16-348.306 348.16z", + "M593.847 374.272h-109.714v-109.714c0-30.281-24.576-54.857-54.857-54.857s-54.857 24.576-54.857 54.857v109.714h-109.714c-30.281 0-54.857 24.576-54.857 54.857s24.576 54.857 54.857 54.857h109.714v109.714c0 30.427 24.576 54.857 54.857 54.857s54.857-24.43 54.857-54.857v-109.714h109.714c30.427 0 54.857-24.576 54.857-54.857s-24.43-54.857-54.857-54.857z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "zoomIn" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 371, + "id": 253, + "prevSize": 16, + "code": 59852, + "name": "zoomIn" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 57 + }, + { + "icon": { + "paths": [ + "M1002.569 871.058l-146.578-120.686c-13.824-13.824-31.744-19.822-49.81-19.822l-41.984-41.984c53.833-70.802 86.235-158.72 86.235-254.318 0-232.302-189.074-421.376-421.449-421.376-232.302 0-421.303 189.001-421.303 421.376 0 232.302 189.001 421.303 421.303 421.303 98.231 0 188.416-34.011 260.169-90.551l41.326 41.326c0.073 17.993 5.998 35.84 19.822 49.737l120.686 146.578c28.599 28.599 74.825 28.599 103.424 0l28.087-28.087c28.672-28.599 28.672-74.898 0.073-103.497zM428.983 782.336c-192 0-348.16-156.16-348.16-348.16s156.16-348.233 348.16-348.233c192.073 0 348.306 156.233 348.306 348.233s-156.233 348.16-348.306 348.16z", + "M592.603 376.905h-329.143c-30.281 0-54.857 24.576-54.857 54.857s24.576 54.857 54.857 54.857h329.143c30.427 0 54.857-24.576 54.857-54.857s-24.43-54.857-54.857-54.857z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "zoomOut" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 372, + "id": 252, + "prevSize": 16, + "code": 59853, + "name": "zoomOut" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 58 + }, + { + "icon": { + "paths": [ + "M947.566 198.071h-206.482c0-0.585 0.366-1.024 0.366-1.536l-36.571-86.894c-17.115-38.839-39.57-73.143-76.288-73.143h-233.179c-36.791 0-59.246 34.231-76.361 73.143l-36.571 86.894c0 0.585 0.366 1.024 0.366 1.536h-206.409c-22.016 0-39.863 16.384-39.863 36.571s17.847 36.571 39.863 36.571h69.851v606.501c0 80.75 65.317 146.286 145.847 146.286h439.662c80.603 0 145.847-65.536 145.847-146.286v-606.501h69.925c22.016 0 39.863-16.384 39.863-36.571s-17.847-36.571-39.863-36.571zM364.763 197.632l35.401-75.41h223.525l35.401 75.41-53.467 0.439h-187.319l-53.541-0.439zM804.498 875.447c0 40.448-32.549 73.143-72.85 73.143h-439.442c-40.229 0-72.704-32.695-72.704-73.143v-604.233h584.997v604.233z", + "M348.965 810.715c20.187 0 36.571-16.457 36.571-36.571v-344.43c0-20.261-16.384-36.571-36.571-36.571s-36.571 16.311-36.571 36.571v344.43c0 20.114 16.311 36.571 36.571 36.571z", + "M512 810.715c20.114 0 36.571-16.457 36.571-36.571v-344.43c0-20.261-16.457-36.571-36.571-36.571-20.187 0-36.571 16.311-36.571 36.571v344.43c0 20.114 16.384 36.571 36.571 36.571z", + "M675.035 810.715c20.261 0 36.571-16.457 36.571-36.571v-344.43c0-20.261-16.311-36.571-36.571-36.571-20.114 0-36.571 16.311-36.571 36.571v344.43c0 20.114 16.384 36.571 36.571 36.571z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "delete" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 373, + "id": 251, + "prevSize": 16, + "code": 59854, + "name": "delete" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 59 + }, + { + "icon": { + "paths": [ + "M805.157 910.043c121.271-91.429 200.85-235.593 200.85-399.067 0-263.899-204.727-480.402-463.506-500.224v77.239c216.283 19.602 386.414 201.728 386.414 422.985 0 151.186-80.75 282.624-200.119 357.961l48.128-260.827-75.995-13.897-72.85 393.362h394.313v-77.458h-217.234z", + "M79.067 510.976c0-170.569 101.595-316.416 247.003-383.561l-50.103 270.336 75.995 14.043 72.777-393.289h-394.021v77.239h196.315c-135.168 89.381-225.28 241.152-225.28 415.232 0 276.919 225.28 502.199 502.126 502.199 2.341 0 4.462-0.293 6.729-0.293v-77.385c-2.267 0-4.389 0.293-6.729 0.293-234.277 0-424.814-190.464-424.814-424.814z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "refresh" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 374, + "id": 250, + "prevSize": 16, + "code": 59855, + "name": "refresh" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 60 + }, + { + "icon": { + "paths": [ + "M32.549 774.875l-29.477 245.687 256.951-18.432 628.297-627.858-227.401-227.255-628.37 627.858zM250.807 847.433l-68.681-68.681 457.655-457.655 68.608 68.608-457.582 457.728z", + "M986.77 69.778l-32.914-32.841c-53.76-53.76-141.019-53.76-194.706 0l-41.765 41.691 228.279 226.816 41.179-41.106c53.687-53.76 53.687-140.873-0.073-194.56z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "modify" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 375, + "id": 249, + "prevSize": 16, + "code": 59856, + "name": "modify" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 61 + }, + { + "icon": { + "paths": [ + "M512 0c-282.331 0-512 229.669-512 512 0 282.258 229.742 512 512 512s512-229.742 512-512c0-282.331-229.669-512-512-512zM512 950.857c-242.030 0-438.857-196.827-438.857-438.857s196.901-438.857 438.857-438.857c241.957 0 438.857 196.827 438.857 438.857s-196.827 438.857-438.857 438.857z", + "M548.571 219.429h-73.143v256h-256v73.143h256v256h73.143v-256h256v-73.143h-256z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "new" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 376, + "id": 248, + "prevSize": 16, + "code": 59857, + "name": "new" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 62 + }, + { + "icon": { + "paths": [ + "M888.686 0h-753.371c-74.606 0-135.314 62.171-135.314 138.606v746.862c0 76.361 60.709 138.533 135.314 138.533h753.371c74.606 0 135.314-62.171 135.314-138.606v-746.789c0-76.434-60.709-138.606-135.314-138.606zM888.686 950.857h-49.445v-59.831c0-77.531-64-140.581-142.702-140.581h-15.287c-13.239-22.601-37.010-38.473-65.463-38.473-42.35 0-76.8 33.646-76.8 75.118 0 41.399 34.45 75.191 76.8 75.191 28.526 0 52.517-16.091 65.609-38.766h15.141c38.327 0 69.559 30.208 69.559 67.438v59.904h-571.611v-59.831c0-37.23 31.232-67.438 69.559-67.438h51.785c13.239 22.747 37.157 38.766 65.682 38.766 42.35 0 76.727-33.792 76.727-75.191 0-41.472-34.377-75.118-76.727-75.118-28.453 0-52.297 15.872-65.536 38.4h-51.931c-78.702 0-142.702 63.049-142.702 140.581v56.832c-27.355-6.802-48.201-31.598-48.201-62.464v-263.68h109.568c10.679 13.605 26.697 22.894 45.568 22.894 32.329 0 58.441-25.6 58.441-57.198 0-31.671-26.039-57.344-58.441-57.344-21.65 0-39.863 12.069-49.957 29.33h-105.179v-91.429h111.835c10.752 11.776 25.893 19.602 43.301 19.602 32.329 0 58.441-25.673 58.441-57.271 0-31.671-26.039-57.344-58.441-57.344-23.186 0-42.789 13.531-52.224 32.695h-102.912v-267.045c0-36.133 27.867-65.463 62.171-65.463h266.459v108.032c-19.602 9.216-33.353 28.526-33.353 51.2 0 31.744 26.185 57.344 58.587 57.344 32.183 0 58.441-25.6 58.441-57.344 0-17.042-7.973-31.89-19.968-42.423v-116.809h93.33v110.226c-17.774 9.947-30.062 27.721-30.062 49.006 0 31.744 26.185 57.344 58.514 57.344 32.183 0 58.441-25.6 58.441-57.344 0-18.505-9.509-34.231-23.406-44.617v-114.615h266.459c34.231 0 62.098 29.33 62.098 65.463v267.045h-102.546c-9.435-19.163-28.965-32.695-52.224-32.695-32.329 0-58.441 25.673-58.441 57.344 0 31.598 26.039 57.271 58.441 57.271 17.408 0 32.475-7.826 43.301-19.602h111.47v91.429h-104.887c-10.094-17.262-28.306-29.33-49.957-29.33-32.329 0-58.441 25.673-58.441 57.344s26.039 57.198 58.441 57.198c18.871 0 34.962-9.362 45.568-22.894h109.275v263.68c0 36.133-27.867 65.463-62.171 65.463z", + "M356.206 377.637h294.985v275.529h-294.985v-275.529z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "cpu" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 377, + "id": 247, + "prevSize": 16, + "code": 59858, + "name": "cpu" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 63 + }, + { + "icon": { + "paths": [ + "M1023.854 653.751l-97.938-566.491h-794.99l-130.706 566.491h-0.219v284.306h1024v-284.306h-0.146zM183.296 160.402h686.885l72.923 421.010h-856.942l97.134-421.010zM955.685 864.841h-887.369v-137.947h887.442v137.947z", + "M131.95 750.738h73.143v99.109h-73.143v-99.109z", + "M247.003 750.738h73.143v99.109h-73.143v-99.109z", + "M890.368 802.231c0 17.693-14.343 32.037-32.037 32.037s-32.037-14.343-32.037-32.037c0-17.693 14.343-32.037 32.037-32.037s32.037 14.343 32.037 32.037z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "memory" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 378, + "id": 246, + "prevSize": 16, + "code": 59859, + "name": "memory" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 64 + }, + { + "icon": { + "paths": [ + "M512 0c-282.331 0-512 229.742-512 512s229.669 512 512 512c282.258 0 512-229.742 512-512s-229.742-512-512-512zM512 950.857c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857 438.857 196.827 438.857 438.857-196.827 438.857-438.857 438.857z", + "M757.906 631.296c-56.174-56.174-80.018-165.961-77.605-227.474 2.853-61.44-14.409-118.638-58.661-152.357-39.79-30.208-80.53-24.064-80.53-24.064l-2.414-21.431c0 0-8.923-6.949-26.77-6.949-16.823 0-26.697 6.949-26.697 6.949l-2.706 21.431c0 0-40.667-6.071-80.165 24.064-44.471 33.719-61.586 90.99-58.88 152.357 2.706 61.513-21.358 171.301-77.605 227.401-56.101 56.174-64.073 58.953-61.44 88.283 2.779 29.33 26.917 43.813 26.917 43.813h196.462c0 34.158 37.742 61.733 84.187 61.733 46.592 0 84.187-27.575 84.187-61.733h196.535c0 0 24.21-14.409 26.843-43.813s-5.266-32.11-61.659-88.21z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "currentAlarm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 379, + "id": 245, + "prevSize": 16, + "code": 59860, + "name": "currentAlarm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 65 + }, + { + "icon": { + "paths": [ + "M518.656 2.341c-282.331 0-512 229.669-512 512 0 282.258 229.669 512 512 512s512.073-229.742 512.073-512c0-282.331-229.742-512-512.073-512zM518.656 953.125c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857c242.103 0 438.93 196.827 438.93 438.857s-196.901 438.857-438.93 438.857z", + "M818.907 432.494c-1.755 0-3.365 1.243-5.339 1.463v-192.951c0 0-27.209-12.142-51.273 0-50.834 25.307-118.711 109.495-190.245 123.173-71.314 13.531-264.265-0.512-350.939 7.607-23.918 2.121-63.927 15.067-67.511 67.584-3.877 52.443 0 107.154 0 107.154s19.602 45.202 45.056 45.202c25.381 0 81.627 0 81.627 0s-2.121 107.447 0 143.287c3.145 50.176 18.871 62.318 38.107 88.137 11.045 15.141 73.655 49.737 112.347 25.966 21.504-13.385 39.643-36.425 31.89-65.536-9.509-35.182-44.105-1.39-54.711-44.105-10.679-42.496-7.607-127.561-7.607-127.561s18.286-25.893 42.642-31.963c5.413-1.463 74.459 4.608 74.459 4.608s190.464 66.779 235.52 129.097c31.963 44.032 60.635 13.531 60.635 13.531v-190.61c1.902 0.219 3.584 1.463 5.266 1.463 20.626 0 37.376-23.479 37.376-52.809 0.073-29.111-16.603-52.736-37.303-52.736zM781.824 668.087h-13.824c0 0 0 0-39.424-35.035-39.424-34.889-127.122-69.925-180.809-86.674-15.433-4.754-65.024-8.338-65.024-8.338v-112.347c6.437-0.146 17.262-4.389 37.815-3.73 107.886 2.999 249.198-129.243 249.198-129.243h12.142v375.369z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "noticeAlarm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 380, + "id": 244, + "prevSize": 16, + "code": 59861, + "name": "noticeAlarm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 66 + }, + { + "icon": { + "paths": [ + "M672.329 351.305l-117.906 100.571c-10.679-6.217-22.528-10.679-35.767-10.679-8.997 0-17.335 2.121-25.234 5.12l-182.491-182.491c-13.458-13.458-35.84-12.727-50.103 1.609-14.263 14.263-14.994 36.645-1.609 50.103l188.416 188.416c-0.512 3.511-2.121 6.656-2.121 10.386 0 40.375 32.768 73.143 73.143 73.143 39.643 0 71.534-31.671 72.704-71.022l128.439-109.568c15.36-13.093 17.189-36.133 4.169-51.493-13.166-15.433-36.279-17.262-51.639-4.096z", + "M518.656 206.848c20.187 0 36.571-16.384 36.571-36.571v-51.2c0-20.187-16.384-36.571-36.571-36.571s-36.571 16.384-36.571 36.571v51.2c0 20.187 16.311 36.571 36.571 36.571z", + "M518.656 820.736c-20.187 0-36.571 16.457-36.571 36.571v51.273c0 20.114 16.384 36.571 36.571 36.571s36.571-16.457 36.571-36.571v-51.273c0-20.187-16.384-36.571-36.571-36.571z", + "M910.336 477.769h-51.127c-20.187 0-36.571 16.384-36.571 36.571s16.384 36.571 36.571 36.571h51.127c20.261 0 36.571-16.384 36.571-36.571s-16.238-36.571-36.571-36.571z", + "M172.105 477.769h-51.2c-20.114 0-36.571 16.384-36.571 36.571s16.457 36.571 36.571 36.571h51.2c20.187 0 36.571-16.384 36.571-36.571s-16.384-36.571-36.571-36.571z", + "M518.656 2.341c-282.331 0-512 229.669-512 512 0 282.258 229.669 512 512 512s512.073-229.742 512.073-512c0-282.331-229.742-512-512.073-512zM518.656 953.125c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857c242.103 0 438.93 196.827 438.93 438.857s-196.901 438.857-438.93 438.857z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "historyAlarm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 381, + "id": 243, + "prevSize": 16, + "code": 59862, + "name": "historyAlarm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 67 + }, + { + "icon": { + "paths": [ + "M868.791 755.785l-251.026-245.102 245.175-250.88-107.154-104.521-245.029 250.88-251.026-245.029-104.521 107.008 251.026 245.102-245.175 251.026 107.081 104.448 245.102-250.953 251.026 245.175z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "close" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 382, + "id": 242, + "prevSize": 16, + "code": 59863, + "name": "close" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 68 + }, + { + "icon": { + "paths": [ + "M36.571 73.143v950.857h950.857v-950.857h-950.857zM919.113 146.286v113.225h-814.226v-113.225h814.226zM688.567 332.654v165.23h-136.338v-165.23h136.338zM479.086 497.957h-144.018v-165.303h144.018v165.303zM261.925 497.957h-157.038v-165.303h157.038v165.303zM261.925 571.099v142.482h-157.038v-142.482h157.038zM335.067 571.099h144.018v142.482h-144.018v-142.482zM552.229 571.099h136.338v142.482h-136.338v-142.482zM761.71 571.099h157.403v142.482h-157.403v-142.482zM761.71 497.957v-165.303h157.403v165.23h-157.403zM104.887 950.93v-164.206h157.038v164.206h-157.038zM335.067 950.93v-164.206h144.018v164.206h-144.018zM552.229 950.93v-164.206h136.338v164.206h-136.338zM761.71 950.93v-164.206h157.403v164.206h-157.403z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "table" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 383, + "id": 241, + "prevSize": 16, + "code": 59864, + "name": "table" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 69 + }, + { + "icon": { + "paths": [ + "M215.040 36.571l501.102 481.646v-481.573h146.286v950.784h-146.286v-463.506l-501.102 463.506z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "next" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 384, + "id": 240, + "prevSize": 16, + "code": 59865, + "name": "next" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 70 + }, + { + "icon": { + "paths": [ + "M862.427 36.571l-501.102 481.646v-481.573h-146.286v950.784h146.286v-463.506l501.102 463.506z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "pre" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 385, + "id": 239, + "prevSize": 16, + "code": 59866, + "name": "pre" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 71 + }, + { + "icon": { + "paths": [ + "M942.528 574.848c0 0-39.872-43.904-77.632-68.096-37.888-24.32-102.656-36.992-102.656-36.992l-3.392-31.104 6.848-4.608c0 0 27.776-56.64 32.384-69.312 4.544-12.736 12.8-12.736 18.56-19.648s12.032-51.84 8.128-58.88c-2.88-5.184-9.344-7.040-9.344-7.040l1.28-9.152c0 0 10.368-57.728 6.848-75.072s-11.648-45.12-21.888-58.88c-10.496-13.888-27.648-20.8-41.6-18.56-13.888 2.368-20.864-6.912-20.864-6.912s-26.368-23.104-51.84-24.256-98.304 17.344-113.28 85.504c-14.976 68.16 0 110.848 0 110.848l-6.976 2.304c0 0-3.456 28.864 3.52 49.664 6.848 20.736 24.256 33.408 24.256 33.408l3.456 6.976c0 0 4.032 9.344 9.28 20.672 53.44 35.776 90.176 104.704 90.176 184.96 0 46.080-12.224 88.384-32.576 123.072 11.2 0.704 22.464 1.344 33.6 1.088 134.208-3.648 236.672-42.24 243.712-61.888 6.848-19.52 0-68.096 0-68.096z", + "M355.136 580.736c0-78.912 35.52-146.88 87.552-183.168 6.528-13.76 12.864-27.456 14.848-32.896 4.48-12.672 12.736-12.672 18.496-19.584s12.032-51.84 8.128-58.88c-2.88-5.184-9.344-7.040-9.344-7.040l1.28-9.152c0 0 10.368-57.728 6.848-75.072s-11.648-45.12-21.888-58.88c-10.56-13.888-27.712-20.864-41.664-18.56-13.888 2.368-20.864-6.912-20.864-6.912s-26.368-23.104-51.84-24.256c-25.472-1.152-98.304 17.344-113.28 85.504s0 110.848 0 110.848l-6.912 2.304c0 0-3.456 28.864 3.456 49.664 6.912 20.736 24.256 33.408 24.256 33.408l3.456 6.976c0 0 22.016 51.968 31.168 60.032 9.28 8.128 2.304 28.928 2.304 28.928l-12.672 9.216c0 0-161.664 50.88-166.336 97.088s-6.464 55.808-3.264 69.888c2.176 9.344 129.664 68.096 249.28 64.768 10.048-0.256 19.392-1.152 29.056-1.728-20.032-34.688-32.064-76.736-32.064-122.496z", + "M568.832 429.504c0 0-26.368-23.104-51.84-24.256s-98.304 17.344-113.28 85.504c-14.976 68.16 0 110.848 0 110.848l-6.912 2.368c0 0-3.456 28.864 3.456 49.664 6.912 20.736 24.256 33.408 24.256 33.408l3.456 6.976c0 0 22.016 51.968 31.168 60.032 9.28 8.064 2.304 28.864 2.304 28.864l-12.672 9.216c0 0-161.664 50.88-166.336 97.088s-6.464 55.808-3.264 69.888c2.176 9.408 129.664 68.16 249.28 64.832 134.208-3.712 236.736-42.304 243.712-61.888 6.848-19.648 0-68.16 0-68.16s-39.872-43.904-77.632-68.096c-37.888-24.32-102.656-36.992-102.656-36.992l-3.392-31.104 6.848-4.608c0 0 27.776-56.64 32.384-69.312 4.48-12.672 12.736-12.672 18.496-19.648s12.032-51.84 8.128-58.88c-2.88-5.184-9.344-7.040-9.344-7.040l1.28-9.152c0 0 10.368-57.728 6.848-75.072s-11.648-45.12-21.888-58.88c-10.432-14.016-27.52-20.928-41.536-18.688-13.888 2.368-20.864-6.912-20.864-6.912z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "roleset" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 386, + "id": 238, + "prevSize": 16, + "code": 59867, + "name": "roleset" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 72 + }, + { + "icon": { + "paths": [ + "M509.504 670.656c0 0 9.344-27.904-3.072-38.656-12.288-10.816-41.792-80.448-41.792-80.448l-4.608-9.344c0 0-23.232-16.96-32.512-44.864-0.64-1.856-0.768-3.968-1.28-5.888-17.152-4.544-28.928-6.848-28.928-6.848l-4.352-39.36 8.64-5.888c0 0 12.16-24.832 23.424-48.512-2.88-25.856-3.456-64 7.104-111.68 6.208-28.096 20.096-49.344 36.864-65.984 3.584-23.104 8.576-61.056 5.504-75.904-4.16-21.888-14.528-56.96-27.712-74.432-13.12-17.536-34.944-26.304-52.48-23.36s-26.24-8.768-26.24-8.768-33.472-29.248-65.6-30.656c-32.128-1.472-124.16 21.888-143.168 107.968-18.944 86.080 0 140.032 0 140.032l-8.64 3.008c0 0-4.416 36.544 4.288 62.72 8.768 26.304 30.656 42.368 30.656 42.368l4.352 8.768c0 0 27.84 65.664 39.424 75.904 11.648 10.112 2.88 36.48 2.88 36.48l-15.936 11.584c0 0-204.288 64.192-210.176 122.688-5.824 58.304-8.192 70.528-4.096 88.256 2.624 11.072 144.704 77.184 287.104 81.728 54.144-51.456 203.456-98.496 203.456-98.496l16.896-12.416z", + "M1019.84 849.536c0 0-53.376-58.816-104-91.328-50.752-32.576-137.344-49.472-137.344-49.472l-4.608-41.728 9.28-6.272c0 0 37.12-75.84 43.392-92.864 6.144-17.024 17.024-17.024 24.768-26.304s16-69.376 10.752-78.976c-3.776-6.912-12.224-9.344-12.224-9.344l1.344-12.224c0 0 13.888-77.376 9.28-100.608s-15.488-60.352-29.376-78.912c-14.016-18.624-37.12-27.904-55.744-24.832-18.624 3.136-27.904-9.28-27.904-9.28s-35.52-30.912-69.504-32.448c-34.112-1.536-131.648 23.168-151.744 114.56-20.096 91.264 0 148.48 0 148.48l-9.28 3.136c0 0-4.672 38.72 4.608 66.56 9.28 27.904 32.512 44.928 32.512 44.928l4.608 9.344c0 0 29.504 69.632 41.728 80.448 12.352 10.752 3.136 38.656 3.136 38.656l-17.024 12.288c0 0-216.64 68.096-222.848 130.048s-8.704 74.752-4.352 93.632c2.88 12.544 173.76 91.264 334.016 86.784 179.904-4.928 317.248-56.704 326.528-82.944 9.344-26.304 0-91.328 0-91.328z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "role" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 387, + "id": 237, + "prevSize": 16, + "code": 59868, + "name": "role" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 73 + }, + { + "icon": { + "paths": [ + "M593.664 100.928c0 0-41.216-35.84-80.64-37.632-39.488-1.792-152.512 26.88-175.808 132.736-23.296 105.792 0 172.096 0 172.096l-10.688 3.648c0 0-5.376 44.864 5.312 77.184 10.752 32.256 37.696 51.968 37.696 51.968l5.376 10.816c0 0 34.112 80.704 48.384 93.184 14.4 12.48 3.584 44.8 3.584 44.8l-19.712 14.336c0 0-251.072 78.912-258.24 150.656s-10.048 86.656-5.056 108.48c3.328 14.592 201.344 105.728 386.944 100.608 208.512-5.76 367.68-65.664 378.432-96.128 10.752-30.528 0-105.792 0-105.792s-61.952-68.16-120.64-105.792c-58.752-37.76-159.104-57.344-159.104-57.344l-5.248-48.448 10.624-7.232c0 0 43.136-87.872 50.304-107.584 7.104-19.712 19.712-19.712 28.672-30.464s18.56-80.384 12.48-91.52c-4.352-8-14.336-10.88-14.336-10.88l1.792-14.208c0 0 16.064-89.664 10.688-116.544-5.312-26.88-17.92-69.952-34.048-91.456s-42.944-32.256-64.512-28.736c-21.568 3.648-32.256-10.752-32.256-10.752z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "user" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 388, + "id": 236, + "prevSize": 16, + "code": 59869, + "name": "user" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 74 + }, + { + "icon": { + "paths": [ + "M490.639 255.969l-457.452 128.548 31.401 141.455-2.253-0.481v3.779l-45.338 141.681 402.376 96.333 77.45-145.454 1.884-3.779-411.1-87.199 434.191-129.428z", + "M62.336 701.619v205.455l436.372 115.231v-359.347l-66.514 126.766z", + "M531.937 619.74l1.889 3.779 77.445 145.459 402.381-96.338-45.348-141.681v-3.779l-1.367 0.287 33.623-151.404-447.601-120.095-31.16 145.454 442.87 126.525z", + "M531.937 664.648v359.352l436.367-115.236v-205.455l-369.848 88.1z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "empty" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 389, + "id": 235, + "prevSize": 16, + "code": 59870, + "name": "empty" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 75 + }, + { + "icon": { + "paths": [ + "M544.427 403.183l179.849 222.788v295.424l119.74 102.605v-397.414l179.985-223.403h-479.573zM809.882 614.946v333.346l-51.473-39.458v-295.492l-138.923-176.503h333.858l-143.462 178.108z", + "M393.865 425.472c-35.601 8.499-61.269 42.598-62.362 44.032l-3.14 4.267-0.205 5.291c-0.137 4.164-3.686 103.185 9.899 155.136 9.83 37.717 35.635 40.482 51.029 42.052 12.834 1.399 14.336 1.843 16.691 10.138 8.431 30.071-19.422 50.381-31.676 57.617-37.717 21.914-106.701-12.937-116.873-26.317-3.618-4.676-7.134-8.943-10.513-13.073-18.091-21.982-30.071-36.42-32.939-81.203-2.628-40.994 0-165.751 0.034-167.049l0.375-17.442h-118.374c-13.141 0-30.413-23.279-39.014-40.585-0.853-13.483-3.823-68.164 0.205-120.286 3.789-50.62 44.237-61.679 68.028-63.795 47.002-4.198 98.202-3.243 147.763-2.321 63.556 1.126 123.563 2.287 174.046-6.861 59.187-10.786 114.449-54.511 163.226-93.082 27.785-21.948 54.033-42.735 76.015-53.146 13.756-6.554 29.286-4.949 39.287-2.765v234.598l19.831-3.277 3.721-1.502c15.735 0 29.047 20.651 29.047 45.056 0 7.817-1.468 15.462-4.403 22.767l31.744 12.629c4.506-11.366 6.793-23.279 6.793-35.43 0-39.868-22.357-72.021-52.599-78.131v-220.604l-10.513-4.403c-1.604-0.717-41.267-16.964-77.551 0.307-25.463 12.083-53.248 33.997-82.534 57.207-45.67 36.079-97.382 77.005-148.173 86.255-47.138 8.499-105.54 7.441-167.322 6.315-50.449-0.956-102.571-1.877-151.415 2.458-57.89 5.12-94.925 40.721-99.021 95.198-4.813 62.259-0.205 125.952 0 128.649l1.502 5.837c2.97 6.451 30.174 63.181 71.339 63.181h83.524c-0.614 36.352-1.775 119.159 0.375 152.508 3.618 55.774 20.753 76.595 40.653 100.727 3.209 3.891 6.519 7.885 9.83 12.151 13.107 17.135 65.092 46.558 114.142 46.558 16.555 0 32.802-3.379 47.070-11.708 39.834-23.586 57.481-59.597 47.206-96.324-8.738-30.857-32.017-33.348-45.943-34.816-13.585-1.399-17.681-1.809-21.572-16.759-10.581-40.516-9.489-118.101-8.977-139.605 7.543-8.67 22.938-23.313 38.059-26.999 6.588-0.478 50.039 2.458 86.699 5.564l8.533-33.143-4.198-0.887c-87.996-7.134-94.481-5.666-97.348-4.983z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "noticeFilter" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 390, + "id": 234, + "prevSize": 16, + "code": 59871, + "name": "noticeFilter" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 76 + }, + { + "icon": { + "paths": [ + "M260.949 393.216c14.711-9.284 56.491-30.891 129.877-33.485 93.15-3.174 275.9 29.491 277.675 29.798l52.156 9.353-36.864-38.059c-5.905-6.076-145.681-148.651-287.369-158.618-68.574-4.881-119.159 4.233-146.33 11.196l-5.803-149.094-233.745 271.189 250.402 235.042v-177.323zM226.816 376.491v115.2l-169.097-158.72 155.819-180.736 4.267 108.51 22.323-8.704c0.512-0.171 58.914-22.391 153.873-15.77 85.026 6.007 172.954 68.301 223.198 110.217-63.181-9.694-164.215-22.972-227.601-20.855-106.325 3.755-154.795 44.032-156.809 45.739l-5.973 5.12z", + "M936.073 719.838l-27.477-27.136c-72.841-72.738-102.332-217.771-99.396-292.796 4.471-95.881-25.907-173.705-85.538-219.17-40.073-30.447-80.828-36.079-103.356-36.489l-2.253-20.105-5.7-4.437c-1.707-1.331-17.476-12.971-46.49-12.971-27.238 0-43.895 11.23-45.705 12.493l-6.144 4.335-2.628 20.719c-14.131 0.273-35.567 2.594-59.358 11.878l12.356 31.812c32.529-12.629 59.255-9.148 59.46-9.114l17.237 2.56 4.71-37.069c9.148-3.413 31.846-3.243 40.141-0.239l4.301 37.239 17.374-2.458c1.98-0.205 48.777-6.383 95.403 29.047 50.415 38.434 76.049 106.086 72.090 190.566-3.311 83.558 28.467 237.568 109.397 318.43l27.648 27.307c51.132 50.21 52.531 52.395 50.278 77.653-2.15 23.484-17.51 37.888-24.474 43.315h-275.831v17.067c0 36.318-43.145 65.911-96.119 65.911s-96.085-29.559-96.085-65.911v-17.067h-275.763c-6.929-5.461-22.391-20.070-24.576-43.315-2.253-25.259-0.853-27.443 49.971-77.517l27.75-27.511c68.13-68.062 100.489-187.631 107.52-269.346l-33.997-2.935c-6.519 75.981-36.045 186.539-97.655 248.149l-27.58 27.307c-51.541 50.756-63.795 62.839-60.006 104.96 4.471 47.514 42.769 70.895 44.407 71.851l4.028 2.423h253.645c10.581 47.070 64.102 82.978 128.341 82.978 64.273 0 117.794-35.908 128.375-82.978h253.679l4.028-2.389c1.638-0.956 40.073-24.405 44.373-71.953 3.721-42.121-8.602-54.238-60.382-105.097z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "alarmTurn" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 391, + "id": 233, + "prevSize": 16, + "code": 59872, + "name": "alarmTurn" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 77 + }, + { + "icon": { + "paths": [ + "M846.814 118.818c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-56.661c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-56.661c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-114.005v705.434h927.778v-705.434h-138.172zM950.852 790.118h-859.511v-637.167h78.302c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.799-1.707-8.738-13.073-10.615-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.799-1.707-8.772-13.073-10.615-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.806-13.039-10.684-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.806-13.039-10.684-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h106.052v637.030z", + "M197.086 333.79h176.469v34.133h-176.469v-34.133z", + "M195.584 454.929h684.919v34.133h-684.919v-34.133z", + "M195.584 596.992h684.919v34.133h-684.919v-34.133z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "advice" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 392, + "id": 232, + "prevSize": 16, + "code": 59873, + "name": "advice" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 78 + }, + { + "icon": { + "paths": [ + "M857.463 514.287c0-28.228-22.46-51.2-50.074-51.2h-224.939v-379.529c0-36.284-30.481-65.775-67.891-65.775-37.478 0-67.925 29.491-67.925 65.775v379.529h-222.72c-27.648 0-50.108 22.972-50.108 51.2v87.825l2.492 12.015 0.853 5.393 4.028 17.545c4.608 48.23 6.793 213.299-31.232 292.25l-4.096 9.045 5.052 7.987c6.076 9.523 17.033 10.001 35.874 10.001 114.483 0 632.866-48.435 654.848-50.483l15.565-1.468v-276.378h0.239v-113.732zM480.768 83.558c0-17.442 15.155-31.642 33.792-31.642s33.758 14.199 33.758 31.642v379.529h-67.55v-379.529zM207.94 514.287c0-9.421 7.168-17.067 15.974-17.067h583.475c8.806 0 15.94 7.646 15.94 17.067v79.565h-615.39v-79.565zM822.886 873.301c-88.337 8.158-525.21 48.094-632.9 48.913 31.437-87.927 30.071-228.727 25.19-285.15h607.71v236.237z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "clearAlarm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 393, + "id": 231, + "prevSize": 16, + "code": 59874, + "name": "clearAlarm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 79 + }, + { + "icon": { + "paths": [ + "M914.193 536.303h-814.182c-33.826 0-61.338-27.511-61.338-61.338v-186.948c0-33.826 27.511-61.338 61.338-61.338h814.182c33.826 0 61.338 27.511 61.338 61.338v186.948c-0 33.826-27.511 61.338-61.338 61.338zM100.011 260.813c-14.985 0-27.204 12.22-27.204 27.204v186.948c0 14.985 12.186 27.204 27.204 27.204h814.182c14.985 0 27.204-12.22 27.204-27.204v-186.948c0-14.985-12.186-27.204-27.204-27.204h-814.182z", + "M914.193 903.817h-814.182c-33.826 0-61.338-27.511-61.338-61.338v-186.948c0-33.826 27.511-61.338 61.338-61.338h814.182c33.826 0 61.338 27.511 61.338 61.338v186.948c-0 33.86-27.511 61.338-61.338 61.338zM100.011 628.361c-14.985 0-27.204 12.186-27.204 27.204v186.948c0 14.985 12.186 27.204 27.204 27.204h814.182c14.985 0 27.204-12.186 27.204-27.204v-186.948c0-14.985-12.186-27.204-27.204-27.204h-814.182z", + "M668.433 371.644c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z", + "M848.282 371.644c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z", + "M247.569 756.258c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z", + "M452.369 756.258c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z", + "M670.003 756.258c0 25.996-21.074 47.070-47.070 47.070s-47.070-21.074-47.070-47.070c0-25.996 21.074-47.070 47.070-47.070s47.070 21.074 47.070 47.070z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "alarmBox" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 394, + "id": 230, + "prevSize": 16, + "code": 59875, + "name": "alarmBox" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 80 + }, + { + "icon": { + "paths": [ + "M487.083 899.618l-26.658-308.838 307.507 177.527-280.849 131.311zM500.053 653.073l16.828 194.97 177.254-82.91-194.082-112.060zM770.15 733.013l-280.337-161.792 260.233-450.697c21.163-36.693 69.666-49.835 106.496-28.57l145.306 83.9c37.786 21.845 50.347 68.608 28.57 106.462l-15.394 26.522 0.034 0.034-244.907 424.141zM536.474 558.729l221.218 127.659 210.773-365.056-221.218-127.727-210.773 365.124zM780.834 135.578l221.116 127.693c10.923-21.163 3.823-45.739-17.135-57.856l-145.306-83.9c-20.173-11.708-46.251-5.257-58.675 14.063z", + "M0 363.383h331.332v34.133h-331.332v-34.133z", + "M0 540.672h331.332v34.133h-331.332v-34.133z", + "M0 717.961h331.332v34.133h-331.332v-34.133z", + "M0 895.249h720.657v34.133h-720.657v-34.133z", + "M777.683 266.068l29.282 17.61-172.845 287.404-29.282-17.61 172.845-287.404z", + "M865.434 323.273l29.282 17.61-172.845 287.404-29.282-17.61 172.845-287.404z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "afreshDef" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 395, + "id": 229, + "prevSize": 16, + "code": 59876, + "name": "afreshDef" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 81 + }, + { + "icon": { + "paths": [ + "M843.981 1024l-119.706-102.605v-295.424l-179.849-222.788h479.573l-180.019 223.437v397.38zM758.409 908.8l51.439 39.458v-333.346l143.497-178.108h-333.892l138.957 176.503v295.492z", + "M493.261 697.105c0 32.631-39.014 59.153-86.972 59.153-47.104 0-86.938-27.102-86.938-59.153v-17.067h-254.396c-6.417-5.086-19.729-17.954-21.641-38.571-2.048-22.562-0.751-24.542 45.466-70.076l25.6-25.327c75.127-75.059 104.175-216.951 100.796-293.751-3.413-77.278 20.002-139.059 66.014-173.943 40.516-30.891 84.48-26.658 86.255-26.419l17.271 2.56 4.369-34.679c8.090-2.901 26.931-2.731 34.304-0.239l4.062 34.782 17.34-2.423c2.15-0.307 45.807-4.608 86.665 26.419 45.978 35.089 69.359 96.836 65.741 174.012-0.717 17.203-1.809 28.262-0.683 43.418h34.406c-1.297-14.848-0.273-25.6 0.375-41.95 4.13-88.576-23.962-160.563-79.155-202.65-36.454-27.716-73.591-33.246-94.583-33.792l-2.048-17.886-5.666-4.403c-1.673-1.229-16.521-12.186-43.657-12.186-25.429 0-41.062 10.513-42.769 11.708l-6.144 4.335-2.321 18.466c-21.026 0.546-58.163 6.076-94.481 33.758-55.125 41.847-83.354 113.801-79.428 202.615 3.004 68.506-23.757 201.114-90.829 268.117l-25.395 25.156c-47.718 46.967-59.051 58.129-55.501 97.485 4.164 44.373 39.936 66.219 41.472 67.14l4.028 2.423h232.414c10.445 43.349 59.836 76.22 119.023 76.22 59.221 0 108.646-32.905 119.091-76.22h107.554v-34.133h-139.639v17.101z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "alarmFilter" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 396, + "id": 228, + "prevSize": 16, + "code": 59877, + "name": "alarmFilter" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 82 + }, + { + "icon": { + "paths": [ + "M608.037 386.853c7.314 9.143 15.141 17.627 23.698 25.381l-16.823 35.986c-9.216 19.602 0.293 43.739 21.065 53.614l25.966 12.507c20.846 10.021 45.202 2.048 54.272-17.554l16.75-35.986c10.386 1.609 20.699 3.145 31.598 3.145 10.679 0 21.211-1.536 31.598-3.145l16.75 35.986c9.143 19.675 33.426 27.575 54.272 17.627l25.893-12.507c20.919-9.874 30.354-34.011 21.211-53.614l-16.75-36.133c8.558-7.68 16.457-16.238 23.698-25.381l36.279 15.287c19.822 8.411 43.154-2.414 51.858-23.991l10.971-26.917c8.997-21.65 0-45.861-19.822-54.199l-36.571-15.287c0.878-7.387 2.194-14.629 2.194-22.309 0-7.607-1.39-14.775-2.194-22.162l36.718-15.36c19.822-8.411 28.818-32.622 19.822-54.199l-10.898-26.99c-8.704-21.577-32.11-32.329-51.858-23.991l-36.425 15.287c-7.241-9.143-14.994-17.627-23.698-25.307l16.75-36.279c9.143-19.602-0.293-43.666-21.138-53.614l-26.039-12.434c-20.699-9.947-44.983-2.048-54.126 17.554l-16.75 36.059c-10.386-1.682-20.699-3.218-31.598-3.218s-21.211 1.536-31.598 3.218l-16.75-36.059c-9.143-19.602-33.499-27.502-54.199-17.554l-25.966 12.434c-20.919 10.021-30.427 34.011-21.211 53.614l16.75 36.206c-8.558 7.753-16.53 16.165-23.698 25.381l-36.425-15.36c-19.822-8.411-43.081 2.341-51.858 23.991l-11.045 26.99c-8.777 21.577 0.146 45.861 19.968 54.199l36.571 15.287c-0.878 7.461-2.267 14.629-2.267 22.235 0 7.68 1.536 14.921 2.267 22.382l-36.571 15.287c-19.749 8.411-28.745 32.549-19.968 54.199l11.045 26.917c8.777 21.504 32.037 32.329 51.785 23.991l36.498-15.214zM764.635 132.827c68.608 0 124.489 56.613 124.489 126.537 0 69.778-55.735 126.464-124.489 126.464s-124.562-56.686-124.562-126.464c0-69.925 55.808-126.537 124.562-126.537z", + "M2.926 1034.021h463.141v-386.56h-463.141v386.56zM392.923 960.878h-121.856v-240.274h121.856v240.274zM76.069 720.603h121.856v240.274h-121.856v-240.274z", + "M317.147 364.544l-133.559 8.119c14.19-31.378 35.84-58.953 65.463-79.872 106.13-74.679 191.269-42.789 191.269-42.789-76.946-54.491-160.11-59.099-227.182-12.507-49.957 34.523-86.235 81.774-102.839 136.997l-110.299 4.389 160.11 149.358 157.038-163.694z", + "M915.822 624.786l-198.729 109.275 129.755 32.183c-22.894 25.673-51.858 45.422-86.382 56.466-123.611 39.57-195.291-16.53-195.291-16.53 57.125 75.045 135.168 104.375 213.138 80.018 58.002-17.92 106.715-52.297 139.045-99.913l106.642 28.965-108.178-190.464z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "manAnalysis" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 397, + "id": 227, + "prevSize": 16, + "code": 59878, + "name": "manAnalysis" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 83 + }, + { + "icon": { + "paths": [ + "M296.96 296.887c0 82.003-66.477 148.48-148.48 148.48s-148.48-66.477-148.48-148.48c0-82.003 66.477-148.48 148.48-148.48s148.48 66.477 148.48 148.48z", + "M551.936 807.79c0 82.003-66.477 148.48-148.48 148.48s-148.48-66.477-148.48-148.48c0-82.003 66.477-148.48 148.48-148.48s148.48 66.477 148.48 148.48z", + "M930.158 311.808c0 91.496-74.172 165.669-165.669 165.669s-165.669-74.172-165.669-165.669c0-91.496 74.172-165.669 165.669-165.669s165.669 74.172 165.669 165.669z", + "M1024 784.018c0 73.803-59.829 133.632-133.632 133.632s-133.632-59.829-133.632-133.632c0-73.803 59.829-133.632 133.632-133.632s133.632 59.829 133.632 133.632z", + "M732.286 362.027l55.324-19.275 166.956 479.199-55.324 19.275-166.956-479.199z", + "M812.421 225.214l46.39 35.785-460.695 597.214-46.39-35.785 460.695-597.214z", + "M112.914 300.476l52.061-26.868 293.504 568.704-52.061 26.868-293.504-568.704z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "drill" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 398, + "id": 226, + "prevSize": 16, + "code": 59879, + "name": "drill" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 84 + }, + { + "icon": { + "paths": [ + "M977.774 586.313l-72.192-30.281c1.609-14.629 4.462-28.965 4.462-44.032s-2.779-29.257-4.462-43.886l72.338-30.427c39.058-16.457 56.759-64.293 39.278-106.862l-21.723-53.248c-17.335-42.715-63.195-63.854-102.254-47.397l-72.046 30.354c-14.263-18.066-29.696-34.743-46.738-50.030l33.134-71.534c17.993-38.766-0.658-86.235-41.765-105.911l-51.419-24.503c-41.106-19.675-89.015-4.096-107.081 34.67l-33.061 71.168c-20.407-3.291-40.96-6.363-62.318-6.363-21.285 0-41.838 3.072-62.245 6.363l-33.061-71.168c-18.066-38.766-66.048-54.345-107.081-34.67l-51.419 24.576c-41.106 19.675-59.831 67.145-41.765 105.838l33.134 71.461c-17.042 15.287-32.475 31.963-46.738 50.030l-71.973-30.281c-39.058-16.457-84.919 4.681-102.254 47.397l-21.797 53.248c-17.408 42.569 0.219 90.478 39.351 106.862l72.192 30.354c-1.536 14.702-4.315 28.891-4.315 43.959 0 15.141 2.779 29.403 4.389 44.105l-72.192 30.281c-39.131 16.603-56.832 64.219-39.497 106.935l21.87 53.175c17.335 42.569 63.269 63.781 102.327 47.397l71.899-30.208c14.263 17.993 29.696 34.743 46.665 50.030l-33.134 71.314c-18.066 38.693 0.658 86.309 41.765 105.838l51.419 24.722c41.106 19.675 89.088 4.023 107.081-34.816l32.987-71.095c20.407 3.291 40.96 6.363 62.245 6.363 21.358 0 41.911-3.072 62.391-6.363l32.987 71.095c17.993 38.766 65.975 54.418 107.081 34.816l51.419-24.722c41.179-19.602 59.758-67.145 41.765-105.838l-33.134-71.461c16.969-15.287 32.402-31.963 46.738-49.957l71.899 30.281c39.058 16.384 84.992-4.827 102.327-47.47l21.797-53.175c17.627-42.715-0.219-90.405-39.278-106.935zM512 761.71c-135.899 0-246.053-111.909-246.053-249.637 0-138.094 110.153-249.71 246.053-249.71 135.753 0 245.906 111.616 245.906 249.71 0 137.728-110.153 249.637-245.906 249.637z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "gear" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 399, + "id": 225, + "prevSize": 16, + "code": 59880, + "name": "gear" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 85 + }, + { + "icon": { + "paths": [ + "M512 0c-282.317 0-512 229.683-512 512 0 282.33 229.683 512 512 512 282.33 0 512-229.67 512-512 0-282.317-229.67-512-512-512zM512 1011.379c-275.341 0-499.354-224.026-499.354-499.379 0-275.341 224.013-499.354 499.354-499.354 275.354 0 499.379 224.013 499.379 499.354-0 275.354-224.026 499.379-499.379 499.379z", + "M873.011 546.624c-15.206 0-29.312 4.71-40.973 12.723l-144.064-175.002c10.803-12.659 17.344-29.043 17.344-46.976 0-40-32.422-72.435-72.422-72.435s-72.448 32.435-72.448 72.435c0 22.144 9.971 41.946 25.638 55.219l-147.52 214.63c-12.48-10.202-28.416-16.32-45.786-16.32-19.917 0-37.952 8.051-51.059 21.069l-126.118-104.038c6.003-10.56 9.485-22.733 9.485-35.75 0-40-32.435-72.435-72.435-72.435s-72.435 32.435-72.435 72.435c0 40.013 32.435 72.435 72.435 72.435 22.374 0 42.368-10.15 55.654-26.099l125.184 103.27c-8.269 11.763-13.158 26.074-13.158 41.549 0 40.013 32.435 72.435 72.435 72.435s72.435-32.422 72.435-72.435c0-17.933-6.566-34.342-17.37-46.989l148.723-216.384c10.688 6.221 23.078 9.843 36.339 9.843 17.421 0 33.421-6.157 45.914-16.422l143.347 174.131c-13.312 13.133-21.594 31.373-21.594 51.558 0 40.013 32.435 72.435 72.435 72.435s72.422-32.422 72.422-72.435c0.013-40.013-32.41-72.448-72.41-72.448z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "process" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 400, + "id": 224, + "prevSize": 16, + "code": 59881, + "name": "process" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 86 + }, + { + "icon": { + "paths": [ + "M950.857 950.857h-877.714v-877.714h482.011v-73.143h-555.154v1024h1024v-458.679h-73.143z", + "M526.19 277.285c-98.231 91.721-224.475 317.001-224.475 317.001s193.17-118.272 280.576-162.816c77.824-39.643 192.658-28.818 218.478-26.697l-0.658 184.466 223.89-308.297-224.402-280.942 0.585 183.077c-30.647 1.902-187.831 13.897-273.993 94.208z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "unacknownledge" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 401, + "id": 223, + "prevSize": 16, + "code": 59882, + "name": "unacknownledge" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 87 + }, + { + "icon": { + "paths": [ + "M950.857 950.857h-877.714v-877.714h482.011v-73.143h-555.154v1024h1024v-458.679h-73.143z", + "M240.933 482.889l335.433 327.826 447.634-640-119.881-83.822-348.818 498.688-212.187-207.36z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "acknownledge" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 402, + "id": 222, + "prevSize": 16, + "code": 59883, + "name": "acknownledge" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 88 + }, + { + "icon": { + "paths": [ + "M512.064 0c-282.304 0-512.064 229.696-512.064 512 0 282.368 229.76 512 512.064 512s511.936-229.632 511.936-512-229.632-512-511.936-512zM512.064 960c-246.976 0-448.064-201.024-448.064-448 0-247.040 201.088-448 448.064-448 247.040 0 447.936 201.024 447.936 448 0 246.912-200.896 448-447.936 448z", + "M615.872 427.072l-73.408-41.792 80.64-142.016c-72.576-19.648-152.192 10.624-191.168 79.232-36.224 63.744-26.048 140.608 18.944 193.28l-141.632 249.216c-15.616 27.52-6.016 62.528 21.504 78.144s62.528 6.016 78.144-21.504l141.568-249.28c68.352 11.776 139.712-18.88 175.872-82.56 38.976-68.544 24.384-152.384-29.76-204.864l-80.704 142.144z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Operation" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 403, + "id": 221, + "prevSize": 16, + "code": 59884, + "name": "Operation" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 89 + }, + { + "icon": { + "paths": [ + "M512 0c-282.317 0-512 229.683-512 512 0 282.33 229.683 512 512 512 282.33 0 512-229.67 512-512 0-282.317-229.67-512-512-512zM512 1011.366c-275.341 0-499.354-224.026-499.354-499.366s224.013-499.354 499.354-499.354 499.366 224.013 499.366 499.354-224.026 499.366-499.366 499.366z", + "M910.118 562.355c0-77.478-60.083-140.314-134.208-140.314-4.851 0-9.626 0.307-14.349 0.819-18.867-28.506-47.552-49.28-80.96-57.101-31.194-75.405-102.912-128.205-186.496-128.205-85.978 0-159.334 55.923-188.992 134.81-8.32-1.357-16.794-2.291-25.485-2.291-89.907 0-162.79 76.211-162.79 170.163 0 38.464 12.339 73.805 32.909 102.298-5.99 9.050-9.523 19.878-9.523 31.526 0 31.578 25.587 57.165 57.165 57.165h631.386c31.59 0 57.165-25.587 57.165-57.165 0-8.576-2.022-16.614-5.414-23.923 18.458-24.038 29.594-54.541 29.594-87.782z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "cloud" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 404, + "id": 220, + "prevSize": 16, + "code": 59885, + "name": "cloud" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 90 + }, + { + "icon": { + "paths": [ + "M512 0c-282.317 0-512 229.683-512 512 0 282.33 229.683 512 512 512 282.33 0 512-229.67 512-512 0-282.317-229.67-512-512-512zM512 1011.366c-275.341 0-499.354-224.013-499.354-499.366 0-275.341 224.013-499.354 499.354-499.354 275.354 0 499.366 224.013 499.366 499.354 0 275.354-224.013 499.366-499.366 499.366z", + "M559.629 403.942h-364.096c-12.57 0-22.758 9.37-22.758 20.928v219.827c0 11.546 10.189 20.928 22.758 20.928h364.096c12.57 0 22.746-9.37 22.746-20.928v-219.827c0-11.558-10.176-20.928-22.746-20.928zM552.32 621.043c0 9.062-8.704 16.41-19.405 16.41h-310.682c-10.714 0-19.418-7.347-19.418-16.41v-172.506c0-9.062 8.704-16.422 19.418-16.422h310.682c10.701 0 19.405 7.36 19.405 16.422v172.506z", + "M377.587 675.584c-35.341 0-64 28.646-64 64h128c0-35.341-28.659-64-64-64z", + "M831.603 288h-182.4c-7.078 0-12.8 5.734-12.8 12.8v80h208v-80c0-7.066-5.734-12.8-12.8-12.8z", + "M636.403 393.6h208v67.2h-208v-67.2z", + "M636.403 726.4c0 7.078 5.722 12.8 12.8 12.8h182.4c7.078 0 12.8-5.722 12.8-12.8v-252.8h-208v252.8zM740.403 630.4c10.598 0 19.2 8.602 19.2 19.2s-8.602 19.2-19.2 19.2-19.2-8.602-19.2-19.2 8.602-19.2 19.2-19.2z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "computer" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 405, + "id": 219, + "prevSize": 16, + "code": 59886, + "name": "computer" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 91 + }, + { + "icon": { + "paths": [ + "M512 64c-247.424 0-448 200.576-448 448 0 247.36 200.576 448 448 448 247.488 0 448-200.64 448-448 0-247.424-200.512-448-448-448zM444.032 908.032l41.6-365.696-253.632-6.336 300.032-432-33.344 321.472 222.4 20.864-277.056 461.696z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "alarm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 406, + "id": 218, + "prevSize": 16, + "code": 59887, + "name": "alarm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 92 + }, + { + "icon": { + "paths": [ + "M225.984 578.688l290.688 293.312 297.344-293.312-188.992-0.064c-1.728-31.616 9.28-106.688-41.024-253.632-53.312-155.648-242.688-310.336-242.688-310.336s66.688 154.688 90.688 322.112c15.552 108.48 5.312 205.312-17.472 242.88l-188.544-0.96z", + "M771.84 62.016v64h178.176v819.968h-876.032v-819.968h138.56v-64h-202.56v947.968h1004.032v-947.968z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "import" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 407, + "id": 217, + "prevSize": 16, + "code": 59888, + "name": "import" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 93 + }, + { + "icon": { + "paths": [ + "M432 549.952c-24 167.36-90.688 322.048-90.688 322.048s189.312-154.688 242.688-310.336c50.304-146.88 39.296-222.016 41.024-253.632h188.992l-297.344-293.376-290.688 293.376 188.48-0.96c22.848 37.568 33.088 134.4 17.536 242.88z", + "M771.84 62.016v64h178.176v819.968h-876.032v-819.968h138.56v-64h-202.56v947.968h1004.032v-947.968z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "export" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 408, + "id": 216, + "prevSize": 16, + "code": 59889, + "name": "export" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 94 + }, + { + "icon": { + "paths": [ + "M512-0.064c-282.304 0-512 229.696-512 512s229.696 512 512 512 512-229.696 512-512-229.696-512-512-512zM512 959.936c-247.040 0-448-201.024-448-448 0-247.040 200.96-448 448-448 246.976 0 448 200.96 448 448 0 246.976-201.024 448-448 448z", + "M786.816 451.648c0 61.312-56.96 111.040-127.040 111.040-70.208 0-127.168-49.728-127.168-111.040 0-6.656 0.96-12.992 2.24-19.328h-43.584c1.28 6.4 2.24 12.736 2.24 19.328 0 61.312-56.96 111.040-127.040 111.040-70.208 0-127.104-49.728-127.104-111.040 0-6.656 0.96-12.992 2.24-19.328h-42.56l67.84 310.656c0 0 101.952-29.76 248.384-29.76 130.368 0 248.64 29.76 248.64 29.76l67.648-310.656h-47.040c1.216 6.336 2.304 12.736 2.304 19.328z", + "M581.76 364.928c0 37.22-30.172 67.392-67.392 67.392s-67.392-30.172-67.392-67.392c0-37.22 30.172-67.392 67.392-67.392s67.392 30.172 67.392 67.392z", + "M273.92 375.872c0 31.175-25.273 56.448-56.448 56.448s-56.448-25.273-56.448-56.448c0-31.175 25.273-56.448 56.448-56.448s56.448 25.273 56.448 56.448z", + "M863.040 375.872c0 31.175-25.273 56.448-56.448 56.448s-56.448-25.273-56.448-56.448c0-31.175 25.273-56.448 56.448-56.448s56.448 25.273 56.448 56.448z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Admin" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 409, + "id": 215, + "prevSize": 16, + "code": 59890, + "name": "Admin" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 95 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.229-512 512s229.23 512 512 512c282.77 0 512-229.229 512-512s-229.23-512-512-512zM770 302l94 92-378 368-320-202 136-102 146 142 322-298z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "allSelected" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 410, + "id": 214, + "prevSize": 16, + "code": 59891, + "name": "allSelected" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 96 + }, + { + "icon": { + "paths": [ + "M311.382 213.893l512 314.202-512 325.798z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "angleRight" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 411, + "id": 213, + "prevSize": 16, + "code": 59892, + "name": "angleRight" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 97 + }, + { + "icon": { + "paths": [ + "M480-0l-480 512 480 512v-342.551h488c30.527 0 56-28.108 56-61.793v-218.354c0-33.685-25.473-61.793-56-61.793h-488z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "arrowLeft" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 412, + "id": 212, + "prevSize": 16, + "code": 59893, + "name": "arrowLeft" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 98 + }, + { + "icon": { + "paths": [ + "M297.119 0l-297.119 317.333 79.585 85.333 376.705-402.667h-159.171zM567.71 5.333l-474.86 509.333 474.86 509.333v-341.333h400.58c30.278 0 55.71-27.75 55.71-61.333v-216c0-33.526-25.432-61.333-55.71-61.333h-400.58v-338.667zM652.601 146.667v109.333h363.44v-48c0-33.526-25.432-61.333-55.71-61.333h-307.731z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "arrowLeftAll" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 413, + "id": 211, + "prevSize": 16, + "code": 59894, + "name": "arrowLeftAll" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 99 + }, + { + "icon": { + "paths": [ + "M544-0l480 512-480 512v-342.551h-488c-30.527 0-56-28.108-56-61.793v-218.354c0-33.685 25.473-61.793 56-61.793h488z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "arrowRight" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 414, + "id": 210, + "prevSize": 16, + "code": 59895, + "name": "arrowRight" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 100 + }, + { + "icon": { + "paths": [ + "M726.881 0l297.119 317.333-79.585 85.333-376.705-402.667h159.171zM456.29 5.333l474.86 509.333-474.86 509.333v-341.333h-400.58c-30.278 0-55.71-27.75-55.71-61.333v-216c0-33.526 25.432-61.333 55.71-61.333h400.58v-338.667zM371.399 146.667v109.333h-363.44v-48c0-33.526 25.432-61.333 55.71-61.333h307.731z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "arrowRightAll" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 415, + "id": 209, + "prevSize": 16, + "code": 59896, + "name": "arrowRightAll" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 101 + }, + { + "icon": { + "paths": [ + "M508 0c-31.119 0-58 24.881-58 56v46c-69.831 10.816-133.646 38.889-188 78l-42-40c-11.002-11.002-25.641-18-40-18s-26.998 6.998-38 18l-18 16c-22.005 22.005-22.005 57.995 0 80l42 40c-34.941 48.538-61.038 103.432-72 164h-36c-31.119 0-58 24.881-58 56v22c0 31.119 26.881 58 58 58h36c12.292 76.335 44.912 147.337 94 204l-34 36c-22.005 22.005-22.005 55.995 0 78l16 18c22.005 22.005 57.995 22.005 80 0l44-46c47.099 28.042 99.181 47.199 156 56v46c0 31.119 26.881 56 58 56h22c31.119 0 56-24.881 56-56v-46c27.753-4.228 54.286-11.152 80-20l-104-106c-14.44 2.229-28.936 4-44 4-159.058 0-288-128.942-288-288s128.942-288 288-288c159.058 0 288 128.942 288 288 0 47.853-13.349 92.29-34 132l104 98c33.635-49.218 58.247-105.432 68-166h22c31.119 0 56-26.881 56-58v-22c0-31.119-24.881-56-56-56h-22c-10.615-58.652-34.805-112.539-68-160l36-36c22.005-22.005 22.005-57.995 0-80l-16-16c-11.002-11.002-25.641-16-40-16s-28.998 4.998-40 16l-36 36c-55.735-41.399-121.471-70.951-194-82v-46c0-31.119-24.881-56-56-56h-22zM520 292c-126.678 0-230 103.322-230 230s103.322 228 230 228c29.501 0 58.095-5.855 84-16l210 210c22.005 22.005 55.995 22.005 78 0l10-10c22.005-22.005 22.005-55.995 0-78l-198-198c28.25-38.126 46-84.904 46-136 0-126.678-103.322-230-230-230zM520 400c67.275 0 122 54.725 122 122s-54.725 122-122 122c-67.275 0-122-54.725-122-122s54.725-122 122-122z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "autoFind" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 416, + "id": 208, + "prevSize": 16, + "code": 59897, + "name": "autoFind" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 102 + }, + { + "icon": { + "paths": [ + "M674.24 1010.112l-481.28-481.344 485.696-485.824 45.312 45.248-440.512 440.576 436.032 436.096z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "back" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 417, + "id": 207, + "prevSize": 16, + "code": 59898, + "name": "back" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 103 + }, + { + "icon": { + "paths": [ + "M366 0v364h-180v300h184v-52h52v52h40v-300h92v300h40v-52h54v52h184v-300h-174v-364h-292zM0 658v366h366v-152h-132v-92h-90v-122h-144zM880 658v122h-90v92h-132v152h366v-366h-144zM432 872v152h160v-152h-160z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "ball" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 418, + "id": 206, + "prevSize": 16, + "code": 59899, + "name": "ball" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 104 + }, + { + "icon": { + "paths": [ + "M448.031 21.984v110.003c-111.249 27.552-192 127.68-192 248v93.997c-14.104 170.784-120.996 270.701-224 378.003 4.723 0 9.21-1.984 14-1.984h282c-1.498 8.525-1.997 17.030-1.997 25.997 0 82.726 65.275 148 148 148h34c82.725 0 150-65.274 150-148 0-8.986-2.49-17.459-4-25.997h320c4.787 0 9.277 1.728 14 1.984-103.004-107.302-209.896-207.219-224-378.003v-93.997c0-120.32-80.751-220.448-192-248v-110.003h-124zM396.031 849.984h32c-11.965 12.403-20 28.371-20 46.003 0 40.346 37.391 73.997 84 73.997-10.154 4.16-20.329 8-32 8-46.609 0-84-34.176-84-77.997 0-19.418 7.773-36.070 20-50.003z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "bell" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 419, + "id": 205, + "prevSize": 16, + "code": 59900, + "name": "bell" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 105 + }, + { + "icon": { + "paths": [ + "M509.091 1.707c-134.448 0-242.544 108.704-242.544 244s108.096 246 242.544 246c134.448 0 242.544-110.704 242.544-246s-108.096-244-242.544-244zM769.528 447.707c-140.541 0-254.472 114.618-254.472 256s113.931 256 254.472 256c140.541 0 254.472-114.618 254.472-256s-113.931-256-254.472-256zM306.308 503.707c-346.855 195.91-302.524 531.61-306.162 520h685.883l-1.988-6c-135.113-23.090-238.568-141.499-238.568-284 0-50.008 13.499-97.017 35.785-138-72.082-7.589-136.306-42.513-174.95-92zM610.482 633.707h318.091v128h-318.091v-128z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "blackList" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 420, + "id": 204, + "prevSize": 16, + "code": 59901, + "name": "blackList" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 106 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM530 128l22 124-72 6-22-122 72-8zM276 170c70.131 0 128 57.239 128 130 0 15.422-1.298 30.22-6 44l86 90-66 70-86-86c-16.468 8.112-36.565 12-56 12-70.131 0-122-57.267-122-130 0-72.761 51.869-130 122-130zM760 210l54 82-162 116-54-86 162-112zM888 442l8 74-118 22-8-74 118-22zM246 482l8 74-118 20-8-72 118-22zM598 534l62 64c16.654-8.376 32.276-16 52-16 70.131 0 130 63.253 130 136 0 72.752-59.869 130-130 130s-124-57.248-124-130c0-15.163 5.459-32.45 10-46l-68-66 68-72zM372 612l54 90-166 108-50-82 162-116zM540 770l18 118-72 8-18-124 72-2z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "breakLink" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 421, + "id": 203, + "prevSize": 16, + "code": 59902, + "name": "breakLink" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 107 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.229-512 512s229.23 512 512 512c282.77 0 512-229.229 512-512s-229.23-512-512-512zM128 314.003l180 104c61.902-49.734 140.551-80 226-80 198.617 0 360 163.379 360 361.997 0 2.944 0.070 5.056 0 8l-90 1.984c0.134-3.456 0-6.528 0-10.003 0-148.96-121.038-272-270-272-51.469 0-98.972 14.771-140 40l184 106.003-356 93.997-94-353.978z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "cancle" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 422, + "id": 202, + "prevSize": 16, + "code": 59903, + "name": "cancle" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 108 + }, + { + "icon": { + "paths": [ + "M1024 512.002c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "circle" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 423, + "id": 201, + "prevSize": 16, + "code": 59904, + "name": "circle" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 109 + }, + { + "icon": { + "paths": [ + "M-0 5.333v341.333h122.667v445.333h362.667c17.783 132.745 129.128 234.667 266.667 234.667 149.839 0 272-122.278 272-272s-122.161-269.333-272-269.333c-133.011 0-240.954 95.465-264 221.333h-280v-360h133.333v-341.333h-341.333zM712 586.667h85.333v128h128v85.333h-128v128h-85.333v-128h-128v-85.333h128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "closeTree" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 424, + "id": 200, + "prevSize": 16, + "code": 59905, + "name": "closeTree" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 110 + }, + { + "icon": { + "paths": [ + "M0 0v1024h400l-6-238 158-260-146-188-278 392v-602h768v120l128 74v-322h-1024zM796 290l-266 462 166 96 266-460-166-98zM1024 426l-8 16-290 534-58 48h356v-598zM486 828l14 166 152-70-166-96z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "configmap" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 425, + "id": 199, + "prevSize": 16, + "code": 59906, + "name": "configmap" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 111 + }, + { + "icon": { + "paths": [ + "M211.587 32l-205.602 224h429.166l-223.564-224zM0 304v720h1024v-496h-596.833v-224h-427.167zM77.845 406.003h95.813v96h-95.813v-96zM255.502 406.003h95.813v96h-95.813v-96zM77.845 614.003h95.813v96h-95.813v-96zM255.502 614.003h95.813v96h-95.813v-96zM680.67 614.003h95.813v96h-95.813v-96zM858.326 614.003h95.813v96h-95.813v-96zM501.020 620.019h63.875v296h-63.875v-296zM75.852 820.019h95.813v96h-95.813v-96zM253.502 820.019h95.813v96h-95.813v-96zM680.67 820.019h95.813v96h-95.813v-96zM858.326 820.019h95.813v96h-95.813v-96z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "department" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 426, + "id": 198, + "prevSize": 16, + "code": 59907, + "name": "department" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 112 + }, + { + "icon": { + "paths": [ + "M0 45.333v170.667h1024v-170.667h-1024zM0 301.333v170.667h1024v-170.667h-1024zM0 557.333v170.667h1024v-170.667h-1024zM0 813.333v170.667h768v-170.667h-768z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "detail" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 427, + "id": 197, + "prevSize": 16, + "code": 59908, + "name": "detail" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 113 + }, + { + "icon": { + "paths": [ + "M0 0v1024h862.766v-292h160l-192-192-190 192h158v228h-366.766v-896h366.503v204h-158l190 192 192-192h-160v-268h-560.503zM72 214h290v64h-290zM72 474h290v64h-290zM72 726h290v64h-290z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "displaySwitch" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 428, + "id": 196, + "prevSize": 16, + "code": 59909, + "name": "displaySwitch" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 114 + }, + { + "icon": { + "paths": [ + "M120 0v1024h812l20-822-160-202h-672zM216 96h516l124 164-14 668h-626v-832zM298 178v140h146v-140h-146zM524 234v64h252v-64h-252zM298 386v64h478v-64h-478zM298 562v64h478v-64h-478zM298 738v64h478v-64h-478z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "file" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 429, + "id": 195, + "prevSize": 16, + "code": 59910, + "name": "file" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 115 + }, + { + "icon": { + "paths": [ + "M0.006 0l0.497 77.36 415.5 392.907v329.797l192 223.936v-551.698l416.664-388.835-0.668-83.467h-1024zM254.006 101.789h514v44.787l-256 242.258-256-246.33-1.997-40.716z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "filter" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 430, + "id": 194, + "prevSize": 16, + "code": 59911, + "name": "filter" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 116 + }, + { + "icon": { + "paths": [ + "M278-4c-16.425 0-30 13.575-30 30v132c0 16.425 13.575 30 30 30h132c16.425 0 30-13.575 30-30v-132c0-16.425-13.575-30-30-30h-132zM598-2c-16.425 0-30 13.575-30 30v132c0 16.425 13.575 30 30 30h132c16.425 0 30-13.575 30-30v-132c0-16.425-13.575-30-30-30h-132zM440 250l-270 2-114 274v368h208l30-30v-272l126-2c12.464-1.292 21.634-18.792 20-40v-300zM568 252v300c-1.634 21.208 7.536 38.708 20 40l126 2v272l30 30h208v-368l-114-274-270-2zM56 960v64h238v-64h-238zM714 962v64h238v-64h-238z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "find" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 431, + "id": 193, + "prevSize": 16, + "code": 59912, + "name": "find" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 117 + }, + { + "icon": { + "paths": [ + "M96.8 136.576h200.277c43.173-0.136 53.665 12.675 68.962 42.158 0 0 38.028 112.952 79.827 152.074 13.079 12.242 22.734 21.78 49.133 21.78h432.201c53.627 0 96.8 43.571 96.8 97.694v486.13c0 54.122-43.173 97.694-96.8 97.694h-830.399c-53.627 0-96.8-43.571-96.8-97.694v-702.143c0-54.122 43.173-97.694 96.8-97.694z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "folder" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 432, + "id": 192, + "prevSize": 16, + "code": 59913, + "name": "folder" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 118 + }, + { + "icon": { + "paths": [ + "M707.2 952.256h-675.52v-870.912h675.52v64h-611.52v742.912h611.52z", + "M737.92 798.272l-45.248-45.248 235.84-235.776-236.544-236.608 45.248-45.248 281.792 281.856z", + "M226.24 484.8h713.664v64h-713.664v-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "forceOut" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 433, + "id": 191, + "prevSize": 16, + "code": 59914, + "name": "forceOut" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 119 + }, + { + "icon": { + "paths": [ + "M512 0l-224 256h448l-224-256zM256 288l-256 224 256 224v-448zM768 288v448l256-224-256-224zM288 768l224 256 224-256h-448z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "fullScreen" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 434, + "id": 190, + "prevSize": 16, + "code": 59915, + "name": "fullScreen" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 120 + }, + { + "icon": { + "paths": [ + "M823.104 510.912c0 89.472-37.376 169.6-96.576 226.688l132.096 132.096c92.096-91.072 149.44-218.112 149.44-358.784v-0.064l-184.96 0.064z", + "M795.392 385.216h195.136c-49.024-191.36-205.312-338.56-400.896-368.896v191.936c92.736 23.616 167.808 89.984 205.76 176.96z", + "M611.392 806.656c-30.464 10.688-62.656 17.344-96.768 17.344-170.304 0-308.352-140.096-308.352-313.152 0-154.752 110.848-282.56 256.256-307.776v-190.272c-248.064 26.432-441.408 239.36-441.408 498.112 0 276.608 220.992 500.864 493.504 500.864 86.72 0 167.424-23.744 238.208-63.68l-141.44-141.44z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Graphical" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 435, + "id": 189, + "prevSize": 16, + "code": 59916, + "name": "Graphical" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 121 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM508 154c46.383-1.856 85.454 3.072 114 14 28.545 10.93 51.941 26.114 74 44 22.058 17.888 38.725 39.581 48 64 9.273 24.42 13.365 47.981 12 74-1.804 25.729-7.361 51.469-18 76-10.64 24.532-25.936 48.956-46 72-20.065 23.044-44.056 45.493-72 68l-48 38v96h-140v-144c24.721-18.659 47.471-36.070 68-52s40.81-33.788 60-52c19.19-18.211 34.589-37.048 44-58s12.13-42.057 10-60c-3.115-23.536-12.211-39.974-28-52-15.789-12.025-34.516-20.198-56-22-21.485-1.8-39.222 3.978-54 14-13.986 9.106-22.307 19.262-24 30l-6 26-8 4-134 6c1.366-25.281 5.356-50.331 10-72 4.644-21.667 16.939-41.396 38-60 21.061-18.602 46.109-32.135 74-40 27.89-7.863 54.246-12.545 82-14zM428 800h148v94h-148v-94z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "helpTip" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 436, + "id": 188, + "prevSize": 16, + "code": 59917, + "name": "helpTip" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 122 + }, + { + "icon": { + "paths": [ + "M368 0v596h-234l364 360h-498v70h1024v-70h-522l388-360h-234v-596h-288z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "hide" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 437, + "id": 187, + "prevSize": 16, + "code": 59918, + "name": "hide" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 123 + }, + { + "icon": { + "paths": [ + "M167.615 186.842v487.328l34 73.35h572.385l38-75.226v-33.856h26c104.401 0 188-78.618 188-176.794 0-98.182-83.599-176.8-188-176.8h-26v-98.003zM812 346.912h14c66.898 0 122 51.821 122 114.733 0 62.906-55.102 112.845-122 112.845h-14zM0 843.443l108 180.557h834l82-180.557z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "history" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 438, + "id": 186, + "prevSize": 16, + "code": 59919, + "name": "history" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 124 + }, + { + "icon": { + "paths": [ + "M212 6c-86.27 49.558-144 133.862-144 230 0 97.724 59.409 182.82 148 232l24-52c-65.834-40.067-108-105.085-108-180s42.166-141.933 108-182l-28-48zM848 6l-28 48c65.834 40.067 108 107.085 108 182s-42.166 139.933-108 180l24 52c88.591-49.18 148-134.276 148-232 0-96.138-57.73-180.442-144-230zM318 70c-57.742 35.475-98 97.182-98 166 0 69.953 40.705 130.796 100 166l16-38c-44.064-28.681-72-74.374-72-128s27.936-101.319 72-130l-18-36zM742 70l-18 36c44.064 28.681 72 76.374 72 130s-27.936 99.319-72 128l16 38c59.295-35.204 100-96.047 100-166 0-68.818-40.258-130.525-98-166zM406 140c-33.569 20.623-56 55.993-56 96 0 40.667 23.529 75.534 58 96l10-22c-25.617-16.673-42-42.824-42-74s16.383-59.327 42-76l-12-20zM654 140l-12 20c25.617 16.673 42 44.824 42 76s-16.383 57.327-42 74l10 22c34.471-20.466 58-55.333 58-96 0-40.007-22.431-75.377-56-96zM480 194l-28 830h156l-28-830h-100z", + "M218.989 560.393h121.908v463.389h-121.908v-463.389z", + "M88 655.783v368h152v-368h-152zM114 671.783h26v346h-26v-346z", + "M-4.535 844.191h99.537v179.809h-99.537v-179.809z", + "M592.5 803.154h82.665v223.6h-82.665v-223.6z", + "M662.092 580.19h78.332v446.564h-78.332v-446.564z", + "M738 706v318h94v-318h-94zM758 734h20v262h-20v-262z", + "M808 816v208h174v-208h-174zM864 860h82v146h-82v-146z", + "M967.595 914.101h68.362v109.899h-68.362v-109.899z", + "M331.201 818.275v208h143.859v-208h-143.859zM377.501 862.275h67.796v146h-67.796v-146z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "launchingTower" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 439, + "id": 185, + "prevSize": 16, + "code": 59920, + "name": "launchingTower" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 125 + }, + { + "icon": { + "paths": [ + "M0 0v160h64v864h896v-864h64v-160h-1024zM192 258h640v640h-640v-640zM400 330l-172 174 172 174v-114h112v-124h-112v-110zM624 516v110h-112v124h112v114l172-174-172-174z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "layout" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 440, + "id": 184, + "prevSize": 16, + "code": 59921, + "name": "layout" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 126 + }, + { + "icon": { + "paths": [ + "M1024 0v1024h-736.508v-1024zM168.136 0v1024h-168.136v-1024zM635.932 330l-182 182 182 182v-122h232v-120h-232z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "legendhide" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 441, + "id": 183, + "prevSize": 16, + "code": 59922, + "name": "legendhide" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 127 + }, + { + "icon": { + "paths": [ + "M0 0v1024h602v-1024h-602zM704 0v1024h320v-1024h-320zM778 136h172v86h-172v-86zM336 330l182 182-182 182v-122h-232v-120h232v-122zM778 376h172v86h-172v-86zM778 616h172v86h-172v-86zM778 854h172v88h-172v-88z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "legendshow" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 442, + "id": 182, + "prevSize": 16, + "code": 59923, + "name": "legendshow" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 128 + }, + { + "icon": { + "paths": [ + "M174 0c-95.761 0-174 78.239-174 174s78.239 172 174 172c30.236 0 57.252-6.394 82-20l442 442c-13.606 24.748-20 51.764-20 82 0 95.761 76.239 174 172 174s174-78.239 174-174c0-95.761-78.239-172-174-172-30.57 0-59.061 6.113-84 20l-442-438c14.951-25.628 22-54.19 22-86 0-95.761-76.239-174-172-174zM174 86c47.881 0 86 40.119 86 88s-38.119 86-86 86c-47.881 0-88-38.119-88-86s40.119-88 88-88zM850 764c47.881 0 88 38.119 88 86s-40.119 88-88 88c-47.881 0-86-40.119-86-88s38.119-86 86-86z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "link" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 443, + "id": 181, + "prevSize": 16, + "code": 59924, + "name": "link" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 129 + }, + { + "icon": { + "paths": [ + "M510 8c-203.422 0-367.735 153.347-370 344h92c2.507-130.677 125.564-236 278-236s277.452 105.323 280 236h92c-2.292-190.653-168.578-344-372-344zM156 416c-56.19 0-102 43.81-102 100v406c0 56.19 45.81 102 102 102h710c56.19 0 102-45.81 102-102v-406c0-56.19-45.81-100-102-100h-710zM510 586c37.842 0 68 30.158 68 68 0 20.924-9.216 41.432-24 54v170h-90v-170c-14.784-12.568-24-33.076-24-54 0-37.842 32.158-68 70-68z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "lock" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 444, + "id": 180, + "prevSize": 16, + "code": 59925, + "name": "lock" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 130 + }, + { + "icon": { + "paths": [ + "M839.68 794.944l-469.12-469.12 325.824-325.824h-696.384v696.384l325.312-325.312 469.12 469.12z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "ltArrow" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 445, + "id": 179, + "prevSize": 16, + "code": 59926, + "name": "ltArrow" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 131 + }, + { + "icon": { + "paths": [ + "M512.064 0c-282.368 0-512.064 229.632-512.064 512 0 282.432 229.696 512 512.064 512 282.304 0 511.936-229.632 511.936-512s-229.632-512-511.936-512zM512.064 960c-247.040 0-448.064-201.024-448.064-448 0-247.040 201.024-448 448.064-448 246.976 0 447.936 200.96 447.936 448 0 246.976-200.96 448-447.936 448z", + "M734.976 372.224l20.672-55.808-49.408-32.896-3.84-59.392-58.56-9.856-27.52-52.672-57.728 14.72-46.592-36.864-46.656 36.864-57.6-14.72-27.52 52.672-58.688 9.92-3.712 59.392-49.536 32.832 20.672 55.808-31.808 50.24 41.536 42.496-8.64 58.816 55.296 21.824 13.952 49.92-88.64 237.504 91.648-25.152 46.656 76.736 97.92-262.272 5.12-2.56 3.264 1.6 95.488 255.872 46.656-76.608 91.648 25.152-84.992-227.776 14.656-52.416 55.296-21.824-8.704-58.816 41.6-42.496-31.936-50.24zM626.176 538.88l-105.024 39.104c-3.072 0.256-6.016 1.024-9.152 1.024-19.968 0-38.784-4.032-56.768-9.728l-21.44-8.064c-63.552-29.568-107.904-93.568-107.904-168.32 0-102.848 83.328-186.176 186.112-186.176 102.848 0 186.112 83.328 186.112 186.176 0 59.52-28.416 111.936-71.936 145.984z", + "M669.12 392.832c0 86.775-70.345 157.12-157.12 157.12s-157.12-70.345-157.12-157.12c0-86.775 70.345-157.12 157.12-157.12s157.12 70.345 157.12 157.12z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Maintain" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 446, + "id": 178, + "prevSize": 16, + "code": 59927, + "name": "Maintain" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 132 + }, + { + "icon": { + "paths": [ + "M177.898 320v704h704v-704zM273.457 599.763h512.883v326.237h-512.883z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "maximize" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 447, + "id": 177, + "prevSize": 16, + "code": 59928, + "name": "maximize" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 133 + }, + { + "icon": { + "paths": [ + "M508.608 9.6c-282.368 0-512.064 229.696-512.064 512 0 282.432 229.696 512 512.064 512 282.304 0 511.936-229.632 512-512 0-282.368-229.632-512-512-512zM508.608 969.6c-247.040 0-448.064-201.024-448.064-448s201.024-448 448.064-448 447.936 201.024 448 448c0 246.976-200.96 448-448 448z", + "M610.048 709.504h-203.008v33.856h-168.96v64h540.928v-64h-168.96z", + "M206.080 666.624h604.928v-429.312h-604.928v429.312zM749.056 617.024h-68.032v-28.032h68.032v28.032zM270.080 301.312h476.928v250.688h-476.928v-250.688z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Monitor" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 448, + "id": 176, + "prevSize": 16, + "code": 59929, + "name": "Monitor" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 134 + }, + { + "icon": { + "paths": [ + "M497.019 10c-30.138 0-54 30.398-54 69.728v354.615l-62 15.938h-6v-241.058c0-39.33-23.862-71.72-54-71.72s-54 32.39-54 71.72v316.763l-44 63.751-10 13.946-100-99.611c-27.919-27.811-70.929-28.958-96-3.984s-21.919 67.816 6 95.626l212 209.183c31.677 130.522 169.028 229.105 332 229.105 175.44 0 317.928-115.646 334-260.981 2.746-8.499 4-16.066 4-25.899v-414.381c0-39.33-23.862-71.72-54-71.72s-56 32.39-56 71.72v153.401l-34-9.961-32-17.93v-318.755c0-39.33-25.862-71.72-56-71.72s-54 32.39-54 71.72v288.872l-44-1.992-24-3.984v-342.661c0-39.33-23.862-69.728-54-69.728z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "move" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 449, + "id": 175, + "prevSize": 16, + "code": 59930, + "name": "move" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 135 + }, + { + "icon": { + "paths": [ + "M370 0v100h132v322h-132v98h-170v504h800v-810l-194-214h-436zM150 56v132h-132v128h132v132h128v-132h132v-128h-132v-132h-128zM704 504l204 204-198 198-2-132h-244v-156h242l-2-114zM352 616h40v158h-40v-158z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "newShortcut" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 450, + "id": 174, + "prevSize": 16, + "code": 59931, + "name": "newShortcut" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 136 + }, + { + "icon": { + "paths": [ + "M800 0v82l-284 6h-32v390h-342v-88h120v-262h-262v262h78v154h406v384h316v96h224v-224h-224v64h-252v-320h252v80h224v-224h-224v78h-252v-326l252-6v78h224v-224h-224zM880 80h64v64h-64v-64zM880 480h64v64h-64v-64zM880 880h64v64h-64v-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "openTree" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 451, + "id": 173, + "prevSize": 16, + "code": 59932, + "name": "openTree" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 137 + }, + { + "icon": { + "paths": [ + "M448 0v320h576v-320h-576zM0 448v576h1024v-576h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "poNode" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 452, + "id": 172, + "prevSize": 16, + "code": 59933, + "name": "poNode" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 138 + }, + { + "icon": { + "paths": [ + "M272 0v200h480v-200h-480zM98 112c-54.122 0-98 43.878-98 98v358c0 54.122 43.878 98 98 98h828c54.122 0 98-43.878 98-98v-358c0-54.122-43.878-98-98-98h-110v168h-608v-168h-110zM284 724v300h484v-300h-484zM330 786h364v52h-364v-52zM332 894h264v50h-264v-50z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "print" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 453, + "id": 171, + "prevSize": 16, + "code": 59934, + "name": "print" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 139 + }, + { + "icon": { + "paths": [ + "M186.869 0v1024h640v-1024h-640zM304.869 134.003h404v133.997h-404v-133.997zM304.869 502.003h186v64h-186v-64zM304.869 732h186v64h-186v-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "product" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 454, + "id": 170, + "prevSize": 16, + "code": 59935, + "name": "product" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 140 + }, + { + "icon": { + "paths": [ + "M184.32 229.056l469.12 469.12-325.824 325.824h696.384v-696.384l-325.312 325.312-469.12-469.12z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "rbArrow" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 455, + "id": 169, + "prevSize": 16, + "code": 59936, + "name": "rbArrow" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 141 + }, + { + "icon": { + "paths": [ + "M169.25 320v456h203.925v248h500.075v-456h-203.925v-248zM239.752 500h362.35v68h-228.928v110h-133.422zM443.677 746h360.71v178h-360.71z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "reduction" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 456, + "id": 168, + "prevSize": 16, + "code": 59937, + "name": "reduction" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 142 + }, + { + "icon": { + "paths": [ + "M56 0c-31.119 0-56 24.881-56 56v618c0 31.119 24.881 56 56 56 0 0 226.78 4.516 260.648 0v-176c0-34.183 27.817-62 62-62h87.352l-36-92h-164l-34 94h-88l160-418h88l166 416h52.899c34.183 0 62 27.817 62 62v72h57.101v-570c0-31.119-24.881-56-56-56zM348 172l-56 156h112zM414 556v322.99h412v143.343l202-209.343-202-224.847v144.847h-266v-176.99z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "rename" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 457, + "id": 167, + "prevSize": 16, + "code": 59938, + "name": "rename" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 143 + }, + { + "icon": { + "paths": [ + "M0 0l486 1024 96-396 442-142-1024-486zM156 168l666 304-308 82-60 234-298-620z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "select" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 458, + "id": 166, + "prevSize": 16, + "code": 59939, + "name": "select" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 144 + }, + { + "icon": { + "paths": [ + "M68 0c-38.145 0-68 31.069-68 70v52c0 38.931 29.855 70 68 70h888c38.145 0 68-31.069 68-70v-52c0-38.931-29.855-70-68-70h-888zM68 268c-38.145 0-68 29.855-68 68v620c0 38.145 29.855 68 68 68h888c38.145 0 68-29.855 68-68v-620c0-38.145-29.855-68-68-68h-888zM810 388l124 10-460 528-320-264 144-124 154 222 358-372z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "selectAll" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 459, + "id": 165, + "prevSize": 16, + "code": 59940, + "name": "selectAll" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 145 + }, + { + "icon": { + "paths": [ + "M354 2l-352 264 352 266v-140h434v278h-234v-64h-204v204h204v-76h104v188h-454v-98h-204v204h204v-42h518v-252h130v-342h172v-252h-670v-138z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "selectLeft" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 460, + "id": 164, + "prevSize": 16, + "code": 59941, + "name": "selectLeft" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 146 + }, + { + "icon": { + "paths": [ + "M670 2l352 264-352 266v-140h-434v278h234v-64h204v204h-204v-76h-104v188h454v-98h204v204h-204v-42h-518v-252h-130v-342h-172v-252h670v-138z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "selectRight" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 461, + "id": 163, + "prevSize": 16, + "code": 59942, + "name": "selectRight" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 147 + }, + { + "icon": { + "paths": [ + "M0 0v356h486l-352 348h234v250h-368v70h1024v-70h-368v-250h234l-374-348h508v-356h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "show" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 462, + "id": 162, + "prevSize": 16, + "code": 59943, + "name": "show" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 148 + }, + { + "icon": { + "paths": [ + "M512 237.682l-512 786.318h1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "shrink" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 463, + "id": 161, + "prevSize": 16, + "code": 59944, + "name": "shrink" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 149 + }, + { + "icon": { + "paths": [ + "M154 0c-85.352 0-154 68.648-154 154v716c0 85.352 68.648 154 154 154h716c85.352 0 154-68.648 154-154v-716c0-85.352-68.648-154-154-154h-716zM190 128h644c34.183 0 62 27.817 62 62v644c0 34.183-27.817 62-62 62h-644c-34.183 0-62-27.817-62-62v-644c0-34.183 27.817-62 62-62zM272 202v620l518-310-518-310z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "start" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 464, + "id": 160, + "prevSize": 16, + "code": 59945, + "name": "start" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 150 + }, + { + "icon": { + "paths": [ + "M154 0c-85.352 0-154 68.648-154 154v716c0 85.352 68.648 154 154 154h716c85.352 0 154-68.648 154-154v-716c0-85.352-68.648-154-154-154h-716zM190 128h644c34.183 0 62 27.817 62 62v644c0 34.183-27.817 62-62 62h-644c-34.183 0-62-27.817-62-62v-644c0-34.183 27.817-62 62-62zM296 296v432h432v-432h-432z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "stop" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 465, + "id": 159, + "prevSize": 16, + "code": 59946, + "name": "stop" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 151 + }, + { + "icon": { + "paths": [ + "M512 1024l-512-786.318h1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "stretch" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 466, + "id": 158, + "prevSize": 16, + "code": 59947, + "name": "stretch" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 152 + }, + { + "icon": { + "paths": [ + "M194 0c-107.068 0-194 82.412-194 184v656c0 101.588 86.932 184 194 184h636c107.068 0 194-82.412 194-184v-656c0-101.588-86.932-184-194-184h-636zM256 166l254 254 254-254 92 90-256 254 258 258-90 90-258-258-258 258-90-90 258-258-254-254 90-90z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "strikeOut" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 467, + "id": 157, + "prevSize": 16, + "code": 59948, + "name": "strikeOut" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 153 + }, + { + "icon": { + "paths": [ + "M494.591 0.25c-104.514 3.264-208.762 40.365-296.56 108.41 54.963 14.432 104.846 45.722 142.015 91.731 26.183 32.416 43.293 69.434 52.211 108.41 7.471-4.416 15.182-6.931 22.973-10.419 92.228-41.331 202.903-21.402 273.587 58.374 2.3 2.624 4.099 5.696 6.266 8.339 38.539-10.528 75.134-28.589 106.511-56.294 44.602-39.379 72.015-90.355 83.538-145.939-104.684-110.842-248.067-167.085-390.54-162.611zM129.112 171.2c-154.656 173.299-171.74 430.515-43.857 623.366 14.934-42.534 37.92-81.523 73.096-112.576 40.821-36.064 90.261-55.533 142.015-62.547-39.251-78.547-32.851-174.438 18.796-246.010-8.527-40.979-24.855-80.813-52.211-114.669-35.942-44.499-84.853-73.018-137.838-87.565zM945.696 242.086c-12.714 52.192-39.333 100.41-81.45 137.6-37.012 32.678-81.354 51.789-127.396 60.461 26.015 79.027 6.736 167.418-52.211 231.411 19.428 31.75 44.529 59.674 77.273 81.312 53.569 35.405 115.945 48.032 177.518 41.696 109.728-165.357 113.583-382.061 6.266-552.48zM356.753 690.33c-49.599 7.29-96.216 27.635-135.749 62.541-37.037 32.698-60.956 73.747-75.184 118.835 189.751 193.376 500.447 204.333 705.897 22.938 7.2-6.336 14.128-12.109 20.885-18.771-56.711 3.136-113.526-11.149-162.899-43.776-41.445-27.398-71.715-65.645-91.892-108.41-84.866 42.72-188.114 30.099-261.056-33.357z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "Synchronous" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 468, + "id": 156, + "prevSize": 16, + "code": 59949, + "name": "Synchronous" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 154 + }, + { + "icon": { + "paths": [ + "M517.312 51.648c-261.504 0-474.24 212.736-474.24 474.24s212.736 474.24 474.24 474.24c261.44 0 474.176-212.736 474.176-474.24s-212.736-474.24-474.176-474.24zM517.312 936.128c-226.24 0-410.24-184.064-410.24-410.24 0-226.24 184-410.24 410.24-410.24 226.176 0 410.176 184 410.176 410.24 0 226.176-184 410.24-410.176 410.24z", + "M498.624 196.288l-45.312 45.248 245.632 245.632h-445.184v64h457.536l-244.16 244.224 45.248 45.248 315.264-315.328z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "toRight" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 469, + "id": 155, + "prevSize": 16, + "code": 59950, + "name": "toRight" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 155 + }, + { + "icon": { + "paths": [ + "M172 0c-95.48 0-172 76.52-172 172v680c0 95.48 76.52 172 172 172h680c95.48 0 172-76.52 172-172v-680c0-95.48-76.52-172-172-172h-680zM244 178h432l104 132v536h-536v-668zM326 306v78h200v-78h-200zM328 478v76h374v-76h-374zM320 648v78h384v-78h-384z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "treefile" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 470, + "id": 154, + "prevSize": 16, + "code": 59951, + "name": "treefile" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 156 + }, + { + "icon": { + "paths": [ + "M172 0c-95.48 0-172 76.52-172 172v680c0 95.48 76.52 172 172 172h680c95.48 0 172-76.52 172-172v-680c0-95.48-76.52-172-172-172zM238.712 241.729h206.949c27.848 0 50.787 21.897 50 48v144h316c28.751 0 52 23.249 52 52v266.237c0 28.751-23.249 52-52 52h-568.949c-28.751 0-51.098-23.263-52-52v-462.237c0-26.115 20.152-48 48-48z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "treeFolder" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 471, + "id": 153, + "prevSize": 16, + "code": 59952, + "name": "treeFolder" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 157 + }, + { + "icon": { + "paths": [ + "M510 8c-202.717 0-366.626 152.266-370 342-0.012 0.659 0.008 1.34 0 2v66c-48.364 7.619-86 47.443-86 98v406c0 56.19 45.81 102 102 102h710c56.19 0 102-45.81 102-102v-406c0-56.19-45.81-100-102-100h-634v-66c3.722-129.746 126.346-234 278-234 125.236 0 230.961 71.332 266.403 169.184 9.788 9.965 18.88 19.916 30.894 22.829 12.716 3.084 41.895 4.16 53.558-6.145 7.663-6.77 13.476-15.71 11.628-22.481-37.206-155.677-185.523-271.387-362.482-271.387zM510 586c37.842 0 68 30.158 68 68 0 20.924-9.216 41.432-24 54v170h-90v-170c-14.784-12.568-24-33.076-24-54 0-37.842 32.158-68 70-68z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "unlock" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 472, + "id": 152, + "prevSize": 16, + "code": 59953, + "name": "unlock" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 158 + }, + { + "icon": { + "paths": [ + "M430.051 1.837c-113.748 0-204 92.25-204 206.003 0 113.747 90.252 205.997 204 205.997s206-92.25 206-205.997c0-113.754-92.252-206.003-206-206.003zM260.051 423.84c-293.451 164.71-256.921 447.763-260 437.997h378c24.631-42.662 62.629-86.432 126-121.997l12-38.003v-1.984c-0.602-0.704-1.411-1.28-2-1.984-16.909-20.928-28.629-51.814-30-97.997 0-62.336 42.539-115.219 100-130.003l4-1.984v-1.984l14-41.997c-37.012 47.104-100.907 80-172 80s-132.988-32.896-170-80zM688.051 467.84c-73.692 0-134 58.304-134 132 0 73.69 60.308 133.997 134 133.997s132-60.307 132-133.997c0-73.696-58.308-132-132-132zM576.051 739.84c-190.112 106.707-166.005 290.323-168 284h558c-1.994 6.336 22.112-177.293-168-284-23.978 30.515-63.943 52-110 52s-88.022-21.485-112-52z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "userCompare" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 473, + "id": 151, + "prevSize": 16, + "code": 59954, + "name": "userCompare" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 159 + }, + { + "icon": { + "paths": [ + "M512 0c-135.256 0-243.927 108.883-243.927 244.403 0 135.526 108.671 246.413 243.927 246.413s243.927-110.886 243.927-246.413c0-135.52-108.671-244.403-243.927-244.403zM308.061 502.842c-348.938 196.237-304.247 532.493-307.907 520.864h1023.692c-3.66 11.629 41.030-324.627-307.907-520.864-44.011 56.115-119.403 94.15-203.939 94.15-50.341 0-96.799-15.302-135.959-38.061 100.275 77.171 212.359 110.496 331.9 118.195l3.999-152.256 235.929 208.346-213.936 242.406-11.996-138.234c-166.671-50.202-400.945-148.48-413.876-334.547z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "userDispatch" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 474, + "id": 150, + "prevSize": 16, + "code": 59955, + "name": "userDispatch" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 160 + }, + { + "icon": { + "paths": [ + "M130 0c-71.877 0-130 58.123-130 130v764c0 71.877 58.123 130 130 130h764c71.877 0 130-58.123 130-130v-506l-388-388h-506zM772 0l252 252v-122c0-71.877-58.123-130-130-130h-122zM56 352h76l64 102 62-102h76l-100 156 110 164h-78l-72-110-70 110h-78l110-168-100-152zM376 352h98l58 218 58-218h96v320h-60v-252l-64 252h-62l-64-252v252h-60v-320zM752 354h66v264h160v54h-226v-318z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "xml" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 475, + "id": 149, + "prevSize": 16, + "code": 59956, + "name": "xml" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 161 + }, + { + "icon": { + "paths": [ + "M0 0v172l172-172h-172zM852 0l172 172v-172h-172zM128 128v768h768v-768h-768zM234 254h556v272l-42-56-72 86-66-194-114 230-104-122-158 162v-378zM0 852v172h172l-172-172zM1024 852l-172 172h172v-172z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "zoomOverView" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 476, + "id": 148, + "prevSize": 16, + "code": 59957, + "name": "zoomOverView" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 162 + }, + { + "icon": { + "paths": [ + "M388 0l114 128 114-128h-228zM502 128h-374v768h768v-768h-394zM896 470l128 114v-228l-128 114zM512 896l-114 128h226l-112-128zM128 472l-128-112v226l128-114zM234 254h556v272l-42-56-72 86-66-194-114 230-104-122-158 162v-378z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "zoomReset" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 477, + "id": 147, + "prevSize": 16, + "code": 59958, + "name": "zoomReset" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 163 + }, + { + "icon": { + "paths": [ + "M486.080 752.64v-412.352h-48.64v169.344h-191.168v-169.344h-48.64v412.352h48.64v-194.368h191.168v194.368z", + "M828.032 577.536c-10.24-17.024-26.048-30.976-47.424-42.048-14.72-7.488-41.856-16.256-81.408-26.304-39.488-9.984-64-19.84-73.344-29.376-9.536-9.536-14.272-21.76-14.272-36.544 0-17.088 6.656-31.616 20.16-43.776 13.44-12.032 34.88-18.112 64.32-18.112 28.288 0 49.6 6.656 64.128 19.968 14.464 13.312 22.912 33.024 25.408 59.072l46.656-3.968c-0.896-24.192-6.848-45.824-18.048-64.96s-27.264-33.6-48.064-43.456c-20.8-9.856-44.864-14.784-72.128-14.784-24.768 0-47.232 4.672-67.52 14.080-20.096 9.408-35.52 23.168-46.080 41.216s-15.808 37.568-15.808 58.368c0 18.944 4.288 36.032 12.928 51.328s21.696 28.032 39.232 38.4c13.568 8.064 37.184 16.64 70.976 25.728 33.728 9.088 55.616 15.808 65.408 20.096 15.424 6.592 26.432 14.656 33.152 24.32 6.656 9.6 10.048 20.928 10.048 33.856 0 12.736-3.52 24.512-10.432 35.328-6.912 10.752-17.472 19.264-31.68 25.408-14.272 6.208-30.656 9.344-49.216 9.344-20.928 0-39.744-4.096-56.448-12.224-16.768-8.192-29.056-18.88-36.992-32.064-7.808-13.248-12.928-30.144-15.104-50.816l-45.952 4.48c0.704 27.648 7.424 52.288 20.16 74.112 12.8 21.888 30.464 38.272 52.928 49.152 22.528 10.816 50.368 16.256 83.712 16.256 26.24 0 49.856-5.376 70.848-16.128 20.992-10.816 37.056-25.856 48.32-45.312 11.2-19.392 16.768-40.064 16.768-62.016 0.064-22.080-4.992-41.664-15.232-58.624z", + "M488 828.736h352v49.28h-352v-49.28z", + "M0 0h241.984v176h-241.984v-176z", + "M30.016 702.016v176h353.984v-49.28h-268.16v-126.72z", + "M0 462.016h115.84v177.984h-115.84v-177.984z", + "M384 232h-353.984v176h85.824v-129.152h268.16z", + "M488 232h352v46.848h-352v-46.848z", + "M345.984 0h352v176h-352v-176z", + "M942.016 232h81.984v176h-81.984v-176z", + "M800 0h224v176h-224v-176z", + "M908.16 462.016h115.84v177.984h-115.84v-177.984z", + "M942.016 702.016h81.984v176h-81.984v-176z", + "M345.984 934.016h352v89.984h-352v-89.984z", + "M800 934.016h224v89.984h-224v-89.984z", + "M0 934.016h241.984v89.984h-241.984v-89.984z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-hillstone" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 478, + "id": 146, + "prevSize": 16, + "code": 59648, + "name": "it-firewall-hillstone" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 164 + }, + { + "icon": { + "paths": [ + "M897.792 96.768c0 54.221-43.955 98.176-98.176 98.176s-98.176-43.955-98.176-98.176c0-54.221 43.955-98.176 98.176-98.176s98.176 43.955 98.176 98.176z", + "M196.416 511.36c0 54.256-43.984 98.24-98.24 98.24s-98.24-43.984-98.24-98.24c0-54.256 43.984-98.24 98.24-98.24s98.24 43.984 98.24 98.24z", + "M899.456 925.888c0 54.186-43.926 98.112-98.112 98.112s-98.112-43.926-98.112-98.112c0-54.186 43.926-98.112 98.112-98.112s98.112 43.926 98.112 98.112z", + "M564.736 272.128c117.312 0 213.696 85.888 232 198.080h193.28c-8.512-97.6-51.264-185.216-115.904-251.52-22.72 14.464-49.6 23.168-78.784 23.168-79.424 0-143.616-62.912-146.944-141.696-22.272-3.712-45.12-5.952-68.608-5.952-66.688 0-129.472 16.128-185.28 44.352l88.192 149.056c25.664-9.6 52.992-15.488 82.048-15.488z", + "M328.96 508.032c0-71.744 32.64-135.168 83.136-178.496l-86.912-146.688c-65.728 51.776-114.752 123.328-139.392 205.44 37.76 26.752 62.656 70.656 62.656 120.384 0 49.28-24.384 92.544-61.376 119.424 25.856 82.944 76.736 154.944 144.512 206.208l87.424-142.464c-54.592-43.072-90.048-109.12-90.048-183.808z", + "M564.8 743.744c-25.792 0-50.176-5.056-73.408-12.672l-89.728 146.432c53.952 25.856 114.24 40.896 178.176 40.896 26.048 0 51.648-2.56 76.48-7.168 0.064-74.624 60.48-134.912 135.104-134.912 28.224 0 54.528 9.024 76.352 23.936 65.984-64.832 110.528-151.040 121.28-247.68h-193.024c-20.736 108.672-116.16 191.168-231.232 191.168z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-ubuntu" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 479, + "id": 145, + "prevSize": 16, + "code": 59649, + "name": "it-server-ubuntu" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 165 + }, + { + "icon": { + "paths": [ + "M275.008 12.032h-275.008v74.624h100.224l-0.064 369.728h74.624l0.064-369.728h100.16z", + "M576.704 158.272l-0.64-42.368c0 0-65.408-8.192-103.488 70.784-1.152 2.368-1.792 4.16-2.816 6.528v-63.808h-144.256v43.584h69.632v283.392h74.624v-212.992c6.144-19.776 19.072-43.072 46.4-56.704 54.4-27.264 60.544-28.416 60.544-28.416z", + "M951.936 419.968c-5.76-0.512-10.176-1.216-14.336-2.112v-284.16h-52.16v243.456c-28.288 30.464-60.736 45.056-87.744 45.056-37.888 0-70.336-18.944-70.336-91.84v-95.552c0-30.016 0.064-50.688 0.384-66.176h1.024v-21.184c0.256-2.496 0.384-5.312 0.704-7.36-0.192 0-0.512 0.064-0.704 0.128v-6.528h-96.32v34.944h44.096c10.88 4.288 18.304 12.352 18.304 48.704v134.848c0 80.896 40.64 103.488 81.216 103.488 17.536 0 31.808-3.648 51.392-16 23.616-13.056 40.448-28.992 57.984-42.816v59.456h3.456l0.192 0.128c0.128-0.064 0.256-0.128 0.448-0.128h92.288v-35.008h-11.584l-18.304-1.344z", + "M349.184 712.128c-22.976 0-44.928 4.928-65.856 14.656-20.928 9.792-38.72 24.832-53.184 45.056 0.448-44.928 6.144-79.552 17.024-103.872 10.88-24.192 25.856-42.752 44.8-55.36 14.528-9.792 31.296-14.656 50.496-14.656 23.872 0 43.968 7.808 60.16 23.552 9.792 9.792 17.344 25.472 22.72 47.168l59.84-4.288c-4.864-34.944-19.648-62.4-44.288-82.112-24.576-19.84-56.192-29.824-94.72-29.824-51.712 0-92.8 17.28-123.392 51.52-34.944 39.424-52.48 102.592-52.48 189.376 0 77.568 15.872 133.312 47.424 167.040 31.68 33.728 72.576 50.752 122.688 50.752 29.376 0 55.68-6.464 78.912-19.264 23.168-12.928 41.344-31.488 54.656-55.68s19.904-50.432 19.904-78.592c0-42.88-14.080-77.888-42.304-104.96-28.16-26.944-62.272-40.512-102.4-40.512zM404.992 937.536c-18.304 18.816-40.128 28.16-65.536 28.16-17.408 0-33.984-4.48-49.792-13.632-15.872-9.088-28.16-22.4-36.992-39.68-8.832-17.344-13.184-35.584-13.184-54.528 0-28.992 9.472-52.416 28.416-70.336 18.88-17.856 41.984-26.752 69.184-26.752 27.392 0 50.112 8.896 68.16 26.752s27.072 42.304 27.072 73.408c0.064 32.384-9.088 57.792-27.328 76.608z", + "M806.72 554.304h-48.96l-223.744 291.136v50.432h212.672v107.584h60.032v-107.584h66.24v-50.432h-66.24v-291.136zM746.688 845.44h-153.472l153.472-202.56v202.56z" + ], + "attrs": [ + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-tru64" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 1, + 1, + 1, + 1, + 1 + ] + } + }, + "attrs": [ + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + } + ], + "properties": { + "order": 480, + "id": 144, + "prevSize": 16, + "code": 59650, + "name": "it-server-tru64" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 166 + }, + { + "icon": { + "paths": [ + "M480.384 654.784l-93.056 165.248h93.056z", + "M0 947.584l70.848-227.584h26.496l76.032 229.056h-27.968l-21.632-69.376h-77.76l-20.416 69.376h-25.6v74.944h1024v-473.984h-1024v397.568zM836.16 663.68c7.232-26.432 17.984-46.784 32.256-61.12s32.256-21.504 53.888-21.504c15.936 0 29.952 3.968 41.92 11.904 12.032 7.936 22.016 19.328 29.824 34.24 7.872 14.912 14.016 33.088 18.496 54.528 4.416 21.44 6.656 50.304 6.656 86.656 0 43.008-3.648 77.696-10.752 104.128-7.168 26.432-17.856 46.784-32.192 61.248-14.272 14.464-32.256 21.632-54.016 21.632-28.672 0-51.2-12.672-67.584-38.016-19.584-30.528-29.376-80.192-29.376-148.992 0.064-43.392 3.712-78.272 10.88-104.704zM605.184 663.68c7.232-26.432 17.984-46.784 32.256-61.12s32.256-21.504 53.888-21.504c15.936 0 29.952 3.968 41.92 11.904 12.032 7.936 22.016 19.328 29.824 34.24 7.872 14.912 14.016 33.088 18.496 54.528 4.416 21.44 6.656 50.304 6.656 86.656 0 43.008-3.648 77.696-10.752 104.128-7.168 26.432-17.856 46.784-32.192 61.248-14.272 14.464-32.256 21.632-54.016 21.632-28.672 0-51.2-12.672-67.584-38.016-19.584-30.528-29.376-80.192-29.376-148.992 0.064-43.392 3.712-78.272 10.88-104.704zM351.424 820.032l135.68-237.504h29.824v237.504h40.128v41.28h-40.128v87.744h-36.48v-87.744h-129.024v-41.28zM303.872 868.032c-3.392-5.376-8.96-9.856-16.768-13.568-4.992-2.368-16-6.080-33.088-11.136s-29.056-9.792-35.904-14.336c-8.896-5.76-15.488-12.8-19.84-21.312s-6.528-17.984-6.528-28.48c0-11.648 2.688-22.4 8-32.448s13.12-17.664 23.296-22.912c10.24-5.184 21.568-7.744 34.112-7.744 13.76 0 25.92 2.688 36.416 8.192 10.56 5.44 18.624 13.504 24.256 24.128s8.704 22.656 9.152 36.032l-23.616 2.24c-1.28-14.528-5.504-25.408-12.864-32.896-7.296-7.36-18.112-11.072-32.384-11.072-14.848 0-25.728 3.392-32.512 10.048-6.784 6.72-10.176 14.784-10.176 24.32 0 8.256 2.432 14.976 7.232 20.288 4.736 5.312 17.088 10.752 37.056 16.32 20.032 5.568 33.664 10.432 41.152 14.656 10.816 6.144 18.816 13.952 24 23.36s7.744 20.224 7.744 32.576c0 12.16-2.816 23.68-8.448 34.432-5.696 10.816-13.824 19.2-24.384 25.216-10.624 6.016-22.592 9.024-35.84 9.024-16.832 0-30.912-3.072-42.304-9.152-11.328-6.016-20.288-15.104-26.688-27.264-6.464-12.096-9.856-25.856-10.24-41.152l23.168-2.496c1.088 11.456 3.648 20.8 7.68 28.16 4.032 7.296 10.24 13.248 18.688 17.792 8.448 4.48 17.92 6.72 28.544 6.72 9.344 0 17.664-1.664 24.832-5.12s12.544-8.128 16.064-14.144c3.52-6.016 5.248-12.544 5.248-19.648-0-6.976-1.728-13.248-5.056-18.624z", + "M922.304 918.336c16.768 0 30.784-9.984 42.24-30.016s17.152-60.032 17.152-120c0-60.288-5.696-100.416-17.152-120.256s-25.6-29.76-42.688-29.76c-16.768 0-30.144 8.768-40.128 26.24-12.544 22.336-18.88 63.552-18.88 123.776s5.696 100.16 17.152 120.128 25.472 29.888 42.304 29.888z", + "M83.584 744.064c-2.368 14.656-5.696 29.248-10.048 43.776l-20.416 67.2h62.976l-19.392-63.424c-5.888-19.328-10.24-35.2-13.12-47.552z", + "M691.328 918.336c16.768 0 30.784-9.984 42.24-30.016s17.152-60.032 17.152-120c0-60.288-5.696-100.416-17.152-120.256s-25.6-29.76-42.688-29.76c-16.768 0-30.144 8.768-40.128 26.24-12.544 22.336-18.88 63.552-18.88 123.776s5.696 100.16 17.152 120.128 25.472 29.888 42.304 29.888z", + "M0 0v510.016h1024v-510.016h-1024zM106.88 458.816h-53.824v-406.912h53.824v406.912zM494.784 393.984c-8.064 16.384-17.984 28.992-29.824 37.888s-26.688 15.616-44.608 20.16c-17.792 4.544-39.68 6.784-65.6 6.784h-155.2v-406.912h152.704c31.104 0 56 4.096 74.816 12.352 18.752 8.256 33.472 20.928 44.096 38.016 10.624 17.152 16 35.008 16 53.696 0 17.408-4.736 33.792-14.144 49.152s-23.68 27.776-42.752 37.248c24.576 7.232 43.52 19.52 56.768 36.928s19.84 37.952 19.84 61.632c-0.064 19.008-4.032 36.672-12.096 53.056zM967.616 458.816h-51.904v-340.608l-118.272 340.608h-48.576l-117.632-346.432v346.432h-51.904v-406.912h81.088l96.32 288.128c8.896 26.816 15.36 46.912 19.456 60.224 4.608-14.784 11.84-36.544 21.632-65.28l97.408-283.136h72.448v406.976z", + "M407.040 277.696c-13.76-4.544-33.6-6.784-59.52-6.784h-94.080v139.904h101.312c17.344 0 29.568-0.64 36.608-1.92 12.416-2.24 22.784-5.888 31.104-11.072s15.168-12.736 20.544-22.656c5.376-9.92 8.064-21.312 8.064-34.304 0-15.168-3.904-28.352-11.648-39.552-7.808-11.2-18.56-19.072-32.384-23.616z", + "M392.768 218.176c13.696-4.032 24-10.816 30.912-20.288s10.432-21.312 10.432-35.52c0-13.504-3.264-25.344-9.728-35.648s-15.68-17.344-27.712-21.12-32.64-5.696-61.952-5.696h-81.28v122.944h88c23.872 0 40.96-1.536 51.328-4.672z" + ], + "attrs": [ + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-sever-as400" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + } + }, + "attrs": [ + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + }, + { + "fill": "rgb(94, 135, 183)" + } + ], + "properties": { + "order": 481, + "id": 143, + "prevSize": 16, + "code": 59651, + "name": "it-sever-as400" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 167 + }, + { + "icon": { + "paths": [ + "M284.032 408.768h454.848v45.44h-454.848v-45.44z", + "M284.032 573.248h454.848v45.504h-454.848v-45.504z", + "M284.032 223.296h143.488v45.504h-143.488v-45.504z", + "M284.032 737.664h454.848v45.504h-454.848v-45.504z", + "M1021.632 104.704c-10.88-59.648-62.848-104.704-125.632-104.704h-768c-70.848 0-128 57.088-128 128v768.064c0 55.808 35.712 102.592 85.312 120.192v3.904h12.736c9.664 2.304 19.584 3.84 29.952 3.84h768c70.784 0 128-57.088 128-127.936v-791.36h-2.368zM833.344 952.896h-671.808v-881.792h671.872v881.792z" + ], + "attrs": [ + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-fileserver" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 3, + 3, + 3, + 3, + 3 + ] + } + }, + "attrs": [ + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + } + ], + "properties": { + "order": 482, + "id": 142, + "prevSize": 16, + "code": 59652, + "name": "it-other-fileserver" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 168 + }, + { + "icon": { + "paths": [ + "M867.776 351.488c-7.104-1.92-20.352-2.816-39.616-2.816h-81.984v114.624h82.88c27.456 0 46.912-5.12 58.432-15.296s17.344-24.576 17.344-43.072c0-13.376-3.456-24.896-10.176-34.432-6.912-9.6-15.872-15.936-26.88-19.008z", + "M896 0h-768c-70.784 0-128 57.152-128 128v768.064c0 70.784 57.216 127.936 128 127.936h768c70.848 0 128-57.152 128-127.936v-768.064c0-70.848-57.152-128-128-128zM332.224 589.184c-9.792 15.040-23.808 26.816-42.112 35.2s-38.912 12.608-61.824 12.608c-29.056 0-53.312-4.224-72.96-12.736-19.584-8.448-35.008-21.12-46.080-38.144-11.2-17.024-17.024-36.224-17.6-57.6l40-3.52c1.92 16 6.336 29.184 13.248 39.424 6.912 10.304 17.664 18.624 32.256 24.96 14.592 6.4 30.976 9.472 49.216 9.472 16.192 0 30.464-2.368 42.88-7.168s21.632-11.456 27.712-19.84c6.016-8.384 9.088-17.472 9.088-27.456 0-10.048-2.88-18.88-8.768-26.368s-15.552-13.76-28.928-18.88c-8.576-3.328-27.648-8.512-57.088-15.616-29.504-7.104-50.112-13.76-61.952-20.032-15.296-8-26.688-17.984-34.24-29.888-7.488-11.84-11.2-25.152-11.2-39.872 0-16.192 4.608-31.296 13.76-45.376 9.216-14.080 22.592-24.768 40.256-32s37.248-10.944 58.816-10.944c23.808 0 44.736 3.84 62.848 11.456 18.176 7.68 32.128 18.944 41.92 33.792s15.040 31.744 15.744 50.56l-40.64 3.008c-2.176-20.288-9.6-35.584-22.208-45.952-12.608-10.304-31.232-15.552-55.872-15.552-25.664 0-44.352 4.672-56.128 14.144-11.712 9.408-17.6 20.736-17.6 33.984 0 11.52 4.16 20.992 12.48 28.416 8.128 7.424 29.504 15.040 64 22.848s58.112 14.592 70.976 20.416c18.688 8.576 32.448 19.52 41.344 32.704s13.312 28.544 13.312 45.696c0 17.088-4.864 33.152-14.656 48.256zM621.44 631.488l-37.44-97.088h-134.080l-35.2 97.152h-45.12l123.2-320.768h45.696l131.264 320.704h-48.32zM922.432 472.832c-17.344 18.88-48.704 28.288-94.080 28.288h-82.24v130.368h-42.432v-320.704h120.96c21.312 0 37.568 1.024 48.832 3.072 15.744 2.624 28.928 7.616 39.552 14.976 10.688 7.36 19.264 17.664 25.728 30.912s9.728 27.84 9.728 43.776c0 27.328-8.64 50.368-26.048 69.312z", + "M514.688 344.512c-4.096 20.544-9.856 40.96-17.28 61.248l-35.2 94.080h108.672l-33.472-88.832c-10.24-27.008-17.792-49.152-22.72-66.496z" + ], + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-sapccms" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 5, + 5, + 5 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "properties": { + "order": 483, + "id": 141, + "prevSize": 16, + "code": 59653, + "name": "it-other-sapccms" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 169 + }, + { + "icon": { + "paths": [ + "M896 0h-768c-70.848 0-128 57.088-128 128v768.064c0 70.784 57.152 127.936 128 127.936h768c70.848 0 128-57.152 128-127.936v-768.064c0-70.912-57.152-128-128-128zM394.688 784.64v13.888h-224.832v-13.888c69.312-13.888 82.24-22.72 118.848-111.872l214.976-504.384 11.904-4.928 66.368 183.296c45.568 123.904 90.24 247.68 127.936 342.848 24.64 60.608 34.752 78.528 76.8 89.088v19.84h-196.736v-13.888c56.448-7.872 77.312-13.888 77.312-37.632 0-25.728-29.76-102.976-66.496-194.112h-228.8c-9.92 18.752-59.456 152.512-59.456 183.168 0 33.664 26.688 39.68 82.176 48.576z", + "M495.808 255.616h-1.92c-39.68 88.128-78.336 182.272-110.016 265.472h208l-96.064-265.472z" + ], + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-activedirectory" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 5, + 5 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "properties": { + "order": 484, + "id": 140, + "prevSize": 16, + "code": 59654, + "name": "it-other-activedirectory" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 170 + }, + { + "icon": { + "paths": [ + "M896 1024c70.784 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M896 0h-768c-70.848 0-128 57.152-128 128v768c0 70.848 57.152 128 128 128h418.048l477.952-480v-416c0-70.848-57.216-128-128-128zM401.152 484.544c-12.416 19.904-30.272 35.328-53.568 46.4s-49.536 16.576-78.656 16.576c-36.928 0-67.904-5.568-92.864-16.704s-44.544-27.968-58.752-50.304c-14.208-22.4-21.696-47.744-22.4-75.968l50.944-4.608c2.432 21.12 8 38.464 16.832 52.032 8.832 13.504 22.528 24.512 41.088 32.832 18.56 8.384 39.424 12.544 62.656 12.544 20.608 0 38.784-3.2 54.592-9.536 15.744-6.336 27.52-15.040 35.2-26.112 7.68-11.008 11.52-23.104 11.52-36.16 0-13.312-3.712-24.832-11.136-34.752-7.424-9.856-19.712-18.176-36.736-24.96-10.944-4.416-35.2-11.264-72.64-20.608-37.504-9.216-63.744-18.048-78.784-26.304-19.52-10.56-34.048-23.68-43.584-39.296s-14.336-33.216-14.336-52.672c0-21.312 5.824-41.28 17.536-59.84s28.736-32.64 51.2-42.24c22.464-9.6 47.424-14.4 74.88-14.4 30.272 0 56.96 5.056 80.064 15.104 23.104 10.112 40.896 24.96 53.312 44.544s19.136 41.92 20.032 66.688l-51.776 4.032c-2.752-26.752-12.16-46.912-28.224-60.544s-39.808-20.48-71.104-20.48c-32.704 0-56.448 6.208-71.424 18.624-14.976 12.352-22.464 27.328-22.464 44.8 0 15.168 5.312 27.712 15.872 37.44 10.432 9.792 37.504 19.84 81.408 30.144s73.984 19.264 90.368 26.944c23.744 11.328 41.28 25.664 52.608 43.072 11.328 17.472 17.024 37.504 17.024 60.16 0 22.464-6.272 43.648-18.688 63.552zM537.536 540.288h-50.048v-306.112h50.112v306.112zM537.536 177.408h-50.048v-59.712h50.112v59.712zM662.848 540.288h-50.112v-422.592h50.112v422.592zM811.904 540.288h-57.152v-59.072h57.152v59.072zM970.24 540.288h-57.152v-59.072h57.152v59.072z" + ], + "attrs": [ + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-sliverstream" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 3, + 3 + ] + } + }, + "attrs": [ + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + } + ], + "properties": { + "order": 485, + "id": 139, + "prevSize": 16, + "code": 59655, + "name": "it-app-sliverstream" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 171 + }, + { + "icon": { + "paths": [ + "M896 1024c70.784 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M281.344 159.488c-6.016 31.296-14.464 62.336-25.408 93.184l-51.776 143.104h159.744l-49.152-135.104c-14.976-41.024-26.176-74.752-33.408-101.184z", + "M896 0h-768c-70.848 0-128 57.152-128 128v768c0 70.848 57.152 128 128 128h418.048l477.952-480v-416c0-70.848-57.216-128-128-128zM438.144 596.032l-54.976-147.712h-196.992l-51.712 147.712h-66.24l180.928-487.808h67.136l192.832 487.808h-70.976zM891.328 531.712c-14.4 22.912-35.008 40.832-61.888 53.568s-57.216 19.136-90.816 19.136c-42.624 0-78.4-6.464-107.2-19.328s-51.392-32.192-67.776-58.048-25.024-55.104-25.856-87.68l58.816-5.312c2.752 24.384 9.28 44.416 19.456 60.032 10.112 15.68 25.92 28.288 47.36 37.952s45.504 14.464 72.32 14.464c23.744 0 44.736-3.648 62.976-10.944 18.176-7.296 31.744-17.344 40.64-30.144 8.896-12.736 13.376-26.688 13.376-41.728 0-15.296-4.288-28.672-12.864-40.064s-22.656-20.992-42.432-28.8c-12.608-5.12-40.576-13.056-83.904-23.808-43.2-10.816-73.536-20.928-90.88-30.528-22.528-12.16-39.296-27.264-50.304-45.376-11.072-18.048-16.576-38.336-16.576-60.736 0-24.64 6.784-47.68 20.224-69.056 13.504-21.376 33.28-37.632 59.2-48.768 25.856-11.072 54.656-16.64 86.464-16.64 34.88 0 65.664 5.824 92.352 17.472s47.168 28.8 61.568 51.392c14.336 22.656 22.080 48.256 23.104 76.864l-59.776 4.672c-3.264-30.848-14.144-54.144-32.64-69.888-18.56-15.744-45.952-23.616-82.112-23.616-37.76 0-65.216 7.168-82.432 21.44-17.28 14.272-25.856 31.552-25.856 51.712 0 17.536 6.144 32 18.304 43.264 12.032 11.328 43.328 22.912 94.016 34.752 50.688 11.904 85.44 22.272 104.32 31.104 27.392 13.12 47.616 29.632 60.672 49.728 13.12 20.032 19.648 43.2 19.648 69.376 0 26.048-7.232 50.56-21.504 73.536z" + ], + "attrs": [ + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-oracleas" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 3, + 3, + 3 + ] + } + }, + "attrs": [ + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + }, + { + "fill": "rgb(98, 141, 194)" + } + ], + "properties": { + "order": 486, + "id": 138, + "prevSize": 16, + "code": 59656, + "name": "it-app-oracleas" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 172 + }, + { + "icon": { + "paths": [ + "M760 253.312c56.896 61.44 89.984 67.072 89.984 67.072s153.984-208.704 153.984-219.904-3.84-44.736-12.8-55.872c-9.28-11.264-16.576-16.832-49.6-18.688s-234.88 106.176-234.88 106.176-3.84 59.648 53.312 121.216z", + "M842.24 386.944c0 0-46.656-7.872-126.784-94.656-80.32-86.784-75.2-170.944-75.2-170.944s40.832-21.888 94.080-48.768c-70.4-38.464-149.632-62.336-235.072-62.336-84.864 0-164.8 21.632-234.816 59.648-36.8-16.96-133.056-60.992-147.584-66.496-17.984-6.912-69.632-4.608-87.68 20.48-17.984 25.088-4.48 84.48-4.48 84.48l80.448 98.368c-65.664 85.824-105.152 193.344-105.152 310.4 0 280.128 223.488 506.88 499.264 506.88s499.264-226.752 499.264-506.88c0-91.776-25.792-176.576-67.84-250.944-46.72 64.32-88.448 120.768-88.448 120.768z" + ], + "attrs": [ + { + "fill": "rgb(93, 134, 183)" + }, + { + "fill": "rgb(93, 134, 183)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-freeBSD" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 2, + 2 + ] + } + }, + "attrs": [ + { + "fill": "rgb(93, 134, 183)" + }, + { + "fill": "rgb(93, 134, 183)" + } + ], + "properties": { + "order": 487, + "id": 137, + "prevSize": 16, + "code": 59657, + "name": "it-server-freeBSD" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 173 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M331.52 426.24c10.368 0 19.008-4.992 26.048-14.976s10.56-30.016 10.56-60.032c0-30.144-3.52-50.24-10.56-60.096s-15.808-14.912-26.304-14.912c-10.368 0-18.624 4.352-24.768 13.12-7.744 11.2-11.648 31.808-11.648 61.888s3.52 50.112 10.56 60.032 15.744 14.976 26.112 14.976z", + "M526.208 152.192c-18.112 0-32.512 7.68-43.328 22.976-13.568 19.52-20.288 55.616-20.288 108.288s6.144 87.68 18.496 105.088c12.288 17.472 27.456 26.176 45.568 26.176s33.28-8.768 45.568-26.24c12.416-17.536 18.496-52.48 18.496-105.024 0-52.8-6.144-87.872-18.496-105.216-12.288-17.344-27.584-26.048-46.016-26.048z", + "M896 0h-768c-70.848 0-128 57.088-128 128v768c0 70.848 57.152 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM278.464 298.944c4.48-13.248 11.072-23.424 19.904-30.592s19.84-10.752 33.216-10.752c9.856 0 18.496 1.984 25.856 5.952s13.504 9.664 18.368 17.152 8.64 16.512 11.392 27.264 4.096 25.152 4.096 43.328c0 21.504-2.24 38.848-6.656 52.032s-11.072 23.36-19.84 30.592-19.904 10.816-33.28 10.816c-17.664 0-31.552-6.336-41.6-19.008-12.16-15.232-18.176-40.064-18.176-74.496 0-21.632 2.24-39.104 6.72-52.288zM126.528 441.6c-0.192-5.376 0.704-10.624 2.624-15.616 3.072-8.256 8-16.384 14.784-24.384s16.576-17.28 29.44-27.776c19.904-16.32 33.344-29.248 40.384-38.784s10.496-18.56 10.496-27.072c0-8.896-3.2-16.448-9.536-22.592s-14.656-9.216-24.96-9.216c-10.816 0-19.52 3.264-25.984 9.728s-9.792 15.616-9.92 27.136l-23.104-2.368c1.6-17.28 7.552-30.4 17.856-39.424s24.192-13.568 41.6-13.568c17.6 0 31.488 4.864 41.728 14.656s15.36 21.824 15.36 36.224c0 7.36-1.472 14.528-4.48 21.632s-7.936 14.464-14.848 22.336-18.56 18.56-34.688 32.256c-13.504 11.328-22.144 19.008-25.984 23.040s-6.976 8.064-9.472 12.16h89.856v21.632h-121.152zM477.696 928.64h-259.52v-347.84h251.456v41.088h-205.44v106.496h192.384v40.832h-192.384v118.4h213.504v41.024zM619.648 374.592c-7.744 23.104-19.328 40.96-34.688 53.568s-34.816 18.88-58.304 18.88c-30.912 0-55.168-11.072-72.832-33.28-21.184-26.624-31.744-70.080-31.744-130.304 0-37.888 3.904-68.416 11.712-91.52s19.392-40.96 34.752-53.504c15.424-12.544 34.752-18.816 58.112-18.816 17.216 0 32.32 3.456 45.312 10.368 12.992 6.976 23.68 16.96 32.064 30.016 8.512 13.056 15.168 28.928 19.968 47.68 4.8 18.688 7.168 44.032 7.168 75.776 0 37.632-3.776 68.032-11.52 91.136zM881.472 155.712c-20.416 21.696-40.64 50.624-60.672 86.656s-35.584 73.088-46.528 111.104c-7.872 26.816-12.864 56.192-15.104 88.128h-40.448c0.448-25.216 5.376-55.744 14.848-91.456s23.040-70.208 40.832-103.36c17.664-33.152 36.544-61.12 56.512-83.904h-156.992v-37.76h207.552v30.592z" + ], + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-exchange2007" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 7, + 7, + 7, + 7 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "properties": { + "order": 488, + "id": 136, + "prevSize": 16, + "code": 59658, + "name": "it-app-exchange2007" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 174 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M331.52 426.24c10.368 0 19.008-4.992 26.048-14.976s10.56-30.016 10.56-60.032c0-30.144-3.52-50.24-10.56-60.096s-15.808-14.912-26.304-14.912c-10.368 0-18.624 4.352-24.768 13.12-7.744 11.2-11.648 31.808-11.648 61.888s3.52 50.112 10.56 60.032 15.744 14.976 26.112 14.976z", + "M526.208 152.192c-18.112 0-32.512 7.68-43.328 22.976-13.568 19.52-20.288 55.616-20.288 108.288s6.144 87.68 18.496 105.088c12.288 17.472 27.456 26.176 45.568 26.176s33.28-8.768 45.568-26.24c12.416-17.536 18.496-52.48 18.496-105.024 0-52.8-6.144-87.872-18.496-105.216-12.288-17.344-27.584-26.048-46.016-26.048z", + "M896 0h-768c-70.848 0-128 57.088-128 128v768c0 70.848 57.152 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM278.464 298.944c4.48-13.248 11.072-23.424 19.904-30.592s19.84-10.752 33.216-10.752c9.856 0 18.496 1.984 25.856 5.952s13.504 9.664 18.368 17.152 8.64 16.512 11.392 27.264 4.096 25.152 4.096 43.328c0 21.504-2.24 38.848-6.656 52.032s-11.072 23.36-19.84 30.592-19.904 10.816-33.28 10.816c-17.664 0-31.552-6.336-41.6-19.008-12.16-15.232-18.176-40.064-18.176-74.496 0-21.632 2.24-39.104 6.72-52.288zM126.528 441.6c-0.192-5.376 0.704-10.624 2.624-15.616 3.072-8.256 8-16.384 14.784-24.384s16.576-17.28 29.44-27.776c19.904-16.32 33.344-29.248 40.384-38.784s10.496-18.56 10.496-27.072c0-8.896-3.2-16.448-9.536-22.592s-14.656-9.216-24.96-9.216c-10.816 0-19.52 3.264-25.984 9.728s-9.792 15.616-9.92 27.136l-23.104-2.368c1.6-17.28 7.552-30.4 17.856-39.424s24.192-13.568 41.6-13.568c17.6 0 31.488 4.864 41.728 14.656s15.36 21.824 15.36 36.224c0 7.36-1.472 14.528-4.48 21.632s-7.936 14.464-14.848 22.336-18.56 18.56-34.688 32.256c-13.504 11.328-22.144 19.008-25.984 23.040s-6.976 8.064-9.472 12.16h89.856v21.632h-121.152zM477.696 928.64h-259.52v-347.84h251.456v41.088h-205.44v106.496h192.384v40.832h-192.384v118.4h213.504v41.024zM619.648 374.592c-7.744 23.104-19.328 40.96-34.688 53.568s-34.816 18.88-58.304 18.88c-30.912 0-55.168-11.072-72.832-33.28-21.184-26.624-31.744-70.080-31.744-130.304 0-37.888 3.904-68.416 11.712-91.52s19.392-40.96 34.752-53.504c15.424-12.544 34.752-18.816 58.112-18.816 17.216 0 32.32 3.456 45.312 10.368 12.992 6.976 23.68 16.96 32.064 30.016 8.512 13.056 15.168 28.928 19.968 47.68 4.8 18.688 7.168 44.032 7.168 75.776 0 37.632-3.776 68.032-11.52 91.136zM850.88 418.112c-20.416 19.456-46.272 29.184-77.44 29.184-28.096 0-51.52-8.384-70.144-25.152-18.56-16.768-29.184-38.528-31.808-65.216l39.36-5.248c4.48 22.336 12.16 38.4 23.040 48.192 10.88 9.856 24.128 14.784 39.744 14.784 18.496 0 34.112-6.4 46.848-19.264s19.2-28.672 19.2-47.616c0-18.112-5.888-33.024-17.664-44.736-11.84-11.712-26.816-17.6-45.056-17.6-7.424 0-16.704 1.472-27.776 4.352l4.352-34.56c2.624 0.256 4.672 0.448 6.336 0.448 16.768 0 31.872-4.352 45.312-13.12 13.376-8.768 20.096-22.272 20.096-40.448 0-14.464-4.928-26.432-14.656-35.904s-22.4-14.208-37.824-14.208c-15.36 0-28.096 4.8-38.336 14.464s-16.768 24.064-19.712 43.328l-39.36-6.976c4.8-26.432 15.744-46.848 32.832-61.376s38.336-21.76 63.68-21.76c17.472 0 33.536 3.776 48.32 11.264 14.72 7.552 25.984 17.792 33.792 30.72s11.712 26.752 11.712 41.344c0 13.824-3.712 26.496-11.2 37.824-7.36 11.392-18.432 20.416-33.024 27.136 18.944 4.352 33.664 13.44 44.16 27.264 10.496 13.76 15.744 30.976 15.744 51.712 0.064 27.968-10.112 51.712-30.528 71.168z" + ], + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-exchange2003" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 7, + 7, + 7, + 7 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "properties": { + "order": 489, + "id": 135, + "prevSize": 16, + "code": 59659, + "name": "it-app-exchange2003" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 175 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M896 0h-768c-70.848 0-128 57.088-128 128v768c0 70.848 57.152 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM874.048 389.504c-21.312 28.352-106.432 118.784-124.096 120.576-17.728 1.728-97.536 3.52-140.032 5.312-42.624 1.792-92.288-1.792-92.288-1.792s-53.184-14.144-88.704-90.432c-17.984-38.656-31.936-104.576-37.248-113.472-5.312-8.832-5.312-8.832-5.312-8.832s-42.56 26.56-60.288 51.392-42.048 103.552-56.768 122.368c-14.848 19.072-38.976 38.976-72.704 46.080s-125.952-1.728-125.952-1.728 12.416-46.144 67.392-129.472c54.976-83.392 136.576-148.8 179.136-148.992 39.616-0.192 75.776-0.768 138.368 0 62.144 0.768 124.16 14.208 141.888 51.456 17.664 37.248 60.224 177.344 60.224 177.344s35.456-109.952 56.832-148.992c21.248-38.976 44.288-67.392 81.472-78.016 37.312-10.624 133.12-10.624 133.12-10.624l47.872 7.104c0-0.064-81.664 122.304-102.912 150.72z" + ], + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-dotnet" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 7, + 7 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "properties": { + "order": 490, + "id": 134, + "prevSize": 16, + "code": 59660, + "name": "it-app-dotnet" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 176 + }, + { + "icon": { + "paths": [ + "M820.37 677.303c-13.605 0-24.795 5.193-33.646 15.726-8.85 10.459-13.312 26.331-13.312 47.762 0 21.65 4.389 37.742 13.166 48.128s19.822 15.579 33.134 15.579c13.458 0 24.503-5.12 33.061-15.36 8.631-10.313 13.019-26.697 13.019-49.298 0-21.065-4.389-36.791-13.093-47.177-8.704-10.24-19.456-15.36-32.329-15.36z", + "M888.027 0h-752.055c-75.557 0-135.973 60.416-135.973 135.973v751.982c0 75.703 60.416 136.046 135.973 136.046h751.982c75.703 0 136.046-60.343 136.046-135.973v-752.055c0-75.557-60.343-135.973-135.973-135.973zM107.52 141.385h103.863v253.294h162.085v82.725h-265.947v-336.018zM350.574 831.634c-24.869 23.918-59.173 35.84-103.058 35.84-39.131 0-70.729-9.947-94.866-29.769-29.696-24.576-44.471-56.832-44.471-96.695 0-37.157 12.507-67.73 37.595-91.794s58.953-36.133 101.522-36.133c48.786 0 85.577 14.117 110.519 42.423 19.968 22.821 30.062 50.761 30.062 84.114 0 37.449-12.434 68.096-37.303 92.014zM573.221 861.989h-82.798l-101.23-243.419h97.061l47.25 154.258 49.006-154.258h94.135l-103.424 243.419zM628.517 466.944c-19.895 10.606-48.347 15.945-85.504 15.945-32.183 0-57.563-4.535-76.069-13.678-18.505-8.997-33.792-23.479-46.007-43.301-12.142-19.749-18.213-43.008-18.213-69.778 0-38.107 12.215-68.827 36.571-92.379 24.43-23.552 58.075-35.255 101.010-35.255 34.889 0 62.391 5.266 82.505 15.799 20.187 10.533 35.547 25.819 46.080 45.787 10.606 20.041 15.872 46.080 15.872 78.19v10.533h-187.099c1.682 14.994 5.705 26.185 12.142 33.499 8.997 10.533 20.773 15.799 35.255 15.799 9.216 0 17.92-2.267 26.112-6.875 5.047-2.926 10.533-8.046 16.311-15.36l91.941 8.485c-14.043 24.503-31.013 41.984-50.907 52.59zM922.258 831.634c-24.869 23.918-59.246 35.84-103.058 35.84-39.058 0-70.729-9.947-94.866-29.769-29.623-24.576-44.471-56.832-44.471-96.695 0-37.157 12.581-67.73 37.669-91.794 25.015-24.064 58.88-36.133 101.522-36.133 48.786 0 85.577 14.117 110.519 42.423 19.968 22.821 29.989 50.761 29.989 84.114-0.073 37.449-12.507 68.096-37.303 92.014zM984.942 477.403h-93.696v-133.851c0-15.287-2.853-26.112-8.485-32.402-5.632-6.363-13.605-9.509-23.845-9.509-11.264 0-20.407 4.315-27.502 12.873-7.022 8.558-10.533 23.918-10.533 46.080v116.882h-93.33v-243.493h86.894v39.643c13.019-16.165 26.112-27.721 39.424-34.743s29.477-10.459 48.567-10.459c25.893 0 46.080 7.68 60.635 23.040s21.87 39.058 21.87 71.168v154.77z", + "M575.195 295.424c-7.826-7.753-18.213-11.703-31.013-11.703-14.848 0-26.697 5.851-35.547 17.627-5.632 7.314-9.216 18.286-10.752 32.768h91.941c-1.902-17.993-6.656-30.939-14.629-38.693z", + "M248.686 677.303c-13.605 0-24.869 5.193-33.719 15.726-8.85 10.459-13.312 26.331-13.312 47.762 0 21.65 4.389 37.742 13.166 48.128s19.822 15.579 33.134 15.579c13.458 0 24.43-5.12 33.134-15.36 8.631-10.313 12.946-26.697 12.946-49.298 0-21.065-4.389-36.791-13.093-47.177-8.631-10.24-19.383-15.36-32.256-15.36z" + ], + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-lenovo" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 5, + 5, + 5, + 5 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "properties": { + "order": 491, + "id": 133, + "prevSize": 16, + "code": 59661, + "name": "it-other-lenovo" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 177 + }, + { + "icon": { + "paths": [ + "M361.536 749.12l-107.008 274.88h58.88l22.656-62.464h109.888l24 62.464h60.352l-110.080-274.88h-58.688zM353.152 915.264l37.12-102.016 37.888 102.016h-75.008z", + "M616.768 751.36h-55.488v272.64h193.472v-46.336h-137.984z", + "M957.632 901.184c0 21.76-0.832 37.312-2.432 46.656s-6.464 17.344-14.464 23.68c-8 6.528-19.904 9.664-35.648 9.664-15.488 0-27.776-3.392-36.608-10.176-9.024-6.784-14.656-15.872-17.024-27.136-1.344-6.976-2.048-22.336-2.048-45.952v-148.864h-55.488v146.624c0 30.72 1.792 54.016 5.44 69.76 2.496 10.624 7.68 20.8 15.552 30.464 7.872 9.728 18.56 17.6 32.192 23.616 13.504 6.080 33.408 9.152 59.712 9.152 21.76 0 39.36-2.816 52.864-8.384 13.504-5.504 24.32-12.992 32.32-22.4 8.128-9.344 13.632-20.864 16.64-34.496s4.48-36.928 4.48-69.952v-144.384h-55.488v152.128z", + "M1006.016 643.392c11.328-42.304 17.984-86.592 17.984-132.416 0-282.688-230.336-510.976-513.024-510.976s-510.976 228.288-510.976 510.976c0 181.504 94.4 340.992 236.544 432.256v-171.904c0-70.656 57.344-128 128-128h108.224v-19.712c0-19.968-8.384-70.848-42.24-80.448h66.368c36.416 0 44.224 63.68 44.224 84.48v15.68h464.896zM859.008 444.608v-88.512l122.752 122.688-122.752 122.688v-88.448h-164.928c-19.968 0-70.912 10.432-80.448 44.224v-66.368c0-36.416 61.632-46.272 82.496-46.272h162.88zM408.384 468.736c0 36.416-61.632 44.224-82.496 44.224h-162.944v88.512l-122.688-122.688 122.688-122.688v88.512h166.976c19.968 0 68.928-8.384 78.464-42.24v66.368zM496.896 478.784h-66.368c33.856-9.536 42.24-60.544 42.24-80.448v-164.992h-88.512l122.688-122.688 122.688 122.688h-88.448v162.944c0 20.864-7.872 82.496-44.288 82.496z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-router-alu7750" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 492, + "id": 132, + "prevSize": 16, + "code": 59662, + "name": "it-router-alu7750" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 178 + }, + { + "icon": { + "paths": [ + "M558.656 403.584c-10.624-4.096-27.776-6.144-51.328-6.144h-63.040v229.12h64c19.776 0 35.264-1.792 46.592-5.504 11.264-3.712 20.16-8.896 26.88-15.552 9.344-9.408 16.768-22.080 22.016-37.952 5.184-15.872 7.808-35.136 7.808-57.856 0-31.36-5.056-55.424-15.424-72.32-10.304-16.768-22.784-28.032-37.504-33.792z", + "M888 0h-752c-75.648 0-136 60.352-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM337.984 661.952h-40.768l-157.504-235.648v235.648h-38.016v-299.904h40.704l157.504 235.52v-235.52h38.080v299.904zM644.544 570.88c-5.312 17.664-12.096 32.192-20.416 43.712-8.384 11.584-17.408 20.608-27.392 27.264-9.856 6.656-21.76 11.648-35.776 14.976-13.952 3.456-30.016 5.12-48.064 5.12h-108.288v-299.904h103.36c23.232 0 41.088 1.472 53.312 4.352 17.216 3.904 31.872 11.072 44.032 21.44 15.744 13.376 27.648 30.464 35.456 51.2 7.808 20.864 11.776 44.608 11.776 71.36-0.064 22.784-2.688 42.944-8 60.48zM918.656 622.4c-9.216 14.144-22.272 25.088-39.36 32.96-17.216 7.808-36.416 11.776-57.792 11.776-27.2 0-49.92-4.032-68.16-11.904-18.368-7.936-32.768-19.776-43.2-35.712-10.432-15.872-15.872-33.856-16.448-53.888l37.44-3.264c1.728 14.976 5.824 27.264 12.352 36.864 6.464 9.6 16.448 17.344 30.208 23.296 13.568 5.952 28.864 8.896 46.016 8.896 15.040 0 28.416-2.176 40.064-6.656 11.584-4.48 20.16-10.688 25.792-18.496 5.76-7.872 8.576-16.448 8.576-25.664 0-9.408-2.688-17.664-8.192-24.64-5.44-6.976-14.464-12.928-27.008-17.728-8.064-3.072-25.856-8.064-53.376-14.656-27.648-6.592-46.848-12.864-57.856-18.688-14.4-7.488-25.024-16.768-32-27.904-7.104-11.072-10.56-23.552-10.56-37.312 0-15.104 4.288-29.312 12.928-42.496 8.512-13.184 21.056-23.168 37.632-30.016 16.448-6.784 34.816-10.24 54.976-10.24 22.208 0 41.792 3.52 58.816 10.688 16.96 7.104 30.016 17.664 39.168 31.616 9.088 13.888 14.016 29.696 14.72 47.232l-38.144 2.88c-1.984-18.944-9.024-33.28-20.736-42.944-11.84-9.664-29.248-14.592-52.224-14.592-24 0-41.536 4.416-52.416 13.184-11.008 8.832-16.448 19.392-16.448 31.808 0 10.752 3.84 19.648 11.648 26.624 7.616 6.976 27.52 14.080 59.84 21.376 32.256 7.296 54.4 13.632 66.368 19.136 17.408 8.064 30.272 18.368 38.592 30.72 8.384 12.352 12.544 26.56 12.544 42.624 0 16-4.672 30.976-13.76 45.12z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-nds" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 493, + "id": 131, + "prevSize": 16, + "code": 59663, + "name": "it-other-nds" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 179 + }, + { + "icon": { + "paths": [ + "M766.4 419.136c-9.728 48.512-19.52 97.088-29.248 145.664h80.256c23.488-12.48 30.656-14.336 43.904-38.4 7.232-20.416 14.528-40.832 21.76-61.248-23.552-43.456-48.128-49.856-116.672-46.016z", + "M211.968 419.136c-9.728 48.576-19.52 97.088-29.248 145.664 31.616-2.624 63.232-5.184 94.848-7.744 24.96-12.288 24.448-12.416 36.544-38.336 14.144-27.328 13.376-51.52 7.296-84.288-36.48-5.056-72.96-10.176-109.44-15.296z", + "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM175.488 618.432c-50.24 33.088 24.192 82.88-80.256 84.16v-22.848c19.456-102.144 38.912-204.416 58.368-306.56 113.472-4.544 188.288-3.136 240.704 53.696 7.232 255.232-114.304 122.816-218.816 191.552zM562.048 618.368v-22.976c9.792-51.072 19.52-102.144 29.184-153.28-7.296-7.68-14.592-15.296-21.888-22.976h-80.256c-12.16 66.432-24.32 132.864-36.48 199.232h-65.6c21.888-112.384 43.776-224.768 65.664-337.088h58.368c-2.432 30.592-4.8 61.248-7.296 91.904 71.68-3.072 114.624 4.224 153.28 30.656h-0.128v7.68c-9.6 68.928-19.456 137.92-29.12 206.848h-65.728zM722.56 626.176c-2.368 25.408-4.8 51.072-7.168 76.416h-65.6c19.456-109.76 38.784-219.584 58.24-329.408 89.792-3.072 174.016-1.6 226.24 30.656 53.632 184.896-72.448 186.56-211.712 222.336z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-php" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 494, + "id": 130, + "prevSize": 16, + "code": 59664, + "name": "it-other-php" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 180 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM831.936 262.336c-0.832 0.832-1.792 1.344-2.624 2.176h-10.944c4.48-0.768 9.152-1.472 13.568-2.176zM53.824 351.936c120.96-213.76 428.352-120.384 546.112-256.704h10.88c14.528 20.032 29.184 40 43.712 60.032-21.888-10.56-24.128-21.184-38.208-38.208-23.68 18.24-47.296 36.416-70.976 54.592 1.856 3.648 3.648 7.296 5.376 10.944 18.304 5.44 36.48 10.944 54.72 16.384-182.208-17.024-337.216 0.768-447.872 81.92-38.272 28.032-56.64 72.704-98.304 98.304h-5.44v-27.264zM239.488 362.88c-5.44 1.792-10.944 3.648-16.384 5.44-25.088-8.064-19.264-10.24-32.768-27.328 7.296-12.8 14.592-25.472 21.888-38.272h32.704v11.008c8.512 20.352 2.56 33.408-5.44 49.152zM288.704 510.272h-10.944c-75.712 40.832-229.056-50.432-245.76-109.184 110.528 9.92 119.68 119.36 256.704 103.68v5.504zM294.144 466.56c-31.232 16.768-61.056 29.312-92.8 5.44 54.144 0.96 67.968-11.968 92.8-38.208-1.856-10.944-3.648-21.824-5.44-32.704l16.384 16.32c-3.648 16.384-7.296 32.768-10.944 49.152zM310.528 242.688h-10.944c4.16-0.32 8.32-0.576 12.416-0.832-0.448 0.32-1.024 0.512-1.472 0.832zM414.272 204.416c120.256-2.176 196.544 24.064 283.968 43.712v5.44c-51.008-9.088-102.016-18.176-152.896-27.264-77.76 5.184-155.584 10.368-233.344 15.488 28.48-20.416 66.368-21.12 102.272-37.376zM610.88 379.2v-81.92c19.264 31.68 20.544 47.168 0 81.92zM556.224 390.144v-98.304c23.168 37.76 25.92 55.936 0 98.304zM397.888 433.792h-5.44c-1.856-56.448-3.648-112.832-5.504-169.28 36.8 61.056 18.24 90.24 10.944 169.28zM447.040 401.088c-1.792-43.712-3.648-87.424-5.44-131.072 20.672 36.672 25.216 89.28 5.44 131.072zM501.632 401.024v-114.688c22.208 41.92 14.4 60.928 5.376 114.688h-5.376zM627.392 559.424c-31.872-11.456-82.816-20.224-120.32-32.768 3.648-5.44 7.36-10.88 10.944-16.448h5.504c53.12 1.024 70.72 19.2 109.248 32.832 3.648-16.384 7.296-32.832 10.88-49.152 5.504 21.248 0.128 50.24-16.256 65.536zM665.472 368.256h-5.504v-70.976c13.504 19.968 10.176 43.52 5.504 70.976zM720.128 340.992c-12.736-3.648-25.472-7.296-38.272-10.944l38.272 5.44v5.504zM818.368 395.584c14.4-31.552 10.112-60.224-5.44-87.424 14.592 10.944 29.12 21.888 43.84 32.768-9.92 27.328-12.864 42.112-38.4 54.656zM944 537.536c-7.232-5.44-14.656-10.944-21.824-16.384-10.944-21.824-21.952-43.712-32.832-65.536 14.592 16.384 29.12 32.768 43.712 49.152-1.088-95.232-28.736-165.44-5.44-251.2-1.792-1.792-3.648-3.584-5.44-5.44-30.208 4.736-60.16 9.536-90.24 14.272 26.624-25.984 60.16-33.408 95.68-52.48h16.384v327.616z", + "M212.224 313.664c-3.648 7.232-7.232 14.528-10.88 21.824 10.88 5.504 21.76 10.944 32.704 16.448-4.544-26.688-6.016-25.152-21.824-38.272z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-glassfish" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 495, + "id": 129, + "prevSize": 16, + "code": 59665, + "name": "it-app-glassfish" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 181 + }, + { + "icon": { + "paths": [ + "M708.544 476.096h62.592v64.064h-62.592v-64.064z", + "M888 0h-752c-75.648 0-136 60.352-136 135.936v752.064c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752.064c0-75.584-60.352-135.936-136-135.936zM231.936 349.248h-52.992v315.456h-30.4v-315.456h-53.376v-26.944h136.704v26.944zM383.040 553.152l-9.792 10.304h-80.96v76.992h62.592v-39.040h28.224v38.528c0 16.512-8.128 24.768-24.512 24.768h-70.016c-16.32 0-24.512-8.256-24.512-24.768v-163.392c0-16.512 8.128-24.768 24.512-24.768h70.016c16.32 0 24.512 8.256 24.512 24.768v76.608zM461.568 664.704h-28.608v-342.4h28.672v342.4zM633.344 664.704h-29.12v-186.816l-64.128 1.728v185.088h-29.056v-212.864h29.12v5.952c11.328-1.472 22.784-3.072 34.368-4.608 13.952-1.728 25.472-2.624 34.496-2.624 16.256 0 24.384 7.936 24.384 23.808v190.336zM799.36 553.152l-9.856 10.304h-80.96v76.992h62.592v-39.040h28.224v38.528c0 16.512-8.192 24.768-24.512 24.768h-70.016c-16.384 0-24.512-8.256-24.512-24.768v-163.392c0-16.512 8.128-24.768 24.512-24.768h70.016c16.32 0 24.512 8.256 24.512 24.768v76.608zM924.032 477.44h-37.12v161.6h37.12v25.6h-41.344c-16.32 0-24.512-8.256-24.512-24.768v-162.432h-25.536v-25.6h25.536v-66.304h28.672v66.304h37.12v25.6z", + "M292.288 476.096h62.592v64.064h-62.592v-64.064z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-telnet" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 496, + "id": 128, + "prevSize": 16, + "code": 59666, + "name": "it-other-telnet" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 182 + }, + { + "icon": { + "paths": [ + "M264.576 342.848h-55.296v378.112h53.056c15.488 0 28.032-4.416 37.696-13.312 9.6-8.96 14.464-21.056 14.464-36.544v-278.912c0-14.656-4.608-26.56-13.888-35.712-9.344-9.024-21.312-13.632-36.032-13.632z", + "M888 0h-752c-75.648 0-136 60.352-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM354.304 675.136c0 23.68-7.808 43.136-23.36 58.304s-35.2 22.784-58.88 22.784h-102.656v-448.64h102.592c23.936 0 43.584 7.616 59.072 22.784s23.232 34.624 23.232 58.304v286.464zM609.216 756.224h-27.584l-119.808-329.92v329.92h-37.568v-448.64h29.824l117.504 324.224v-324.16h37.568v448.576zM855.68 443.84h-39.872v-100.992h-96.896v94.656l124.416 149.632c8.192 9.92 12.288 21.12 12.288 33.536v103.744c0 9.344-2.944 17.024-8.768 22.912s-13.44 8.896-22.784 8.896h-112.96c-9.344 0-17.024-2.944-23.040-8.896s-9.024-13.568-9.024-22.912v-113.792h39.808v110.4h96.896v-106.944l-123.84-149.632c-8.576-10.304-12.864-21.696-12.864-34.112v-90.88c0-9.344 3.008-17.024 9.024-22.848 6.080-5.952 13.76-8.96 23.040-8.96h112.96c9.344 0 17.024 3.008 22.784 8.96 5.824 5.888 8.768 13.568 8.768 22.848v104.384z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-dns" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 497, + "id": 127, + "prevSize": 16, + "code": 59667, + "name": "it-other-dns" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 183 + }, + { + "icon": { + "paths": [ + "M888 0h-752c-75.648 0-136 60.352-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM379.328 724.416c0 9.344-3.008 17.024-9.024 22.912-6.016 5.952-13.696 8.896-23.104 8.896h-122.048c-9.344 0-17.024-2.944-22.912-8.896-5.952-5.952-8.896-13.568-8.896-22.912v-416.768h39.872v413.376h106.368v-413.376h39.872v416.768zM600 756.224l-83.392-240.192 5.44-8.064h71.040v-165.12h-102.272v413.376h-39.808v-448.64h150.208c9.344 0 17.024 3.008 22.912 8.96 5.952 5.888 8.896 13.568 8.896 22.848v170.304c0 21.568-14.528 32.384-43.584 32.384-2.88 0-7.040-0.128-12.608-0.448-5.568-0.192-9.6-0.384-12.096-0.384 25.856 71.488 51.584 143.104 77.184 214.976h-41.92zM844.864 756.224h-143.296v-448.64h39.808v413.376h103.488v35.264z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-url" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 498, + "id": 126, + "prevSize": 16, + "code": 59668, + "name": "it-other-url" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 184 + }, + { + "icon": { + "paths": [ + "M4.032 488c0-7.232-2.816-30.4-4.032-43.968v129.984c1.856 20.864 4.032 44.224 4.032 54.016 0 17.472 5.248 33.728 14.016 49.984h237.952c-150.272-38.72-251.968-108.672-251.968-190.016z", + "M0 678.016h1.984c-0.896-9.472-1.28-17.984-1.984-25.984v25.984z", + "M513.984 444.032c282.752 0 512-99.328 512-222.016 0-1.344 0.128-2.624 0-4.032 0-0.704 0-1.344 0-1.984-7.488-119.808-233.984-216-512-216-282.752 0-512 99.328-512 222.016s229.248 222.016 512 222.016z", + "M516.032 494.016c-282.752 0-512-99.328-512-222.016 0-7.232-2.752-30.4-4.032-44.032v137.984c1.856 20.864 4.032 44.288 4.032 54.080 0 122.688 229.248 222.016 512 222.016s512-99.328 512-222.016v-148.032c-0 122.688-229.312 222.016-512 222.016z", + "M776 678.016h238.016c8.768-16.256 14.016-32.512 14.016-49.984v-140.032c0 81.344-101.76 151.296-252.032 190.016z", + "M140.736 932.096c-5.056 19.968-8.768 35.072-11.136 45.312-2.048-9.28-5.376-23.168-9.984-41.792l-49.472-200.128h-41.6v282.624h26.688v-240.64l60.48 240.64h24.96l60.736-236.544v236.544h26.688v-282.624h-37.376l-49.984 196.608z", + "M369.792 818.56c-8.96 18.56-16.576 35.2-22.848 49.92-6.592-15.936-13.632-31.872-21.248-47.808l-41.216-85.184h-33.6l80.512 162.88v119.744h27.648v-119.744l83.392-162.88h-32.128l-40.512 83.072z", + "M592.704 844.032c-9.472-6.784-24.128-13.632-43.904-20.032s-31.488-12.096-36.608-17.984c-4.032-4.608-5.824-9.472-5.824-16 0-7.104 1.536-13.76 5.824-17.984 6.656-6.656 16-9.984 27.84-9.984 11.392 0 19.072 3.776 24.896 9.984 5.632 6.208 9.92 15.872 11.712 30.016l40.96-2.048c-0.704-25.28-7.808-44.864-20.48-60.032-12.8-15.104-31.872-24-57.088-24-15.488 0-28.608 3.648-39.552 9.984-10.944 6.4-19.072 15.808-24.896 28.032-5.824 12.16-8.768 25.984-8.768 40 0 21.76 6.656 38.848 19.008 54.016 8.768 10.752 23.616 20.608 45.376 28.032 16.96 5.76 27.456 9.728 32.192 12.032 6.912 3.392 11.84 7.488 14.656 12.032 2.752 4.544 4.416 9.472 4.416 16 0 10.112-3.712 20.416-10.24 28.032-6.656 7.552-16.192 9.984-29.312 9.984-12.352 0-22.080-3.52-29.312-12.032-7.296-8.512-12.224-21.888-14.656-40l-39.424 5.952c2.688 30.72 11.264 53.952 24.896 70.016s33.152 24 58.56 24c17.472 0 32.128-3.328 43.904-9.984 11.712-6.656 19.968-18.24 26.304-32 6.464-13.76 10.24-28.224 10.24-44.032 0-17.344-3.456-32.192-8.768-44.032-5.376-11.84-12.544-21.184-21.952-27.968z", + "M917.632 724.032h-41.024v272h142.016v-46.016h-100.992z", + "M837.12 921.984c4.864-17.984 7.296-38.272 7.296-62.016 0-44.864-8.896-81.088-26.304-105.984-17.472-24.96-40.448-38.016-70.272-38.016-30.144 0-54.208 13.056-71.744 38.016s-26.304 61.12-26.304 105.984c0 44.992 8.768 79.104 26.304 104 17.472 24.896 40.832 38.016 71.744 38.016 16 0 30.72-4.096 43.904-12.032 16.768 15.36 26.56 23.104 27.84 24 5.888 4.352 11.456 7.488 17.536 9.984l14.656-40c-11.712-5.76-22.208-12.224-32.192-22.016 8.064-12.8 13.888-26.176 17.536-39.936zM799.040 900.032c-2.624 11.904-6.528 21.632-11.712 30.016-12.16-12.48-26.176-21.76-39.488-28.032l-10.24 32c8.512 4.096 16.64 10.624 24.896 17.984-5.248 2.624-10.24 4.032-16.128 4.032-15.68 0-29.248-8.064-39.488-24-10.304-15.936-16.128-39.872-16.128-72 0-31.616 5.824-56.256 16.128-72 10.24-15.744 22.912-24 39.488-24s30.72 8.32 41.024 24 14.656 40.256 14.656 72c-0.064 15.36-0.448 28.096-3.008 40z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-database-mysql" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 499, + "id": 125, + "prevSize": 16, + "code": 59669, + "name": "it-database-mysql" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 185 + }, + { + "icon": { + "paths": [ + "M154.24 298.752h98.048v199.808h-98.048v-199.808z", + "M888 0h-752c-75.648 0-136 60.416-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM292.096 502.016c0 9.344-3.008 17.088-9.024 23.040-6.016 6.080-13.696 9.088-23.040 9.088h-105.792v177.984h-39.808v-448.64h145.6c9.344 0 17.088 3.008 23.104 8.96 6.016 5.888 9.024 13.568 9.024 22.848v206.72zM397.312 712.128h-39.872v-448.64h39.872v448.64zM657.088 712.128h-27.584l-119.808-329.92v329.92h-37.568v-448.64h29.824l117.568 324.288v-324.288h37.568v448.64zM910.144 399.68h-40.128v-100.928h-101.44v378.112h101.44v-155.072h-47.872v-34.432h88v192.96c0 9.344-2.944 17.024-8.896 22.912s-13.568 8.896-22.912 8.896h-117.824c-9.344 0-17.024-2.944-22.912-8.896s-8.896-13.568-8.896-22.912v-385.024c0-9.344 3.008-17.024 8.896-22.848 5.952-5.952 13.632-8.96 22.912-8.96h117.824c9.344 0 17.024 3.008 22.912 8.96 5.952 5.888 8.896 13.568 8.896 22.848v104.384z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-ping" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 500, + "id": 124, + "prevSize": 16, + "code": 59670, + "name": "it-other-ping" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 186 + }, + { + "icon": { + "paths": [ + "M888 0h-752c-75.584 0-136 60.352-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM352 269.12h-119.168v193.92h109.696v40.832h-109.696v236.032h-45.376v-510.976h164.544v40.192zM590.656 269.12h-78.976v470.784h-45.376v-470.784h-79.68v-40.192h204.096v40.192zM846.4 500.608c0 10.624-3.456 19.392-10.304 26.24s-15.616 10.304-26.304 10.304h-120.448v202.752h-45.44v-510.976h165.888c10.688 0 19.456 3.392 26.304 10.112s10.304 15.488 10.304 26.112v235.456z", + "M689.344 269.12h111.616v227.584h-111.616v-227.584z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-ftp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 501, + "id": 123, + "prevSize": 16, + "code": 59671, + "name": "it-other-ftp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 187 + }, + { + "icon": { + "paths": [ + "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM243.456 695.040l-79.744-229.632 5.248-7.68h67.968v-157.76h-97.856v395.136h-38.080v-428.8h143.616c8.96 0 16.256 2.816 21.888 8.448 5.632 5.696 8.512 12.992 8.512 21.952v162.752c0 20.672-13.888 30.976-41.664 30.976-2.752 0-6.72-0.128-12.032-0.384s-9.152-0.384-11.52-0.384c24.64 68.288 49.216 136.832 73.728 205.504h-40.064zM481.28 695.040h-140.864v-428.8h139.2v33.664h-101.12v160h92.032v34.24h-91.968v167.168h102.72v33.728zM707.904 396.416h-38.080v-96.448h-92.608v90.432l118.912 143.040c7.808 9.472 11.776 20.16 11.776 32v99.2c0 9.024-2.752 16.32-8.32 21.952-5.632 5.696-12.864 8.512-21.824 8.512h-107.968c-8.96 0-16.32-2.816-22.080-8.512-5.76-5.632-8.64-12.928-8.64-21.952v-108.736h38.080v105.472h92.608v-102.272l-118.4-142.976c-8.192-9.856-12.352-20.736-12.352-32.64v-86.848c0-8.96 2.88-16.256 8.64-21.952 5.824-5.632 13.248-8.448 22.144-8.448h107.968c8.96 0 16.192 2.816 21.824 8.448 5.568 5.696 8.32 12.992 8.32 21.952v99.776zM923.008 299.968h-66.304v395.136h-38.080v-395.136h-66.88v-33.728h171.264v33.728z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-rest" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 502, + "id": 122, + "prevSize": 16, + "code": 59672, + "name": "it-other-rest" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 188 + }, + { + "icon": { + "paths": [ + "M594.752 566.016h75.392l-37.568-232.384z", + "M343.488 299.968h104.96v361.408h-104.96v-361.408z", + "M817.472 299.968h93.76v190.976h-93.76v-190.976z", + "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM238.016 396.416h-38.080v-96.448h-92.672v90.432l118.912 143.040c7.872 9.472 11.776 20.16 11.776 32v99.2c0 9.024-2.752 16.32-8.384 21.952-5.568 5.696-12.8 8.512-21.76 8.512h-107.904c-8.96 0-16.256-2.816-22.016-8.512-5.76-5.632-8.64-12.928-8.64-21.952v-108.736h38.080v105.472h92.608v-102.272l-118.4-142.976c-8.192-9.856-12.352-20.736-12.352-32.64v-86.848c0-8.96 2.88-16.256 8.64-21.952 5.76-5.632 13.12-8.448 22.080-8.448h107.968c8.96 0 16.192 2.816 21.76 8.448 5.568 5.696 8.384 12.992 8.384 21.952v99.776zM486.528 664.64c0 9.024-2.88 16.32-8.64 21.952-5.76 5.696-13.12 8.512-22.080 8.512h-120c-8.96 0-16.256-2.816-21.888-8.512-5.632-5.632-8.512-12.928-8.512-21.952v-368c0-8.96 2.816-16.256 8.512-21.952 5.632-5.632 12.928-8.448 21.888-8.448h120c8.96 0 16.32 2.816 22.080 8.448 5.76 5.696 8.64 12.992 8.64 21.952v368zM690.112 695.040l-15.040-95.36h-85.248l-15.104 95.36h-36.672v-1.152l76.48-428.8h37.568l75.904 429.952h-37.888zM949.312 494.208c0 8.96-2.88 16.32-8.64 22.080s-13.12 8.64-22.080 8.64h-101.12v170.176h-38.080v-428.8h139.2c8.96 0 16.32 2.816 22.080 8.448 5.76 5.696 8.64 12.992 8.64 21.952v197.504z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-soap" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 503, + "id": 121, + "prevSize": 16, + "code": 59673, + "name": "it-other-soap" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 189 + }, + { + "icon": { + "paths": [ + "M766.336 563.584c-6.912-61.952 29.12-128.832 94.144-209.92-23.168-15.424-37.44-36.096-78.592-46.912-170.496-21.632-250.176 23.744-250.176 23.744s-112.192-49.792-191.68-42.624c-130.432 11.648-176.448 134.72-179.712 201.152-2.368 47.936-6.528 116.544 1.408 168 29.888 192.832 130.688 269.952 213.632 297.536 64.768 21.568 88.256-30.784 135.744-30.784 15.232 0 63.872-1.728 73.856 3.712 146.176 79.68 238.656 7.040 303.040-193.024-45.056-16.704-111.36-90.24-121.664-170.88z", + "M696.768 64c-60.8 0-170.88 102.848-162.176 188.288 0.448 4.096 11.968 8.064 16 7.232 56.448-11.648 121.536-70.912 141.888-127.424 5.952-16.768 22.144-68.096 4.288-68.096z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-macos" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 504, + "id": 120, + "prevSize": 16, + "code": 59674, + "name": "it-server-macos" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 190 + }, + { + "icon": { + "paths": [ + "M619.904 452.8c9.984-7.552 16.896-18.24 20.544-31.936l-23.488-2.88c-3.456 9.6-8.128 16.576-14.016 20.928s-12.992 6.592-21.376 6.592c-11.2 0-20.48-3.904-28.032-11.776-7.488-7.808-11.648-19.072-12.48-33.792h100.032c0.064-2.688 0.128-4.672 0.128-6.016 0-22.144-5.696-39.296-17.088-51.52-11.392-12.16-25.984-18.304-43.968-18.304-18.496 0-33.536 6.272-45.184 18.688-11.584 12.416-17.408 29.888-17.408 52.48 0 21.824 5.76 38.72 17.28 50.816s27.072 18.112 46.656 18.112c15.552-0 28.288-3.776 38.4-11.392zM554.112 353.216c7.168-6.976 15.872-10.496 26.304-10.496 11.584 0 20.928 4.352 28.16 13.12 4.672 5.632 7.552 14.144 8.576 25.408h-74.88c0.768-11.712 4.736-21.056 11.84-28.032z", + "M513.472 673.92c-7.424-3.328-21.056-7.232-40.96-11.776s-32.192-8.96-36.928-13.248c-4.864-4.224-7.232-9.728-7.232-16.32 0-7.68 3.392-14.208 10.176-19.648s17.536-8.192 32.384-8.192c14.208 0 24.96 3.008 32.256 9.024 7.296 5.952 11.584 14.784 12.8 26.496l23.488-1.728c-0.448-10.88-3.456-20.544-9.088-29.184-5.632-8.576-13.696-15.104-24.192-19.52-10.432-4.48-22.528-6.656-36.288-6.656-12.48 0-23.808 2.112-33.984 6.336s-17.92 10.368-23.232 18.496c-5.248 8.128-7.936 16.896-7.936 26.176 0 8.512 2.176 16.192 6.528 23.040s10.944 12.544 19.776 17.28c6.848 3.584 18.752 7.424 35.776 11.52s27.968 7.104 32.96 9.088c7.744 2.944 13.312 6.592 16.704 10.944 3.328 4.288 5.056 9.344 5.056 15.168 0 5.76-1.728 11.008-5.248 15.872-3.456 4.8-8.832 8.64-16 11.392-7.168 2.816-15.424 4.16-24.704 4.16-10.56 0-20.032-1.792-28.416-5.504-8.384-3.648-14.656-8.448-18.624-14.4-4.032-5.952-6.592-13.568-7.68-22.784l-23.104 2.048c0.32 12.288 3.712 23.424 10.176 33.28s15.296 17.152 26.624 22.016c11.328 4.864 25.344 7.36 42.112 7.36 13.248 0 25.088-2.432 35.648-7.296 10.56-4.8 18.688-11.648 24.32-20.288s8.512-17.984 8.512-27.84c0-9.92-2.624-18.752-7.744-26.368-5.248-7.616-13.184-13.952-23.936-18.944z", + "M404.032 447.296c3.904 4.864 8.832 8.896 14.784 12.096 6.016 3.2 12.8 4.8 20.416 4.8 10.368 0 20.224-2.944 29.568-8.768 9.408-5.824 16.576-14.272 21.44-25.28 5.056-10.944 7.488-23.36 7.488-37.056 0-12.8-2.24-24.576-6.72-35.264-4.416-10.752-11.008-19.072-19.776-24.96s-18.88-8.832-30.336-8.832c-8.768 0-16.192 1.728-22.336 5.12s-11.648 8.512-16.512 15.36v-17.472h-20.736v185.472h22.72v-65.216zM413.12 355.392c7.424-9.024 16-13.568 25.664-13.568 9.728 0 18.176 4.224 25.216 12.736s10.56 21.312 10.56 38.4c0 17.92-3.584 31.168-10.752 39.744-7.232 8.512-15.872 12.8-25.984 12.8-9.92 0-18.368-4.096-25.344-12.352-7.104-8.256-10.56-21.056-10.56-38.272s3.712-30.4 11.2-39.488z", + "M337.408 672.96c8.704-4.224 15.168-9.92 19.456-16.896s6.464-14.464 6.464-22.4c0-8.512-2.432-16.64-7.296-24.448-4.8-7.744-11.52-13.504-20.032-17.28s-19.904-5.632-34.048-5.632h-69.44v185.152h70.592c11.776 0 21.696-1.024 29.824-3.072s14.848-5.12 20.288-9.216c5.376-4.032 9.92-9.792 13.568-17.28s5.504-15.488 5.504-24.192c0-10.752-3.008-20.032-9.024-28.032-6.016-7.872-14.592-13.44-25.856-16.704zM257.024 608.192h36.992c13.312 0 22.656 0.896 28.16 2.56 5.504 1.728 9.664 4.928 12.608 9.6 2.944 4.736 4.416 10.112 4.416 16.256 0 6.464-1.536 11.84-4.736 16.128s-7.872 7.36-14.080 9.28c-4.736 1.344-12.48 2.112-23.36 2.112h-40v-55.936zM343.232 733.376c-2.432 4.48-5.504 7.936-9.344 10.304-3.776 2.304-8.512 4.032-14.144 4.992-3.2 0.64-8.768 0.96-16.64 0.96h-46.080v-63.68h42.752c11.84 0 20.8 1.088 27.072 3.136s11.2 5.632 14.72 10.752c3.52 5.056 5.312 11.072 5.312 17.92 0.064 5.952-1.216 11.136-3.648 15.616z", + "M309.12 452.864c13.888-7.616 24.576-18.816 32.192-33.6 7.552-14.848 11.328-31.616 11.328-50.368 0-18.56-3.584-35.072-10.752-49.664-7.168-14.656-17.664-25.984-31.36-34.176s-29.184-12.288-46.272-12.288c-26.112 0-47.36 8.704-63.872 26.048s-24.704 41.472-24.704 72.192c0 16.256 3.52 31.68 10.624 46.208 7.104 14.592 17.472 26.048 31.168 34.496s29.312 12.608 46.72 12.608c16.064 0 31.040-3.84 44.928-11.456zM218.88 424.064c-11.968-12.8-17.984-30.4-17.984-52.672 0-27.84 6.272-47.744 18.752-59.648s27.392-17.856 44.736-17.856c12.224 0 23.232 3.072 33.024 9.28s17.28 14.848 22.336 26.112 7.616 24.384 7.616 39.488c0 23.808-5.952 42.176-17.856 55.168s-27.008 19.392-45.504 19.392c-18.048 0-33.088-6.4-45.12-19.264z", + "M702.4 602.24c-7.488-6.4-16.576-10.816-27.2-13.248-7.552-1.728-18.56-2.688-32.96-2.688h-63.744v185.152h66.816c11.2 0 21.056-1.088 29.696-3.2 8.64-2.048 16-5.184 22.144-9.28 6.080-4.032 11.712-9.664 16.896-16.832 5.12-7.040 9.344-16.064 12.608-26.944s4.864-23.296 4.864-37.376c0-16.512-2.368-31.168-7.232-44.032-4.864-12.736-12.16-23.296-21.888-31.552zM701.44 713.216c-3.264 9.792-7.808 17.6-13.632 23.36-4.096 4.096-9.6 7.36-16.576 9.6s-16.576 3.456-28.736 3.456h-39.488v-141.44h38.848c14.592 0 25.152 1.28 31.68 3.84 9.152 3.52 16.832 10.496 23.168 20.864s9.472 25.28 9.472 44.608c0.064 14.016-1.536 25.856-4.736 35.712z", + "M0 0v1024h1024v-533.12c-85.888 14.656-144.192 122.368-127.936 210.816-55.872-12.48-65.856-52.608-94.016-59.136 5.76 22.656 11.392 45.12 17.216 67.648-34.112-3.264-27.008-9.152-51.2 8.512 11.392 25.28 22.656 50.496 33.984 75.776-2.816 0-5.632 0-8.512 0-23.808-22.016-29.056-31.488-68.096-42.112-2.816 5.632-5.824 11.136-8.64 16.896 5.824 17.024 11.456 33.728 17.216 50.752-37.12-25.152-27.52-31.744-68.416-17.024-2.816 22.528-5.696 44.992-8.512 67.648-21.184-24.128-14.464-29.248-51.2-42.368-2.816 17.024-5.76 33.856-8.512 50.624-8.576-11.264-17.152-22.528-25.536-33.6-8.576 5.76-17.152 11.136-25.6 16.896-2.88 22.4-5.696 44.992-8.64 67.52-11.392-22.528-22.72-45.12-33.984-67.52-5.696 2.752-11.52 5.504-17.152 8.512-8.576 32.64-3.328 25.28-25.6 42.112-2.88-14.144-5.696-28.224-8.576-42.112-5.632 2.624-11.328 5.504-17.024 8.256-10.88 37.504-16.96 43.264-34.112 50.752-5.76-19.84-11.456-39.616-17.152-59.072-17.6 17.152-19.264 28.352-42.624 42.112 0-17.024 0-33.856 0-50.624-22.72 14.016-45.568 28.032-68.288 42.24 6.4-46.848 11.968-56.64-17.088-84.352-17.088 11.136-34.112 22.528-51.264 33.6 5.824-22.528 11.456-44.864 17.152-67.392-25.536 5.632-51.2 11.264-76.8 16.768 11.392-16.768 22.72-33.728 34.176-50.624-18.496-23.36-16.256-18.752-34.176-42.112-11.392 5.632-22.656 11.264-34.112 16.896 23.424-48.64 10.816-38.4-25.536-84.48-40.704 12.544-61.504 8.832-85.44-16.832 82.432-69.184 97.92-184 153.6-261.504-8.512-11.264-17.024-22.464-25.6-33.664 11.392 0 22.72 0 34.112 0-14.144-25.408-28.416-50.688-42.624-76.032 28.416 8.448 56.96 17.024 85.248 25.408-11.968-28.096 20.352-29.504 17.152-75.968 14.208 5.568 28.416 11.2 42.688 16.832-5.696-25.344-11.392-50.624-17.088-75.84 30.592 19.776 28.928 36.352 68.224 50.496 0-11.2 0-22.464 0-33.664 11.392 8.384 22.848 16.768 34.176 25.216 1.728-36.352 2.24-40.64 17.152-59.008 5.568 14.144 11.264 28.16 16.96 42.176 25.28-34.048 19.904 0.512 34.176-25.216 5.696-16.96 11.392-33.792 17.088-50.688 11.392 22.464 22.656 45.056 34.112 67.456 5.76-11.2 11.392-22.592 17.088-33.792 0 14.144 0 28.224 0 42.176 5.632-2.752 11.456-5.632 17.152-8.384 8.512-32.768 3.264-25.344 25.6-42.176 0 16.832 0 33.792 0 50.624 23.936-14.848 14.464-12.352 34.048-16.832 0 8.384 0 16.832 0 25.28 22.656-22.4 45.504-45.056 68.224-67.456-5.568 30.976-11.328 61.824-17.024 92.8 8.512-5.76 17.088-11.392 25.6-17.024 14.080-30.4 2.304-19.776 33.984-33.664-5.632 25.28-11.328 50.688-17.024 75.968 11.392-8.448 22.72-16.896 34.24-25.28-2.88 14.016-5.824 28.032-8.704 42.112 22.848-11.2 45.632-22.464 68.288-33.664-11.392 22.464-22.656 44.928-34.112 67.52 2.816 2.816 5.824 5.568 8.64 8.384 25.472-11.2 51.136-22.656 76.608-33.792 0 2.816 0 5.632 0 8.448-29.376 43.712-33.28 39.808-16.96 76.032 22.656-8.448 45.504-17.024 68.288-25.344 0 2.752 0 5.632 0 8.32-17.152 14.208-34.176 28.16-51.392 42.24 26.368 32.256 12.736-0.576 8.576 50.624 20.032-2.752 40-5.632 59.904-8.384-17.088 19.648-34.176 39.296-51.264 59.072 14.272-2.816 28.608-5.568 42.752-8.448-11.648 16-21.44 19.968-34.176 33.728 5.696 8.32 11.392 16.832 17.024 25.216 45.568-26.688 58.688-51.904 128-58.944 17.216 11.2 34.176 22.528 51.2 33.728v-490.944h-1023.936z", + "M769.6 339.84c-3.392-4.736-8.512-8.512-15.232-11.392s-14.208-4.352-22.272-4.352c-18.624 0-32.896 7.36-42.688 22.080v-19.136h-20.48v134.080h22.72v-73.152c0-17.216 3.52-28.864 10.56-35.008 6.976-6.144 15.36-9.216 25.088-9.216 6.080 0 11.328 1.344 15.808 4.096 4.48 2.688 7.68 6.4 9.408 10.944 1.728 4.608 2.624 11.52 2.624 20.8v81.536h22.72v-82.432c0-10.56-0.448-17.92-1.28-22.080-1.28-6.464-3.648-12.096-6.976-16.768z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-openbsd" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 505, + "id": 119, + "prevSize": 16, + "code": 59675, + "name": "it-server-openbsd" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 191 + }, + { + "icon": { + "paths": [ + "M797.952 299.072c5.824 5.824 11.648 11.584 17.408 17.408-12.032-16.64-0.896-5.12-17.408-17.408zM0 0v1024h1024v-1024h-1024zM214.656 273.024h17.344v8.704c-5.76 5.824-11.584 11.584-17.344 17.408h-8.768c2.88-8.768 5.824-17.472 8.768-26.112zM197.184 334.016c2.88 8.64 5.824 17.344 8.704 26.048h-8.704v-26.048zM571.648 647.36c-45.888-16.896-81.216-29.568-104.576-69.632 11.584 5.76 23.232 11.648 34.816 17.344-11.584-11.584-23.232-23.104-34.816-34.752-11.648 12.416-10.816 15.296-26.112 26.112-2.88-14.464-5.824-28.928-8.704-43.456 11.648-3.392 11.968-104.576 26.112-165.504 42.688-32.768 54.72-56.64 130.688-60.992 27.904 14.208 36.416 16.064 52.16 43.584-77.888-30.784-114.752 3.328-165.376 43.52-4.416 44.224-9.408 68.608 8.64 104.448 16.704 43.328 35.52 61.184 78.4 78.4 75.776 21.568 126.912-20.096 174.208-52.288 80.576-361.28-300.864-476.672-452.8-208.96-130.688 230.336 75.456 527.296 252.48 574.72v8.704h-52.288c-398.4-154.56-361.024-598.784-34.816-801.088 494.912-22.080 487.040 512.768 121.984 539.84zM615.104 534.144v8.832h-8.704c-8.704-2.944-17.408-5.888-26.176-8.832v-17.344c11.648 5.76 23.232 11.52 34.88 17.344zM667.264 447.168v-26.176c17.92 15.744 6.272 0.128 17.472 26.176h-17.472z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-debian" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 506, + "id": 118, + "prevSize": 16, + "code": 59676, + "name": "it-server-debian" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 192 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM340.032 570.624c0 2.304-1.728 3.52-5.248 3.52-6.976 0-30.272-1.728-80.896-1.728-55.296 0-80.32 1.728-86.72 1.728-2.88 0-4.672-1.216-4.672-3.52v-15.68c0-2.368 1.728-3.52 4.672-3.52h32.576c11.648 0 23.872-1.728 26.176-16.896 1.152-8.704 2.88-134.464 2.88-165.248v-40.768c0-13.952-1.728-118.72-2.304-127.488-1.152-13.952-6.976-19.776-29.12-19.776h-33.728c-2.88 0-4.608-1.152-4.608-3.52v-15.68c0-2.304 1.728-3.456 4.032-3.456 6.976 0 36.672 1.728 90.752 1.728 51.84 0 70.464-1.728 78.592-1.728 2.88 0 4.032 1.728 4.032 4.032v14.592c0 2.88-1.728 4.032-4.672 4.032h-27.264c-11.648 0-20.352 4.672-20.352 16.32 0 5.824-1.728 134.464-1.728 141.376v44.864c0 5.824 1.728 140.224 1.728 146.688 0 18.048 8.704 20.992 27.328 20.992h23.872c2.88 0 4.672 1.152 4.672 4.032v15.104zM561.728 570.624c0 2.304-1.728 3.52-5.248 3.52-6.976 0-30.272-1.728-80.896-1.728-55.296 0-80.32 1.728-86.72 1.728-2.88 0-4.672-1.216-4.672-3.52v-15.68c0-2.368 1.728-3.52 4.672-3.52h32.576c11.648 0 23.872-1.728 26.176-16.896 1.216-8.704 2.944-134.464 2.944-165.248v-40.768c0-13.952-1.728-118.72-2.304-127.488-1.152-13.952-6.976-19.776-29.12-19.776h-33.792c-2.88 0-4.608-1.152-4.608-3.52v-15.68c0-2.304 1.728-3.456 4.032-3.456 6.976 0 36.672 1.728 90.752 1.728 51.84 0 70.4-1.728 78.592-1.728 2.88 0 4.032 1.728 4.032 4.032v14.592c0 2.88-1.728 4.032-4.608 4.032h-27.264c-11.648 0-20.352 4.672-20.352 16.32 0 5.824-1.728 134.464-1.728 141.376v44.864c0 5.824 1.728 140.224 1.728 146.688 0 18.048 8.704 20.992 27.328 20.992h23.872c2.944 0 4.672 1.152 4.672 4.032v15.104zM755.008 581.12c-40.768 0-69.248-12.224-92.48-30.336-6.976-5.184-10.496-6.976-13.44-6.976-3.456 0-5.824 4.096-9.344 9.92-3.52 6.4-6.4 6.976-10.432 6.976-3.52 0-6.464-2.944-5.248-9.344 2.304-14.464 8.128-88.448 9.856-105.28 0.64-3.456 1.728-3.456 4.032-3.456l8.768 0.576c2.304 0 3.52 1.152 3.52 4.672 0.576 18.624 1.728 37.824 20.928 67.52 17.472 27.328 49.472 43.008 81.472 43.008 34.944 0 79.168-21.504 79.168-73.856 0-59.968-43.136-82.048-89.664-98.368-17.984-6.4-59.968-20.928-84.928-47.168-19.264-19.2-29.12-46.592-29.12-84.992 0-29.12 18.048-57.6 36.096-74.496 20.928-19.776 49.984-27.968 81.408-27.968 33.216 0 58.816 9.92 68.672 14.592 5.248 2.88 8.128 2.304 11.072-0.576l7.552-6.976c2.944-2.368 4.672-3.52 7.552-3.52 2.944 0 4.672 4.672 4.672 9.856 0 20.352 7.552 79.744 8.128 92.544 0 2.88-0.576 4.032-2.88 4.672l-6.848 1.792c-1.728 0.576-2.944 0-3.52-1.728-4.672-16.896-12.224-39.616-36.096-64.576-15.68-16.896-36.032-25.024-63.424-25.024-51.776 0-70.4 38.4-70.4 68.096 0 16.256 3.456 35.52 17.984 50.624 16.896 16.896 49.472 29.696 66.368 34.944 40.192 12.8 72.768 22.656 93.696 48.32 15.104 18.048 25.6 40.704 25.6 79.104-0 68.608-41.856 127.424-118.72 127.424z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-iis" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 507, + "id": 117, + "prevSize": 16, + "code": 59677, + "name": "it-app-iis" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 193 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M728.832 195.008h-418.624l201.792 140.992z", + "M832 170.688l-315.968 221.312-316.032-220.416v348.416h632z", + "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM896 584h-760v-480h760v480z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-mailserver" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 508, + "id": 116, + "prevSize": 16, + "code": 59678, + "name": "it-app-mailserver" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 194 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M599.744 280.64c-9.664 0-17.664 4.352-24.064 13.184-6.464 8.768-9.6 22.016-9.6 39.872 0 18.432 2.496 32 7.424 40.832 6.976 12.416 16.256 18.688 27.84 18.688 8.896 0 16.448-4.416 22.656-13.312 6.272-8.896 9.344-22.848 9.344-41.92 0-20.288-3.136-34.944-9.408-43.904s-14.4-13.44-24.192-13.44z", + "M425.088 280.64c-8.832 0-16.064 3.776-21.76 11.2-5.76 7.488-8.576 17.6-8.448 30.464h60.16c-0.32-13.632-3.328-23.936-9.024-31.040-5.76-7.104-12.736-10.624-20.928-10.624z", + "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM297.536 426.304h-44.928l-41.856-183.296-41.664 183.296h-46.016l-50.112-245.184h43.392l31.68 168.384 38.4-168.384h50.432l36.8 171.264 32.192-171.264h42.688l-51.008 245.184zM403.904 383.616c6.208 7.744 13.952 11.648 23.232 11.648 6.272 0 11.584-2.048 15.936-6.016 4.224-4.096 7.488-10.56 9.664-19.456l40.128 7.872c-5.184 17.152-13.312 30.208-24.448 39.232-11.136 8.96-25.024 13.44-41.728 13.44-26.496 0-46.016-10.048-58.752-30.272-10.048-16.192-15.040-36.608-15.040-61.248 0-29.44 6.592-52.48 19.776-69.184s29.824-25.024 49.984-25.024c22.656 0 40.448 8.704 53.568 26.176s19.328 44.16 18.752 80.192h-100.864c0.32 14.016 3.52 24.896 9.792 32.64zM656.128 405.76c-12.352 16.384-27.456 24.576-45.056 24.576-8.704 0-17.28-2.56-25.728-7.616s-15.808-12.544-21.824-22.528v26.112h-37.44v-245.184h40.32v88.32c12.352-16.512 27.136-24.768 44.096-24.768 18.496 0 33.792 7.808 45.952 23.488 12.096 15.68 18.176 38.144 18.176 67.456 0 30.4-6.208 53.76-18.496 70.144zM856.704 393.92c-6.4 11.584-15.552 20.544-27.584 26.944s-25.472 9.6-40.448 9.6c-19.072 0-34.944-3.264-47.808-9.728-12.8-6.464-22.912-16.192-30.272-29.184-7.232-12.992-11.136-27.648-11.52-44.032l26.176-2.688c1.28 12.224 4.096 22.336 8.704 30.208 4.544 7.872 11.584 14.208 21.12 19.072s20.288 7.296 32.256 7.296c10.56 0 19.968-1.856 28.032-5.504s14.208-8.704 18.112-15.104c4.032-6.464 5.952-13.376 5.952-20.992 0-7.68-1.856-14.4-5.696-20.16-3.904-5.76-10.112-10.56-18.944-14.464-5.632-2.56-18.112-6.592-37.376-11.968-19.328-5.376-32.832-10.496-40.576-15.296-9.984-6.144-17.472-13.76-22.464-22.848-4.864-9.088-7.36-19.264-7.36-30.528 0-12.352 3.008-23.936 9.088-34.688 6.016-10.752 14.784-18.944 26.304-24.512 11.584-5.568 24.448-8.384 38.592-8.384 15.552 0 29.312 2.944 41.216 8.768s21.056 14.464 27.456 25.856 9.792 24.256 10.304 38.656l-26.624 2.368c-1.408-15.488-6.336-27.2-14.592-35.136s-20.416-11.904-36.608-11.904c-16.832 0-29.056 3.584-36.736 10.816-7.68 7.168-11.52 15.872-11.52 25.984 0 8.832 2.688 16.064 8.192 21.76 5.312 5.696 19.328 11.52 41.856 17.472s38.080 11.2 46.528 15.616c12.16 6.592 21.248 14.912 27.072 25.024s8.768 21.696 8.768 34.88c0 12.992-3.2 25.28-9.6 36.8zM937.6 426.304h-29.376v-34.304h29.376v34.304zM1019.2 426.304h-29.376v-34.304h29.376v34.304z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-websphere" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 509, + "id": 115, + "prevSize": 16, + "code": 59679, + "name": "it-app-websphere" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 195 + }, + { + "icon": { + "paths": [ + "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z", + "M450.688 255.616c-14.656 0-27.648 6.848-38.848 20.544s-16.896 33.536-16.896 59.648c0 26.112 5.312 45.376 15.872 57.856s23.36 18.688 38.4 18.688c15.296 0 28.352-6.464 39.232-19.392 10.944-12.928 16.384-32.96 16.384-60.032 0-25.856-5.312-45.184-16-58.048s-23.36-19.264-38.144-19.264z", + "M203.2 185.472c-3.584 17.92-8.576 35.776-15.040 53.44l-30.72 82.112h94.912l-29.312-77.44c-8.896-23.552-15.488-42.944-19.84-58.112z", + "M624.64 354.112c-5.888 2.56-10.368 6.272-13.568 11.2s-4.736 10.368-4.736 16.32c0 9.216 3.456 16.832 10.368 22.912s17.152 9.152 30.528 9.152c13.248 0 25.024-2.88 35.328-8.704s17.856-13.696 22.72-23.808c3.712-7.744 5.504-19.2 5.504-34.368v-12.544c-12.416 5.12-31.168 9.408-56.128 12.992-14.144 2.048-24.128 4.352-30.016 6.848z", + "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM296.384 436.032l-32.64-84.8h-117.056l-30.72 84.8h-39.36l107.52-280h39.872l114.56 280h-42.176zM528.704 389.184c-7.424 16.576-18.24 29.376-32.448 38.208-14.272 8.832-29.12 13.312-44.8 13.312-11.456 0-21.76-2.432-30.784-7.296-9.152-4.864-16.64-10.944-22.464-18.368v98.688h-34.368v-280.448h31.296v26.368c7.424-10.368 15.68-18.112 25.024-23.232s20.544-7.744 33.792-7.744c17.344 0 32.576 4.48 45.824 13.376s23.232 21.44 30.016 37.696c6.72 16.192 10.112 34.048 10.112 53.376 0 20.736-3.776 39.424-11.2 56.064zM720.512 436.032c-3.584-7.104-5.888-15.488-6.848-25.024-12.736 10.816-25.024 18.496-36.736 22.912-11.84 4.416-24.448 6.656-37.952 6.656-22.272 0-39.36-5.44-51.392-16.32-11.968-10.816-17.984-24.704-17.984-41.664 0-9.92 2.24-19.008 6.784-27.2 4.48-8.192 10.432-14.784 17.728-19.776 7.36-4.928 15.616-8.768 24.768-11.264 6.72-1.792 16.96-3.52 30.592-5.184 27.776-3.328 48.192-7.232 61.312-11.84 0.128-4.736 0.192-7.68 0.192-8.96 0-14.016-3.264-23.872-9.728-29.632-8.768-7.744-21.824-11.648-39.104-11.648-16.192 0-28.096 2.816-35.84 8.512-7.68 5.632-13.376 15.68-17.088 30.080l-33.664-4.544c3.072-14.4 8.064-26.048 15.040-34.88s17.152-15.68 30.4-20.416c13.248-4.736 28.544-7.168 46.080-7.168 17.344 0 31.36 2.048 42.176 6.144 10.816 4.032 18.752 9.216 23.872 15.36 5.056 6.144 8.64 13.952 10.688 23.36 1.152 5.888 1.664 16.448 1.664 31.744v45.824c0 32 0.768 52.16 2.24 60.672 1.408 8.448 4.288 16.576 8.704 24.32h-35.904zM847.744 436.032h-39.168v-39.104h39.168v39.104zM956.352 436.032h-39.168v-39.104h39.168v39.104z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-apache" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 510, + "id": 114, + "prevSize": 16, + "code": 59680, + "name": "it-app-apache" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 196 + }, + { + "icon": { + "paths": [ + "M900.032-3.968h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c-0-70.912-57.152-128-128-128zM361.152 403.136c0 40.256-4.864 71.424-14.592 93.504s-25.152 38.976-46.272 50.56c-21.12 11.52-45.888 17.344-74.304 17.344-42.24 0-74.56-12.096-96.96-36.352-22.464-24.32-33.216-60.416-32.32-108.288l57.408-7.872c1.536 36.736 8.448 61.888 20.672 75.456s29.248 20.352 50.88 20.352c16 0 29.76-3.712 41.344-11.008s19.584-17.28 23.936-29.824c4.352-12.608 6.528-32.704 6.528-60.288v-331.328h63.68v327.744zM811.52 479.744c-9.472 19.392-21.248 34.304-35.264 44.8s-31.552 18.432-52.672 23.744c-21.12 5.376-46.912 8.064-77.568 8.064h-183.424v-480.96h180.416c36.736 0 66.24 4.864 88.448 14.592s39.616 24.704 52.16 44.928c12.544 20.224 18.88 41.408 18.88 63.488 0 20.544-5.568 39.936-16.768 58.048-11.136 18.176-28.032 32.832-50.496 43.968 29.056 8.512 51.456 23.104 67.072 43.648s23.424 44.864 23.424 72.832c0 22.592-4.736 43.52-14.208 62.848z", + "M707.84 342.272c-16.32-5.312-39.744-8-70.4-8h-111.232v165.376h119.808c20.544 0 35.008-0.768 43.328-2.304 14.656-2.624 26.88-6.976 36.736-13.12 9.792-6.144 17.856-15.040 24.256-26.752s9.472-25.216 9.472-40.512c0-17.92-4.544-33.536-13.76-46.784-9.152-13.248-21.952-22.528-38.208-27.904z", + "M690.944 271.936c16.192-4.8 28.352-12.8 36.544-24s12.288-25.152 12.288-41.984c0-15.936-3.84-30.016-11.52-42.176-7.616-12.096-18.56-20.416-32.832-24.96-14.208-4.48-38.592-6.72-73.152-6.72h-96.064v145.344h104c28.224 0 48.448-1.792 60.736-5.504z", + "M900.032 1020.032c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-jboss" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 511, + "id": 113, + "prevSize": 16, + "code": 59681, + "name": "it-app-jboss" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 197 + }, + { + "icon": { + "paths": [ + "M399.965 340.713h-172.125l-227.84 387.398 88.343 2.56 51.293-100.119h223.139l41.053 99.98h182.132l-185.996-389.818zM173.009 561.385l82.060-138.612 73.123 138.519-155.183 0.093z", + "M590.988 426.636l100.119-44.87h29.51v343.692h-85.876v-243.665h-42.356z", + "M970.799 381.766h-150.388c-28.207 0-51.153 22.854-51.153 51.107v241.478c0 28.253 22.9 51.153 51.153 51.153h150.388c28.207 0 51.153-22.854 51.153-51.153v-241.524c0-28.207-22.854-51.060-51.153-51.060zM941.196 635.718c0 24.716-20.154 44.87-44.87 44.87-24.762 0-44.916-20.154-44.916-44.87v-161.652c0-24.809 20.154-44.87 44.916-44.87 24.716 0 44.87 20.061 44.87 44.87v161.652z" + ], + "attrs": [ + { + "fill": "rgb(24, 49, 109)" + }, + { + "fill": "rgb(24, 49, 109)" + }, + { + "fill": "rgb(24, 49, 109)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-a10bala" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 0, + 0, + 0 + ] + } + }, + "attrs": [ + { + "fill": "rgb(24, 49, 109)" + }, + { + "fill": "rgb(24, 49, 109)" + }, + { + "fill": "rgb(24, 49, 109)" + } + ], + "properties": { + "order": 512, + "id": 112, + "prevSize": 16, + "code": 59682, + "name": "it-other-a10bala" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 198 + }, + { + "icon": { + "paths": [ + "M86 0v80h268v324h140v92h-208v-346h-286v874h286v-388h208v34h286v-520h-286v172h-80v-322zM580 0v80h264v590h60v-670zM690 738.578c-34.861 0.001-62.608 12.688-84 38s-32 60.25-32 106c-0 43.25 10.721 77.061 32 102s48.95 38 82 38c26.711 0 48.626-7.439 66-22s28.53-36 36-66l-48-18c-4.188 20.125-12.379 34.624-22 44-9.621 9.356-20.644 14-34 14-18.11 0-32.682-7.25-44-22s-16-39.25-16-74c-0-32.75 4.512-55.375 16-70s27.551-21.999 46-22c13.356 0.001 24.662 3.75 34 12s15.057 19.75 18 34l50-14c-5.66-21.999-14.682-38.249-26-50-19.015-19.875-43.553-29.999-74-30zM920 738.578c-19.128 0.001-34.474 3.624-48 10s-24.813 15.812-32 28c-7.187 12.188-10 24-10 38 0 21.75 6.72 40.875 22 56 10.866 10.75 31.062 20.625 58 28 20.939 5.751 34.114 9.747 40 12 8.602 3.375 14.548 7.44 18 12 3.452 4.563 6 9.503 6 16-0 10.125-5.795 18.434-14 26-8.206 7.573-19.815 12-36 12-15.28 0-27.002-5.499-36-14-8.998-8.497-15.057-21.875-18-40l-50 6c3.283 30.75 15.135 53.939 32 70 16.865 16.068 40.535 24 72 24 21.618 0 39.512-3.341 54-10 14.487-6.685 26.077-16.253 34-30s12-28.25 12-44c-0-17.375-3.379-32.188-10-44s-16.286-21.187-28-28c-11.715-6.813-29.552-13.624-54-20-24.448-6.374-39.662-12.122-46-18-4.98-4.625-8-11.496-8-18-0-7.125 2.68-11.749 8-16 8.262-6.622 19.399-10 34-10 14.148 0 24.926 3.812 32 10s11.85 15.875 14 30l50-2c-0.792-25.25-8.211-46.874-24-62-15.789-15.124-40.761-21.999-72-22zM324 742.578l90 276h54l88-276h-52l-62 204-62-204z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-cluster-vcs" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 513, + "id": 111, + "prevSize": 16, + "code": 59683, + "name": "it-cluster-vcs" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 199 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106h-832zM76 74h872v420h-872v-420zM128 148v132h338v-132h-338zM546 148v132h338v-132h-338zM126 326v130h338v-130h-338zM546 326v130h338v-130h-338zM68 616v322h244v-54h-180v-88h162v-54h-162v-72h174v-54h-238zM334 616l116 322h68l116-322h-70l-78 238-82-238h-70zM758 616l-124 322h68l28-74h128l28 74h70l-128-322h-70zM792 692l44 118h-86l42-118z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-hpeva" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 514, + "id": 110, + "prevSize": 16, + "code": 59684, + "name": "it-diskraid-hpeva" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 200 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM142 625.254v56h142l-160 220v62h246v-58h-172l166-228v-52zM388 625.254v56h90v282h62v-282h90v-56zM670 625.254v338h230v-58h-170v-92h152v-56h-152v-76h164v-56z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-zte" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 515, + "id": 109, + "prevSize": 16, + "code": 59685, + "name": "it-diskraid-zte" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 201 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM768 480c-39.586 0-71.709 16.469-96 46s-36 70.625-36 124c-0 50.458 11.837 88.906 36 118s56.47 44 94 44c30.332 0 54.271-7.010 74-24s33.517-43 42-78l-54-20c-4.756 23.479-13.076 39.063-24 50s-24.834 18-40 18c-20.564 0-37.148-8.792-50-26s-18-47.458-18-88c-0-38.208 4.955-64.937 18-82s31.050-26 52-26c15.166 0 27.396 4.375 38 14s18.658 23.375 22 40l56-16c-6.427-25.666-17.148-44.291-30-58-21.593-23.187-49.427-36-84-36zM142 486v322h56v-142h112v142h58v-322h-58v126h-112v-126h-56zM504 486c-15.552 0-29.469 3.365-42 10s-22.995 14.407-30 26c-7.005 11.594-12.53 26.604-16 46l50 10c1.414-14 5.445-24.708 12-32s14.746-10 24-10c9.382 0 16.345 3.584 22 10s10 15.209 10 26c-0 12.688-4.289 22.344-12 30s-19.348 10.438-34 10l-6 50c9.639-3.062 19.060-4 26-4 10.539 0 18.674 4.959 26 14s10 20.542 10 36c-0 16.333-2.353 30.375-10 40s-16.818 14-28 14c-10.411 0-20.674-3.979-28-12s-10.329-20.833-12-36l-54 8c2.699 26.979 13.163 49.302 30 66s38.423 24 64 24c26.99 0 49.878-10.167 68-30s26-43.854 26-72c-0-19.396-4.297-34.292-14-48s-21.806-24.062-38-28c27.119-16.771 40-37.854 40-66-0-19.833-6.762-38.25-20-54-16.066-19.25-37.395-28-64-28z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-h3c" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 516, + "id": 108, + "prevSize": 16, + "code": 59686, + "name": "it-firewall-h3c" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 202 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM92 88h72v408h-72v-408zM232 88h142c28.247 0.001 50.12 1.312 64 4s27.042 7.469 38 16c10.958 8.532 18.694 19.812 26 34 7.305 14.189 12 30.381 12 48-0 19.103-4.99 36.050-14 52s-20.578 28.025-36 36c21.753 7.233 38.311 20.566 50 38s16 36.445 16 60c-0 18.547-2.451 36.473-10 54s-18.932 31.521-32 42c-13.069 10.479-28.844 17.589-48 20-12.013 1.484-40.058 3.624-86 4h-122v-408zM592 88h108l64 278 64-278h108v408h-68v-322l-70 322h-70l-70-322v322h-66v-408zM304 156v94h48c28.085 0.001 45.181-1.090 52-2 12.338-1.669 20.938-5.934 28-14 7.062-8.068 12-18.832 12-32-0-12.612-3.912-24.117-10-32s-13.987-12.331-26-14c-7.143-0.93-28.071 0-62 0h-42zM304 318v108h66c25.974 0 43.019-0.331 50-2 10.714-2.223 19.263-7.375 26-16s10-21.534 10-36c-0-12.241-2.805-21.468-8-30s-12.179-14.105-22-18c-9.822-3.892-31.207-6-64-6h-58zM396 594v274h94c35.375-0.256 56.75-0.976 66-2 14.75-1.626 27.937-4.941 38-12 10.062-7.066 18.187-16.186 24-28s8-25.501 8-38c-0-15.878-3-28.25-12-40s-23.25-21.136-40-26c11.875-5.37 21.062-13.248 28-24 6.937-10.746 12-23.123 12-36-0-11.872-4.375-22.438-10-32s-11.563-16.24-20-22c-8.438-5.779-19.313-10.208-30-12s-26.25-2-48-2h-110zM452 640h32c26.125 0 42.5-0.64 48 0 9.25 1.126 15.312 4.688 20 10s8 11.494 8 20c-0 8.87-2.563 16.56-8 22-5.438 5.427-14.5 8.848-24 10-5.25 0.96-18.375 0-40 0h-36v-62zM452 748h44c25.25 0 42.437 1.376 50 4s14 8.24 18 14c4 5.754 6 11.75 6 20-0 9.754-2.813 18.176-8 24-5.188 5.786-11.75 8.464-20 10-5.375 1.024-18 2-38 2h-52v-74zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-ibm-blade" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 517, + "id": 107, + "prevSize": 16, + "code": 59687, + "name": "it-other-ibm-blade" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 203 + }, + { + "icon": { + "paths": [ + "M887.994 0h-751.988c-75.59 0-136.006 60.416-136.006 136.006v751.988c0 75.543 60.416 136.006 136.006 136.006h751.988c75.543 0 136.006-60.463 136.006-136.006v-751.988c0-75.59-60.463-136.006-136.006-136.006zM405.923 688.454c-12.567 19.363-30.627 34.49-54.179 45.242-23.505 10.799-49.99 16.198-79.453 16.198-37.329 0-68.608-5.399-93.836-16.337-25.228-10.845-45.009-27.183-59.299-49.059-14.383-21.876-21.923-46.545-22.668-74.147l51.433-4.515c2.467 20.62 8.099 37.609 16.989 50.781 8.89 13.219 22.761 23.924 41.519 32.023 18.758 8.192 39.843 12.288 63.302 12.288 20.806 0 39.191-3.072 55.11-9.309 15.919-6.144 27.788-14.615 35.607-25.46 7.773-10.705 11.636-22.528 11.636-35.328 0-12.847-3.77-24.204-11.264-33.885-7.494-9.635-19.875-17.734-37.097-24.297-11.078-4.329-35.561-10.985-73.402-20.154-37.888-9.030-64.419-17.687-79.593-25.693-19.689-10.38-34.397-23.133-44.032-38.447-9.635-15.267-14.476-32.349-14.476-51.293 0-20.806 5.911-40.262 17.687-58.368 11.823-18.060 29.091-31.837 51.759-41.193 22.807-9.309 48.035-14.010 75.776-14.010 30.58 0 57.53 4.934 80.849 14.755 23.366 9.868 41.286 24.343 53.853 43.473s19.316 40.774 20.247 64.977l-52.317 3.956c-2.839-26.065-12.335-45.754-28.579-59.066-16.198-13.359-40.122-20.015-71.82-20.015-33.001 0-57.065 6.051-72.145 18.153s-22.621 26.671-22.621 43.753c0 14.801 5.353 26.996 16.012 36.538 10.519 9.588 37.888 19.409 82.292 29.417 44.311 10.054 74.752 18.851 91.229 26.298 24.017 10.985 41.705 25.088 53.155 41.984 11.45 16.989 17.129 36.538 17.129 58.647 0.047 22.016-6.237 42.636-18.804 62.092zM852.294 379.159h-223.651v127.674h193.489v48.64h-193.489v187.345h-54.505v-412.3h278.156v48.64z" + ], + "attrs": [ + { + "fill": "rgb(96, 140, 193)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-secfox" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 4 + ] + } + }, + "attrs": [ + { + "fill": "rgb(96, 140, 193)" + } + ], + "properties": { + "order": 518, + "id": 106, + "prevSize": 16, + "code": 59688, + "name": "it-other-secfox" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 204 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM322 274c50.426 0 88.513 12.744 114 38 25.487 25.257 38.721 59.837 40 102l-80 4c-3.472-23.586-10.581-41.667-22-52-11.419-10.332-29.162-13.999-52-14-23.569 0.001-42.663 4.94-56 16-8.587 7.097-12 16.103-12 28-0 10.854 3.961 20.277 12 28 10.231 9.811 34.536 19.355 74 30 39.464 10.646 69.090 22.624 88 34s33.312 26.275 44 46c10.688 19.725 16 44.986 16 74-0 26.3-7.211 51.039-20 74s-30.614 38.833-54 50c-23.386 11.167-51.104 18-86 18-50.792 0-90.777-13.178-118-40s-42.702-66.652-48-118l78-8c4.75 30.266 15.475 51.806 30 66s33.335 22.001 58 22c26.126 0.001 46.754-7.372 60-20s20-27.092 20-44c-0-10.853-4.428-20.382-10-28s-14.115-14.364-28-20c-9.501-3.756-32.2-10.398-66-20-43.484-12.315-72.461-28.049-90-46-24.665-25.257-38-55.681-38-92-0-23.378 6.398-45.648 18-66s28.167-35.354 50-46c21.833-10.645 47.123-16 78-16zM556 282h298v78h-216v102h202v78h-202v124h224v78h-306v-460z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-segw" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 519, + "id": 105, + "prevSize": 16, + "code": 59689, + "name": "it-other-segw" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 205 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM122 146h234v50l-176 218h182v54h-260v-60l168-208h-148v-54zM380 146h256v54h-96v268h-64v-268h-96v-54zM678 146h238v54h-174v72h162v54h-162v88h180v54h-244v-322zM496 576c-38.5 0-70.375 12.688-94 38s-36 60.25-36 106c-0 43.25 12.5 77.063 36 102s53.5 38 90 38c29.5-0 54.812-7.438 74-22s31.75-38 40-68l-54-16c-4.625 20.125-11.375 34.625-22 44s-23.25 14-38 14c-20 0-37.5-7.25-50-22s-18-39.25-18-74c-0-32.75 7.312-57.375 20-72s27.625-22 48-22c14.75 0 27.687 5.75 38 14s16.75 17.75 20 32l56-12c-6.25-22-15.5-38.25-28-50-21-19.875-48.375-30-82-30zM122 580v46h82v228h56v-228h80v-46h-218zM734 580l-108 274h58l24-62h110l24 62h60l-110-274h-58zM762 644l38 102h-76l38-102zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-zteatca" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 520, + "id": 104, + "prevSize": 16, + "code": 59690, + "name": "it-other-zteatca" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 206 + }, + { + "icon": { + "paths": [ + "M176 0c-97.115 0-176 78.886-176 176v672c0 97.114 78.885 176 176 176h672c97.115 0 176-78.886 176-176v-672c0-97.114-78.885-176-176-176h-672zM142 40c46.967 0 84 38.355 84 86.003 0 20.058-6.681 37.344-18 52l104 204c2.902 0 5.019-1.984 8-1.984 15.987 0 31.225 4.224 44 12l134-128c-3.301-9.203-4-19.642-4-29.997 0-47.648 37.033-86.003 84-86.003s86 38.355 86 86.003c0 0.64 0.014 1.344 0 1.984l164 76c14.938-13.197 34.634-21.997 56-21.997 46.967 0 86 40.352 86 88 0 47.642-39.033 85.997-86 85.997s-84-38.355-84-85.997c0-2.624-0.224-5.44 0-8l-160-76.006c-15.514 16.762-37.542 25.997-62 25.997-14.090 0-26.299-3.84-38-9.997l-138 132c2.086 7.475 4 15.84 4 24 0 47.642-39.033 85.997-86 85.997s-84-38.355-84-85.997c0-20.64 8.082-39.155 20-54.003l-102-201.997c-3.796 0.64-8.062 1.984-12 1.984-46.967 0-86-38.355-86-85.997 0-47.648 39.033-86.003 86-86.003zM140 636h234v50.003l-176 216h182v53.997h-260v-57.997l168-208h-148v-54.003zM398 636h256v54.003h-96v265.997h-64v-265.997h-96v-54.003zM696 636h238v54.003h-174v72h162v53.997h-162v86.003h180v53.997h-244v-320z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-zteips" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 521, + "id": 103, + "prevSize": 16, + "code": 59691, + "name": "it-other-zteips" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 207 + }, + { + "icon": { + "paths": [ + "M508 0c-82.558 0.672-166.697 21.188-244 64-247.365 137.005-336.997 448.64-200 696 112.572 203.257 342.286 298.233 558 250l84-146 29.283-49.683-47.283-92.317 52-28c-27.342-23.445-47.521-53.56-60-88l-44 24-54-98 92-50c24.687-87.31 104.927-152 200-152 50.663 0 95.87 19.753 132 50-10.596-39.485-25.3-78.624-46-116-94.189-170.064-270.372-265.479-452-264zM530 98c45.407 1.984 91.792 9.699 134 26l-66 36c-22.418-22.534-44.33-43.274-68-62zM400 112c39.131 26.349 77.86 57.629 114 94l-86 48-70-126c-0.339-0.64 0.362-1.424 0-2 13.85-5.504 27.877-10.038 42-14zM266 176c0.32 0.64 1.711 1.488 2 2l70 126-94 52c-11.828-49.536-16.086-99.133-18-146 12.612-11.942 25.674-23.568 40-34zM766 182c30.756 23.571 58.291 51.565 82 84l-118 66c-19.826-33.114-41.392-64.963-64-94l90-48c3.229-1.792 7.526-5.517 10-8zM584 286c22.436 28.877 42.268 59.046 62 92l-114 64-54-98zM146 318c3.501 27.974 7.145 55.238 14 84l-56 32c7.85-40.659 22.519-79.302 42-116zM388 394l54 98-122 66c-17.597-34.106-31.279-67.754-44-102zM192 502c12.788 34.547 26.288 69.67 44 104l-110 60c-14.57-36.442-26.168-74.317-30-112zM492 582l54 98-106 58c-24.154-28.173-46.514-57.469-68-90zM288 696c21.57 32.525 45.675 59.827 70 88l-102 58c-29.908-23.232-56.84-52.314-80-84zM596 772l70 126c-7.344 2.944-14.551 7.504-22 10-43.856-24.314-86.79-54.854-128-92zM432 862c28.391 25.472 58.222 46.435 88 66-53.331 1.024-106.52-9.274-156-28z", + "M873.145 391.853c-83.828 0-150.949 67.322-150.949 148.794 0 57.709 34.419 105.702 84.1 129.939v299.699c0 21.075 17.123 37.722 38.815 37.722h56.067c21.692 0 38.815-16.646 38.815-37.722v-299.699c49.682-24.237 84.1-72.23 84.1-129.939 0-81.472-67.121-148.794-150.949-148.794z", + "M745.671 902.592h247.663l36.421 118.976h-313.221z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-sdn-controller" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 522, + "id": 102, + "prevSize": 16, + "code": 59692, + "name": "it-sdn-controller" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 208 + }, + { + "icon": { + "paths": [ + "M0 4v424h76v-186h148v186h74v-424h-74v166h-148v-166h-76zM376 4v424h76v-160h50c34.135 0 59.998-1.945 78-6 13.246-3.282 25.178-9.863 38-20s23.678-24.237 32-42c8.321-17.763 12-39.935 12-66-0-33.788-5.565-60.665-20-82s-32.602-35.628-54-42c-13.926-4.247-44.148-6-90-6h-122zM452 76h36c27.172 0 44.999 0.070 54 2 12.227 2.51 24.018 7.96 32 18s12 24.554 12 40c-0 12.55-4.311 22.54-10 32s-11.981 17.56-22 22c-10.020 4.441-30.281 6-60 6h-42v-120zM986 406l-28 10-234 190-50-84-22-14-26-2-42 30-176 168-36 14-22-4 6-26 88-120 28-46-6-34-22-6-36 32-170 184-44 24-12-8 2-28 72-98 34-64-8-36-14-10-30 16-102 150-36 64-6 74 20 32 36 8 38-14 78-66 14 54 30 16 50 2 44-26 96-80 124-132 12-2 42 60 4 22-276 316c0 0-8.993 18.503 2 36s8 16 8 16l48-6 238-294 10-2 18 6 70 124 30 6 14-20-4-34-78-122 226-198 30-30-14-32-18-16z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-hpux" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 523, + "id": 101, + "prevSize": 16, + "code": 59693, + "name": "it-server-hpux" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 209 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM214 578c47.25 0 85.635 14.688 114 44s42 69.792 42 122c-0 51.771-13.854 92.76-42 122s-64.896 44-112 44c-47.688 0-85.854-14.906-114-44s-42-68.958-42-120c-0-32.666 4.229-59.833 14-82 7.292-16.333 17.385-31.021 30-44s26.979-21.729 42-28c19.979-8.458 41.896-14 68-14zM832 578c40.25 0 71.656 8.354 92 26s30.979 42.542 32 72l-66 2c-2.771-16.479-8.886-28.781-18-36s-21.771-10-40-10c-18.813 0-33.354 4.271-44 12-6.854 4.959-10 11.688-10 20-0 7.584 1.583 12.604 8 18 8.167 6.854 28.5 14.563 60 22s54.906 16.052 70 24c15.094 7.948 27.468 18.219 36 32s12 31.729 12 52c-0 18.375-3.792 33.958-14 50s-25.334 28.198-44 36c-18.667 7.802-42.146 12-70 12-40.542 0-72.271-9.26-94-28s-33.771-46.125-38-82l62-6c3.791 21.146 12.406 36.083 24 46s26.312 16 46 16c20.854 0 37.427-5.177 48-14s16-18.187 16-30c-0-7.583-1.552-14.677-6-20s-12.917-10.062-24-14c-7.583-2.625-25.021-7.292-52-14-34.708-8.604-60-19.458-74-32-19.688-17.646-28-38.625-28-64 0-16.333 4.74-31.781 14-46s22.573-24.562 40-32c17.427-7.437 37.354-12 62-12zM420 584h104c39.375 0 66.041 0.792 78 4 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.583-10 50s-16.99 24.344-28 32c-11.011 7.656-20.625 11.521-32 14-15.459 3.062-38.688 6-68 6h-42v120h-66v-320zM216 634c-26.688 0-49.667 9.698-66 28s-24 45.104-24 82c-0 36.313 9.229 63.261 26 82s38.187 28 64 28c25.812 0 45.448-9.406 62-28s26-44.812 26-82c-0-36.75-7.886-65.916-24-84s-37.313-26-64-26zM486 638v92h36c25.521 0 41.396-2.646 50-6s15.114-8.854 20-16c4.885-7.146 8-14.521 8-24-0-11.667-3.146-22.416-10-30s-15.5-12.104-26-14c-7.729-1.458-24.667-2-48-2h-30z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-ops" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 524, + "id": 100, + "prevSize": 16, + "code": 59694, + "name": "it-storage-ops" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 210 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM724 584c39.229 0 71.5 10.813 96 34 14.583 13.709 24.708 34.334 32 60l-64 16c-3.792-16.625-11.969-30.375-24-40s-24.792-14-42-14c-23.771 0-43.198 8.938-58 26s-24 43.792-24 82c-0 40.542 7.417 68.792 22 86s34.666 26 58 26c17.208 0 31.604-5.062 44-16s20.604-28.521 26-52l64 20c-9.625 35-25.615 61.010-48 78s-51.583 26-86 26c-42.583 0-76.583-14.906-104-44s-42-69.542-42-120c-0-53.375 14.437-94.468 42-124s63.083-44 108-44zM164 590h128c25.375 0 43.531-0.115 56 2s24.156 7.292 34 14c9.843 6.709 17.437 14.844 24 26s10 24.146 10 38c-0 15.021-3.907 29.459-12 42s-18.146 21.729-32 28c19.541 5.688 33.5 16.292 44 30s16 29.479 16 48c-0 14.583-3.219 28.219-10 42s-16.261 23.76-28 32c-11.74 8.24-24.792 14.104-42 16-10.792 1.167-38.729 1.708-80 2h-108v-320zM228 644v74h44c25.229 0 39.875-1.271 46-2 11.083-1.312 19.656-5.656 26-12s10-13.646 10-24c-0-9.916-2.531-17.802-8-24s-13.209-10.687-24-12c-6.417-0.729-25.521 0-56 0h-38zM228 770v86h60c23.333 0 37.729-0.687 44-2 9.625-1.75 17.948-5.219 24-12s10-16.625 10-28c-0-9.625-3.334-17.292-8-24s-11.177-10.937-20-14c-8.823-3.062-28.542-6-58-6h-52z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-sanswitch-brocade" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 525, + "id": 99, + "prevSize": 16, + "code": 59695, + "name": "it-storage-sanswitch-brocade" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 211 + }, + { + "icon": { + "paths": [ + "M256 100v834h-256v90h1034v-90h-256v-252h-400v-96h400v-108h-400v-96h400v-282h-522z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 526, + "id": 98, + "prevSize": 16, + "code": 59696, + "name": "it" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 212 + }, + { + "icon": { + "paths": [ + "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM516 76c203.792 0 370 166.208 370 370s-166.208 372-370 372c-203.792 0-370-168.208-370-372s166.208-370 370-370zM516 182c-147.271 0-266 116.729-266 264s118.729 266 266 266c147.271 0 266-118.729 266-266s-118.729-264-266-264zM480 286h68l128 322h-70l-28-74h-128l-26 74h-68l124-322zM514 362l-44 118h88l-44-118zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 527, + "id": 97, + "prevSize": 16, + "code": 59697, + "name": "it-app" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 213 + }, + { + "icon": { + "paths": [ + "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM114 86h226c44.738 0 78.016 2.249 100 6s40.644 10.174 58 22c17.355 11.837 32.429 28.328 44 48 11.57 19.662 17.999 41.566 18 66-0.001 26.476-7.73 49.889-22 72s-33.574 38.945-58 50c34.453 10.003 61.487 27.826 80 52 18.512 24.174 27.999 53.345 28 86-0.001 25.716-6.045 49.701-18 74-11.956 24.299-29.302 43.475-50 58-20.698 14.535-45.661 24.655-76 28-19.027 2.084-65.236 1.479-138 2h-192v-564zM228 180v130h74c44.481 0 73.201-1.062 84-2 19.541-2.292 34.815-8.809 46-20 11.184-11.18 16-25.745 16-44-0-17.484-4.358-31.070-14-42s-24.974-17.687-44-20c-11.314-1.25-42.263-2-96-2h-66zM228 404v152h106c41.139 0 66.944-1.708 78-4 16.969-3.126 31.329-10.038 42-22 10.67-11.951 16-27.942 16-48-0-16.974-5.773-32.174-14-44-8.228-11.826-18.445-20.592-34-26-15.556-5.418-50.062-8-102-8h-92zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-bind" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 528, + "id": 96, + "prevSize": 16, + "code": 59698, + "name": "it-app-bind" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 214 + }, + { + "icon": { + "paths": [ + "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM836 140c41.156 0 73.198 11.587 94 34s30.956 50.584 32 88l-66 4c-2.833-20.931-8.68-34.831-18-44s-23.361-13.999-42-14c-19.236 0.001-33.115 4.181-44 14-7.009 6.298-12 15.442-12 26-0 9.632 3.439 17.147 10 24 8.35 8.706 29.791 18.553 62 28s54.566 17.905 70 28c15.433 10.095 27.276 24.496 36 42s14 40.253 14 66c-0 23.339-5.562 43.625-16 64s-24.913 36.090-44 46c-19.087 9.91-43.519 16-72 16-41.455 0-71.782-12.198-94-36s-35.676-58.433-40-104l64-8c3.877 26.858 12.145 45.404 24 58s27.869 20 48 20c21.324 0 37.189-6.79 48-18 10.811-11.207 16-22.996 16-38-0-9.632-3.452-19.239-8-26s-10.667-10.998-22-16c-7.754-3.331-26.414-9.479-54-18-35.49-10.928-59.685-24.071-74-40-20.131-22.413-30-49.769-30-82 0-20.746 4.531-39.94 14-58s22.18-32.553 40-42c17.819-9.446 38.799-14 64-14zM60 146h120c27.288 0 49.685 2.817 64 8 19.236 7.040 34.281 20.033 48 38s24.842 39.975 32 66c7.157 26.025 10 57.843 10 96-0 33.527-3.29 61.735-10 86-8.202 29.637-18.79 53.662-34 72-11.482 13.892-26.466 26.22-46 34-14.614 5.742-35.545 8-60 8h-124v-408zM392 146h64l134 272v-272h62v408h-66l-132-266v266h-62v-408zM126 216v270h50c18.49 0 31.798-1.411 40-4 10.736-3.331 18.917-10.035 26-18s13.526-19.755 18-38c4.473-18.246 6-44.511 6-76s-1.527-55.144-6-72c-4.474-16.855-11.948-30.553-20-40s-17.623-14.665-30-18c-9.245-2.596-27.010-4-54-4h-30zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-dns" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 529, + "id": 95, + "prevSize": 16, + "code": 59699, + "name": "it-app-dns" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 215 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM816 172c37.375 0 65.109 7.615 84 24s29.052 38.646 30 66l-60 4c-2.573-15.302-9.537-27.297-18-34s-21.073-10-38-10c-17.469 0-30.115 2.823-40 10-6.365 4.604-10 12.281-10 20-0 7.042 2.042 12.99 8 18 7.583 6.365 26.75 13.094 56 20s51.984 12.62 66 20c14.015 7.38 24.078 17.203 32 30s12 29.177 12 48c-0 17.063-4.521 33.104-14 48s-22.667 26.755-40 34c-17.334 7.245-40.136 10-66 10-37.646-0-65.823-8.599-86-26s-32.073-42.687-36-76l58-6c3.521 19.636 11.234 34.792 22 44s25.719 14 44 14c19.364 0 34.182-3.807 44-12s14-19.031 14-30c-0-7.042-1.87-13.057-6-18s-11.708-8.344-22-12c-7.042-2.437-22.948-7.771-48-14-32.229-7.989-55-16.354-68-28-18.281-16.385-28-36.437-28-60 0-15.166 5.401-30.797 14-44s19.818-23.093 36-30c16.182-6.906 37.114-10 60-10zM86 178h220v50h-160v66h150v50h-150v80h166v52h-226v-298zM364 178h90l54 202 52-202h90v298h-56v-236l-58 236h-58l-58-236v236h-56v-298zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-ems" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 530, + "id": 94, + "prevSize": 16, + "code": 59700, + "name": "it-app-ems" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 216 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM158 148h112l66 250 66-250h110v366h-68v-288l-72 288h-72l-72-288v288h-70v-366zM586 148h272v62h-198v80h184v62h-184v100h206v62h-280v-366zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-mediator" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 531, + "id": 93, + "prevSize": 16, + "code": 59701, + "name": "it-app-mediator" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 217 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM58 150h68l142 272v-272h64v408h-70l-140-266v266h-64v-408zM382 150h274v70h-102v338h-70v-338h-102v-70zM702 150h112c42.436 0.001 69.112 1.922 82 6 19.803 6.114 36.64 19.532 50 40s20 47.585 20 80c-0 25.007-4.299 44.959-12 62s-16.134 32.275-28 42c-11.867 9.724-25.741 14.851-38 18-16.66 3.891-40.409 6-72 6h-44v154h-70v-408zM772 220v116h38c27.505 0 44.727-3.734 54-8 9.273-4.259 16.735-10.923 22-20s8-19.96 8-32c-0-14.818-4.613-26.368-12-36s-16.684-15.592-28-18c-8.33-1.848-24.853-2-50-2h-32zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-ntp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 532, + "id": 92, + "prevSize": 16, + "code": 59702, + "name": "it-app-ntp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 218 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM202 144c48.314 0 86.996 18.769 116 56 29.003 37.232 42 87.687 42 154-0 65.757-13.221 118.861-42 156s-67.835 54-116 54c-48.761 0-87.221-17.046-116-54s-44-89.169-44-154c-0-41.491 6.009-75.845 16-104 7.456-20.745 17.101-39.514 30-56s26.641-28.035 42-36c20.429-10.743 45.308-16 72-16zM388 150h262v70h-98v338h-66v-338h-98v-70zM786 150h70l132 408h-72l-28-92h-132l-26 92h-72l128-408zM202 214c-27.289 0.001-49.299 10.754-66 34-16.701 23.247-26 59.137-26 106-0 46.123 8.851 80.199 26 104 17.148 23.803 39.606 36 66 36s47.075-10.383 64-34c16.924-23.617 26-60.766 26-108-0-46.678-7.523-81.031-24-104s-38.712-33.999-66-34zM820 246l-44 150h90l-46-150zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-ota" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 533, + "id": 91, + "prevSize": 16, + "code": 59703, + "name": "it-app-ota" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 219 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM596 144c50.805 0.001 92.27 16.028 124 50 18.886 20.085 32.556 50.396 42 88l-82 22c-4.911-24.358-14.419-43.897-30-58-15.582-14.101-35.714-21.999-58-22-30.785 0.001-54.83 13.002-74 38s-30 66.020-30 122c-0 59.399 11.113 100.787 30 126s41.781 38 72 38c22.286 0 41.946-7.975 58-24s27.012-41.6 34-76l82 30c-12.465 51.279-33.010 89.108-62 114s-65.428 38-110 38c-55.149 0-100.493-21.374-136-64s-54-102.072-54-176c-0-78.201 18.304-138.733 54-182s81.829-63.999 140-64zM32 152h330v80h-122v390h-84v-390h-124v-80zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-tomcat" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 534, + "id": 90, + "prevSize": 16, + "code": 59704, + "name": "it-app-tomcat" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 220 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM32 152h330v80h-122v390h-84v-390h-124v-80zM416 152h126l74 320 76-320h126v470h-78v-370l-84 370h-80l-82-370v370h-78v-470zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-trend" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 535, + "id": 89, + "prevSize": 16, + "code": 59705, + "name": "it-app-trend" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 221 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM450 144c41.156 0 73.198 11.587 94 34s30.956 50.584 32 88l-66 4c-2.833-20.931-8.68-34.831-18-44s-23.361-13.999-42-14c-19.236 0.001-35.115 4.181-46 14-7.009 6.298-10 15.442-10 26-0 9.632 3.439 17.147 10 24 8.35 8.706 29.791 18.553 62 28s54.566 17.905 70 28c15.433 10.095 27.276 24.496 36 42s14 40.253 14 66c-0 23.339-5.562 43.625-16 64s-24.913 36.090-44 46c-19.087 9.91-43.519 16-72 16-41.455 0-71.782-12.198-94-36s-35.676-58.433-40-104l64-8c3.877 26.858 12.145 45.404 24 58s27.869 20 48 20c21.324 0 37.189-6.79 48-18 10.811-11.207 16-22.996 16-38-0-9.632-3.452-19.239-8-26s-10.667-10.998-22-16c-7.754-3.331-26.414-9.479-54-18-35.49-10.928-59.685-24.071-74-40-20.131-22.413-30-49.769-30-82-0-20.746 4.531-39.94 14-58s22.18-32.553 40-42c17.819-9.446 38.799-14 64-14zM32 150h262v70h-98v338h-66v-338h-98v-70zM642 150h98l60 278 58-278h100v408h-62v-320l-64 320h-64l-66-320v320h-60v-408zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-tsm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 536, + "id": 88, + "prevSize": 16, + "code": 59706, + "name": "it-app-tsm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 222 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM24 150h68l50 280 60-280h78l58 286 50-286h66l-78 408h-72l-64-304-66 304h-72l-78-408zM490 154h66v336h164v68h-230v-404zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-weblogic" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 537, + "id": 87, + "prevSize": 16, + "code": 59707, + "name": "it-app-weblogic" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 223 + }, + { + "icon": { + "paths": [ + "M180 2v168h156v278h172v98h-236v-308h-272v786h272v-340h236v338h274v-784h-274v72h-40v-308h-288zM740 2v168h156v852h132v-1020h-288zM336 748v278h132v-278h-132z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-cluster" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 538, + "id": 86, + "prevSize": 16, + "code": 59708, + "name": "it-cluster" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 224 + }, + { + "icon": { + "paths": [ + "M86 3.923v80.685h268.592v322.739h140.395v93.101h-208.987v-345.498h-286v873.050h286v-388.941h208.987v35.168h286v-519.277h-286v171.712h-80.395v-322.739zM580.987 3.923v80.685h262.913v589.619h60v-670.304zM426 714.022l-122 291.219h68l24-70.342h124l28 70.342h68l-124-291.219zM646 714.022v291.219h64v-291.219zM746 714.022l96 129.85-104 161.37h74l68-107.578 70 107.578h74l-106-159.296 98-131.923h-74l-60 82.266-62-82.266zM458 769.395l42 113.786h-84z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-cluster-hacmp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 539, + "id": 85, + "prevSize": 16, + "code": 59709, + "name": "it-cluster-hacmp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 225 + }, + { + "icon": { + "paths": [ + "M86 4v80h268v324h140v92h-208v-346h-286v874h286v-388h208v34h286v-520h-286v172h-80v-322h-328zM580 4v80h264v590h60v-670h-324zM924 704c-34.513 0-60.822 14.992-82 42-21.178 27.014-32 63.181-32 112-0 46.157 10.934 83.389 32 110s47.28 40 80 40c26.445 0 48.8-8.454 66-24 17.2-15.539 28.604-37.987 36-70l-48-20c-4.146 21.478-10.476 37.997-20 48-9.525 10.016-20.778 16-34 16-17.929 0-32.795-8.262-44-24s-18-42.918-18-80c-0-34.95 6.626-60.397 18-76 11.373-15.61 25.735-22 44-22 13.222 0 24.755 3.2 34 12 9.244 8.806 15.087 20.794 18 36l50-14c-5.603-23.475-14.795-41.462-26-54-18.825-21.21-43.858-32-74-32zM340 710v292h46v-190l100 190h50v-292h-46v196l-102-196h-48zM588 710v292h188v-48h-138v-80h124v-50h-124v-64h134v-50h-184z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-cluster-nec" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 540, + "id": 84, + "prevSize": 16, + "code": 59710, + "name": "it-cluster-nec" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 226 + }, + { + "icon": { + "paths": [ + "M86 4v80h268v324h140v92h-208v-346h-286v874h286v-388h208v34h286v-520h-286v172h-80v-322zM580 4v80h264v590h60v-670zM856.41 723.241c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28s-12 24.003-12 38c0 21.754 9.125 40.877 26 56 12 10.752 32.25 20.627 62 28 23.125 5.728 39.5 9.76 46 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 4 9.504 4 16-0 10.125-2.938 18.435-12 26s-24.125 12-42 12c-16.875 0-30.063-5.501-40-14s-16.75-21.875-20-40l-54 6c3.625 30.752 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.312 60-10s29.25-16.253 38-30c8.75-13.747 12-28.25 12-44-0-17.376-2.688-32.186-10-44s-19.063-21.19-32-28c-12.938-6.816-33-13.6-60-20-27-6.374-43-12.112-50-18-5.5-4.627-8-11.504-8-18-0-7.13 2.125-11.776 8-16 9.125-6.611 21.875-10 38-10 15.625 0 28.187 3.792 36 10 7.812 6.189 11.625 15.875 14 30l56-2c-0.875-25.248-10.563-46.877-28-62s-43.5-22-78-22zM423.783 717.518v276h50v-180l112 180h56v-276h-52v184l-112-184z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-cluster-ns" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 541, + "id": 83, + "prevSize": 16, + "code": 59711, + "name": "it-cluster-ns" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 227 + }, + { + "icon": { + "paths": [ + "M86 0v80h268v324h140v92h-208v-345.997h-286v873.997h286v-388h208v34.003h286v-520h-286v172h-80v-322.003zM580 0v80h264v590.003h60v-670.003zM483.586 734.24v276h56v-120h108v120h56v-276h-56v108h-108v-108zM806.959 734.24v276h56v-104h36c25.125 0 44.75-1.408 58-3.968 9.75-2.112 18.562-7.437 28-13.997 9.437-6.566 17.875-14.502 24-26.003 6.125-11.494 8-25.12 8-41.997-0-21.875-5.375-40.192-16-54.003s-22.25-23.904-38-28c-10.25-2.688-32.25-3.968-66-3.968zM862.959 782.24h26c20 0 33.375 0.704 40 1.984 9 1.6 16.125 5.504 22 12 5.875 6.502 10 14.003 10 24 0 8.128-1.812 15.853-6 21.997s-10.625 9.12-18 12c-7.375 2.88-22.125 6.016-44 6.016h-30z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-cluster-sg" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 542, + "id": 82, + "prevSize": 16, + "code": 59712, + "name": "it-cluster-sg" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 228 + }, + { + "icon": { + "paths": [ + "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-140c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 652v138c0.439 3.52 2 9.51 2 12 0 122.669 229.23 222 512 222s512-99.331 512-222c0-2.24 1.483-8.499 2-12v-94c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-database" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 543, + "id": 81, + "prevSize": 16, + "code": 59713, + "name": "it-database" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 229 + }, + { + "icon": { + "paths": [ + "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50v-140zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM114 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.187 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM398 716c-41.125 0-74 13.066-98 38-24 24.941-36 61.123-36 106-0 44.998 12.062 79.123 36 104 23.937 24.87 55.75 38 98 38 21.875 0 42-4.128 60-12 22.875 15.373 36.25 23.104 38 24 8 4.365 15.625 7.504 24 10l20-40c-16-5.754-30.375-12.253-44-22 11-12.877 19-26.253 24-40 6.625-18.003 10-38.25 10-62-0-44.877-12.125-81.059-36-106-23.875-24.934-55.25-38-96-38zM904 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40 0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-10-9.498-10-16-0-7.123 4.125-13.776 10-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM574 724v272h194v-46h-138v-226h-56zM396 764c22.625 0 42 8.314 56 24 14 15.693 20 40.25 20 72-0 15.373-0.438 28.128-4 40-3.563 11.878-8.875 21.629-16 30-16.625-12.499-35.75-21.728-54-28l-14 32c11.625 4.128 22.75 10.627 34 18-7.125 2.624-14 4-22 4-21.5 0-39.938-8.064-54-24s-22-39.878-22-72c-0-31.629 7.937-56.25 22-72s31.375-24 54-24z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-database-mssql" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 544, + "id": 80, + "prevSize": 16, + "code": 59714, + "name": "it-database-mssql" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 230 + }, + { + "icon": { + "paths": [ + "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM140 716c-22.375 0-42.875 4.749-60 12-12.875 5.376-23.188 12.877-34 24s-19.75 23.997-26 38c-8.375 18.995-14 42-14 70-0 43.75 13.875 79.059 38 104 24.125 24.934 55.125 38 96 38 40.375 0 73.875-12.938 98-38s36-59.622 36-104c-0-44.749-11.688-80.874-36-106s-57.5-38-98-38zM714 716c-38.5 0-70.375 12.688-94 38s-36 62.253-36 108c-0 43.251 12.5 77.059 36 102 23.5 24.934 53.5 38 90 38 29.5 0 52.812-7.44 72-22 19.187-14.566 33.75-37.997 42-68l-54-16c-4.625 20.128-11.375 34.624-22 44-10.625 9.389-23.25 14.006-38 14-20 0.006-37.5-7.248-50-22-12.5-14.746-18-39.248-18-74-0-32.749 5.313-57.37 18-72 12.687-14.624 29.625-22 50-22 14.75 0 27.687 3.75 38 12s16.75 19.747 20 34l56-12c-6.25-22.003-17.5-40.25-30-52-21-19.878-46.375-30-80-30zM316 722v274h56v-114h12c12.75 0 22.125-0.048 28 2 5.875 2.061 10.75 6.432 16 12 5.25 5.562 15.75 18.63 30 40l40 60h66l-34-54c-13.25-21.376-24.188-35.629-32-44-7.813-8.378-16-14.998-28-22 24.125-3.501 41.875-12.56 54-26 12.125-13.434 18-31.373 18-52-0-16.25-4-29.373-12-42-8-12.621-18.688-23.072-32-28-13.313-4.909-34.625-6-64-6zM874 724v272h146.652v-46h-92.652v-226zM140 764c22.875 0 42.187 8.506 56 24 13.812 15.501 20 38.499 20 70-0 31.878-7.813 56.064-22 72s-31.875 24.006-54 24c-22.125 0.006-39.625-7.936-54-24s-22-40.87-22-72c-0-31.622 8-54.307 22-70 14-15.686 31.125-24 54-24zM372 768h44c22.5 0 35.5-0.64 40 0 9 1.498 17.062 6.304 22 12 4.937 5.683 6 12.746 6 22-0 8.25-2.25 14.496-6 20-3.75 5.485-7.375 9.76-14 12s-23.375 4-50 4h-42z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-database-oracle" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 545, + "id": 79, + "prevSize": 16, + "code": 59715, + "name": "it-database-oracle" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 231 + }, + { + "icon": { + "paths": [ + "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50v-140zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM114 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.187 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM904 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-2.938 20.442-12 28-9.063 7.571-24.125 10-42 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-2.688-32.192-10-44-7.313-11.814-19.063-21.184-32-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 28.187 3.792 36 10 7.812 6.189 11.625 15.875 14 30l56-2c-0.876-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM246 722l100 158v116h56v-114l102-160h-64l-64 108-64-108h-66zM532 722v274h92c35.375-0.256 58.75-0.976 68-2 14.75-1.626 27.937-4.934 38-12 10.062-7.059 16.188-16.186 22-28 5.812-11.808 10-25.501 10-38-0-15.872-5-28.25-14-40s-21.25-21.136-38-26c11.875-5.376 21.062-13.254 28-24 6.937-10.752 10-23.13 10-36-0-11.878-2.375-22.438-8-32s-13.563-16.24-22-22c-8.438-5.773-17.313-10.208-28-12-10.688-1.856-26.25-2-48-2h-110zM586 768h32c26.125 0 42.5-0.64 48 0 9.25 1.126 17.312 4.688 22 10s6 11.501 6 20c-0 8.877-2.563 16.56-8 22-5.437 5.434-12.5 8.848-22 10-5.25 0.96-18.375 0-40 0h-38v-62zM586 876h46c25.25 0 40.437 1.376 48 4s14 8.24 18 14c4 5.747 6 11.75 6 20-0 9.747-2.813 18.176-8 24-5.188 5.85-11.75 8.528-20 10-5.375 1.024-18 2-38 2h-52v-74z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-database-sybase" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 546, + "id": 78, + "prevSize": 16, + "code": 59716, + "name": "it-database-sybase" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 232 + }, + { + "icon": { + "paths": [ + "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM576 72c40.75 0 74.125 13.059 98 38 23.875 24.934 36 59.13 36 104-0 23.75-3.375 44.003-10 62-5 13.754-13 27.123-24 40 13.625 9.747 28 18.253 44 24l-20 40c-8.375-2.496-18-7.642-26-12-1.75-0.896-13.125-8.627-36-24-18 7.872-38.125 12-60 12-42.25 0-76.063-13.123-100-38s-36-59.002-36-104c-0-44.87 12-79.066 36-104 24-24.941 56.875-38 98-38zM346 76h56v276h-56v-276zM560 120c-15.363 2.954-27.453 12.187-38 24-14.063 15.75-22 38.378-22 70-0 32.128 7.937 56.064 22 72s30.5 24 52 24c8 0 16.875-1.376 24-4-11.25-7.373-24.375-13.878-36-18l16-30c18.25 6.272 35.375 15.501 52 28 7.125-8.378 12.437-20.128 16-32 3.562-11.878 5.999-24.621 6-40-0-31.75-6-56.314-20-72s-33.375-22-56-22c-5.656 0-10.879-0.985-16 0zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50v-140zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM114 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.187 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM904 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-2.938 20.442-12 28-9.063 7.571-24.125 10-42 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-2.688-32.192-10-44-7.313-11.814-19.063-21.184-32-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 28.187 3.792 36 10 7.812 6.189 11.625 15.875 14 30l56-2c-0.876-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM246 722l100 158v116h56v-114l102-160h-64l-64 108-64-108h-66zM532 722v274h92c35.375-0.256 58.75-0.976 68-2 14.75-1.626 27.937-4.934 38-12 10.062-7.059 16.188-16.186 22-28 5.812-11.808 10-25.501 10-38-0-15.872-5-28.25-14-40s-21.25-21.136-38-26c11.875-5.376 21.062-13.254 28-24 6.937-10.752 10-23.13 10-36-0-11.878-2.375-22.438-8-32s-13.563-16.24-22-22c-8.438-5.773-17.313-10.208-28-12-10.688-1.856-26.25-2-48-2h-110zM586 768h32c26.125 0 42.5-0.64 48 0 9.25 1.126 17.312 4.688 22 10s6 11.501 6 20c-0 8.877-2.563 16.56-8 22-5.437 5.434-12.5 8.848-22 10-5.25 0.96-18.375 0-40 0h-38v-62zM586 876h46c25.25 0 40.437 1.376 48 4s14 8.24 18 14c4 5.747 6 11.75 6 20-0 9.747-2.813 18.176-8 24-5.188 5.85-11.75 8.528-20 10-5.375 1.024-18 2-38 2h-52v-74z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-database-sybaseiq" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 547, + "id": 77, + "prevSize": 16, + "code": 59717, + "name": "it-database-sybaseiq" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 233 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM0 605.772v320h110c21.777 0 40.987-1.48 54-6 17.395-6.125 29.775-15.063 40-26 13.544-14.438 24.696-34.667 32-58 5.975-19.104 8-41.604 8-68-0-30.041-1.626-55.51-8-76s-15.784-37.854-28-52c-12.217-14.146-26.87-22.458-44-28-12.748-4.083-31.7-6-56-6zM294 605.772v320h224v-54h-164v-88h146v-54h-146v-70h158v-54zM570 607.772v318h204v-54h-146v-264zM818 607.772v318h206v-54h-146v-264zM58 659.772h28c24.035 0 39.767-0.041 48 2 11.021 2.625 20.829 8.563 28 16s12.016 16.729 16 30c3.983 13.271 6 33.209 6 58s-2.017 43.636-6 58c-3.984 14.365-9.693 25.729-16 32s-14.439 9.375-24 12c-7.304 2.042-19.534 4-36 4h-44z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-dellmd" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 548, + "id": 76, + "prevSize": 16, + "code": 59718, + "name": "it-diskraid-dellmd" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 234 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM854 613.898c-44.917 0-82.438 14.469-110 44s-40 72.625-40 126c-0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.416 0 61.614-9.010 84-26s38.375-43 48-78l-62-20c-5.396 23.479-15.604 41.063-28 52s-26.792 16-44 16c-23.334 0-41.417-8.792-56-26s-22-45.458-22-86c-0-38.208 7.198-64.937 22-82s34.229-26 58-26c17.208 0 31.969 4.375 44 14s20.208 23.375 24 40l64-16c-7.292-25.666-19.417-44.291-34-58-24.5-23.187-54.771-36-94-36zM42 619.898v320h244v-54h-180v-86h162v-54h-162v-72h174v-54zM340 619.898v320h60v-252l64 252h62l64-252v252h60v-320h-98l-56 218-60-218z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-emc" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 549, + "id": 75, + "prevSize": 16, + "code": 59719, + "name": "it-diskraid-emc" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 235 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM906 622.576c-22.115 0-42.363 4.563-58 12s-27.691 17.781-36 32c-8.309 14.219-12 29.667-12 46 0 25.375 8.335 46.354 26 64 12.562 12.542 34.857 23.396 66 32 24.208 6.708 41.195 11.375 48 14 9.945 3.937 16.009 8.677 20 14s6 12.417 6 20c-0 11.813-4.513 21.177-14 30s-23.288 14-42 14c-17.665 0-31.597-6.083-42-16s-18.598-24.854-22-46l-56 6c3.795 35.875 14.503 63.26 34 82s47.622 28 84 28c24.993 0 47.25-4.198 64-12s28.84-19.958 38-36c9.159-16.042 14-33.625 14-52-0-20.271-4.346-36.219-12-50s-18.457-24.052-32-32c-13.544-7.948-33.736-16.562-62-24s-46.672-15.146-54-22c-5.758-5.396-8-10.416-8-18-0-8.312 3.85-15.041 10-20 9.552-7.729 21.12-12 38-12 16.357 0 29.821 2.781 38 10s13.514 19.521 16 36l58-2c-0.916-29.458-9.746-54.354-28-72s-45.884-26-82-26zM0 628.576v320h218v-54h-160v-88h144v-54h-144v-70h156v-54zM248 628.576v54h86v266h58v-266h84v-54zM514 628.576v320h54v-208l116 208h60v-320h-54v214l-118-214z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-eternus" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 550, + "id": 74, + "prevSize": 16, + "code": 59720, + "name": "it-diskraid-eternus" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 236 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106h-832zM76 74h872v420h-872v-420zM128 148v132h338v-132h-338zM546 148v132h338v-132h-338zM126 326v130h338v-130h-338zM546 326v130h338v-130h-338zM216 620v322h72v-136h134v-54h-134v-76h154v-56h-226zM728 620v208c-0 25.958-2.021 43.761-8 52-5.663 7.804-14.751 11.587-28 12-12.099-1.212-21.741-7.699-28-18-4.667-7.583-7.271-19.625-8-38h-6l-62 6c0.146 34.271 8.937 60.281 26 78 14.335 14.887 33.371 23.621 58 26 6.9 1.241 14.089 2 22 2 26.979 0 49.521-6.698 66-18s27.729-25.333 34-44c4.667-14.292 6-35.458 6-62v-204h-72z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-fujitsu" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 551, + "id": 73, + "prevSize": 16, + "code": 59721, + "name": "it-diskraid-fujitsu" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 237 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM826 618.237c-24.646 0-46.573 4.563-64 12s-30.74 17.782-40 32c-9.26 14.219-14 29.667-14 46-0 25.375 10.312 46.354 30 64 14 12.542 39.292 23.396 74 32 26.979 6.708 44.417 11.375 52 14 11.083 3.937 17.552 8.677 22 14s8 12.417 8 20c-0 11.813-5.427 21.177-16 30s-27.146 14-48 14c-19.688 0-34.406-6.083-46-16s-20.209-24.854-24-46l-62 6c4.229 35.875 16.271 63.26 38 82s53.458 28 94 28c27.854 0 51.333-4.198 70-12s31.791-19.958 42-36c10.208-16.042 16-33.625 16-52-0-20.271-3.469-36.219-12-50s-20.906-24.052-36-32c-15.094-7.948-38.5-16.562-70-24s-51.833-15.146-60-22c-6.417-5.396-10-10.416-10-18-0-8.312 3.146-15.041 10-20 10.646-7.729 27.187-12 46-12 18.229 0 30.885 2.781 40 10s15.229 19.521 18 36l64-2c-1.021-29.458-11.657-54.354-32-72s-49.75-26-90-26zM66 624.237v320h64v-140h128v140h64v-320h-64v126h-128v-126zM390 624.237v320h122c23.916 0 41.708-1.479 56-6 19.104-6.125 34.771-15.062 46-26 14.875-14.437 25.979-32.667 34-56 6.562-19.104 10-41.604 10-68-0-30.041-3-55.51-10-76s-16.584-37.854-30-52c-13.417-14.146-31.188-24.458-50-30-14-4.083-33.313-6-60-6zM454 678.237h30c26.396 0 42.958-0.042 52 2 12.104 2.625 22.125 8.563 30 16s13.625 18.729 18 32c4.375 13.271 8 31.209 8 56s-3.625 43.636-8 58c-4.375 14.365-9.073 25.729-16 32s-15.5 11.375-26 14c-8.021 2.042-21.99 0.371-40 2h-48z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-hds" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 552, + "id": 72, + "prevSize": 16, + "code": 59722, + "name": "it-diskraid-hds" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 238 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM732 617.593c-24.727 0-45.075 5.071-64 14-14.229 6.62-28.051 16.298-40 30s-21.093 28.757-28 46c-9.255 23.401-14 51.514-14 86-0 53.884 13.339 97.286 40 128s62.828 46 108 46c44.619 0 79.339-15.132 106-46s40-73.346 40-128c-0-55.115-13.132-99.055-40-130s-63.243-46-108-46zM262 623.593l-118 338h64l26-76h120l28 76h66l-122-338zM480 623.593v60h58v-60zM734 675.593c25.28 0 44.735 8.91 60 28s24 49.204 24 88c-0 39.258-8.321 68.371-24 88s-35.549 30-60 30c-24.451 0-44.114-10.217-60-30s-24-49.665-24-88c-0-38.95 6.528-66.678 22-86s36.72-30 62-30zM294 701.593l42 126h-84zM480 715.593v246h58v-246z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-hpaio" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 553, + "id": 71, + "prevSize": 16, + "code": 59723, + "name": "it-diskraid-hpaio" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 239 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM516 617.593c-23.346 0-41.492 4.148-58 12s-29.228 18.99-38 34c-8.772 15.011-14 30.757-14 48-0 26.788 9.351 49.372 28 68 13.261 13.24 37.122 24.917 70 34 25.556 7.082 40.817 11.229 48 14 10.499 4.157 17.787 10.381 22 16s6 11.994 6 20c-0 12.47-3.985 22.686-14 32s-24.246 14-44 14c-18.649 0-35.018-5.531-46-16s-18.408-25.677-22-48l-58 6c4.006 37.873 15.417 66.217 36 86s49.597 30 88 30c26.385 0 48.318-3.763 66-12s32.33-21.065 42-38c9.669-16.935 14-34.602 14-54-0-21.399-3.919-39.451-12-54s-19.703-25.609-34-34c-14.298-8.39-36.162-18.148-66-26s-48.264-14.764-56-22c-6.078-5.696-10-11.994-10-20-0-8.775 3.507-16.765 10-22 10.084-8.159 24.18-12 42-12 17.267 0 31.366 4.38 40 12s13.375 20.604 16 38l62-4c-0.967-31.098-10.73-55.371-30-74s-49.873-28-88-28zM56 623.593v338h56v-266l62 266h58l60-266v266h58v-338h-92l-56 230-54-230zM782 623.593l-118 338h64l26-76h120l28 76h66l-122-338zM814 701.593l42 126h-84z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-hpmsa" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 554, + "id": 70, + "prevSize": 16, + "code": 59724, + "name": "it-diskraid-hpmsa" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 240 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM152 625.254v338h62v-338zM272 625.254v338h104c39.094-0.307 63.777-0.769 74-2 16.3-2.001 28.879-7.302 40-16s21.576-21.451 28-36c6.423-14.549 8-28.604 8-44-0-19.552-4.054-37.528-14-52s-23.489-23.996-42-30c13.123-6.62 22.333-16.76 30-30s12-28.142 12-44c-0-14.625-3.784-26.222-10-38s-12.676-22.918-22-30c-9.325-7.082-20.189-11.768-32-14s-29.964-2-54-2zM578 625.254v338h56v-266l62 266h58l60-266v266h58v-338h-92l-56 230-54-230zM334 681.254h34c28.871 0 47.922-0.769 54 0 10.222 1.386 16.82 5.457 22 12s8 15.531 8 26c-0 10.931-1.991 19.303-8 26s-15.501 10.615-26 12c-5.802 0.769-20.102 2-44 2h-40zM334 815.254h50c27.904 0 45.642 2.767 54 6s13.579 6.918 18 14c4.42 7.082 8 15.839 8 26-0 12.009-4.267 22.841-10 30s-12.883 10.153-22 12c-5.94 1.386-19.898 2-42 2h-56z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-ibm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 555, + "id": 69, + "prevSize": 16, + "code": 59725, + "name": "it-diskraid-ibm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 241 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM338 610.576c-23.346 0-43.492 4.148-60 12s-29.228 18.99-38 34c-8.772 15.011-12 30.757-12 48-0 26.788 9.351 49.372 28 68 13.261 13.24 35.122 24.917 68 34 25.556 7.082 42.817 11.229 50 14 10.499 4.157 17.787 10.38 22 16s6 11.994 6 20c-0 12.47-5.985 22.686-16 32s-24.246 14-44 14c-18.649 0-33.018-5.531-44-16s-18.408-25.677-22-48l-60 6c4.006 37.873 17.417 66.217 38 86s49.597 30 88 30c26.385 0 48.318-3.763 66-12s30.33-21.065 40-38c9.67-16.935 16-34.602 16-54-0-21.399-3.919-39.451-12-54s-19.703-25.609-34-34c-14.298-8.39-36.162-18.148-66-26s-50.264-14.764-58-22c-6.078-5.696-8-11.994-8-20-0-8.775 3.507-16.765 10-22 10.084-8.159 24.18-12 42-12 17.267 0 29.366 4.38 38 12s15.375 20.604 18 38l60-4c-0.967-31.098-10.73-55.371-30-74s-47.873-28-86-28zM514 616.576v338h58v-266l60 266h58l60-266v266h58v-338h-92l-54 230-56-230z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-ibmsm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 556, + "id": 68, + "prevSize": 16, + "code": 59726, + "name": "it-diskraid-ibmsm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 242 + }, + { + "icon": { + "paths": [ + "M545.978 325.073h338.060v129.629h-338.060v-129.629z", + "M545.978 147.596h338.060v131.631h-338.060v-131.631z", + "M126.045 325.073h337.967v129.629h-337.967v-129.629z", + "M128.047 147.596h337.967v131.631h-337.967v-131.631z", + "M928.023 0h-832c-53.434 0-96.023 46.732-96.023 105.705v353.001c0 58.973 42.589 107.706 96.023 107.706h832.047c53.341 0 95.977-48.733 95.977-107.706v-353.001c-0.047-58.973-42.636-105.705-96.023-105.705zM948.038 492.637h-872.029v-418.863h872.029v418.863z", + "M326.051 844.102c-7.68 22.481-13.405 39.657-17.036 51.293-3.212-10.519-8.332-26.298-15.267-47.383l-75.916-226.444h-63.907v319.814h40.913v-272.244l92.719 272.244h38.353l93.091-267.636v267.636h40.96v-319.814h-57.065l-76.847 222.534z", + "M838.982 772.934c-12.753-5.818-36.399-12.614-70.889-20.387-34.444-7.82-55.808-15.407-63.953-22.807-8.378-7.401-12.521-16.849-12.521-28.346 0-13.219 5.818-24.529 17.594-33.932 11.729-9.402 30.394-14.103 56.087-14.103 24.623 0 43.241 5.167 55.855 15.453 12.66 10.38 20.061 25.6 22.202 45.894l40.774-3.119c-0.791-18.665-5.958-35.561-15.732-50.362-9.821-14.801-23.785-26.065-41.937-33.745-18.153-7.587-39.098-11.404-62.883-11.404-21.597 0-41.239 3.631-58.833 10.845-17.641 7.261-31.139 17.92-40.262 31.977-9.216 14.010-13.777 29.091-13.777 45.335 0 14.615 3.77 27.927 11.217 39.75 7.494 11.823 18.944 21.783 34.211 29.789 11.823 6.237 32.396 12.893 61.952 19.968 29.463 7.028 48.454 12.288 57.111 15.593 13.405 5.12 23.040 11.404 28.858 18.851 5.818 7.494 8.751 16.291 8.751 26.298 0 9.914-2.979 18.991-9.030 27.369-6.097 8.332-15.313 14.941-27.695 19.735-12.428 4.841-26.717 7.168-42.915 7.168-18.246 0-34.583-3.119-49.199-9.449-14.615-6.284-25.414-14.569-32.256-24.855-6.935-10.24-11.311-23.366-13.219-39.331l-39.983 3.491c0.559 21.318 6.377 40.495 17.594 57.437 11.124 16.943 26.438 29.603 46.127 37.981 19.596 8.471 43.892 12.66 72.89 12.66 22.993 0 43.567-4.236 61.812-12.614 18.339-8.378 32.349-20.061 42.124-35.095s14.662-31.046 14.662-48.035c0-17.175-4.515-32.396-13.359-45.521-8.844-13.033-22.668-23.831-41.379-32.489z" + ], + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-macrosan" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 5, + 5, + 5, + 5, + 5, + 5, + 5 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "properties": { + "order": 557, + "id": 67, + "prevSize": 16, + "code": 59727, + "name": "it-diskraid-macrosan" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 243 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM222 616.576v338h56v-220l124 220h60v-338h-56v226l-124-226zM616 616.576l-118 338h64l26-76h120l28 76h66l-122-338zM648 694.576l42 126h-84z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-netapp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 558, + "id": 66, + "prevSize": 16, + "code": 59728, + "name": "it-diskraid-netapp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 244 + }, + { + "icon": { + "paths": [ + "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM210 614.915c-23.346 0-43.492 4.148-60 12s-29.228 18.99-38 34c-8.772 15.011-12 30.757-12 48-0 26.788 9.351 49.372 28 68 13.261 13.24 35.122 24.917 68 34 25.556 7.082 42.817 11.229 50 14 10.499 4.157 17.787 10.38 22 16s6 11.994 6 20c-0 12.47-5.985 22.686-16 32s-24.246 14-44 14c-18.649 0-33.018-5.531-44-16s-18.408-25.677-22-48l-60 6c4.006 37.873 17.417 66.217 38 86s49.597 30 88 30c26.385 0 48.318-3.763 66-12s30.33-21.065 40-38c9.67-16.935 16-34.602 16-54-0-21.399-3.919-39.451-12-54s-19.703-25.609-34-34c-14.298-8.39-36.162-18.148-66-26s-48.264-14.764-56-22c-6.078-5.696-10-11.994-10-20-0-8.775 3.507-16.765 10-22 10.084-8.159 24.18-12 42-12 17.267 0 29.366 4.38 38 12s15.375 20.604 18 38l60-4c-0.967-31.098-10.73-55.371-30-74s-47.873-28-86-28zM386 620.915v180c0 37.873 1.994 66.602 6 86 2.763 13.086 9.297 26.069 18 38s21.012 20.533 36 28c14.988 7.467 36.99 12 66 12 24.036 0 43.081-3.149 58-10s27.090-16.453 36-28c8.91-11.547 14.684-25.219 18-42s6-45.356 6-86v-178h-62v186c0 26.788-0.204 46.454-2 58s-7.159 22.071-16 30c-8.841 7.928-22.594 12-40 12-17.13 0-30.123-5.61-40-14s-17.375-18.144-20-32c-1.52-8.621-2-28.903-2-58v-182zM694 620.915v338h58v-220l122 220h62v-338h-58v226l-124-226z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-diskraid-sun" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 559, + "id": 65, + "prevSize": 16, + "code": 59729, + "name": "it-diskraid-sun" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 245 + }, + { + "icon": { + "paths": [ + "M0 0v176h242v-176h-242zM346 0v176h352v-176h-352zM800 0v176h224v-176h-224zM30 232v176h354v-176h-354zM488 232v176h352v-176h-352zM942 232v176h82v-176h-82zM0 462v178h256v-178h-256zM366 462v178h352v-178h-352zM822 462v178h202v-178h-202zM30 702v176h354v-176h-354zM488 702v176h352v-176h-352zM942 702v176h82v-176h-82zM0 934v90h242v-90h-242zM346 934v90h352v-90h-352zM800 934v90h224v-90h-224z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 560, + "id": 64, + "prevSize": 16, + "code": 59730, + "name": "it-firewall" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 246 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM380 478c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.333 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.374 44 14s20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM564 484v320h66v-120h42c29.312 0 50.541-2.928 66-6 11.375-2.477 22.989-6.346 34-14 11.010-7.661 20.854-18.586 28-32 7.146-13.421 10-30.314 10-50-0-25.523-5.604-45.885-18-62s-27.625-27.2-46-32c-11.959-3.2-38.625-4-78-4h-104zM630 538h30c23.333 0 40.271 0.531 48 2 10.5 1.901 19.146 6.416 26 14s10 18.333 10 30c-0 9.478-3.115 16.858-8 24-4.886 7.149-11.396 12.672-20 16-8.604 3.392-26.479 6-52 6h-34v-92z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-checkpoint" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 561, + "id": 63, + "prevSize": 16, + "code": 59731, + "name": "it-firewall-checkpoint" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 247 + }, + { + "icon": { + "paths": [ + "M68 0c-37.964 0-68 30.272-68 68v888c0 37.728 30.036 68 68 68h894c37.964 0 68-30.272 68-68v-888c0-37.728-30.036-68-68-68h-894zM244 64h104v112h354v-112h102v112h162v56h-18v176h18v490h-162v62h-102v-62h-354v62h-104v-62h-180v-490h322v-176h-322v-56h180v-112zM492 232v176h354v-176h-354zM340 492c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.416 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.334 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.355 44 14 12.031 9.626 20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM714 492c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-15.604 41.062-28 52-12.396 10.963-26.792 16-44 16-23.333 0-41.417-8.79-56-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.355 44 14 12.031 9.626 20.208 23.373 24 40l64-16c-7.292-25.67-19.417-44.291-34-58-24.5-23.187-54.771-36-94-36z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-cisco" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 562, + "id": 62, + "prevSize": 16, + "code": 59732, + "name": "it-firewall-cisco" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 248 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM266 478c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.333 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.374 44 14s20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM768 478c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.333 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.374 44 14s20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM420 594v96h150v-96h-150z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-cisco2" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 563, + "id": 61, + "prevSize": 16, + "code": 59733, + "name": "it-firewall-cisco2" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 249 + }, + { + "icon": { + "paths": [ + "M68 0c-37.964 0-68 30.272-68 68v888c0 37.728 30.036 68 68 68h894c37.964 0 68-30.272 68-68v-888c0-37.728-30.036-68-68-68h-894zM244 64h104v112h354v-112h102v112h162v56h-18v176h18v490h-162v62h-102v-62h-354v62h-104v-62h-180v-490h322v-176h-322v-56h180v-112zM492 232v176h354v-176h-354zM396 496v206c-0 25.958-4.021 43.76-10 52s-15.563 12-30 12c-14.292 0-25-6.479-32-18-4.667-7.583-7.271-19.625-8-38l-60 6c0.146 34.271 8.937 60.281 26 78s40.354 28 72 28c26.979 0 49.521-6.698 66-18s27.729-25.333 34-44c4.666-14.292 6-35.458 6-62v-202h-64zM530 496v320h64v-122h42c29.312 0 52.542-0.938 68-4 11.375-2.479 22.989-8.344 34-16s18.854-16.583 26-30c7.146-13.416 12-30.312 12-50-0-25.521-7.604-45.885-20-62s-27.625-27.187-46-32c-11.959-3.208-36.625-4-76-4h-104zM594 550h32c23.333 0 38.271 0.542 46 2 10.5 1.896 19.146 6.417 26 14s10 16.334 10 28c-0 9.479-1.115 18.854-6 26s-13.396 12.646-22 16c-8.604 3.354-24.479 4-50 4h-36v-90z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-juniper" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 564, + "id": 60, + "prevSize": 16, + "code": 59734, + "name": "it-firewall-juniper" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 250 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v82h-154v322h154v86h-160v62h-102v-62h-352v62h-104v-62h-178v-86h24v-210l100 210h50v-322h-46v214l-102-214h-26v-82h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM306 490v322h168v-54h-102v-88h84v-54h-84v-72h96v-54h-162zM500 490l92 186v136h50v-136l90-186h-58l-56 128-58-128h-60zM870 544h90v72h-90v-72zM870 670h90v88h-90v-88z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-neteye" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 565, + "id": 59, + "prevSize": 16, + "code": 59735, + "name": "it-firewall-neteye" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 251 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM122 498v54h148l-168 208v58h260v-54h-182l176-216v-50h-234zM380 498v54h96v266h64v-266h96v-54h-256zM678 498v320h244v-54h-180v-88h162v-54h-162v-70h174v-54h-238z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-zte" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 566, + "id": 58, + "prevSize": 16, + "code": 59736, + "name": "it-firewall-zte" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 252 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v12c-36.731 40.161-60 93.286-60 152 0 1.333-0.023 2.673 0 4h-222v-56h178v-112zM698 64h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h312c37.915 28.819 84.701 46 136 46s98.085-17.181 136-46h192v-176h-102c0.023-1.34 0-2.655 0-4 0-47.763-14.694-91.517-40-128v-36zM418 98h188v48h-132v64h114v46h-114v118h-56v-276zM122 498v54h148l-146 180-22 28v58h260v-54h-182l176-216v-50h-234zM380 498v54h96v266h64v-266h96v-54h-256zM678 498v320h244v-54h-180v-88h162v-54h-162v-70h174v-54h-238z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-ztemf" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 567, + "id": 57, + "prevSize": 16, + "code": 59737, + "name": "it-firewall-ztemf" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 253 + }, + { + "icon": { + "paths": [ + "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v12c-36.731 40.161-60 93.286-60 152 0 1.333-0.023 2.673 0 4h-222v-56h178v-112zM698 64h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h312c37.915 28.819 84.701 46 136 46s98.085-17.181 136-46h192v-176h-102c0.023-1.34 0-2.655 0-4 0-47.763-14.694-91.517-40-128v-36zM410 98h56v148c-0 23.625 0.625 39 2 46 2.375 11.25 7.062 21.188 16 28s20.5 10 36 10c15.75 0 28-3.562 36-10s12.375-14.625 14-24c1.625-9.375 4-24.25 4-46v-152h54v144c-0 33-1 56.375-4 70s-7.938 24.625-16 34c-8.063 9.375-18.5 16.438-32 22s-32.25 8-54 8c-26.25-0-46.438-1.937-60-8s-24.125-14.312-32-24c-7.875-9.687-11.5-19.375-14-30-3.625-15.75-6-39.25-6-70v-146zM122 498v54h148l-146 180-22 28v58h260v-54h-182l176-216v-50h-234zM380 498v54h96v266h64v-266h96v-54h-256zM678 498v320h244v-54h-180v-88h162v-54h-162v-70h174v-54h-238z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-firewall-zteutm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 568, + "id": 56, + "prevSize": 16, + "code": 59738, + "name": "it-firewall-zteutm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 254 + }, + { + "icon": { + "paths": [ + "M260 2c-65.696 7.147-134.149 50.113-186 122-94.814 131.45-98.966 314.24-10 410 37.902 40.797 87.3 58.623 138 56v402c42.667 47.332 85.333 40.057 128 0v-456c23.249-18.201 46.339-38.742 66-66 94.814-131.45 100.966-316.24 12-412-33.362-35.91-75.78-53.99-120-56-9.213-0.419-18.615-1.021-28 0zM484 46c54.103 128.562 67.65 281.261-28 418-34.982 50.009-66.676 94.444-104 130l102 12c620.106-30.772 784.298-551.082 242-514-68.87 4.709-170.379-12.038-212-46zM270 106c28.56 1.298 54.453 12.807 76 36 57.459 61.847 55.236 181.102-6 266s-158.541 103.847-216 42c-57.459-61.847-53.236-181.102 8-266 38.272-53.061 90.4-80.163 138-78z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-gather" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 569, + "id": 55, + "prevSize": 16, + "code": 59739, + "name": "it-gather" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 255 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM164 352h64v320h-64v-320zM290 352h128c25.375 0 45.531-0.115 58 2s24.156 7.292 34 14c9.843 6.709 17.437 14.844 24 26s10 24.146 10 38c-0 15.021-3.907 29.459-12 42s-20.146 21.729-34 28c19.541 5.688 35.5 16.292 46 30s16 29.479 16 48c-0 14.583-3.219 28.219-10 42s-16.261 23.76-28 32c-11.74 8.24-26.792 14.104-44 16-10.792 1.167-36.729 1.708-78 2h-110v-320zM614 352h104c39.375 0 66.041 0.792 78 4 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.584-10 50s-16.99 24.344-28 32c-11.011 7.656-22.625 11.521-34 14-15.459 3.063-36.688 6-66 6h-44v120h-64v-320zM356 406v74h42c25.229 0 39.875-1.27 46-2 11.083-1.312 19.656-5.656 26-12s10-13.646 10-24c-0-9.916-2.531-17.802-8-24s-13.209-10.687-24-12c-6.417-0.729-25.521 0-56 0h-36zM678 406v90h36c25.521 0 43.396-0.646 52-4s15.114-8.854 20-16c4.885-7.146 8-14.521 8-24-0-11.666-5.146-22.416-12-30s-15.5-12.104-26-14c-7.729-1.458-22.667-2-46-2h-32zM356 532v86h60c23.333 0 37.729-0.687 44-2 9.625-1.75 17.948-5.219 24-12s8-16.625 8-28c-0-9.625-1.334-17.292-6-24s-11.177-10.937-20-14c-8.823-3.062-28.542-6-58-6h-52z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-ibp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 570, + "id": 54, + "prevSize": 16, + "code": 59740, + "name": "it-ibp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 256 + }, + { + "icon": { + "paths": [ + "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM164 170h64v322h-64v-322zM290 170h128c25.375 0 45.531 1.886 58 4s24.156 7.292 34 14c9.843 6.709 17.437 14.844 24 26s10 24.146 10 38c-0 15.021-3.907 27.459-12 40s-20.146 21.729-34 28c19.541 5.688 35.5 16.292 46 30s16 29.479 16 48c-0 14.583-3.219 28.219-10 42s-16.261 25.76-28 34c-11.74 8.24-26.792 14.104-44 16-10.792 1.167-36.729 1.708-78 2h-110v-322zM614 170h104c39.375 0 66.041 2.792 78 6 18.375 4.813 33.604 13.886 46 30s18 38.479 18 64c-0 19.688-2.854 34.584-10 48s-16.99 24.344-28 32c-11.011 7.656-22.625 13.521-34 16-15.459 3.063-36.688 4-66 4h-44v122h-64v-322zM356 224v74h42c25.229 0 39.875 0.73 46 0 11.083-1.312 19.656-5.656 26-12s10-15.646 10-26c-0-9.916-2.531-17.802-8-24s-13.209-8.687-24-10c-6.417-0.729-25.521-2-56-2h-36zM678 224v92h36c25.521 0 43.396-2.646 52-6s15.114-6.854 20-14c4.885-7.146 8-16.521 8-26-0-11.666-5.146-20.416-12-28s-15.5-12.104-26-14c-7.729-1.458-22.667-4-46-4h-32zM356 352v86h60c23.333 0 37.729-0.687 44-2 9.625-1.75 17.948-7.219 24-14s8-14.625 8-26c-0-9.625-1.334-19.292-6-26s-11.177-10.937-20-14c-8.823-3.062-28.542-4-58-4h-52zM196 598c27.125 0 48.5 7.375 64 22s24 34.25 24 56c-0 12.375-3.563 22.813-8 34s-10.375 23.75-20 36c-6.375 8.125-17.375 18.75-34 34s-27.563 25-32 30c-4.438 5-9.25 11.25-12 16h106v48h-186c2-18.5 8-35.438 18-52s30.5-38.625 60-66c23.75-22.125 38.625-36.125 44-44 7.25-10.875 10-23.375 10-34-0-11.75-1.688-19.687-8-26s-14.875-10-26-10c-11 0-21.5 3.375-28 10s-9 18.625-10 34l-52-6c3.125-29 11.5-49.375 28-62s37.25-20 62-20zM408 598c26.625 0 47 11 62 30 17.875 22.5 28 57.875 28 110-0 52-10 91.25-28 114-14.875 18.75-35.375 28-62 28-26.75 0-47.625-11.437-64-32s-24-57.25-24-110c-0-51.75 8-89.25 26-112 14.875-18.75 35.375-28 62-28zM622 598c26.625 0 47 11 62 30 17.875 22.5 28 57.875 28 110-0 52-10 91.25-28 114-14.875 18.75-35.375 28-62 28-26.75 0-47.625-11.437-64-32s-26-57.25-26-110c-0-51.75 10-89.25 28-112 14.875-18.75 35.375-28 62-28zM836 598c26.625 0 47 11 62 30 17.875 22.5 28 57.875 28 110-0 52-10 91.25-28 114-14.875 18.75-35.375 28-62 28-26.75 0-47.625-11.437-64-32s-26-57.25-26-110c0-51.75 10-89.25 28-112 14.875-18.75 35.375-28 62-28zM408 642c-6.375 0-11 1.937-16 6s-9.25 11.5-12 22c-3.625 13.625-6 35.75-6 68s2.75 55.938 6 68c3.25 12.063 7.062 20 12 24s9.625 6 16 6c6.375 0 13-1.937 18-6s9.25-11.5 12-22c3.625-13.5 4-37.75 4-70s-0.75-53.937-4-66c-3.25-12.062-7.063-19.937-12-24s-11.625-5.999-18-6zM622 642c-6.375 0-11 1.937-16 6s-9.25 11.5-12 22c-3.625 13.625-6 35.75-6 68s0.75 55.938 4 68c3.25 12.063 9.062 20 14 24s9.625 6 16 6c6.375 0 13-1.937 18-6s7.25-11.5 10-22c3.625-13.5 6-37.75 6-70s-0.75-53.937-4-66c-3.25-12.062-7.063-19.937-12-24s-11.625-5.999-18-6zM836 642c-6.375 0-13 1.937-18 6s-7.25 11.5-10 22c-3.625 13.625-6 35.75-6 68s0.75 55.938 4 68c3.25 12.063 7.062 20 12 24s11.625 6 18 6c6.375 0 11-1.937 16-6s9.25-11.5 12-22c3.625-13.5 6-37.75 6-70s-0.75-53.937-4-66c-3.25-12.062-9.063-19.937-14-24s-9.625-5.999-16-6z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-ibp-ibp2000" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 571, + "id": 53, + "prevSize": 16, + "code": 59741, + "name": "it-ibp-ibp2000" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 257 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.229-512 512s229.23 512 512 512c282.77 0 512-229.229 512-512s-229.23-512-512-512zM460 100c-0.035 0.64 0 1.344 0 1.984v144h-106c13.653-49.069 32.968-94.080 54-136 16.822-4.352 34.424-7.789 52-10.003zM564 100c14.799 1.856 29.727 4.608 44 8 21.464 42.010 40.007 88.672 54 138.003h-98v-144c0-0.64 0.035-1.344 0-1.984zM728 158.003c38.764 23.725 74.975 53.293 104 88h-74c-8.692-30.573-18.367-60.154-30-88zM286 164.019c-10.493 26.163-20.063 53.523-28 82.003h-66c26.566-31.763 59.179-59.334 94-82.003zM894 346.022c15.484 35.52 24.974 74.131 30 113.997h-134c-1.3-38.579-4.291-75.648-10-112h102c3.699 0 8.643-0.96 12-1.984zM128 348.006h110c-5.555 36.416-10.864 73.389-12 112h-126c4.91-38.938 13.095-77.184 28-112zM332 348.006h128v112h-138c1.129-38.362 4.536-75.872 10-112zM564 348.006h120c5.637 36.122 8.706 73.606 10 112h-130v-112zM100 564.006h128c3.115 38.906 10.371 75.571 18 112h-118c-14.905-34.816-23.090-73.062-28-112zM324 564.006h136v112h-120c-7.481-36.346-12.966-73.126-16-112zM564 564.006h130c-2.897 38.304-8.783 76.128-16 112h-114v-112zM788 564.006h136c-4.91 38.938-13.095 77.184-28 112h-124c7.324-35.814 13.028-73.824 16-112zM194 780.006h78c12.495 36.038 29.429 68.461 46 100-47.143-24.954-89.788-59.642-124-100zM368 780.006h92v144c-7.868-0.96-16.275-0.64-24-1.984-26.587-42.522-49.947-89.542-68-142.003zM564 780.006h86c-17.597 51.622-40.138 99.91-66 142.003-6.473 1.152-13.428 1.152-20 1.984v-144zM746 780.006h84c-35.169 41.491-79.231 76.851-128 102.003 16.61-31.923 31.55-65.536 44-102.003z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-net" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 572, + "id": 52, + "prevSize": 16, + "code": 59742, + "name": "it-net" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 258 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM248 230l124 32-142 528-122-32 140-528zM448 232h128v546h-128v-546zM774 234l142 528-124 32-142-528 124-32z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 573, + "id": 51, + "prevSize": 16, + "code": 59743, + "name": "it-other" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 259 + }, + { + "icon": { + "paths": [ + "M832 0h-640c-105.984 0-192 85.969-192 192v640c0 106.031 86.016 192 192 192h640c106.031 0 192-85.969 192-192v-640c0-106.031-85.969-192-192-192zM607.697 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012c-44.218 0-80.012-35.84-80.012-80.012s35.747-80.012 80.012-80.012zM392.332 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012-80.012-35.84-80.012-80.012 35.84-80.012 80.012-80.012zM177.012 245.015c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012 80.012 35.84 80.012 80.012-35.84 80.012-80.012 80.012zM574.65 945.99l-45.382-117.993h-162.863l-42.775 117.993h-54.691l149.551-389.446h55.529l159.372 389.446h-58.74zM607.697 511.023c-44.218 0-80.012-35.84-80.012-80.012s35.793-80.012 80.012-80.012c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012zM715.171 945.99h-47.802v-389.446h47.802v389.446zM823.017 511.023c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012 79.965 35.84 79.965 80.012-35.793 80.012-79.965 80.012zM823.017 245.015c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012 79.965 35.84 79.965 80.012-35.793 80.012-79.965 80.012z", + "M445.021 597.504c-4.934 24.948-11.962 49.757-20.945 74.38l-42.775 114.176h132.049l-40.681-107.753c-12.428-32.815-21.597-59.811-27.648-80.803z" + ], + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-alteon" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 5, + 5 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "properties": { + "order": 574, + "id": 50, + "prevSize": 16, + "code": 59744, + "name": "it-other-alteon" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 260 + }, + { + "icon": { + "paths": [ + "M816.035 622.871c-8.611-2.281-24.436-3.398-47.569-3.398h-98.49v137.681h99.561c32.954 0 56.32-6.144 70.191-18.432 13.824-12.241 20.713-29.51 20.713-51.712 0-16.151-4.049-29.929-12.195-41.425-8.192-11.45-18.944-19.037-32.209-22.714z", + "M832 0h-640c-105.984 0-192 85.969-192 192v640c0 105.984 86.016 192 192 192h640.047c105.937 0 191.953-86.016 191.953-192v-640c0-106.031-86.016-192-192-192zM823.017 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012-80.012-35.84-80.012-80.012c0-44.172 35.793-80.012 80.012-80.012zM823.017 350.999c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012-80.012-35.84-80.012-80.012c0-44.172 35.793-80.012 80.012-80.012zM607.744 84.992c44.125 0 80.012 35.84 80.012 80.012s-35.887 80.012-80.012 80.012c-44.265 0-80.058-35.84-80.058-80.012s35.747-80.012 80.058-80.012zM392.332 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012zM177.012 245.015c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012zM520.192 959.162l-44.916-116.643h-161.094l-42.31 116.643h-54.132l147.921-385.164h54.924l157.649 385.164h-58.042zM527.686 431.011c0-44.172 35.793-80.012 80.058-80.012 44.125 0 80.012 35.84 80.012 80.012s-35.887 80.012-80.012 80.012c-44.311 0-80.058-35.84-80.058-80.012zM881.711 768.559c-20.852 22.668-58.554 34.025-113.012 34.025h-98.769v156.579h-51.014v-385.164h145.315c25.553 0 45.103 1.21 58.601 3.677 18.897 3.119 34.769 9.123 47.523 18.013s23.087 21.225 30.86 37.19c7.82 15.965 11.683 33.466 11.683 52.55 0.047 32.768-10.333 60.416-31.185 83.13z", + "M391.959 614.447c-4.887 24.716-11.823 49.245-20.759 73.588l-42.31 112.966h130.607l-40.215-106.682c-12.241-32.349-21.364-59.020-27.322-79.872z" + ], + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-appdirector" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 5, + 5, + 5 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + }, + { + "fill": "rgb(100, 148, 206)" + } + ], + "properties": { + "order": 575, + "id": 49, + "prevSize": 16, + "code": 59745, + "name": "it-other-appdirector" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 261 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM518 230h186c36.836 0.001 65.899 2.491 84 6s33.71 10.875 48 22c14.289 11.126 26.473 25.499 36 44 9.526 18.503 14 39.023 14 62-0 24.912-6.251 47.2-18 68s-27.889 37.6-48 48c28.367 9.433 50.757 25.266 66 48s22 49.284 22 80c-0 24.186-4.156 47.145-14 70s-22.959 40.335-40 54c-17.042 13.665-39.020 22.856-64 26-15.666 1.936-52.089 3.521-112 4h-160v-532zM124 234h94v438h234v90h-328v-528zM612 318v124h62c36.624 0.001 59.108-0.803 68-2 16.089-2.175 28.791-9.479 38-20s14-24.828 14-42c-0-16.446-4.061-29.72-12-40-7.939-10.278-18.334-15.823-34-18-9.315-1.211-37.755-2-82-2h-54zM612 530v142h88c33.872 0 54.897-1.825 64-4 13.972-2.9 25.214-8.754 34-20s14-27.135 14-46c-0-15.962-3.226-28.874-10-40-6.775-11.125-17.192-18.921-30-24-12.808-5.083-41.237-7.999-84-8h-76z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-atca-lb10" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 576, + "id": 48, + "prevSize": 16, + "code": 59746, + "name": "it-other-atca-lb10" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 262 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM528 330c37.548 0.001 68.55 12.645 92 38 13.958 14.991 23.021 37.933 30 66l-60 16c-3.629-18.179-12.484-33.475-24-44s-25.529-13.999-42-14c-22.752 0.001-39.832 9.342-54 28s-22 48.219-22 90c-0 44.333 8.041 75.183 22 94s31.666 28 54 28c16.471 0 30.135-6.038 42-18 11.864-11.96 20.835-30.325 26-56l60 22c-9.213 38.273-24.574 67.422-46 86s-49.058 28-82 28c-40.759 0-73.758-16.186-100-48s-40-76.823-40-132c-0-58.366 13.618-103.707 40-136s61.008-47.999 104-48zM812 330c38.525 0.001 68.528 10.704 88 30s29.023 43.787 30 76l-62 4c-2.653-18.020-7.276-30.106-16-38s-22.552-12-40-12c-18.007 0-31.81 3.55-42 12-6.561 5.425-10 12.911-10 22-0 8.293 3.859 14.1 10 20 7.817 7.495 25.85 15.867 56 24s51.553 17.309 66 26c14.447 8.691 25.834 20.93 34 36s14 33.834 14 56c-0 20.093-6.23 38.458-16 56s-24.133 29.468-42 38c-17.867 8.532-39.339 14-66 14-38.805 0-69.202-11.508-90-32s-31.952-48.77-36-88l60-8c3.629 23.124 10.903 41.156 22 52s25.156 16 44 16c19.96 0 35.88-4.351 46-14 10.12-9.647 16-21.083 16-34-0-8.292-3.743-16.179-8-22s-11.392-11.694-22-16c-7.259-2.866-24.177-6.664-50-14-33.221-9.409-56.6-22.285-70-36-18.844-19.296-28-42.252-28-70 0-17.86 5.136-34.451 14-50 8.864-15.548 21.32-27.867 38-36s36.41-11.999 60-12zM84 336h62v190c-0 30.139 2.464 51.070 4 60 2.652 14.352 8.020 25.309 18 34s24.691 12 42 12c17.587 0 29.066-3.786 38-12 8.933-8.213 16.185-18.040 18-30s2-32.252 2-60v-194h62v184c-0 42.1-2.65 72.618-6 90s-8.997 32.040-18 44c-9.003 11.96-20.925 20.904-36 28s-33.712 12-58 12c-29.313 0-52.855-4.264-68-12-15.145-7.735-27.206-17.641-36-30s-13.208-26.445-16-40c-4.048-20.093-8-48.77-8-88v-188z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-cisco-ucs" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 577, + "id": 47, + "prevSize": 16, + "code": 59747, + "name": "it-other-cisco-ucs" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 263 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM528 330c37.548 0.001 68.55 12.645 92 38 13.958 14.991 23.021 37.933 30 66l-60 16c-3.629-18.179-12.484-33.475-24-44s-25.529-13.999-42-14c-22.752 0.001-39.832 9.342-54 28s-22 48.219-22 90c-0 44.333 8.041 75.183 22 94s31.666 28 54 28c16.471 0 30.135-6.038 42-18 11.864-11.96 20.835-30.325 26-56l60 22c-9.213 38.273-24.574 67.422-46 86s-49.058 28-82 28c-40.759 0-73.758-16.186-100-48s-40-76.823-40-132c-0-58.366 13.618-103.707 40-136s61.008-47.999 104-48zM812 330c38.525 0.001 68.528 10.704 88 30s29.023 43.787 30 76l-62 4c-2.653-18.020-7.276-30.106-16-38s-22.552-12-40-12c-18.007 0-31.81 3.55-42 12-6.561 5.425-10 12.911-10 22-0 8.293 1.859 14.1 8 20 7.817 7.495 27.85 15.867 58 24s51.553 17.309 66 26c14.447 8.691 25.834 20.93 34 36s12 33.834 12 56c-0 20.093-4.23 38.458-14 56s-24.133 29.468-42 38c-17.867 8.532-39.339 14-66 14-38.805 0-69.202-11.508-90-32s-31.952-48.77-36-88l60-8c3.629 23.124 10.903 41.156 22 52s25.156 16 44 16c19.96 0 35.88-4.351 46-14 10.12-9.647 14-21.083 14-34-0-8.292-1.743-16.179-6-22s-11.392-11.694-22-16c-7.259-2.866-24.177-6.664-50-14-33.221-9.409-56.6-22.285-70-36-18.844-19.296-28-42.252-28-70 0-17.86 5.137-34.451 14-50 8.864-15.548 21.32-27.867 38-36s36.41-11.999 60-12zM86 336h112c25.544 0.001 44.6 3.533 58 8 18.006 6.061 35.158 16.532 48 32s21.3 33.595 28 56c6.7 22.405 10 51.149 10 84-0 28.864-3.719 53.109-10 74-7.677 25.515-17.763 46.212-32 62-10.748 11.96-25.715 21.302-44 28-13.679 4.946-31.108 8-54 8h-116v-352zM148 396v232h46c17.308 0 28.323-1.77 36-4 10.050-2.873 19.37-7.142 26-14s11.812-18.292 16-34c4.187-15.708 6-36.89 6-64s-1.813-47.488-6-62c-4.188-14.512-10.463-25.866-18-34s-16.415-13.129-28-16c-8.654-2.23-26.735-4-52-4h-26z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-dcs" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 578, + "id": 46, + "prevSize": 16, + "code": 59748, + "name": "it-other-dcs" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 264 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM88 336h112c25.544 0.001 46.6 3.533 60 8 18.006 6.061 33.158 16.532 46 32s21.3 33.595 28 56c6.7 22.405 10 51.149 10 84-0 28.864-1.719 53.109-8 74-7.677 25.515-19.763 46.212-34 62-10.748 11.96-25.715 21.302-44 28-13.679 4.946-31.108 8-54 8h-116v-352zM748 336h66l122 352h-66l-28-80h-122l-26 80h-66l120-352zM400 340h62v288h154v60h-216v-348zM150 396v232h46c17.308 0 30.323-1.77 38-4 10.050-2.873 17.37-7.142 24-14s11.812-18.292 16-34c4.187-15.708 6-36.89 6-64s-1.813-47.488-6-62c-4.188-14.512-10.463-25.866-18-34s-16.415-13.129-28-16c-8.654-2.23-24.735-4-50-4h-28zM780 418l-42 130h84l-42-130z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-delta" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 579, + "id": 45, + "prevSize": 16, + "code": 59749, + "name": "it-other-delta" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 265 + }, + { + "icon": { + "paths": [ + "M799.651 382.836c-9.123-2.42-26.159-3.677-50.921-3.677h-105.472v147.363h106.589c35.281 0 60.276-6.563 75.124-19.689 14.708-13.126 22.295-31.604 22.295-55.389 0-17.268-4.422-32.023-13.126-44.311-8.797-12.241-20.294-20.34-34.49-24.297z", + "M887.994 0h-751.988c-75.59 0-136.006 60.416-136.006 136.006v751.988c0 75.543 60.416 136.006 136.006 136.006h751.988c75.543 0 136.006-60.463 136.006-136.006v-751.988c0-75.59-60.463-136.006-136.006-136.006zM445.021 617.705c-7.308 24.204-16.663 44.172-28.113 60.044-11.45 15.919-23.971 28.3-37.562 37.423s-30.022 16.012-49.199 20.666c-19.223 4.655-41.286 7.028-66.234 7.028h-148.759v-412.346h142.010c32.070 0 56.506 1.955 73.402 5.911 23.599 5.446 43.753 15.313 60.463 29.556 21.737 18.339 37.981 41.844 48.826 70.423 10.752 28.579 16.151 61.254 16.151 98.025-0.047 31.279-3.677 59.066-10.985 83.27zM869.981 538.81c-22.342 24.297-62.65 36.445-121.018 36.445h-105.705v167.61h-54.551v-412.346h155.555c27.369 0 48.221 1.303 62.743 3.956 20.294 3.351 37.143 9.775 50.874 19.27 13.638 9.495 24.762 22.714 33.001 39.75 8.425 17.082 12.614 35.84 12.614 56.227 0 35.142-11.217 64.791-33.513 89.088z", + "M326.889 387.631c-14.615-5.632-38.167-8.471-70.609-8.471h-86.575v315.020h88.064c27.183 0 48.5-2.56 64-7.54 15.453-5.12 27.788-12.288 36.957-21.364 12.94-12.986 22.993-30.394 30.208-52.224 7.215-21.783 10.845-48.314 10.845-79.407 0-43.148-7.075-76.288-21.225-99.468-14.196-23.133-31.418-38.679-51.665-46.545z" + ], + "attrs": [ + { + "fill": "rgb(96, 140, 193)" + }, + { + "fill": "rgb(96, 140, 193)" + }, + { + "fill": "rgb(96, 140, 193)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-dp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 4, + 4, + 4 + ] + } + }, + "attrs": [ + { + "fill": "rgb(96, 140, 193)" + }, + { + "fill": "rgb(96, 140, 193)" + }, + { + "fill": "rgb(96, 140, 193)" + } + ], + "properties": { + "order": 580, + "id": 44, + "prevSize": 16, + "code": 59750, + "name": "it-other-dp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 266 + }, + { + "icon": { + "paths": [ + "M743.936 0h-471.459c-152.623 0-276.294 124.975-276.294 279.133v465.734c0 154.159 123.671 279.133 276.294 279.133h471.505c152.529 0 276.247-125.021 276.247-279.133v-465.734c-0.047-154.159-123.718-279.133-276.294-279.133zM234.17 777.123c-8.657 25.088-21.504 44.172-38.54 57.297-17.082 13.079-37.050 19.642-60.044 19.642-24.343 0-44.265-7.168-59.671-21.597-15.453-14.383-24.716-34.583-27.834-60.695l36.771-3.584c3.119 18.385 9.030 31.744 17.827 39.983 8.751 8.285 20.015 12.428 33.792 12.428 11.729 0 22.063-2.886 30.906-8.611 8.844-5.679 16.105-13.359 21.783-22.9 5.679-9.588 10.426-22.481 14.243-38.772s5.725-32.861 5.725-49.711c0-1.815-0.047-4.515-0.186-8.145-7.68 12.94-18.106 23.459-31.325 31.558-13.219 8.052-27.555 12.102-43.008 12.102-25.786 0-47.569-9.961-65.443-29.882-17.827-19.875-26.764-46.080-26.764-78.615 0-33.606 9.309-60.649 27.927-81.129s41.937-30.72 70.004-30.72c20.247 0 38.772 5.818 55.529 17.408 16.756 11.636 29.51 28.16 38.214 49.617 8.751 21.457 13.079 52.55 13.079 93.231-0 42.356-4.329 76.009-12.986 101.097zM402.991 92.486h214.063v40.401h-174.871v104.82h163.747v40.169h-163.747v116.503h181.76v40.401h-220.951v-342.295zM476.113 779.171c-7.494 23.878-18.711 42.356-33.652 55.343-14.941 13.033-33.839 19.549-56.599 19.549-30.022 0-53.62-11.45-70.749-34.304-20.527-27.601-30.813-72.518-30.813-134.749 0-39.191 3.817-70.703 11.357-94.58 7.587-23.878 18.851-42.263 33.792-55.249 14.941-12.94 33.745-19.409 56.413-19.409 16.71 0 31.372 3.584 43.985 10.705 12.614 7.168 22.993 17.501 31.185 30.953 8.239 13.498 14.662 29.929 19.363 49.292s6.982 45.475 6.982 78.336c0 38.865-3.77 70.284-11.264 94.115zM718.057 779.171c-7.494 23.878-18.711 42.356-33.699 55.343-14.895 13.033-33.839 19.549-56.599 19.549-30.068 0-53.574-11.45-70.749-34.304-20.527-27.601-30.813-72.518-30.813-134.749 0-39.191 3.817-70.703 11.357-94.58 7.587-23.878 18.851-42.263 33.792-55.249 14.941-12.94 33.745-19.409 56.413-19.409 16.71 0 31.372 3.584 43.939 10.705 12.614 7.168 23.040 17.501 31.232 30.953 8.239 13.498 14.662 29.929 19.316 49.292 4.701 19.363 7.028 45.475 7.028 78.336 0.047 38.865-3.724 70.284-11.217 94.115zM960 779.171c-7.494 23.878-18.711 42.356-33.699 55.343-14.895 13.033-33.839 19.549-56.599 19.549-30.068 0-53.574-11.45-70.749-34.304-20.527-27.601-30.813-72.518-30.813-134.749 0-39.191 3.817-70.703 11.357-94.58 7.587-23.878 18.851-42.263 33.792-55.249 14.941-12.94 33.745-19.409 56.413-19.409 16.71 0 31.372 3.584 43.939 10.705 12.614 7.168 23.040 17.501 31.232 30.953 8.239 13.498 14.662 29.929 19.316 49.292 4.701 19.363 7.028 45.475 7.028 78.336 0.047 38.865-3.724 70.284-11.217 94.115z", + "M627.386 549.469c-17.594 0-31.604 7.913-42.077 23.738-13.126 20.201-19.735 57.437-19.735 111.849s5.958 90.577 17.967 108.591c11.962 18.013 26.717 26.996 44.265 26.996s32.303-8.983 44.265-27.089c12.009-18.106 17.967-54.272 17.967-108.497 0-54.551-5.958-90.764-17.967-108.73-11.962-17.92-26.903-26.857-44.684-26.857z", + "M385.396 549.469c-17.548 0-31.558 7.913-42.031 23.738-13.172 20.201-19.782 57.437-19.782 111.849s6.004 90.577 17.967 108.591c11.962 18.013 26.717 26.996 44.311 26.996 17.548 0 32.303-8.983 44.311-27.089 11.962-18.106 17.92-54.272 17.92-108.497 0-54.551-5.958-90.764-17.92-108.73-12.009-17.92-26.903-26.857-44.777-26.857z", + "M869.329 549.469c-17.594 0-31.604 7.913-42.077 23.738-13.126 20.201-19.735 57.437-19.735 111.849s5.958 90.577 17.967 108.591c11.962 18.013 26.717 26.996 44.265 26.996s32.303-8.983 44.265-27.089c12.009-18.106 17.967-54.272 17.967-108.497 0-54.551-5.958-90.764-17.967-108.73-11.962-17.92-26.857-26.857-44.684-26.857z", + "M144.989 549.469c-16.989 0-31.791 7.354-44.404 22.156-12.614 14.755-18.897 33.932-18.897 57.391 0 21.085 6.004 38.214 17.967 51.386s26.717 19.782 44.311 19.782c17.687 0 32.256-6.609 43.66-19.782s17.082-31.465 17.082-54.831c0-23.319-5.818-41.844-17.501-55.575-11.729-13.684-25.833-20.527-42.217-20.527z" + ], + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-e9000" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 7, + 7, + 7, + 7, + 7 + ] + } + }, + "attrs": [ + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + }, + { + "fill": "rgb(100, 155, 230)" + } + ], + "properties": { + "order": 581, + "id": 43, + "prevSize": 16, + "code": 59751, + "name": "it-other-e9000" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 267 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM200 268h288v82h-202v112h174v82h-174v204h-86v-480zM592 274h212v86h-150l-14 82c17.929-10.241 37.308-16 56-16 35.667 0 65.204 16.365 90 46 24.795 29.636 38 66.714 38 114-0 39.441-9.973 75.057-30 106-27.275 42.274-65.554 64-114 64-38.719 0-69.586-12.248-94-36s-39.232-55.905-44-96l80-10c2.289 20.701 8.747 37.906 20 50s23.313 18 38 18c16.784 0 32.365-8.42 44-24s16-38.622 16-70c-0-29.417-4.461-51.291-16-66s-27.499-22-46-22c-23.079 0-43.69 12.684-62 36l-64-12 40-250z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-f5bigip" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 582, + "id": 42, + "prevSize": 16, + "code": 59752, + "name": "it-other-f5bigip" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 268 + }, + { + "icon": { + "paths": [ + "M114 0c-63.812 0-114 47.546-114 108v602c0 53.579 40.456 98.664 94 108v-590c0-64.077 53.716-114 120-114h650v-6c0-60.454-50.188-108-114-108z", + "M273.868 209.632c-63.812 0-114.869 48.378-114.869 108.832v601.779c0 60.454 51.057 108.832 114.869 108.832h635.16c63.812 0 114.869-48.378 114.869-108.832v-601.779c0-60.454-51.057-108.832-114.869-108.832h-635.16zM327.924 424.096h243.253v65.619h-170.615v89.626h146.965v65.619h-146.965v163.251h-72.638v-384.115zM659.018 428.896h179.061v68.819h-126.694l-11.825 65.619c15.143-8.192 31.511-12.8 47.299-12.8 30.125 0 55.074 13.094 76.017 36.813 20.943 23.712 32.096 53.382 32.096 91.226-0 31.558-8.424 60.064-25.339 84.826-23.037 33.824-55.369 51.213-96.288 51.213-32.703 0-58.775-9.798-79.395-28.806s-33.136-44.742-37.164-76.826l67.57-8c1.933 16.563 7.388 30.33 16.893 40.013 9.505 9.677 19.691 14.4 32.096 14.4 14.177 0 27.336-6.739 37.164-19.206s13.514-30.906 13.514-56.013c-0-23.539-3.768-41.043-13.514-52.819-9.747-11.77-23.226-17.6-38.853-17.6-19.493 0-36.902 10.15-52.367 28.806l-54.056-9.606 33.785-200.058z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-f5bigip2" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 583, + "id": 41, + "prevSize": 16, + "code": 59753, + "name": "it-other-f5bigip2" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 269 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM230 158c36.969 0 65.213 6.495 86 22s34.041 36.646 40 64l-60 12c-4.198-14.625-12.422-25.536-24-34s-24.667-14-42-14c-26.271 0-48.495 9.344-64 26s-22 41.229-22 74c-0 35.344 8.292 62.328 24 80s34.542 26 60 26c12.594 0 25.338-3.057 38-8s24.927-10.958 34-18v-38h-70v-50h130v118c-12.594 12.188-30.099 24.724-54 34s-49.49 14-74 14c-31.146 0-56.844-6.932-80-20s-40.354-31.693-52-56c-11.646-24.307-18-51.427-18-80-0-31.010 7-57.896 20-82s30.948-43.135 56-56c19.094-9.885 43.562-14 72-14zM416 162h118c23.562 0 42.422 2.037 54 4s20.859 5.771 30 12c9.14 6.229 17.906 13.641 24 24s8 23.136 8 36c-0 13.948-2.485 26.354-10 38s-19.136 20.177-32 26c18.146 5.281 32.25 13.271 42 26s14 28.802 14 46c-0 13.542-1.704 27.203-8 40s-15.099 22.349-26 30c-10.901 7.651-24.021 12.24-40 14-10.021 1.083-35.677 1.729-74 2h-100v-298zM716 162h220v50h-160v66h150v50h-150v82h166v50h-226v-298zM476 212v68h40c23.427 0 36.312 0.677 42 0 10.291-1.219 18.109-6.109 24-12s10-12.385 10-22c-0-9.208-2.922-16.245-8-22s-11.979-10.781-22-12c-5.959-0.677-23.698 0-52 0h-34zM476 330v80h56c21.666 0 34.177-0.781 40-2 8.937-1.625 16.38-5.703 22-12s8-15.437 8-26c-0-8.937-1.667-15.771-6-22s-9.807-11.156-18-14c-8.193-2.844-26.646-4-54-4h-48zM652 576c39.229 0 71.5 12.813 96 36 14.583 13.709 24.708 32.334 32 58l-64 16c-3.792-16.625-11.969-30.375-24-40s-26.792-14-44-14c-23.771 0-43.198 8.938-58 26s-22 43.792-22 82c-0 40.542 7.417 68.792 22 86s34.667 26 58 26c17.208 0 31.604-5.062 44-16s20.604-28.521 26-52l64 20c-9.625 35-25.615 61.010-48 78s-51.584 26-86 26c-42.583 0-76.583-14.906-104-44s-42-67.542-42-118c-0-53.375 14.437-96.468 42-126s63.083-44 108-44zM356 580c31.646 0 55.916 8.938 74 26s28 38.625 28 64c-0 14.438-2.823 26.948-8 40s-12.771 27.708-24 42c-7.438 9.479-20.604 22.208-40 40s-32.823 30.167-38 36c-5.177 5.834-8.792 12.458-12 18h122v56h-216c2.333-21.583 10.333-40.677 22-60s33.583-46.062 68-78c27.708-25.812 45.729-42.812 52-52 8.458-12.687 12-25.604 12-38-0-13.708-2.636-24.635-10-32s-19.021-10-32-10c-12.833 0-22.417 4.271-30 12s-10.833 20.063-12 38l-62-6c3.646-33.833 14.75-59.271 34-74s43.125-22 72-22z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-gbe2c" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 584, + "id": 40, + "prevSize": 16, + "code": 59754, + "name": "it-other-gbe2c" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 270 + }, + { + "icon": { + "paths": [ + "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM366.144 654.4h-42.432v-151.168h-166.72v151.104h-42.432v-320.64h42.432v131.712h166.656v-131.712h42.432v320.704zM600.448 630.848c-20.416 19.52-46.272 29.248-77.44 29.248-28.096 0-51.52-8.384-70.144-25.216-18.56-16.768-29.184-38.464-31.808-65.152l39.36-5.248c4.48 22.336 12.16 38.4 23.040 48.256 10.88 9.792 24.128 14.72 39.744 14.72 18.496 0 34.112-6.4 46.848-19.264s19.136-28.736 19.136-47.68c0-18.112-5.888-33.024-17.664-44.736s-26.752-17.536-44.992-17.536c-7.424 0-16.704 1.472-27.776 4.352l4.352-34.56c2.624 0.256 4.736 0.448 6.336 0.448 16.768 0 31.872-4.352 45.312-13.12 13.376-8.768 20.096-22.272 20.096-40.448 0-14.464-4.928-26.432-14.656-35.904s-22.4-14.208-37.824-14.208c-15.36 0-28.096 4.8-38.336 14.464s-16.704 24-19.648 43.264l-39.36-6.976c4.8-26.432 15.744-46.848 32.768-61.376 17.088-14.528 38.336-21.76 63.68-21.76 17.472 0 33.536 3.776 48.32 11.264 14.72 7.488 25.984 17.728 33.792 30.72s11.712 26.752 11.712 41.344c0 13.824-3.712 26.496-11.2 37.824-7.36 11.392-18.432 20.416-32.96 27.136 18.944 4.416 33.664 13.504 44.16 27.264s15.744 30.976 15.744 51.712c0 28.032-10.176 51.776-30.592 71.168zM909.184 632.448c-23.104 18.304-51.392 27.456-84.8 27.456-34.496 0-62.656-6.976-84.288-21.12-21.632-14.080-38.144-34.432-49.408-61.12s-16.96-55.36-16.96-85.952c0-33.408 6.4-62.528 19.136-87.424 12.736-24.832 30.912-43.776 54.528-56.64 23.552-12.928 49.408-19.392 77.76-19.392 32.064 0 59.072 8.128 80.96 24.512s37.12 39.296 45.76 68.928l-41.792 9.856c-7.424-23.36-18.24-40.32-32.384-50.944s-31.936-16-53.376-16c-24.64 0-45.248 5.888-61.824 17.728s-28.16 27.648-34.88 47.616c-6.656 19.904-10.048 40.384-10.048 61.568 0 27.264 4.032 51.072 11.968 71.424 7.936 20.288 20.288 35.52 37.056 45.632 16.768 9.984 34.944 15.040 54.464 15.040 23.808 0 43.968-6.784 60.352-20.544 16.512-13.76 27.712-34.048 33.472-61.056l42.432 10.688c-9.024 34.816-25.024 61.44-48.128 79.744z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-h3c" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 585, + "id": 39, + "prevSize": 16, + "code": 59755, + "name": "it-other-h3c" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 271 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM228 134h64v128h128v-128h64v322h-64v-140h-128v140h-64v-322zM550 134h104c39.375 0 66.041 2.792 78 6 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.584-10 50s-16.99 22.344-28 30c-11.011 7.656-20.625 13.521-32 16-15.459 3.063-38.688 4-68 4h-42v122h-66v-322zM616 190v90h36c25.521 0 41.396-0.646 50-4s15.114-8.854 20-16c4.885-7.146 8-16.521 8-26-0-11.666-3.146-20.416-10-28s-15.5-12.104-26-14c-7.729-1.458-24.667-2-48-2h-30zM782 598c-39.962 0-71.478 10.197-96 32s-38 52.592-38 92c0 37.254 13.608 66.52 38 88s54.114 32 92 32c30.62 0 56.084-5.456 76-18s33.436-32.159 42-58l-54-14c-4.801 17.335-12.972 29.925-24 38s-24.69 12-40 12c-20.76 0-37.025-7.295-50-20s-20-32.067-20-62c-0-28.21 6.831-49.402 20-62s30.851-20 52-20c15.31 0 27.296 4.894 38 12s18.626 15.726 22 28l56-10c-6.488-18.95-17.026-33.879-30-44-21.798-17.12-49.098-26-84-26zM128 602v236h96c36.718-0.218 60.399 0.861 70 0 15.31-1.4 27.555-5.917 38-12s17.966-13.825 24-24c6.033-10.175 10-21.233 10-32-0-13.674-4.658-25.879-14-36s-22.614-15.801-40-20c12.326-4.63 22.799-12.74 30-22s10-18.91 10-30c-0-10.229-2.162-19.763-8-28s-13.242-15.047-22-20c-8.758-4.953-18.907-8.439-30-10s-27.424-2-50-2h-114zM416 604v234h202v-40h-144v-194h-58zM184 642h34c27.117 0 42.291-0.538 48 0 9.601 0.97 17.134 3.424 22 8s8 10.679 8 18c-0 7.645-2.356 13.317-8 18s-14.139 9.031-24 10c-5.45 0.538-19.554 0-42 0h-38v-54zM184 736h48c26.209 0 42.15 1.739 50 4s13.848 5.047 18 10c4.152 4.953 6 10.894 6 18-0 8.398-2.616 14.994-8 20s-11.437 8.708-20 10c-5.579 0.97-19.241 0-40 0h-54v-62zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-hpblc" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 586, + "id": 38, + "prevSize": 16, + "code": 59756, + "name": "it-other-hpblc" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 272 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM108 352h64v320h-64v-320zM232 352h98l58 218 58-218h96v320h-60v-252l-64 252h-62l-62-252v252h-62v-320zM606 352h98l58 218 58-218h96v320h-60v-252l-64 252h-62l-64-252v252h-60v-320z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-imm" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 587, + "id": 37, + "prevSize": 16, + "code": 59757, + "name": "it-other-imm" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 273 + }, + { + "icon": { + "paths": [ + "M887.994 0h-751.988c-75.59 0-136.006 60.416-136.006 136.006v751.988c0 75.543 60.416 136.006 136.006 136.006h751.988c75.543 0 136.006-60.463 136.006-136.006v-751.988c0-75.59-60.463-136.006-136.006-136.006zM405.923 688.454c-12.567 19.363-30.627 34.49-54.179 45.242-23.505 10.799-49.99 16.198-79.453 16.198-37.329 0-68.608-5.399-93.836-16.337-25.228-10.845-45.009-27.183-59.299-49.059-14.383-21.876-21.923-46.545-22.668-74.147l51.433-4.515c2.467 20.62 8.099 37.609 16.989 50.781 8.89 13.219 22.761 23.924 41.519 32.023 18.758 8.192 39.843 12.288 63.302 12.288 20.806 0 39.191-3.072 55.11-9.309 15.919-6.144 27.788-14.615 35.607-25.46 7.773-10.705 11.636-22.528 11.636-35.328 0-12.847-3.77-24.204-11.264-33.885-7.494-9.635-19.875-17.734-37.097-24.297-11.078-4.329-35.561-10.985-73.402-20.154-37.888-9.030-64.419-17.687-79.593-25.693-19.689-10.38-34.397-23.133-44.032-38.447-9.635-15.267-14.476-32.349-14.476-51.293 0-20.806 5.911-40.262 17.687-58.368 11.823-18.060 29.091-31.837 51.759-41.193 22.807-9.309 48.035-14.010 75.776-14.010 30.58 0 57.53 4.934 80.849 14.755 23.366 9.868 41.286 24.343 53.853 43.473s19.316 40.774 20.247 64.977l-52.317 3.956c-2.839-26.065-12.335-45.754-28.579-59.066-16.198-13.359-40.122-20.015-71.82-20.015-33.001 0-57.065 6.051-72.145 18.153s-22.621 26.671-22.621 43.753c0 14.801 5.353 26.996 16.012 36.538 10.519 9.588 37.888 19.409 82.292 29.417 44.311 10.054 74.752 18.851 91.229 26.298 24.017 10.985 41.705 25.088 53.155 41.984 11.45 16.989 17.129 36.538 17.129 58.647 0.047 22.016-6.237 42.636-18.804 62.092zM862.115 688.454c-12.614 19.363-30.627 34.49-54.132 45.242-23.645 10.799-50.129 16.198-79.5 16.198-37.376 0-68.655-5.399-93.789-16.337-25.228-10.845-45.009-27.183-59.345-49.059s-21.876-46.545-22.621-74.147l51.526-4.515c2.374 20.62 8.006 37.609 16.989 50.781 8.844 13.219 22.575 23.924 41.472 32.023 18.618 8.192 39.75 12.288 63.255 12.288 20.713 0 39.145-3.072 55.156-9.309 15.872-6.144 27.741-14.615 35.514-25.46 7.866-10.705 11.729-22.528 11.729-35.328 0-12.847-3.724-24.204-11.217-33.885-7.494-9.635-19.875-17.734-37.143-24.297-11.124-4.329-35.654-10.985-73.356-20.154-37.981-9.030-64.512-17.687-79.639-25.693-19.735-10.38-34.351-23.133-43.985-38.447-9.728-15.267-14.522-32.349-14.522-51.293 0-20.806 5.865-40.262 17.78-58.368 11.729-18.060 28.998-31.837 51.712-41.193 22.621-9.402 47.849-14.057 75.636-14.057 30.487 0 57.484 4.934 80.849 14.755 23.226 9.868 41.239 24.343 53.853 43.473 12.521 19.13 19.27 40.774 20.294 64.977l-52.364 3.956c-2.793-26.065-12.428-45.754-28.532-59.066-16.244-13.312-40.215-19.968-71.866-19.968-33.001 0-57.158 6.051-72.145 18.153-15.081 12.055-22.575 26.671-22.575 43.706 0 14.801 5.213 26.996 16.012 36.538 10.519 9.588 37.841 19.409 82.246 29.417 44.358 10.054 74.752 18.851 91.276 26.298 24.017 10.985 41.705 25.088 53.108 41.984 11.543 16.989 17.268 36.538 17.268 58.647-0.047 22.063-6.423 42.682-18.944 62.138z" + ], + "attrs": [ + { + "fill": "rgb(99, 147, 205)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-secsis" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 6 + ] + } + }, + "attrs": [ + { + "fill": "rgb(99, 147, 205)" + } + ], + "properties": { + "order": 588, + "id": 36, + "prevSize": 16, + "code": 59758, + "name": "it-other-secsis" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 274 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM714 316c46.577 0 84.911 14.61 114 42 17.315 16.194 31.342 37.681 40 68l-76 20c-4.502-19.638-15.716-36.63-30-48s-31.569-16-52-16c-28.223 0-50.426 9.845-68 30s-26 52.866-26 98c-0 47.891 8.685 81.672 26 102s40.296 30 68 30c20.431 0 37.282-5.080 52-18s25.593-34.265 32-62l74 24c-11.428 41.345-29.422 71.931-56 92s-61.137 30-102 30c-50.56 0-91.448-17.632-124-52s-50-80.395-50-140c-0-63.050 17.275-113.115 50-148s74.67-52 128-52zM156 322h84l96 280 92-280h82l-136 380h-82l-136-380z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-vc" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 589, + "id": 35, + "prevSize": 16, + "code": 59759, + "name": "it-other-vc" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 275 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM122 146h234v50l-176 218h182v54h-260v-60l168-208h-148v-54zM380 146h256v54h-96v268h-64v-268h-96v-54zM678 146h238v54h-174v72h162v54h-162v88h180v54h-244v-322zM78 606v244h56v-92h36c25.125 0 44.75-1.665 58-4 9.75-1.89 18.562-4.162 28-10s17.875-13.771 24-24c6.125-10.229 10-22.99 10-38-0-19.458-5.375-35.714-16-48s-24.25-20.331-40-24c-10.25-2.446-32.25-4-66-4h-90zM308 606l66 244h60l56-182 54 182h58l68-244h-56l-42 170-48-170h-66l-50 168-42-168h-58zM698 606v244h56v-102h10c12.75 0 22.125 2.166 28 4s12.75 5.052 18 10c5.25 4.948 13.75 16.987 28 36l40 52h68l-34-48c-13.25-19.013-24.188-30.55-32-38s-18-15.773-30-22c24.125-3.113 41.875-10.047 54-22s18-27.654 18-46c-0-14.454-4-26.77-12-38s-18.688-19.608-32-24c-13.313-4.392-34.625-6-64-6h-116zM134 648h28c20 0 33.375-1.112 40 0 9 1.446 16.125 6.219 22 12s8 13.105 8 22c-0 7.227-1.813 12.552-6 18s-10.625 9.442-18 12c-7.375 2.557-22.125 4-44 4h-30v-68zM754 648h42c22.5 0.001 37.5-0.557 42 0 9 1.334 15.063 4.941 20 10s8 11.772 8 20c0 7.338-2.25 13.108-6 18s-9.375 7.998-16 10c-6.625 2.001-23.375 4-50 4h-40v-62zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-ztepower" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 590, + "id": 34, + "prevSize": 16, + "code": 59760, + "name": "it-other-ztepower" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 276 + }, + { + "icon": { + "paths": [ + "M510.016 0l-510.016 128c38.682 381.043-34.883 833.642 502.078 896h19.845c536.96-62.358 463.396-514.957 502.078-896l-512-128h-1.984zM130.977 332h234.171v50l-174.636 218h180.589v54h-257.984v-60l166.698-208h-148.837v-54zM388.961 332h254.016v54h-95.256v268h-63.504v-268h-95.256v-54zM684.651 332h234.171v54h-170.667v72h158.76v54h-158.76v88h176.62v54h-240.124v-322z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-ztesgs" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 591, + "id": 33, + "prevSize": 16, + "code": 59761, + "name": "it-other-ztesgs" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 277 + }, + { + "icon": { + "paths": [ + "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM94 262h94l198 334v-334h92v500h-98l-196-326v326h-90v-500zM546 262h384v84h-144v416h-96v-416h-144v-84z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-other-zxsdr-nt" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 592, + "id": 32, + "prevSize": 16, + "code": 59762, + "name": "it-other-zxsdr-nt" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 278 + }, + { + "icon": { + "paths": [ + "M510.994 0c-282.703 0-510.994 228.291-510.994 510.994s228.291 513.006 510.994 513.006c282.703 0 513.006-230.303 513.006-513.006s-230.303-510.994-513.006-510.994zM506.97 110.648l122.719 122.719h-88.519v162.955c0 20.826-7.813 82.483-44.259 82.483h-66.389c33.843-9.545 42.248-60.513 42.248-80.472v-164.967h-88.519l122.719-122.719zM162.955 356.086v88.519h166.978c19.959 0 68.914-8.405 78.46-42.248v66.389c0 36.446-61.657 44.259-82.483 44.259h-162.955v88.519l-122.719-122.719 122.719-122.719zM859.033 356.086l122.719 122.719-122.719 122.719v-88.519h-164.967c-19.959-0-70.926 10.416-80.472 44.259v-66.389c0-36.446 61.657-46.271 82.483-46.271h162.955v-88.519zM430.522 543.183h66.389c36.446 0 44.259 63.669 44.259 84.495v160.943h88.519l-122.719 124.731-122.719-124.731h88.519v-164.967c0-19.959-8.405-70.926-42.248-80.472z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-router" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 593, + "id": 31, + "prevSize": 16, + "code": 59763, + "name": "it-router" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 279 + }, + { + "icon": { + "paths": [ + "M510 0c-282.703 0-510 227.297-510 510s227.297 514 510 514c9.173 0 18.943-1.521 28-2-36.918-3.27-66-32.204-66-70v-74l-88-90h88v-164c0-19.959-8.157-70.455-42-80h66c34.803 0 45.287 56.63 46 80 0.678-0.019 1.317 0 2 0h408c19.995 0 38.952 8.952 52 22 11.787-43.072 20-89.259 20-136 0-282.703-231.297-510-514-510zM506 110l124 124h-88v162c0 20.826-9.554 82-46 82h-66c33.843-9.545 42-60.041 42-80v-164h-88l122-124zM162 356v88h168c19.959 0 68.455-8.157 78-42v66c0 36.446-61.174 46-82 46h-164v88l-122-124 122-122zM860 356l122 122-122 124v-88h-166c-19.959-0-70.455 10.157-80 44v-68c0-36.446 61.174-46 82-46h164v-88zM636 686c-35.745 0-64.066 14.163-86 40s-32 61.302-32 108c-0 44.146 10.182 78.546 32 104s50.112 38 84 38c27.388 0 50.186-7.136 68-22s30.34-37.378 38-68l-50-18c-4.294 20.542-12.136 36.431-22 46s-20.306 14-34 14c-18.569 0-34.395-6.944-46-22s-18-40.53-18-76c-0-33.428 6.22-57.072 18-72s27.083-24 46-24c13.694 0 26.425 5.58 36 14s14.982 19.455 18 34l50-14c-5.803-22.456-14.395-40.006-26-52-19.497-20.287-44.782-30-76-30zM894 686c-35.745 0-64.066 14.163-86 40s-34 61.302-34 108c0 44.146 12.182 78.546 34 104s50.112 38 84 38c27.388 0 50.186-7.136 68-22s30.34-37.378 38-68l-50-18c-4.294 20.542-12.136 36.431-22 46s-22.306 14-36 14c-18.569 0-32.395-6.944-44-22s-18-40.53-18-76c-0-33.428 6.221-57.072 18-72s27.083-24 46-24c13.694 0 24.425 5.58 34 14s16.982 19.455 20 34l50-14c-5.803-22.456-14.395-40.006-26-52-19.497-20.287-44.782-30-76-30z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-router-cisco" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 594, + "id": 30, + "prevSize": 16, + "code": 59764, + "name": "it-router-cisco" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 280 + }, + { + "icon": { + "paths": [ + "M510 0c-282.703 0-510 227.297-510 510s227.297 514 510 514c9.173 0 18.943-1.521 28-2-36.918-3.27-66-32.204-66-70v-74l-88-90h88v-164c0-19.959-8.157-70.455-42-80h66c34.803 0 45.287 56.63 46 80 0.678-0.019 1.317 0 2 0h408c80.239 45.398 67.455-57.196 72-114 0-282.703-231.297-510-514-510zM506 110l124 124h-88v162c0 20.826-9.554 82-46 82h-66c33.843-9.545 42-60.041 42-80v-164h-88l122-124zM162 356v88h168c19.959 0 68.455-8.157 78-42v66c0 36.446-61.174 46-82 46h-164v88l-122-124 122-122zM860 356l122 122-122 124v-88h-166c-19.959-0-70.455 10.157-80 44v-68c0-36.446 61.174-46 82-46h164v-88zM644 666v206c-0 25.958-2.021 43.761-8 52s-15.563 12-30 12c-14.292 0-25-4.479-32-16-4.667-7.583-7.271-21.625-8-40l-62 8c0.146 34.271 8.937 60.281 26 78s40.354 26 72 26c26.979 0 49.521-6.698 66-18s27.729-25.333 34-44c4.667-14.292 8-35.458 8-62v-202h-66zM778 666v320h66v-120h42c29.312 0 50.542-2.938 66-6 11.375-2.479 22.989-6.344 34-14s20.854-18.583 28-32c7.146-13.417 10-30.312 10-50-0-25.521-5.604-45.885-18-62s-27.625-27.187-46-32c-11.959-3.208-38.625-4-78-4h-104zM844 720h30c23.333 0 40.271 0.544 48 2 10.5 1.896 19.146 6.417 26 14s10 18.334 10 30c-0 9.479-3.115 16.854-8 24s-11.396 12.646-20 16c-8.604 3.354-26.479 4-52 4h-34v-90z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-router-juniper" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 595, + "id": 29, + "prevSize": 16, + "code": 59765, + "name": "it-router-juniper" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 281 + }, + { + "icon": { + "paths": [ + "M510 0c-282.703 0-510 227.297-510 510s227.297 514 510 514c9.173 0 18.943-1.521 28-2-36.918-3.27-66-32.204-66-70v-74l-88-90h88v-164c0-19.959-8.157-70.455-42-80h66c34.803 0 45.287 56.63 46 80 0.678-0.019 1.317 0 2 0h408c19.995 0 38.952 8.952 52 22 11.787-43.072 20-89.259 20-136 0-282.703-231.297-510-514-510zM506 110l124 124h-88v162c0 20.826-9.554 82-46 82h-66c33.843-9.545 42-60.041 42-80v-164h-88l122-124zM162 356v88h168c19.959 0 68.455-8.157 78-42v66c0 36.446-61.174 46-82 46h-164v88l-122-124 122-122zM860 356l122 122-122 124v-88h-166c-19.959-0-70.455 10.157-80 44v-68c0-36.446 61.174-46 82-46h164v-88zM518 692v46h90l-100 182v52h156v-48h-110l106-188v-44h-142zM674 692v46h58v234h38v-234h58v-46h-154zM852 692v280h146v-48h-106v-76h96v-48h-96v-62h102v-46h-142z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-router-zte" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 596, + "id": 28, + "prevSize": 16, + "code": 59766, + "name": "it-router-zte" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 282 + }, + { + "icon": { + "paths": [ + "M498 0c-82.519 2.143-165.486 23.825-242 68-244.845 141.361-329.362 455.154-188 700 106.738 184.875 312.557 278.159 512 252-23.098-16.31-36-37.265-36-58 0-22.862 16.376-42.721 44-60h-32c-41.912 0-76-34.088-76-76v-106l-34 20c-24.647-27.731-47.939-55.857-70-88l104-60v-64c0-41.912 34.088-76 76-76h234c-4.577-10.693-8.966-21.469-14-32l118-68c13.86 32.95 24.711 65.817 30 100h66c10.478 0 20.943 2.182 30 6-7.234-69.314-26.904-137.747-64-202-97.186-168.332-276.459-260.715-458-256zM522 98c45.425 1.164 91.517 8.458 134 24l-64 36c-22.81-22.127-46.007-41.704-70-60zM394 114c39.587 25.645 77.222 56.281 114 92l-84 50-72-126c13.742-5.791 27.946-11.802 42-16zM760 178c31.164 23.016 57.718 51.994 82 84l-116 66c-20.412-32.755-40.883-63.378-64-92l88-50c3.203-1.849 7.605-5.435 10-8zM260 182h2l72 126-92 52c-12.71-49.313-19.255-97.188-22-144 12.39-12.178 25.888-23.296 40-34zM578 284c22.939 28.459 45.686 59.403 66 92l-112 64-56-96 102-60zM142 324c3.994 27.9 10.635 55.372 18 84l-58 34c7.124-40.784 21.181-80.964 40-118zM384 396l56 96-118 70c-18.2-33.781-34.67-67.986-48-102l110-64zM192 506c13.396 34.309 27.682 69.999 46 104l-108 62c-15.214-36.17-27.501-72.402-32-110l94-56zM612 506c-49.516 0-90 38.484-90 88v194c0 49.516 40.484 90 90 90h102l-6 34c-51.586 9.811-88 30.549-88 54 0 32.643 68.81 58 154 58s154-25.357 154-58c0-24.169-37.838-46.585-92-56l-6-32h104c49.516 0 90-40.484 90-90v-194c0-49.516-40.484-88-90-88h-322zM584 574h380v236h-380v-236zM292 700c22.147 32.13 47.183 58.271 72 86l-102 60c-30.311-22.695-56.283-52.739-80-84l110-62zM438 864c28.836 24.958 59.885 44.975 90 64-53.295 1.962-108.201-6.157-158-24l68-40z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-sdn-host" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 597, + "id": 27, + "prevSize": 16, + "code": 59767, + "name": "it-sdn-host" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 283 + }, + { + "icon": { + "paths": [ + "M498 0c-82.532 2.144-165.473 23.817-242 68-244.886 141.385-329.386 455.113-188 700 58.255 100.901 146.218 174.257 246 216v-168l-52 30c-30.316-22.699-56.279-52.734-80-84l104-60-14-4-156-8 30-28-16 10c-15.217-36.176-27.5-72.396-32-110l94-56c10.044 25.725 21.614 52.249 34 78l72-72c-8.357-17.441-17.093-34.376-24-52l112-64 10 18 92-92 10 10 82-48c22.943 28.464 43.682 59.397 64 92l-66 36 78 78 40-24 104-60 94-56c7.367 17.515 14.618 36.072 20 54h4l92-14c-11.285-45.819-29.221-91.081-54-134-97.203-168.36-276.429-260.716-458-256zM522 98c45.433 1.164 91.51 8.455 134 24l-64 36c-22.814-22.131-46.003-41.701-70-60zM394 114c39.593 25.649 77.216 56.275 114 92l-84 50-72-126c13.744-5.792 27.944-11.801 42-16zM760 178c31.169 23.019 57.714 49.989 82 82l-116 68c-20.416-32.76-40.879-63.373-64-92l88-52c3.203-1.849 7.605-3.435 10-6zM262 182l72 126-92 52c-12.711-49.321-17.254-97.18-20-144 12.392-12.18 25.886-23.294 40-34zM142 324c3.995 27.904 10.633 55.367 18 84l-58 34c7.125-40.791 21.178-80.958 40-118zM474 436l-208 210h126v286l72 92h94v-378h126l-210-210zM804 436l-72 90v288h-126l208 210 210-210h-126v-378h-94z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-sdn-switch" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 598, + "id": 26, + "prevSize": 16, + "code": 59768, + "name": "it-sdn-switch" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 284 + }, + { + "icon": { + "paths": [ + "M52 0c-28.218 0-52 27.877-52 62v900c0 34.123 23.782 62 52 62h524c28.218 0 50-27.877 50-62v-900c0-34.123-19.782-62-48-62h-526zM674 6c18.999 10.074 32 31.54 32 56v900c0 20.133-9.853 36.659-24 48l262-78c42.237-12.574 80-30.971 80-70v-706c0-39.029-37.766-57.42-80-70l-270-80zM120 140h388c19.009 0 34 19.012 34 42v210c0 22.988-14.991 40-34 40h-388c-19.009 0-36-17.012-36-40v-210c0-22.988 16.991-42 36-42zM136 200c-8.519 0-16 12.757-16 30s7.481 32 16 32h356c8.519 0 14-14.757 14-32s-5.481-30-14-30h-356zM136 312c-8.519 0-16 12.757-16 30s7.481 32 16 32h356c8.519 0 14-14.757 14-32s-5.481-30-14-30h-356zM314 672c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64s28.654-64 64-64z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 599, + "id": 25, + "prevSize": 16, + "code": 59769, + "name": "it-server" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 285 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM512 64c247.424 0 448 200.576 448 448s-200.576 448-448 448c-247.424 0-448-200.576-448-448s200.576-448 448-448zM512 128c-212.077 0-384 171.923-384 384 0 36.156 6.659 70.831 16 104l112-292h68l130 320h-72l-28-72h-128l-26 72h-48c53.837 147.035 194.315 252 360 252s306.163-104.965 360-252h-72l-72-110-72 110h-76l108-166-98-154h76l64 102 62-102h56c-65.661-117.507-191.828-196-336-196zM486 324h64v320h-64v-320zM856 342l-88 138 106 158c13.732-39.506 22-81.817 22-126 0-60.905-14.763-118.84-40-170zM290 398l-44 120h88l-44-120z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-aix" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 600, + "id": 24, + "prevSize": 16, + "code": 59770, + "name": "it-server-aix" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 286 + }, + { + "icon": { + "paths": [ + "M702.196 0c-83.559 0-149.421 75.593-149.421 171.057 0 45.281 15.194 86.372 39.69 117.162-8.686 12.223-17.338 24.876-25.682 37.492-23.194 35.070-43.629 76.976-60.702 89.043-83.523 59.033-121.404 129.992-121.404 248.384 0 16.631 2.556 30.874 4.669 46.865 23.321-11.463 52.84-16.403 84.049-16.403 4.043 0 7.718-0.217 11.673 0-3.685-18.422-7.004-35.25-7.004-53.895 1.251-128.832 55.389-209.786 114.4-292.906 2.648-3.499 6.269-9.105 9.339-14.059 2.452 4.241 6.283 6.793 11.673 9.373l49.029 23.432c23.628 11.307 48.25 10.417 72.376 0l53.698-23.432c0.84-0.363 1.558 0.418 2.335 0 42.272 91.45 99.084 194.293 100.392 278.847 0 23.808-2.958 45.866-7.004 67.954 13.057-2.524 27.684-2.343 42.025-2.343 18.9 0 37.191 0.405 53.698 4.686 0.818-10.044 2.335-17.843 2.335-28.119 0-99.83-26.283-175.644-88.719-236.668-25.549-24.971-56.834-78.168-91.053-126.535 31.389-31.635 51.363-77.388 51.363-128.879 0-95.465-68.196-171.057-151.755-171.057zM641.494 140.595c25.311 0 44.359 22.043 44.359 51.551 0 4.072-1.65 7.893-2.335 11.716-4.628 0.607-9.186 2.398-14.008 4.686 0-22.185-14.217-39.835-30.351-39.835s-28.016 17.65-28.016 39.835c0 13.422 4.319 27.854 11.673 35.149-16.692-8.63-28.016-29.42-28.016-51.551 0-29.509 21.383-51.551 46.694-51.551zM762.898 142.938c25.311 0 46.694 22.043 46.694 51.551 0 22.132-11.324 42.921-28.016 51.551 5.88-7.348 7.004-18.677 7.004-30.462 0-22.185-11.882-42.178-28.016-42.178s-30.351 19.994-30.351 42.178c0 2.428-0.299 4.792 0 7.030-3.068-2.177-6.263-5.265-9.339-7.030-2.536-6.816-4.669-13.366-4.669-21.089 0-29.509 21.383-51.551 46.694-51.551zM699.861 224.952c12.3-0 25.767 3.837 35.020 11.716l46.694 42.178c13.118 11.17 17.678 26.761 11.673 39.835-1.907 1.316-2.389 3.702-4.669 4.686l-53.698 23.432c-24.126 10.417-48.748 11.307-72.376 0l-49.029-23.432c-1.721-0.824-3.302-1.337-4.669-2.343-7.374-13.896-2.206-30.36 11.673-42.178l46.694-42.178c9.253-7.879 20.386-11.716 32.686-11.716zM620.482 285.876c-2.285 2.318-4.669 4.488-4.669 7.030 0 14.123 39.651 25.776 86.384 25.776s81.714-11.653 81.714-25.776c0-2.542-0.049-4.712-2.335-7.030-9.308 11.067-39.863 18.746-79.38 18.746s-72.407-7.679-81.714-18.746zM879.633 710.005c-64.504 7.634-86.384 42.072-86.384 114.819 0 83.14-83.624 189.803 4.669 189.803s224.131-80.887 224.131-164.027c0-83.14-23.773-140.595-112.066-140.595-11.037 0-21.136-1.091-30.351 0zM466.391 719.378c-88.293 0-112.066 57.455-112.066 140.595s135.839 164.027 224.131 164.027c88.293 0 4.669-104.32 4.669-187.46s-28.442-117.162-116.735-117.162zM620.482 888.092l14.008 49.208 14.008 56.238c11.583 1.562 23.045 2.343 35.020 2.343 12.676 0 25.138-0.585 37.355-2.343 5.185-25.46 21.012-89.043 21.012-89.043l7.004-16.403c-19.981 9.799-40.537 16.403-63.037 16.403-23.030 0-44.951-6.259-65.372-16.403z", + "M434.89 2.105l-417.088 440.582 190.741 30.089-208.544 371.808 399.285-425.537-139.877-83.818z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-klinux" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 601, + "id": 23, + "prevSize": 16, + "code": 59771, + "name": "it-server-klinux" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 287 + }, + { + "icon": { + "paths": [ + "M510.592 0c-281.856 0-510.592 230.336-510.592 513.472s228.736 510.528 510.592 510.528 513.408-227.52 513.408-510.528c0-283.072-231.552-513.472-513.408-513.472zM464.704 88.896l31.552 8.64 37.312 8.576 31.552-5.696 17.28-2.88 22.912-5.76c0 0 20.992-4.544 31.488-2.88 10.304 1.664 21.888-0.768 31.552 2.88 13.376 5.056 25.984 14.080 37.248 22.912 19.456 15.296 37.248 63.104 37.248 63.104l20.096 54.528 22.848 65.984 5.76 48.768-5.76 60.224 43.136-37.312c33.344 8.128 72.64 28.736 111.808 54.528 0 0 7.168 44.672 5.76 65.984-1.216 18.496-4.8 38.656-14.336 54.528-16.768 27.776-44.608 45.632-71.744 63.104-21.504 13.888-44.032 25.344-68.864 31.488-38.016 9.344-78.4 6.4-117.568 5.76-37.056-0.64-72.576-1.6-108.992-8.64-43.264-8.256-88.064-20.736-128.96-37.248-47.36-19.136-134.784-74.624-134.784-74.624s-76.672-44.16-114.752-80.32c-15.232-14.4-48.832-65.92-48.832-65.92s-8.896-48.32 2.88-57.344c0 0 38.080-28.736 54.528-31.552 39.616-6.784 79.040-8.512 123.328-14.336v2.816l22.912 22.976 63.104 43.008 91.776 34.432 45.952 20.096c0 0 34.816 2.88 45.824 2.88 11.136 0 2.88-22.912 2.88-22.912l-17.216-17.28-5.76-14.336-8.512-22.912-14.336-17.216-94.656-31.552-77.44-28.672-40.192-31.616 8.64-40.128 17.216-37.312 14.336-22.976 22.976-14.336 31.552-8.64 37.248-2.816zM613.888 114.752l-8.64 14.336 25.728 8.64 20.032 5.696-20.032 31.552 60.224-14.336 5.824-28.672-31.488-11.456-51.648-5.76zM410.176 154.944l-14.336 42.944 31.552 31.552 17.216-5.76 43.008-8.576 48.768-14.336 5.76-17.216-37.312-8.576-54.464 8.576-40.192-28.608zM238.080 530.688h17.216l25.792 14.336 37.312 40.128 51.648 5.76 65.984 80.384 286.848 5.76-22.976 106.112-48.768 62.976-28.608 25.856-2.88-2.88 2.88 22.848 31.488-5.76 108.992-80.32v-22.912h114.752l45.888 11.52c-92.032 131.136-244.48 215.104-413.056 215.104-216.192 0-400.128-135.424-470.4-332.672l20.096-5.824 8.576-34.368 8.576-5.76 100.416 5.76 68.864 45.888 25.792-5.696-2.88-28.672-37.312-34.432-14.336-22.912-2.88-28.736 8.64-14.336 14.336-17.152zM527.808 740.032c-10.688 2.368 1.152 9.344-8.576 14.4-19.008 9.664 22.912 28.672 22.912 28.672s22.72 12.032 34.368 11.456c10.624-0.576 28.736-11.456 28.736-11.456 17.728-17.28 9.024-41.344 0-34.496l-22.976 14.464h-22.912c0-0.064-19.712-25.536-31.552-23.040z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-redhat" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 602, + "id": 22, + "prevSize": 16, + "code": 59772, + "name": "it-server-redhat" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 288 + }, + { + "icon": { + "paths": [ + "M468 0l-48 268c16.173-3.297 30.849-4 48-4s33.827 0.703 50 4l-50-268zM140 134l150 208c22.048-23.283 46.359-42.605 76-56l-226-152zM798 134l-226 152c29.641 13.395 53.952 32.717 76 56l150-208zM0 374l222 102c4.34-29.541 14.151-58.816 28-84l-250-18zM938 374l-252 18c13.849 25.184 23.66 54.459 28 84l224-102zM650 526c-359.894 0-650 58.809-650 132s290.106 134 650 134c58.987 0 117.658-3.012 172-6-10.202 0.109-19.67 0-30 0-330.653 0-600-54.037-600-122s269.347-124 600-124c82.663 0 160.373 3.773 232 10-105.684-15.034-235.24-24-374-24z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-solaris" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 603, + "id": 21, + "prevSize": 16, + "code": 59773, + "name": "it-server-solaris" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 289 + }, + { + "icon": { + "paths": [ + "M516 58c-65.675 2.119-123.16 4.56-184 34-72.421 32-145.651 59.003-206 112l-68 84c-69.777 119.589-54.416 232.934 106 290 77.742 5.552 221.478-57.888 130-202-29.523-28.96-55.273-37.398-104-30-41.79 11.271-68.086 46.084-54 102 19.492 27.884 22.688 25.105 42 30l48 4 8-26-6-20-8-6-24 8c-8.312 15.984-60.714-16.58-8-42 9.817-4.489 38.161-14.031 60 6 31.625 31.716 57.773 84.241-28 118-67.019 7.312-100.036-7.173-128-76l-2-44 8-40c25.624-32.030 36.815-49.83 80-54 52.83-2.032 90.154-5.104 136 26l30 40 20 40 14 30 34 22 30 14c0-47.834-13.068-83.628 26-114l28-10c29.176 0.729 53.498-9.082 82 10l20 20 46 52 52 28 44 26 8-6-24-32c-9.354-42.571-25.187-62.438 0-106l26-8c80.668 5.366 185.805 20.894 260-38 5.991-2.681 19.875-27.248-2-38-2.468 7.251-2.487 15.266-20 22-43.274 12.798-69.848 21.603-118-4-31.965-11.776-57.959-15.825-76-46l-6-12 18-6 40 24c25.187 12.253 45.744 28.964 76 30 35.19-2.629 61.074 2.317 92-20l14-16c-13.040-40.569-18.998-80.996-52-110-42.108-21.054-82.178-38.858-130-44l-86-12 6 38-50-22-90-16-110-10zM918 122c33.395 0 60 26.605 60 60s-26.605 60-60 60c-33.395 0-60-26.605-60-60s26.605-60 60-60zM918 142c-21.945 0-40 18.055-40 40s18.055 40 40 40c21.945 0 40-18.055 40-40s-18.055-40-40-40zM922 154c10.165 0 18 7.835 18 18s-7.835 18-18 18c-10.165 0-18-7.835-18-18s7.835-18 18-18zM116 646c-21.527 0-40.779 4.988-56 12s-25.912 16.594-34 30c-8.088 13.407-12 28.6-12 44-0 23.926 8.804 43.362 26 60 12.228 11.825 33.684 21.888 64 30 23.565 6.325 37.376 11.525 44 14 9.68 3.713 16.115 6.981 20 12s6 10.85 6 18c-0 11.138-4.765 21.681-14 30s-21.785 12-40 12c-17.196 0-31.874-4.65-42-14s-16.688-24.062-20-44l-54 6c3.694 33.826 15.021 60.331 34 78s46.589 26 82 26c24.329 0 43.696-4.644 60-12s29.083-18.875 38-34c8.916-15.125 14-30.675 14-48-0-19.113-4.549-35.006-12-48s-16.817-22.506-30-30c-13.184-7.494-34.487-14.987-62-22s-44.867-13.537-52-20c-5.605-5.087-8-12.85-8-20-0-7.837 2.013-13.325 8-18 9.298-7.287 23.568-10 40-10 15.922 0 28.039 3.194 36 10s11.58 18.463 14 34l58-4c-0.892-27.775-10.231-49.362-28-66s-44.844-26-80-26zM616 646c-21.527 0-38.779 4.988-54 12s-27.912 16.594-36 30c-8.088 13.407-12 28.6-12 44-0 23.926 8.804 43.362 26 60 12.228 11.825 33.684 21.888 64 30 23.565 6.325 39.376 11.525 46 14 9.681 3.713 16.115 6.981 20 12s6 10.85 6 18c-0 11.138-4.765 21.681-14 30s-23.785 12-42 12c-17.196 0-29.874-4.65-40-14s-16.689-24.062-20-44l-56 6c3.694 33.826 15.021 60.331 34 78s46.589 26 82 26c24.329 0 43.695-4.644 60-12s29.083-18.875 38-34c8.916-15.125 14-30.675 14-48-0-19.113-4.548-35.006-12-48s-16.817-22.506-30-30c-13.184-7.494-34.487-14.987-62-22s-44.867-13.537-52-20c-5.605-5.087-8-12.85-8-20-0-7.837 4.013-13.325 10-18 9.298-7.287 21.568-10 38-10 15.922 0 28.039 3.194 36 10s13.58 18.462 16 34l56-4c-0.892-27.775-10.231-49.362-28-66s-44.844-26-80-26zM896 650c-33.989 0-63.77 13.115-86 40s-32 64.524-32 112c0 39.744 7.086 71.924 24 98 23.472 24.814 37.445 40.196 80 48 10.305-3.467 69.29 0.256 76-6 9.704-9.048 12.525-32.631 2-44-6.247-6.748-56.534-2.879-72-6-26.387-8.256-41.018-28.763-40-70h170c0.966-58.086-9.932-101.856-32-130s-51.823-42-90-42zM900 708c13.853 0 24.335 4.58 34 16s15.518 28.060 16 50h-102c-0.16-20.681 4.335-35.951 14-48s23.18-18 38-18zM278 736v138c-0 20.625 1.16 36.312 6 48s13.173 21.537 24 28c10.827 6.463 24.371 10 38 10 13.374-0 25.963-3.262 38-10s20.612-16.312 28-28v32h50v-218h-54v92c-0 31.351-1.325 49.956-4 58s-6.74 14.569-14 20c-7.261 5.432-16.829 10-26 10-8.025 0-12.778-1.944-18-6s-10.026-11.056-12-18c-1.974-6.944-2-25.199-2-56v-100h-54z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-suse" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 604, + "id": 20, + "prevSize": 16, + "code": 59774, + "name": "it-server-suse" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 290 + }, + { + "icon": { + "paths": [ + "M398 48c-49.48-0.394-105.040 6.773-168 26l-106 332c130.327-31.196 261.844-49.831 374 28l100-326c-53.73-36.361-117.533-59.343-200-60zM646 136l-102 326c85.969 58.177 202.107 85.272 370 34l104-332c-130.327 31.196-259.844 49.831-372-28zM276 446c-49.48-0.394-105.040 8.773-168 28l-104 330c130.327-31.196 261.844-49.831 374 28l100-324c-53.73-36.361-119.533-61.343-202-62zM532 532l-100 324c85.969 58.177 200.107 87.272 368 36l106-332c-130.327 31.196-261.844 49.831-374-28z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-windows" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 605, + "id": 19, + "prevSize": 16, + "code": 59775, + "name": "it-server-windows" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 291 + }, + { + "icon": { + "paths": [ + "M172 2c-94.922 0-174 77.078-174 172v678c0 94.922 79.078 174 174 174h678c94.922 0 172-79.078 172-174v-678c0-94.922-77.078-172-172-172h-678zM172 66h678c60.656 0 108 47.344 108 108v678c0 60.656-47.344 110-108 110h-678c-60.656 0-110-49.344-110-110v-678c0-60.656 49.344-108 110-108zM648 128c-65.702 0-118 59.253-118 134 0 35.455 12.739 67.892 32 92-6.83 9.571-13.44 18.122-20 28-18.237 27.459-34.576 60.552-48 70-65.673 46.222-96 101.301-96 194 0 13.022 2.338 25.479 4 38 18.337-8.975 41.46-14 66-14 3.179 0 4.89-0.173 8 0-2.898-14.424-4-27.401-4-42 0.984-100.874 43.6-162.918 90-228 2.082-2.74 3.586-8.121 6-12 1.928 3.32 5.762 5.98 10 8l38 18c18.578 8.853 39.030 8.156 58 0l42-18c0.66-0.284 1.389 0.328 2 0 33.238 71.604 76.972 151.795 78 218 0 18.641-2.819 36.706-6 54 10.267-1.976 22.724-2 34-2 14.861 0 29.020 0.648 42 4 0.643-7.865 2-15.954 2-24 0-78.166-20.908-136.219-70-184-20.089-19.552-45.094-62.129-72-100 24.681-24.77 40-59.684 40-100 0-74.747-52.298-134-118-134zM438 130l-328 344 150 24-164 292 314-334-110-66 138-260zM600 238c19.902 0 34 16.895 34 40 0 3.188-1.461 7.006-2 10-3.639 0.476-6.208 2.208-10 4 0-17.37-11.314-32-24-32s-22 14.63-22 32c0 10.509 4.217 20.288 10 26-13.125-6.757-22-22.671-22-40 0-23.105 16.098-40 36-40zM696 240c19.902 0 36 16.895 36 40 0 17.329-8.875 33.243-22 40 4.623-5.753 6-14.772 6-24 0-17.37-9.314-32-22-32s-24 14.63-24 32c0 1.901-0.237 4.248 0 6-2.413-1.705-5.581-4.618-8-6-1.994-5.337-4-9.953-4-16 0-23.105 18.098-40 38-40zM646 304c9.671-0 20.724 3.831 28 10l36 32c10.315 8.746 14.721 21.763 10 32-1.499 1.031-2.207 1.229-4 2l-42 20c-18.97 8.156-39.422 8.853-58 0l-38-20c-1.353-0.645-2.925 0.788-4 0-5.798-10.88-0.914-24.747 10-34l36-32c7.276-6.169 16.329-10 26-10zM584 352c-1.797 1.815-4 4.010-4 6 0 11.058 31.255 20 68 20s64-8.942 64-20c0-1.99-0.205-4.185-2-6-7.318 8.665-30.929 14-62 14s-56.682-5.335-64-14zM788 684c-50.719 5.978-68 33.040-68 90 0 65.098-67.424 148 2 148s178-62.902 178-128c0-65.098-20.576-110-90-110-8.678 0-14.754-0.854-22 0zM462 692c-69.424 0-88 44.902-88 110s106.576 128 176 128c69.424 0 4-82.902 4-148s-22.576-90-92-90zM584 824l10 38 12 44c9.107 1.223 16.584 2 26 2 9.967 0 20.394-0.621 30-2 4.077-19.935 16-70 16-70l6-12c-15.711 7.673-32.308 12-50 12-18.109 0-33.944-4.058-50-12z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-server-zxve" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 606, + "id": 18, + "prevSize": 16, + "code": 59776, + "name": "it-server-zxve" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 292 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM184 208h656c30.953 0 56 25.979 56 58v12c0 32.021-25.047 58-56 58h-656c-30.953 0-56-25.979-56-58v-12c0-32.021 25.047-58 56-58zM184 476h656c30.953 0 56 25.979 56 58v12c0 32.021-25.047 58-56 58h-656c-30.953 0-56-25.979-56-58v-12c0-32.021 25.047-58 56-58zM184 744h656c30.953 0 56 25.979 56 58v12c0 32.021-25.047 58-56 58h-656c-30.953 0-56-25.979-56-58v-12c0-32.021 25.047-58 56-58z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 607, + "id": 17, + "prevSize": 16, + "code": 59777, + "name": "it-storage" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 293 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM320 586c39.229 0 71.5 10.813 96 34 14.583 13.709 24.708 34.334 32 60l-64 16c-3.792-16.625-11.969-30.375-24-40s-26.792-14-44-14c-23.771 0-43.198 8.938-58 26s-22 43.792-22 82c-0 40.542 7.417 68.792 22 86s34.667 26 58 26c17.208 0 31.604-5.062 44-16s20.604-28.521 26-52l64 20c-9.625 35-25.615 61.010-48 78s-51.584 26-86 26c-42.583 0-76.583-14.906-104-44s-42-69.542-42-120c-0-53.375 14.437-94.468 42-124s63.083-44 108-44zM724 586c39.229 0 71.5 10.813 96 34 14.583 13.709 26.708 34.334 34 60l-64 16c-3.792-16.625-11.969-30.375-24-40s-26.792-14-44-14c-23.771 0-43.198 8.938-58 26s-22 43.792-22 82c-0 40.542 7.417 68.792 22 86s32.667 26 56 26c17.208 0 31.604-5.062 44-16s22.604-28.521 28-52l62 20c-9.625 35-25.615 61.010-48 78s-51.583 26-86 26c-42.583 0-76.583-14.906-104-44s-42-69.542-42-120c-0-53.375 14.437-94.468 42-124s63.083-44 108-44z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-cisco-mds" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 608, + "id": 16, + "prevSize": 16, + "code": 59778, + "name": "it-storage-cisco-mds" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 294 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM76 598h94c21.391 0 38.778 3.844 50 8 15.079 5.641 27.246 13.603 38 28s18.389 31.146 24 52c5.611 20.854 8 47.424 8 78-0 26.865-0.74 50.556-6 70-6.429 23.748-16.077 43.306-28 58-9.001 11.132-20.687 17.766-36 24-11.456 4.602-26.83 10-46 10h-98v-328zM356 598h152v56h-88v72h76v54h-76v90h94v56h-158v-328zM568 602h64v268h100v56h-164v-324zM782 604h66v268h100v56h-166v-324zM128 654v216h38c14.495 0 25.571-1.922 32-4 8.416-2.672 14.447-5.617 20-12s10.493-17.38 14-32c3.507-14.62 6-34.767 6-60s-2.493-44.493-6-58c-3.507-13.507-7.688-24.43-14-32s-14.298-13.328-24-16c-7.248-2.077-22.842-2-44-2h-22z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-md3000" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 609, + "id": 15, + "prevSize": 16, + "code": 59779, + "name": "it-storage-md3000" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 295 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM84 590h64l132 214v-214h60v320h-66l-128-208v208h-62v-320zM376 590h70l80 236 80-236h68l-116 320h-68l-114-320zM684 590h256v54h-96v266h-64v-266h-96v-54z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-netvault" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 610, + "id": 14, + "prevSize": 16, + "code": 59780, + "name": "it-storage-netvault" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 296 + }, + { + "icon": { + "paths": [ + "M869.981 0h-715.962c-85.039 0-154.019 68.98-154.019 154.019v716.009c0 84.992 68.98 153.972 154.019 153.972h716.009c84.992 0 153.972-68.98 153.972-154.019v-715.962c0-85.039-68.98-154.019-154.019-154.019zM177.99 121.996h672.023c26.717 0 47.988 28.532 47.988 64s-21.271 64-47.988 64h-672.023c-26.764 0-47.988-28.532-47.988-64s21.271-64 47.988-64zM175.988 344.017h672.023c26.717 0 47.988 28.532 47.988 64s-21.271 64-47.988 64h-672.023c-26.764 0-47.988-28.532-47.988-64s21.271-64 47.988-64zM351.418 907.543h-253.533v-39.377l164.305-205.452c11.636-14.569 22.761-27.229 33.233-37.981h-178.921v-37.841h229.702v37.841l-180.038 222.441-19.456 22.528h204.707v37.841zM627.293 624.733h-106.077v282.81h-42.496v-282.81h-105.658v-37.841h254.185v37.841zM910.988 907.543h-239.337v-320.698h231.843v37.841h-189.347v98.211h177.385v37.609h-177.385v109.196h196.841v37.841z" + ], + "attrs": [ + { + "fill": "rgb(99, 147, 205)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-sanswitch-zte" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 6 + ] + } + }, + "attrs": [ + { + "fill": "rgb(99, 147, 205)" + } + ], + "properties": { + "order": 611, + "id": 13, + "prevSize": 16, + "code": 59781, + "name": "it-storage-sanswitch-zte" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 297 + }, + { + "icon": { + "paths": [ + "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM188 530h64l118 298h-64l-26-68h-120l-24 68h-64l116-298zM382 530h236v50h-88v248h-60v-248h-88v-50zM220 600l-40 110h80l-40-110z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-switch-at" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 612, + "id": 12, + "prevSize": 16, + "code": 59782, + "name": "it-switch-at" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 298 + }, + { + "icon": { + "paths": [ + "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM204 524c36.427 0 67.25 12.469 90 34 13.541 12.729 23.229 30.167 30 54l-60 14c-3.521-15.437-10.828-27.062-22-36s-24.021-14-40-14c-22.073 0-40.255 8.156-54 24s-20 40.521-20 76c-0 37.646 6.458 66.021 20 82s30.333 24 52 24c15.979 0 30.489-5.844 42-16s18.989-26.198 24-48l58 18c-8.938 32.5-23.214 58.224-44 74s-48.042 22-80 22c-39.542-0-70.542-12.984-96-40s-38-63.146-38-110c-0-49.562 12.406-88.578 38-116s58.292-42 100-42zM506 524c36.427 0 65.25 12.469 88 34 13.541 12.729 23.229 30.167 30 54l-60 14c-3.521-15.437-10.828-27.062-22-36s-24.021-14-40-14c-22.073 0-40.255 8.156-54 24s-20 40.521-20 76c-0 37.646 6.458 66.021 20 82s30.333 24 52 24c15.979 0 30.489-5.844 42-16s18.989-26.198 24-48l60 18c-8.938 32.5-25.214 58.224-46 74s-46.042 22-78 22c-39.542-0-72.542-12.984-98-40s-38-63.146-38-110c-0-49.562 12.406-88.578 38-116s60.292-42 102-42z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-switch-cisco" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 613, + "id": 11, + "prevSize": 16, + "code": 59783, + "name": "it-switch-cisco" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 299 + }, + { + "icon": { + "paths": [ + "M697.809 543.651c32.349-20.573 70.563-32.908 111.756-32.908 47.709 0 91.183 16.477 126.371 43.38l88.064-84.108-234.449-225.978v128h-222.441c60.835 40.96 105.891 101.329 130.7 171.613z", + "M348.672 299.985c47.756 0 94.161 9.914 136.285 26.019h186.368v-198.004h-436.876v-128l-234.449 227.98 140.288 134.004c59.764-39.284 131.398-61.999 208.384-61.999z", + "M346.671 334.010c-191.069 0-346.671 153.321-346.671 343.971s155.601 346.019 346.671 346.019c128.791 0 240.314-70.703 299.52-175.151-28.346-35.607-45.94-80.151-45.94-129.117 0-61.999 27.555-117.062 70.516-155.369-47.011-134.097-173.196-230.353-324.096-230.353zM334.848 880.035h-42.543v-151.087h-167.005v151.087h-42.496v-320.698h42.543v131.677h166.959v-131.677h42.543v320.698zM569.53 856.529c-20.387 19.456-46.266 29.184-77.545 29.184-28.253 0-51.665-8.378-70.284-25.181-18.665-16.71-29.231-38.493-31.884-65.071l39.377-5.26c4.561 22.295 12.288 38.353 23.18 48.175 10.892 9.914 24.111 14.801 39.75 14.801 18.525 0 34.257-6.47 47.057-19.223 12.753-12.893 19.177-28.765 19.177-47.756 0-18.060-5.865-32.908-17.78-44.684-11.776-11.776-26.857-17.641-45.103-17.641-7.494 0-16.756 1.443-27.881 4.422l4.375-34.583c2.653 0.279 4.748 0.465 6.33 0.465 16.849 0 31.977-4.422 45.428-13.126s20.154-22.295 20.154-40.448c0-14.522-4.887-26.391-14.708-35.887-9.775-9.495-22.435-14.243-37.888-14.243-15.36 0-28.113 4.841-38.4 14.429-10.193 9.635-16.803 24.111-19.689 43.334l-39.517-6.982c4.887-26.345 15.825-46.871 32.861-61.347 17.175-14.522 38.4-21.737 63.814-21.737 17.548 0 33.699 3.77 48.407 11.264 14.755 7.494 26.065 17.734 33.885 30.72 7.866 12.986 11.729 26.764 11.729 41.425 0 13.824-3.677 26.391-11.124 37.841-7.447 11.357-18.479 20.387-33.047 27.089 18.991 4.375 33.699 13.452 44.218 27.276 10.519 13.731 15.779 30.999 15.779 51.665 0.047 27.881-10.147 51.572-30.673 71.075z", + "M879.29 828.649c-16.477 13.684-36.631 20.48-60.509 20.48-19.549 0-37.748-4.98-54.551-15.081-16.756-10.054-29.184-25.228-37.143-45.568s-11.962-44.125-11.962-71.447c0-21.132 3.398-41.658 10.1-61.533s18.385-35.793 34.956-47.569 37.283-17.734 61.905-17.734c21.504 0 39.377 5.353 53.481 16.012 14.15 10.612 24.995 27.601 32.442 51.014l41.844-9.868c-8.657-29.649-23.924-52.596-45.801-68.887-21.923-16.384-49.012-24.483-81.082-24.483-28.346 0-54.319 6.47-77.917 19.316-23.645 12.94-41.844 31.837-54.644 56.692s-19.13 53.993-19.13 87.412c0 30.58 5.632 59.206 16.943 86.016 11.357 26.577 27.881 47.057 49.524 61.114 21.737 14.103 49.897 21.132 84.433 21.132 33.559 0 61.812-9.169 84.992-27.508s39.191-44.87 48.081-79.732l-42.496-10.705c-5.772 26.81-16.943 47.151-33.466 60.928z" + ], + "attrs": [ + { + "fill": "rgb(99, 147, 205)" + }, + { + "fill": "rgb(99, 147, 205)" + }, + { + "fill": "rgb(99, 147, 205)" + }, + { + "fill": "rgb(99, 147, 205)" + } + ], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-switch-h3c" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [ + 6, + 6, + 6, + 6 + ] + } + }, + "attrs": [ + { + "fill": "rgb(99, 147, 205)" + }, + { + "fill": "rgb(99, 147, 205)" + }, + { + "fill": "rgb(99, 147, 205)" + }, + { + "fill": "rgb(99, 147, 205)" + } + ], + "properties": { + "order": 614, + "id": 10, + "prevSize": 16, + "code": 59784, + "name": "it-switch-h3c" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 300 + }, + { + "icon": { + "paths": [ + "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM226 516h64v202c-0 26.542-1.334 47.708-6 62-6.271 18.667-17.521 32.698-34 44s-39.021 18-66 18c-31.646-0-54.938-8.281-72-26s-25.854-43.729-26-78l60-8c0.729 18.375 3.333 32.417 8 40 7 11.521 17.708 16 32 16 14.437 0 24.021-3.76 30-12s10-26.042 10-52v-206zM360 516h104c39.375 0 64.041 0.792 76 4 18.375 4.813 33.604 15.886 46 32s20 36.479 20 62c-0 19.688-4.854 36.583-12 50s-14.99 24.344-26 32c-11.011 7.656-22.625 11.521-34 14-15.459 3.062-38.688 6-68 6h-42v120h-64v-320zM424 570v90h36c25.521 0 41.396-0.646 50-4s17.114-8.854 22-16c4.885-7.146 6-14.521 6-24-0-11.666-3.146-22.416-10-30s-15.5-12.104-26-14c-7.729-1.458-22.667-2-46-2h-32z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-switch-juniper" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 615, + "id": 9, + "prevSize": 16, + "code": 59785, + "name": "it-switch-juniper" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 301 + }, + { + "icon": { + "paths": [ + "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM98 536h148v44l-112 194h116v48h-164v-52l106-186h-94v-48zM262 536h162v48h-60v238h-42v-238h-60v-48zM450 536h152v48h-110v64h102v48h-102v78h114v48h-156v-286z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-switch-zte" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 616, + "id": 8, + "prevSize": 16, + "code": 59786, + "name": "it-switch-zte" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 302 + }, + { + "icon": { + "paths": [ + "M60 0c-33.495 0-60 26.505-60 60v484c0 33.495 26.505 60 60 60h904c33.495 0 60-26.505 60-60v-484c0-33.495-26.505-60-60-60zM222 170h580c33.495 0 60 26.505 60 60v114c0 33.495-26.505 62-60 62h-580c-33.495 0-60-28.505-60-62v-114c0-33.495 26.505-60 60-60zM740 184c-54.503 0-98 43.497-98 98s43.497 98 98 98c54.503 0 98-43.497 98-98s-43.497-98-98-98zM284 194c-54.503 0-98 43.497-98 98s43.497 100 98 100c54.503 0 98-45.497 98-100s-43.497-98-98-98zM228 640.064v320h64v-140h128v140h64v-320h-64v126h-128v-126zM550 640.064v320h66v-120h42c29.312 0 52.541-2.938 68-6 11.375-2.479 20.989-6.344 32-14s20.854-18.583 28-32c7.146-13.417 10-30.312 10-50-0-25.521-5.604-45.885-18-62s-27.625-27.187-46-32c-11.959-3.208-38.625-4-78-4zM616 694.064h30c23.333 0 40.271 0.544 48 2 10.5 1.896 19.146 6.417 26 14s10 16.334 10 28c-0 9.479-3.115 18.854-8 26s-11.396 12.646-20 16c-8.604 3.354-24.479 4-50 4h-36z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-tapelib-hpmsl" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 617, + "id": 7, + "prevSize": 16, + "code": 59787, + "name": "it-tapelib-hpmsl" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 303 + }, + { + "icon": { + "paths": [ + "M60-2c-33.495 0-60 26.505-60 60v484c0 33.495 26.505 60 60 60h904c33.495 0 60-26.505 60-60v-484c0-33.495-26.505-60-60-60h-904zM222 168h580c33.495 0 60 26.505 60 60v114c0 33.495-26.505 62-60 62h-580c-33.495 0-60-28.505-60-62v-114c0-33.495 26.505-60 60-60zM740 182c-54.503 0-98 43.497-98 98s43.497 98 98 98c54.503 0 98-43.497 98-98s-43.497-98-98-98zM284 192c-54.503 0-98 43.497-98 98s43.497 100 98 100c54.503 0 98-45.497 98-100s-43.497-98-98-98zM642 630c-24.646 0-46.573 4.563-64 12s-30.74 17.782-40 32c-9.26 14.219-14 29.667-14 46-0 25.375 10.312 46.354 30 64 14 12.542 37.292 23.396 72 32 26.979 6.708 44.416 11.375 52 14 11.083 3.938 19.552 8.677 24 14s6 12.417 6 20c-0 11.813-5.427 21.177-16 30s-25.146 14-46 14c-19.688 0-36.406-6.083-48-16s-18.208-24.854-22-46l-64 6c4.229 35.875 18.271 63.26 40 82s51.458 28 92 28c27.854-0 51.333-4.198 70-12s33.791-19.958 44-36c10.208-16.042 16-31.625 16-50-0-20.271-5.469-38.219-14-52s-18.906-24.052-34-32c-15.094-7.948-38.5-16.562-70-24s-51.833-15.146-60-22c-6.417-5.396-10-10.416-10-18-0-8.312 3.146-15.041 10-20 10.646-7.729 25.187-12 44-12 18.229 0 32.885 2.781 42 10s15.229 19.521 18 36l64-2c-1.021-29.458-11.657-54.354-32-72s-49.75-26-90-26zM232 636v54h96v266h64v-266h94v-54h-254z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-tapelib-ibmts" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 618, + "id": 6, + "prevSize": 16, + "code": 59788, + "name": "it-tapelib-ibmts" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 304 + }, + { + "icon": { + "paths": [ + "M60 0c-33.495 0-60 26.505-60 60v484c0 33.495 26.505 60 60 60h904c33.495 0 60-26.505 60-60v-484c0-33.495-26.505-60-60-60zM222 170h580c33.495 0 60 26.505 60 60v114c0 33.495-26.505 62-60 62h-580c-33.495 0-60-28.505-60-62v-114c0-33.495 26.505-60 60-60zM740 184c-54.503 0-98 43.497-98 98s43.497 98 98 98c54.503 0 98-43.497 98-98s-43.497-98-98-98zM284 194c-54.503 0-98 43.497-98 98s43.497 100 98 100c54.503 0 98-45.497 98-100s-43.497-98-98-98zM194 638.718c-24.646 0-46.573 4.563-64 12s-30.74 17.782-40 32c-9.26 14.219-14 29.667-14 46-0 25.375 10.312 46.354 30 64 14 12.542 37.292 23.396 72 32 26.979 6.708 44.416 11.375 52 14 11.083 3.937 19.552 8.677 24 14s6 12.417 6 20c-0 11.813-5.427 21.177-16 30s-25.146 14-46 14c-19.688 0-36.406-6.083-48-16s-18.208-24.854-22-46l-64 6c4.229 35.875 18.271 63.26 40 82s53.458 28 94 28c27.854 0 49.333-4.198 68-12s33.791-19.958 44-36c10.208-16.042 16-33.625 16-52-0-20.271-5.469-36.219-14-50s-18.906-24.052-34-32c-15.094-7.948-38.5-16.562-70-24s-51.833-15.146-60-22c-6.417-5.396-10-10.416-10-18-0-8.312 3.146-15.041 10-20 10.646-7.729 25.187-12 44-12 18.229 0 32.885 2.781 42 10s15.229 19.521 18 36l64-2c-1.021-29.458-11.657-54.354-32-72s-49.75-26-90-26zM380 644.718v170c0 35.875 1.771 63.625 6 82 2.917 12.396 8.812 24.698 18 36s22.177 20.927 38 28c15.823 7.073 39.375 10 70 10 25.375 0 46.25-3.51 62-10s28.593-15.062 38-26c9.406-10.937 14.5-24.104 18-40s6-43.5 6-82v-168h-66v178c-0 25.375-0.104 43.063-2 54s-6.667 20.49-16 28c-9.334 7.511-23.625 10-42 10-18.083 0-33.573-4.052-44-12s-15.229-18.875-18-32c-1.604-8.167-4-24.437-4-52v-174zM704 644.718v320h60v-208l130 208h66v-320h-60v214l-132-214z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-tapelib-sunts" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 619, + "id": 5, + "prevSize": 16, + "code": 59789, + "name": "it-tapelib-sunts" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 305 + }, + { + "icon": { + "paths": [ + "M511.975 3.246l211.157 211.187-211.232 211.202-211.157-211.187 211.232-211.202z", + "M-0.023 507.944l211.202-211.202 211.202 211.202-211.202 211.202-211.202-211.202z", + "M601.514 507.838l211.232-211.172 211.218 211.277-211.232 211.172-211.218-211.277z", + "M511.954 1023.998l-211.202-211.202 211.157-211.157 211.202 211.202-211.157 211.157z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-Virtual network" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 620, + "id": 4, + "prevSize": 16, + "code": 59790, + "name": "it-Virtualnetwork" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 306 + }, + { + "icon": { + "paths": [ + "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM114 78h112l234 380v-380h106v570h-116l-230-372v372h-106v-570zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-app-netnumen" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 621, + "id": 3, + "prevSize": 16, + "code": 59791, + "name": "it-app-netnumen" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 307 + }, + { + "icon": { + "paths": [ + "M498 0c-82.532 2.144-165.473 23.817-242 68-244.886 141.385-329.386 455.113-188 700 110.457 191.318 326.328 283.858 532 248-67.447-15.471-126.088-49.392-172-98-19.648-4.043-39.322-7.308-58-14l32-18c-20.773-27.959-38.401-58.436-50-92l-90 52c-30.316-22.699-56.279-52.734-80-84l110-64c16.047 23.28 34.225 43.553 52 64-6.339-26.139-12-51.912-12-80 0-51.261 11.931-100.275 32-144l-42 24c-18.203-33.787-34.668-67.98-48-102l112-64 34 58c23.494-26.609 49.379-49.664 80-68l-24-42 104-60c14.891 18.474 28.283 37.666 42 58 18.097-2.934 35.074-6 54-6 60.481 0 118.588 16.641 168 44l50-30c11.932 28.367 20.080 58.668 26 88 0.673 0.673 1.332 1.322 2 2 45.731 46.49 78.423 105.65 92 172 23.66-117.806 6.802-243.76-58-356-97.203-168.36-276.429-260.716-458-256zM522 98c45.433 1.164 91.51 8.455 134 24l-64 36c-22.814-22.131-46.003-41.701-70-60zM394 114c39.593 25.649 77.216 56.275 114 92l-84 50-72-126c13.744-5.792 27.944-11.801 42-16zM760 178c31.169 23.019 57.714 49.989 82 82l-116 68c-20.416-32.76-40.879-63.373-64-92l88-52c3.203-1.849 7.605-3.435 10-6zM262 182l72 126-92 52c-12.711-49.321-17.254-97.18-20-144 12.392-12.18 25.886-23.294 40-34zM142 324c3.995 27.904 10.633 55.367 18 84l-58 34c7.125-40.791 21.178-80.958 40-118zM674 396c-158.574 0-286 129.426-286 288s127.426 286 286 286c158.574 0 288-127.426 288-286s-129.426-288-288-288zM192 506c13.398 34.314 27.679 69.994 46 104l-108 62c-15.217-36.176-27.5-72.396-32-110l94-56zM654 512c19.614 0 36 16.386 36 36 0 1.039 0.083 0.988 0 2l126 66c8.663-7.366 19.441-12 32-12 27.46 0 50 21.325 50 48s-22.54 48-50 48c-12.559 0-23.337-4.305-32-12l-76 50c0 1.051 0.147 0.989 0 2l92 62c4.905-3.888 8.99-6 16-6 16.568 0 32 11.905 32 28s-15.432 30-32 30c-16.568 0-28-13.905-28-30l-94-66c-2.938 1.163-6.665 2-10 2-13.338 0-26-9.043-26-22s12.662-24 26-24c4.798 0 8.156 1.697 12 4l76-48c-2.479-5.875-4-11.331-4-18 0-5.095 0.518-11.414 2-16l-122-64c-6.254 6.254-16.193 10-26 10-4.385 0-8.176-2.601-12-4l-90 114c8.642 9.928 12 23.723 12 38 0 31.383-24.617 56-56 56s-56-24.617-56-56c0-31.383 24.617-56 56-56 8.553 0 16.75 2.641 24 6l94-116c-3.186-5.279-6-9.223-6-16 0-19.614 14.386-36 34-36z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-sdn-vnet" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 622, + "id": 2, + "prevSize": 16, + "code": 59792, + "name": "it-sdn-vnet" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 308 + }, + { + "icon": { + "paths": [ + "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM180 588h64v126h128v-126h64v320h-64v-140h-128v140h-64v-320zM598 588h104c39.375 0 66.041 0.792 78 4 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.584-10 50s-16.99 24.344-28 32c-11.011 7.656-22.625 11.521-34 14-15.458 3.062-36.688 6-66 6h-44v120h-64v-320zM662 642v90h36c25.521 0 43.396-0.646 52-4s15.114-8.854 20-16c4.885-7.146 8-14.521 8-24-0-11.666-5.146-22.416-12-30s-15.5-12.104-26-14c-7.729-1.458-22.667-1.999-46-2h-32z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-storage-sanswitch-hp" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 623, + "id": 1, + "prevSize": 16, + "code": 59793, + "name": "it-storage-sanswitch-hp" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 309 + }, + { + "icon": { + "paths": [ + "M526 0c-4.17-0.122-9.077-0.191-14-0.191-282.77 0-512 229.23-512 512 0 0.067 0 0.135 0 0.202-0 282.759 229.23 511.99 512 511.99s512-229.23 512-512c0-0.057 0-0.124 0-0.191 0-277.847-221.318-504.002-497.281-511.792zM294 112v78h562v96h-562v78l-126-126 126-126zM728 386l128 128-128 126v-78h-560v-96h560v-80zM294 658v80h562v96h-562v78l-126-126 126-128z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "it-switch" + ], + "colorPermutations": { + "1001482061100155230124491091931341831941351831961401931981411941991472051": [] + } + }, + "attrs": [], + "properties": { + "order": 624, + "id": 0, + "prevSize": 16, + "code": 59794, + "name": "it-switch" + }, + "setIdx": 0, + "setId": 1, + "iconIdx": 310 + } + ], + "height": 1024, + "metadata": { + "name": "ZteIctIcons" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "ict-", + "metadata": { + "fontFamily": "ZteIctIcons", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "embed": false, + "noie8": false, + "ie7": false + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 4473924, + "bgColor": 16777215, + "classSelector": ".icon" + }, + "historySize": 100, + "showCodes": true, + "gridSize": 16, + "showLiga": false + } +} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/style.css b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/style.css new file mode 100644 index 00000000..e08bc129 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/ZteIctIcons/style.css @@ -0,0 +1,960 @@ +@font-face { + font-family: 'ZteIctIcons'; + src: url('fonts/ZteIctIcons.eot?5wpww7'); + src: url('fonts/ZteIctIcons.eot?5wpww7#iefix') format('embedded-opentype'), + url('fonts/ZteIctIcons.ttf?5wpww7') format('truetype'), + url('fonts/ZteIctIcons.woff?5wpww7') format('woff'), + url('fonts/ZteIctIcons.svg?5wpww7#ZteIctIcons') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="ict-"], [class*=" ict-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'ZteIctIcons' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ict-NFV:before { + content: "\e993"; +} +.ict-VNFM:before { + content: "\e994"; +} +.ict-VNF:before { + content: "\e995"; +} +.ict-VNFC:before { + content: "\e996"; +} +.ict-VIM:before { + content: "\e997"; +} +.ict-VDU:before { + content: "\e998"; +} +.ict-host:before { + content: "\e999"; +} +.ict-NS:before { + content: "\e99a"; +} +.ict-uep-moc-uca-public:before { + content: "\e99b"; +} +.ict-uep-topo-commongroup20x20:before { + content: "\e99c"; +} +.ict-vapel_chgpile:before { + content: "\e99d"; +} +.ict-car:before { + content: "\e99e"; +} +.ict-chgpile:before { + content: "\e99f"; +} +.ict-chgposition:before { + content: "\e9a0"; +} +.ict-chgstation:before { + content: "\e9a1"; +} +.ict-common_dc:before { + content: "\e9a2"; +} +.ict-common_ncd:before { + content: "\e9a3"; +} +.ict-common_ncd_break:before { + content: "\e9a4"; +} +.ict-common_sc:before { + content: "\e9a5"; +} +.ict-networkTree:before { + content: "\e9a6"; +} +.ict-resourceType:before { + content: "\e9a7"; +} +.ict-tree-icon:before { + content: "\e9a8"; +} +.ict-uep-topo-group20x20:before { + content: "\e9a9"; +} +.ict-uep-topo-root:before { + content: "\e9aa"; +} +.ict-uep-topo-virtual20x20:before { + content: "\e9ab"; +} +.ict-common_ncd_stop:before { + content: "\e9ac"; +} +.ict-uep-moc-root:before { + content: "\e9ad"; +} +.ict-uep-topo-undefinedgroup20x20:before { + content: "\e9ae"; +} +.ict-analysis:before { + content: "\e9af"; +} +.ict-bindingRelationship:before { + content: "\e9b0"; +} +.ict-browsePolicy:before { + content: "\e9b1"; +} +.ict-businessManagment:before { + content: "\e9b2"; +} +.ict-cardData:before { + content: "\e9b3"; +} +.ict-dailyManagment:before { + content: "\e9b4"; +} +.ict-enterpriseCustomer:before { + content: "\e9b5"; +} +.ict-equipmentBlacklist:before { + content: "\e9b6"; +} +.ict-equipmentModel:before { + content: "\e9b7"; +} +.ict-examine:before { + content: "\e9b8"; +} +.ict-failureList:before { + content: "\e9b9"; +} +.ict-familyCustomer:before { + content: "\e9ba"; +} +.ict-fileTool:before { + content: "\e9bb"; +} +.ict-groupManagment:before { + content: "\e9bc"; +} +.ict-notice:before { + content: "\e9bd"; +} +.ict-policy:before { + content: "\e9be"; +} +.ict-portal:before { + content: "\e9bf"; +} +.ict-recordQuery:before { + content: "\e9c0"; +} +.ict-resourceManagment:before { + content: "\e9c1"; +} +.ict-ruleManagment:before { + content: "\e9c2"; +} +.ict-sucessRate:before { + content: "\e9c3"; +} +.ict-terminalManagment:before { + content: "\e9c4"; +} +.ict-tools:before { + content: "\e9c5"; +} +.ict-track:before { + content: "\e9c6"; +} +.ict-userManagment:before { + content: "\e9c7"; +} +.ict-versionManagment:before { + content: "\e9c8"; +} +.ict-workOrder:before { + content: "\e9c9"; +} +.ict-save:before { + content: "\e9ca"; +} +.ict-Magnifier:before { + content: "\e9cb"; +} +.ict-zoomIn:before { + content: "\e9cc"; +} +.ict-zoomOut:before { + content: "\e9cd"; +} +.ict-delete:before { + content: "\e9ce"; +} +.ict-refresh:before { + content: "\e9cf"; +} +.ict-modify:before { + content: "\e9d0"; +} +.ict-new:before { + content: "\e9d1"; +} +.ict-cpu:before { + content: "\e9d2"; +} +.ict-memory:before { + content: "\e9d3"; +} +.ict-currentAlarm:before { + content: "\e9d4"; +} +.ict-noticeAlarm:before { + content: "\e9d5"; +} +.ict-historyAlarm:before { + content: "\e9d6"; +} +.ict-close:before { + content: "\e9d7"; +} +.ict-table:before { + content: "\e9d8"; +} +.ict-next:before { + content: "\e9d9"; +} +.ict-pre:before { + content: "\e9da"; +} +.ict-roleset:before { + content: "\e9db"; +} +.ict-role:before { + content: "\e9dc"; +} +.ict-user:before { + content: "\e9dd"; +} +.ict-empty:before { + content: "\e9de"; +} +.ict-noticeFilter:before { + content: "\e9df"; +} +.ict-alarmTurn:before { + content: "\e9e0"; +} +.ict-advice:before { + content: "\e9e1"; +} +.ict-clearAlarm:before { + content: "\e9e2"; +} +.ict-alarmBox:before { + content: "\e9e3"; +} +.ict-afreshDef:before { + content: "\e9e4"; +} +.ict-alarmFilter:before { + content: "\e9e5"; +} +.ict-manAnalysis:before { + content: "\e9e6"; +} +.ict-drill:before { + content: "\e9e7"; +} +.ict-gear:before { + content: "\e9e8"; +} +.ict-process:before { + content: "\e9e9"; +} +.ict-unacknownledge:before { + content: "\e9ea"; +} +.ict-acknownledge:before { + content: "\e9eb"; +} +.ict-Operation:before { + content: "\e9ec"; +} +.ict-cloud:before { + content: "\e9ed"; +} +.ict-computer:before { + content: "\e9ee"; +} +.ict-alarm:before { + content: "\e9ef"; +} +.ict-import:before { + content: "\e9f0"; +} +.ict-export:before { + content: "\e9f1"; +} +.ict-Admin:before { + content: "\e9f2"; +} +.ict-allSelected:before { + content: "\e9f3"; +} +.ict-angleRight:before { + content: "\e9f4"; +} +.ict-arrowLeft:before { + content: "\e9f5"; +} +.ict-arrowLeftAll:before { + content: "\e9f6"; +} +.ict-arrowRight:before { + content: "\e9f7"; +} +.ict-arrowRightAll:before { + content: "\e9f8"; +} +.ict-autoFind:before { + content: "\e9f9"; +} +.ict-back:before { + content: "\e9fa"; +} +.ict-ball:before { + content: "\e9fb"; +} +.ict-bell:before { + content: "\e9fc"; +} +.ict-blackList:before { + content: "\e9fd"; +} +.ict-breakLink:before { + content: "\e9fe"; +} +.ict-cancle:before { + content: "\e9ff"; +} +.ict-circle:before { + content: "\ea00"; +} +.ict-closeTree:before { + content: "\ea01"; +} +.ict-configmap:before { + content: "\ea02"; +} +.ict-department:before { + content: "\ea03"; +} +.ict-detail:before { + content: "\ea04"; +} +.ict-displaySwitch:before { + content: "\ea05"; +} +.ict-file:before { + content: "\ea06"; +} +.ict-filter:before { + content: "\ea07"; +} +.ict-find:before { + content: "\ea08"; +} +.ict-folder:before { + content: "\ea09"; +} +.ict-forceOut:before { + content: "\ea0a"; +} +.ict-fullScreen:before { + content: "\ea0b"; +} +.ict-Graphical:before { + content: "\ea0c"; +} +.ict-helpTip:before { + content: "\ea0d"; +} +.ict-hide:before { + content: "\ea0e"; +} +.ict-history:before { + content: "\ea0f"; +} +.ict-launchingTower:before { + content: "\ea10"; +} +.ict-layout:before { + content: "\ea11"; +} +.ict-legendhide:before { + content: "\ea12"; +} +.ict-legendshow:before { + content: "\ea13"; +} +.ict-link:before { + content: "\ea14"; +} +.ict-lock:before { + content: "\ea15"; +} +.ict-ltArrow:before { + content: "\ea16"; +} +.ict-Maintain:before { + content: "\ea17"; +} +.ict-maximize:before { + content: "\ea18"; +} +.ict-Monitor:before { + content: "\ea19"; +} +.ict-move:before { + content: "\ea1a"; +} +.ict-newShortcut:before { + content: "\ea1b"; +} +.ict-openTree:before { + content: "\ea1c"; +} +.ict-poNode:before { + content: "\ea1d"; +} +.ict-print:before { + content: "\ea1e"; +} +.ict-product:before { + content: "\ea1f"; +} +.ict-rbArrow:before { + content: "\ea20"; +} +.ict-reduction:before { + content: "\ea21"; +} +.ict-rename:before { + content: "\ea22"; +} +.ict-select:before { + content: "\ea23"; +} +.ict-selectAll:before { + content: "\ea24"; +} +.ict-selectLeft:before { + content: "\ea25"; +} +.ict-selectRight:before { + content: "\ea26"; +} +.ict-show:before { + content: "\ea27"; +} +.ict-shrink:before { + content: "\ea28"; +} +.ict-start:before { + content: "\ea29"; +} +.ict-stop:before { + content: "\ea2a"; +} +.ict-stretch:before { + content: "\ea2b"; +} +.ict-strikeOut:before { + content: "\ea2c"; +} +.ict-Synchronous:before { + content: "\ea2d"; +} +.ict-toRight:before { + content: "\ea2e"; +} +.ict-treefile:before { + content: "\ea2f"; +} +.ict-treeFolder:before { + content: "\ea30"; +} +.ict-unlock:before { + content: "\ea31"; +} +.ict-userCompare:before { + content: "\ea32"; +} +.ict-userDispatch:before { + content: "\ea33"; +} +.ict-xml:before { + content: "\ea34"; +} +.ict-zoomOverView:before { + content: "\ea35"; +} +.ict-zoomReset:before { + content: "\ea36"; +} +.ict-it-firewall-hillstone:before { + content: "\e900"; +} +.ict-it-server-ubuntu:before { + content: "\e901"; +} +.ict-it-server-tru64:before { + content: "\e902"; +} +.ict-it-sever-as400:before { + content: "\e903"; +} +.ict-it-other-fileserver:before { + content: "\e904"; +} +.ict-it-other-sapccms:before { + content: "\e905"; +} +.ict-it-other-activedirectory:before { + content: "\e906"; +} +.ict-it-app-sliverstream:before { + content: "\e907"; +} +.ict-it-app-oracleas:before { + content: "\e908"; +} +.ict-it-server-freeBSD:before { + content: "\e909"; +} +.ict-it-app-exchange2007:before { + content: "\e90a"; +} +.ict-it-app-exchange2003:before { + content: "\e90b"; +} +.ict-it-app-dotnet:before { + content: "\e90c"; +} +.ict-it-other-lenovo:before { + content: "\e90d"; +} +.ict-it-router-alu7750:before { + content: "\e90e"; +} +.ict-it-other-nds:before { + content: "\e90f"; +} +.ict-it-other-php:before { + content: "\e910"; +} +.ict-it-app-glassfish:before { + content: "\e911"; +} +.ict-it-other-telnet:before { + content: "\e912"; +} +.ict-it-other-dns:before { + content: "\e913"; +} +.ict-it-other-url:before { + content: "\e914"; +} +.ict-it-database-mysql:before { + content: "\e915"; +} +.ict-it-other-ping:before { + content: "\e916"; +} +.ict-it-other-ftp:before { + content: "\e917"; +} +.ict-it-other-rest:before { + content: "\e918"; +} +.ict-it-other-soap:before { + content: "\e919"; +} +.ict-it-server-macos:before { + content: "\e91a"; +} +.ict-it-server-openbsd:before { + content: "\e91b"; +} +.ict-it-server-debian:before { + content: "\e91c"; +} +.ict-it-app-iis:before { + content: "\e91d"; +} +.ict-it-app-mailserver:before { + content: "\e91e"; +} +.ict-it-app-websphere:before { + content: "\e91f"; +} +.ict-it-app-apache:before { + content: "\e920"; +} +.ict-it-app-jboss:before { + content: "\e921"; +} +.ict-it-other-a10bala:before { + content: "\e922"; +} +.ict-it-cluster-vcs:before { + content: "\e923"; +} +.ict-it-diskraid-hpeva:before { + content: "\e924"; +} +.ict-it-diskraid-zte:before { + content: "\e925"; +} +.ict-it-firewall-h3c:before { + content: "\e926"; +} +.ict-it-other-ibm-blade:before { + content: "\e927"; +} +.ict-it-other-secfox:before { + content: "\e928"; +} +.ict-it-other-segw:before { + content: "\e929"; +} +.ict-it-other-zteatca:before { + content: "\e92a"; +} +.ict-it-other-zteips:before { + content: "\e92b"; +} +.ict-it-sdn-controller:before { + content: "\e92c"; +} +.ict-it-server-hpux:before { + content: "\e92d"; +} +.ict-it-storage-ops:before { + content: "\e92e"; +} +.ict-it-storage-sanswitch-brocade:before { + content: "\e92f"; +} +.ict-it:before { + content: "\e930"; +} +.ict-it-app:before { + content: "\e931"; +} +.ict-it-app-bind:before { + content: "\e932"; +} +.ict-it-app-dns:before { + content: "\e933"; +} +.ict-it-app-ems:before { + content: "\e934"; +} +.ict-it-app-mediator:before { + content: "\e935"; +} +.ict-it-app-ntp:before { + content: "\e936"; +} +.ict-it-app-ota:before { + content: "\e937"; +} +.ict-it-app-tomcat:before { + content: "\e938"; +} +.ict-it-app-trend:before { + content: "\e939"; +} +.ict-it-app-tsm:before { + content: "\e93a"; +} +.ict-it-app-weblogic:before { + content: "\e93b"; +} +.ict-it-cluster:before { + content: "\e93c"; +} +.ict-it-cluster-hacmp:before { + content: "\e93d"; +} +.ict-it-cluster-nec:before { + content: "\e93e"; +} +.ict-it-cluster-ns:before { + content: "\e93f"; +} +.ict-it-cluster-sg:before { + content: "\e940"; +} +.ict-it-database:before { + content: "\e941"; +} +.ict-it-database-mssql:before { + content: "\e942"; +} +.ict-it-database-oracle:before { + content: "\e943"; +} +.ict-it-database-sybase:before { + content: "\e944"; +} +.ict-it-database-sybaseiq:before { + content: "\e945"; +} +.ict-it-diskraid-dellmd:before { + content: "\e946"; +} +.ict-it-diskraid-emc:before { + content: "\e947"; +} +.ict-it-diskraid-eternus:before { + content: "\e948"; +} +.ict-it-diskraid-fujitsu:before { + content: "\e949"; +} +.ict-it-diskraid-hds:before { + content: "\e94a"; +} +.ict-it-diskraid-hpaio:before { + content: "\e94b"; +} +.ict-it-diskraid-hpmsa:before { + content: "\e94c"; +} +.ict-it-diskraid-ibm:before { + content: "\e94d"; +} +.ict-it-diskraid-ibmsm:before { + content: "\e94e"; +} +.ict-it-diskraid-macrosan:before { + content: "\e94f"; +} +.ict-it-diskraid-netapp:before { + content: "\e950"; +} +.ict-it-diskraid-sun:before { + content: "\e951"; +} +.ict-it-firewall:before { + content: "\e952"; +} +.ict-it-firewall-checkpoint:before { + content: "\e953"; +} +.ict-it-firewall-cisco:before { + content: "\e954"; +} +.ict-it-firewall-cisco2:before { + content: "\e955"; +} +.ict-it-firewall-juniper:before { + content: "\e956"; +} +.ict-it-firewall-neteye:before { + content: "\e957"; +} +.ict-it-firewall-zte:before { + content: "\e958"; +} +.ict-it-firewall-ztemf:before { + content: "\e959"; +} +.ict-it-firewall-zteutm:before { + content: "\e95a"; +} +.ict-it-gather:before { + content: "\e95b"; +} +.ict-it-ibp:before { + content: "\e95c"; +} +.ict-it-ibp-ibp2000:before { + content: "\e95d"; +} +.ict-it-net:before { + content: "\e95e"; +} +.ict-it-other:before { + content: "\e95f"; +} +.ict-it-other-alteon:before { + content: "\e960"; +} +.ict-it-other-appdirector:before { + content: "\e961"; +} +.ict-it-other-atca-lb10:before { + content: "\e962"; +} +.ict-it-other-cisco-ucs:before { + content: "\e963"; +} +.ict-it-other-dcs:before { + content: "\e964"; +} +.ict-it-other-delta:before { + content: "\e965"; +} +.ict-it-other-dp:before { + content: "\e966"; +} +.ict-it-other-e9000:before { + content: "\e967"; +} +.ict-it-other-f5bigip:before { + content: "\e968"; +} +.ict-it-other-f5bigip2:before { + content: "\e969"; +} +.ict-it-other-gbe2c:before { + content: "\e96a"; +} +.ict-it-other-h3c:before { + content: "\e96b"; +} +.ict-it-other-hpblc:before { + content: "\e96c"; +} +.ict-it-other-imm:before { + content: "\e96d"; +} +.ict-it-other-secsis:before { + content: "\e96e"; +} +.ict-it-other-vc:before { + content: "\e96f"; +} +.ict-it-other-ztepower:before { + content: "\e970"; +} +.ict-it-other-ztesgs:before { + content: "\e971"; +} +.ict-it-other-zxsdr-nt:before { + content: "\e972"; +} +.ict-it-router:before { + content: "\e973"; +} +.ict-it-router-cisco:before { + content: "\e974"; +} +.ict-it-router-juniper:before { + content: "\e975"; +} +.ict-it-router-zte:before { + content: "\e976"; +} +.ict-it-sdn-host:before { + content: "\e977"; +} +.ict-it-sdn-switch:before { + content: "\e978"; +} +.ict-it-server:before { + content: "\e979"; +} +.ict-it-server-aix:before { + content: "\e97a"; +} +.ict-it-server-klinux:before { + content: "\e97b"; +} +.ict-it-server-redhat:before { + content: "\e97c"; +} +.ict-it-server-solaris:before { + content: "\e97d"; +} +.ict-it-server-suse:before { + content: "\e97e"; +} +.ict-it-server-windows:before { + content: "\e97f"; +} +.ict-it-server-zxve:before { + content: "\e980"; +} +.ict-it-storage:before { + content: "\e981"; +} +.ict-it-storage-cisco-mds:before { + content: "\e982"; +} +.ict-it-storage-md3000:before { + content: "\e983"; +} +.ict-it-storage-netvault:before { + content: "\e984"; +} +.ict-it-storage-sanswitch-zte:before { + content: "\e985"; +} +.ict-it-switch-at:before { + content: "\e986"; +} +.ict-it-switch-cisco:before { + content: "\e987"; +} +.ict-it-switch-h3c:before { + content: "\e988"; +} +.ict-it-switch-juniper:before { + content: "\e989"; +} +.ict-it-switch-zte:before { + content: "\e98a"; +} +.ict-it-tapelib-hpmsl:before { + content: "\e98b"; +} +.ict-it-tapelib-ibmts:before { + content: "\e98c"; +} +.ict-it-tapelib-sunts:before { + content: "\e98d"; +} +.ict-it-Virtualnetwork:before { + content: "\e98e"; +} +.ict-it-app-netnumen:before { + content: "\e98f"; +} +.ict-it-sdn-vnet:before { + content: "\e990"; +} +.ict-it-storage-sanswitch-hp:before { + content: "\e991"; +} +.ict-it-switch:before { + content: "\e992"; +} + diff --git a/uiframe-iui/src/main/resources/webroot/component/css/component.css b/uiframe-iui/src/main/resources/webroot/component/css/component.css new file mode 100644 index 00000000..46682b67 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/css/component.css @@ -0,0 +1,34 @@ +/** + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*-------------C3.css-------------*/ +.c3 path, .c3 line { + stroke: #008acd; +} +.c3-line { + stroke-width: 3px; +} +.c3-tooltip { + width:auto; +} +.c3-tooltip td { + color: #000; +} +.c3-axis.c3-axis-y { +stroke-width: 1px; +} +.c3-axis.c3-axis-x { +stroke-width: 1px; +} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/backstretch/jquery.backstretch.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/backstretch/jquery.backstretch.min.js new file mode 100644 index 00000000..4b14f7ab --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/backstretch/jquery.backstretch.min.js @@ -0,0 +1,4 @@ +/*! Backstretch - v2.0.3 - 2012-11-30 +* http://srobbin.com/jquery-plugins/backstretch/ +* Copyright (c) 2012 Scott Robbin; Licensed MIT */ +(function(e,t,n){"use strict";e.fn.backstretch=function(r,s){return(r===n||r.length===0)&&e.error("No images were supplied for Backstretch"),e(t).scrollTop()===0&&t.scrollTo(0,0),this.each(function(){var t=e(this),n=t.data("backstretch");n&&(s=e.extend(n.options,s),n.destroy(!0)),n=new i(this,r,s),t.data("backstretch",n)})},e.backstretch=function(t,n){return e("body").backstretch(t,n).data("backstretch")},e.expr[":"].backstretch=function(t){return e(t).data("backstretch")!==n},e.fn.backstretch.defaults={centeredX:!0,centeredY:!0,duration:5e3,fade:0};var r={wrap:{left:0,top:0,overflow:"hidden",margin:0,padding:0,height:"100%",width:"100%",zIndex:-999999},img:{position:"absolute",display:"none",margin:0,padding:0,border:"none",width:"auto",height:"auto",maxWidth:"none",zIndex:-999999}},i=function(n,i,o){this.options=e.extend({},e.fn.backstretch.defaults,o||{}),this.images=e.isArray(i)?i:[i],e.each(this.images,function(){e("")[0].src=this}),this.isBody=n===document.body,this.$container=e(n),this.$wrap=e('
    ').css(r.wrap).appendTo(this.$container),this.$root=this.isBody?s?e(t):e(document):this.$container;if(!this.isBody){var u=this.$container.css("position"),a=this.$container.css("zIndex");this.$container.css({position:u==="static"?"relative":u,zIndex:a==="auto"?0:a,background:"none"}),this.$wrap.css({zIndex:-999998})}this.$wrap.css({position:this.isBody&&s?"fixed":"absolute"}),this.index=0,this.show(this.index),e(t).on("resize.backstretch",e.proxy(this.resize,this)).on("orientationchange.backstretch",e.proxy(function(){this.isBody&&t.pageYOffset===0&&(t.scrollTo(0,1),this.resize())},this))};i.prototype={resize:function(){try{var e={left:0,top:0},n=this.isBody?this.$root.width():this.$root.innerWidth(),r=n,i=this.isBody?t.innerHeight?t.innerHeight:this.$root.height():this.$root.innerHeight(),s=r/this.$img.data("ratio"),o;s>=i?(o=(s-i)/2,this.options.centeredY&&(e.top="-"+o+"px")):(s=i,r=s*this.$img.data("ratio"),o=(r-n)/2,this.options.centeredX&&(e.left="-"+o+"px")),this.$wrap.css({width:n,height:i}).find("img:not(.deleteable)").css({width:r,height:s}).css(e)}catch(u){}return this},show:function(t){if(Math.abs(t)>this.images.length-1)return;this.index=t;var n=this,i=n.$wrap.find("img").addClass("deleteable"),s=e.Event("backstretch.show",{relatedTarget:n.$container[0]});return clearInterval(n.interval),n.$img=e("").css(r.img).bind("load",function(t){var r=this.width||e(t.target).width(),o=this.height||e(t.target).height();e(this).data("ratio",r/o),e(this).fadeIn(n.options.speed||n.options.fade,function(){i.remove(),n.paused||n.cycle(),n.$container.trigger(s,n)}),n.resize()}).appendTo(n.$wrap),n.$img.attr("src",n.images[t]),n},next:function(){return this.show(this.index1&&(clearInterval(this.interval),this.interval=setInterval(e.proxy(function(){this.paused||this.next()},this),this.options.duration)),this},destroy:function(n){e(t).off("resize.backstretch orientationchange.backstretch"),clearInterval(this.interval),n||this.$wrap.remove(),this.$container.removeData("backstretch")}};var s=function(){var e=navigator.userAgent,n=navigator.platform,r=e.match(/AppleWebKit\/([0-9]+)/),i=!!r&&r[1],s=e.match(/Fennec\/([0-9]+)/),o=!!s&&s[1],u=e.match(/Opera Mobi\/([0-9]+)/),a=!!u&&u[1],f=e.match(/MSIE ([0-9]+)/),l=!!f&&f[1];return!((n.indexOf("iPhone")>-1||n.indexOf("iPad")>-1||n.indexOf("iPod")>-1)&&i&&i<534||t.operamini&&{}.toString.call(t.operamini)==="[object OperaMini]"||u&&a<7458||e.indexOf("Android")>-1&&i&&i<533||o&&o<6||"palmGetResource"in t&&i&&i<534||e.indexOf("MeeGo")>-1&&e.indexOf("NokiaBrowser/8.5.0")>-1||l&&l<=6)}()})(jQuery,window); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md new file mode 100644 index 00000000..4c723486 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/LICENSE.md @@ -0,0 +1,23 @@ +# License + +(The MIT License) + +Copyright (C) 2011-2014 by Nick Payne + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md new file mode 100644 index 00000000..700fd6f7 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/README.md @@ -0,0 +1,91 @@ +# Bootbox - Bootstrap powered alert, confirm and flexible dialog boxes + +Please see http://bootboxjs.com for full usage instructions, or head over to http://paynedigital.com/bootbox for +the original writeup about the project. + +## Contact + +The easiest thing is to [find me on twitter @makeusabrew](http://twitter.com/makeusabrew). + +## Contributing + +Please see the [CONTRIBUTING](https://github.com/makeusabrew/bootbox/blob/master/CONTRIBUTING.md) file for guidelines. + +## Running Tests [![Build Status](https://api.travis-ci.org/makeusabrew/bootbox.svg)](http://travis-ci.org/makeusabrew/bootbox) + +Tests are run using [Karma](http://karma-runner.github.io/0.8/index.html) using the Mocha test adapter. +To run the tests yourself, simply run ```npm install``` within the project followed by ```npm test```. +Please note that this will require [PhantomJS](http://phantomjs.org/) being installed and in your path - if +it is not, you may run the tests and capture browsers manually by running ```karma start``` from the root +of the project. + +The project is also hosted on [Travis CI](https://travis-ci.org/makeusabrew/bootbox) - when submitting +pull requests **please** ensure your tests pass as failing requests will be rejected. See the +[CONTRIBUTING](https://github.com/makeusabrew/bootbox/blob/master/CONTRIBUTING.md) file for more information. + +## Building a minified release + +The repository no longer contains a minified bootbox.min.js file - this is now only generated +[for releases](https://github.com/makeusabrew/bootbox/releases). To build your own minified copy +for use in development simply run ```npm install``` if you haven't already, followed by ```grunt uglify```. +This will generate a bootbox.min.js file in your working directory. + +## A note on Bootstrap dependencies + +Bootbox **4.0.0** is the first release to support Bootstrap 3.0.0. + +Bootbox **3.3.0** is the *last* release to support Bootstrap 2.2.x. + +Much more dependency information can be found [on the Bootbox website](http://bootboxjs.com/#dependencies). + +### Roadmap + +The latest major release of Bootbox - 4.0.0 - involved a total rewrite of the +internal code and introduced an entirely new public API. It has not re-implemented +some functionality from the 3.x series as of yet; this will be addressed in the +coming weeks in the form of new minor releases; +[a task list for 4.3.0 is available](https://github.com/makeusabrew/bootbox/issues/220) - +please feel free to add feedback and requests. + +There is no new major (e.g. 5.x) release on the roadmap at present. + +## Latest Release: 4.2.0 + +* Add Swedish locale +* Add Latvian locale +* Add Turkish locale +* Add Hebrew locale +* Add password input type +* Add textarea input type +* Add date input type +* Add time input type +* Add number input type +* Support DOM selectors for container argument +* UMD support +* Better support on mobile devices + +For a full list of releases and changes please see [the changelog](https://github.com/makeusabrew/bootbox/blob/master/CHANGELOG.md). + +## License + +(The MIT License) + +Copyright (C) 2011-2014 by Nick Payne + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js new file mode 100644 index 00000000..a5d01a50 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootbox/bootbox.min.js @@ -0,0 +1,6 @@ +/** + * bootbox.js v4.3.0 + * + * http://bootboxjs.com/license.txt + */ +!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"",header:"",footer:"",closeButton:"",form:"
    ",inputs:{text:"",textarea:"",email:"",select:"",checkbox:"
    ",date:"",time:"",number:"",password:""}},o={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("").attr("label",d.group)),e=o[d.group]),e.append("")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("
    "),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-dialog"),f=c.find(".modal-body"),i=a.buttons,j="",k={onEscape:a.onEscape};if(g(i,function(a,b){j+="",k[a]=b.callback}),f.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),"large"===a.size&&d.addClass("modal-lg"),"small"===a.size&&d.addClass("modal-sm"),a.title&&f.before(n.header),a.closeButton){var l=b(n.closeButton);a.title?c.find(".modal-header").prepend(l):l.css("margin-top","-10px").prependTo(f)}return a.title&&c.find(".modal-title").html(a.title),j.length&&(f.after(n.footer),c.find(".modal-footer").html(j)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){k.onEscape&&e(a,c,k.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,k[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,k.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),b(a.container).append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.init=function(c){return a(c||b)},p}); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE new file mode 100644 index 00000000..d7aed208 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/LICENSE @@ -0,0 +1,24 @@ + +The MIT License (MIT) + +Copyright (c) 2012-2014 Cameron Spear http://cameronspear.com + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md new file mode 100644 index 00000000..842d6f3a --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/README.md @@ -0,0 +1,122 @@ +Bootstrap Hover Dropdown Plugin +=============================== + +![Current Version](http://img.shields.io/github/tag/cwspear/bootstrap-hover-dropdown.svg?style=flat) + +#### Name Change + +*Twitter Bootstrap* is now just *Bootstrap*, and I've renamed this repo, **renamed the files** and change all references from *Twitter Bootstrap* to just *Bootstrap* in the docs/example to reflect that. + +No actual code changed, so I am keeping the current version (`2.0.1` at the time of this writing), but be aware of the lack of *twitter-* from the beginning of the JS files and how that might affect you. + +Sorry for any inconvenience! + +#### Updated for Bootstrap 3 + +I updated the demo with Bootstrap 3, as well as removed code associated to submenus ([not supported in Bootstrap 3](https://github.com/twbs/bootstrap/pull/6342#issuecomment-11594010)) and touch devices (just make sure you have `data-toggle="dropdown"` to let Mobile do its thing and my plugin won't interfere). + +## Introduction + +A simple plugin to enable Bootstrap dropdowns to activate on hover and provide a nice user experience. + +The dropdowns are dismissed after a configurable delay. This fixes an issue that can instantly close your nav because of a 1px gap between the button/nav item that activated the dropdown and the actual dropdown. It is also generally a better user experience, as users are not punished by going 1 pixel outside of the dropdown, which would instantly close the nav without a delay. + +**Note:** The HTML markup is the same as with any other Bootstrap dropdown. This will not interfere with Bootstrap's default activate-on-click method (i.e. this plugin combined with Bootstrap's default behavior work well to support both the ideal experience on desktop and mobile). + +## Installation + +You can simply download and extract the package downloaded from GitHub. Alternatively, you can download the files via [Bower](http://bower.io/) (a JavaScript package management system): + +``` +bower install bootstrap-hover-dropdown +``` + +which will also automatically install Bootstrap and jQuery if needed. + +Once you have the files downloaded, link to the files in your code *after* you include the main Bootstrap JS file(s): + +```html + + + + +``` + +## Usage + +Just like in Bootstrap you can activate it without any JavaScript, just by adding a data-attribute, you can make it automatically work. + +Add `data-hover="dropdown"` in addition (or in place of) Bootstrap's `data-toggle="dropdown"`. + +You can set options via data-attributes, too, via `data-delay` and `data-close-others`. Here's an example of markup: + +```html + +``` + +Alternatively, you can initialize via JavaScript: + +```javascript +$('.dropdown-toggle').dropdownHover(options); +``` + +This also works with submenus without any other configuring since Bootstrap already supports this feature. Just use the markup like you were using before. Only the top level anchor tag needs any special markup for my plugin to work (see demo for proper markup). + +## Options + +* **delay**: *(optional)* The delay in miliseconds. This is the time to wait before closing a dropdown when the mouse is no longer over the dropdown or the button/nav item that activated it. Defaults to `500`. +* **instantlyCloseOthers**: *(optional)* A boolean value that when true, will instantly close all other dropdowns matched by the selector used when you activate a new navigation. This is nice for when you have dropdowns close together that may overlap. Default is `true`. + +## Demo + +You can view a demo for this plugin on my site: http://cameronspear.com/demos/bootstrap-hover-dropdown/ + +### A Note on Choosing a Selector + +This plugin purposedly lets you choose a selector (as opposed to apply this to everything with the class of `.dropdown-toggle`). This is so that you can selectively apply it where you want. Maybe you only want to use it for the main nav, and not have it activate for dropdown buttons in the main content. You can add a class to the item that normally gets `.dropdown-toggle` and use that class with this plugin to easily achieve that, or use a selector such as `.main-nav .dropdown-toggle`. + +**Important:** Bootstrap relies on styles associated with the class `.dropdown-toggle` (for stuff like the caret color), and it is recommended you leave that class alone. + +## Changes/Bug Fixes + +I'm a slacker and only started keeping track of changes/bug fixes starting in March of 2013. + +* **2014-01-27** Fixed an issue where chaining could break on mobile and cleaned up the the way the plugin triggered events. Also cleaned up the demo (fixed navbar appearance). +* **2013-12-05** Change all references of *Twitter Bootstrap* to *Bootstrap* to reflect Bootstrap's name change. +* **2013-11-09** Disable this plugin for devices that support touch. The plugin was causing issues with some mobile devices, and it's not necessary for them. +* **2013-08-02** Add support for Bootstrap 3. For Bootstrap 2.x.x, use the `bootstrap-2.x.x` branch. +* **2013-06-10** Always instantly close submenu siblings when opening a new one. Issue #19. +* **2013-06-10** A fix for my last fix that would sometimes cause the correct item to not trigger when it should. Issue #18. +* **2013-05-08** Fix issue where a sibling could open a drop down that wasn't theirs. Issue #18. +* **2013-04-29** Added support for submenus: Submenus should now honor the delay option and way before closing. They do not abide by the `instantlyCloseOthers` option, as it's not really relevant. +* **2013-04-19** Fixed an issue where the conditional rule to disable hover on mobile wasn't working if you included the script in the header. +* **2013-04-03** Made it so if you're using the responsive CSS and in tablet/mobile view, disable the hover. +* **2013-03-16** Fixed an issue where the options you passed in via the method call were completely ignored. + +## Contributions + +[Mattia Larentis](https://github.com/nostalgiaz) helped me with the idea for the data-attributes and doing the options via an object. + +## Roadmap + +As this plugin, in its simplicity, is pretty much exactly what I intend it to be, I don't plan to implement any new features. ~~**One exception:** I would like to tweak it so that when you're in a submenu, it doesn't instantly close when you hover outside of it.~~ **Update:** I added this in late April 2013. + +If you have ideas for a new feature or something along those lines, you're welcome to share them with me, but I am not likely to implement it/merge your pull without a very compelling reason. You are absolutely free to create a fork and implement the feature yourself for your and others' use. + +This, of course, does not speak for bugs. If you have a bug, please bring it to my attention, and I will try and fix it. Note that 93.7% of people's issues are caused by incorrect markup, so please double check that first. + +## Me + +Follow me on Twitter: [@CWSpear](https://twitter.com/CWSpear) or check out my [blog](http://cameronspear.com/blog/). diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js new file mode 100644 index 00000000..55c5aa21 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js @@ -0,0 +1,14 @@ +/** + * Project: Bootstrap Hover Dropdown + * Author: Cameron Spear + * Contributors: Mattia Larentis + * + * Dependencies: Bootstrap's Dropdown plugin, jQuery + * + * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. + * + * License: MIT + * + * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ + */ +!function(e,n){var o=e();e.fn.dropdownHover=function(t){return"ontouchstart"in document?this:(o=o.add(this.parent()),this.each(function(){var i,r=e(this),s=r.parent(),d={delay:500,instantlyCloseOthers:!0},a={delay:e(this).data("delay"),instantlyCloseOthers:e(this).data("close-others")},h="show.bs.dropdown",u="hide.bs.dropdown",l=e.extend(!0,{},d,t,a);s.hover(function(e){return s.hasClass("open")||r.is(e.target)?(o.find(":focus").blur(),l.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(i),s.addClass("open"),void r.trigger(h)):!0},function(){i=n.setTimeout(function(){s.removeClass("open"),r.trigger(u)},l.delay)}),r.hover(function(){o.find(":focus").blur(),l.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(i),s.addClass("open"),r.trigger(h)}),s.find(".dropdown-submenu").each(function(){var o,t=e(this);t.hover(function(){n.clearTimeout(o),t.children(".dropdown-menu").show(),t.siblings().children(".dropdown-menu").hide()},function(){var e=t.children(".dropdown-menu");o=n.setTimeout(function(){e.hide()},l.delay)})})}))},e(document).ready(function(){e('[data-hover="dropdown"]').not(".hover-initialized").each(function(){e(this).dropdownHover(),e(this).addClass("hover-initialized")})})}(jQuery,this); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js new file mode 100644 index 00000000..25757af5 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js @@ -0,0 +1,13 @@ +/** + * Project: Bootstrap Hover Dropdown + * Author: Cameron Spear + * Contributors: Mattia Larentis + * + * Dependencies: Bootstrap's Dropdown plugin, jQuery + * + * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. + * + * License: MIT + * + * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ + */(function(b,a,c){var d=b();b.fn.dropdownHover=function(e){if("ontouchstart" in document){return this}d=d.add(this.parent());return this.each(function(){var m=b(this),l=m.parent(),k={delay:500,instantlyCloseOthers:true},i={delay:b(this).data("delay"),instantlyCloseOthers:b(this).data("close-others")},f="show.bs.dropdown",j="hide.bs.dropdown",g=b.extend(true,{},k,e,i),h;l.hover(function(n){if(!l.hasClass("open")&&!m.is(n.target)){return true}d.find(":focus").blur();if(g.instantlyCloseOthers===true){d.removeClass("open")}a.clearTimeout(h);l.addClass("open");m.trigger(f)},function(){h=a.setTimeout(function(){l.removeClass("open");m.trigger(j)},g.delay)});m.hover(function(){d.find(":focus").blur();if(g.instantlyCloseOthers===true){d.removeClass("open")}a.clearTimeout(h);l.addClass("open");m.trigger(f)});l.find(".dropdown-submenu").each(function(){var o=b(this);var n;o.hover(function(){a.clearTimeout(n);o.children(".dropdown-menu").show();o.siblings().children(".dropdown-menu").hide()},function(){var p=o.children(".dropdown-menu");n=a.setTimeout(function(){p.hide()},g.delay)})})})};b(document).ready(function(){b('[data-hover="dropdown"]').dropdownHover()})})(jQuery,this); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css new file mode 100644 index 00000000..58fa7e8a --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap-dt.css @@ -0,0 +1,5804 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { +} +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +.dataTableWrapperDiv div { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 62.5%; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #999; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 200; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +cite { + font-style: normal; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-muted { + color: #999; +} +.text-primary { + color: #428bca; +} +a.text-primary:hover { + color: #3071a9; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #428bca; +} +a.bg-primary:hover { + background-color: #3071a9; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #999; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +blockquote:before, +blockquote:after { + content: ""; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: 0; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: 0; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: 0; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: 0; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: 0; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: 0; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: 0; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: 0; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + max-width: 100%; + background-color: transparent; +} +th { + text-align: left; +} +.table { + width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + /*background-color: #f5f5f5;*/ + background-color:#dbedff; +} +.dataTableTdSelected{ + background-color:#dbedff !important; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +@media (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +input[type="date"] { + line-height: 34px; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + display: inline; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.has-feedback .form-control-feedback { + position: absolute; + top: 25px; + right: 0; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.form-control-static { + margin-bottom: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +.form-horizontal .form-control-static { + padding-top: 7px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + top: 0; + right: 15px; +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn.default { + color: #333333; + text-shadow: none; + background-color: #e5e5e5; + height:12px; +} +.btn.default:hover, +.btn.default:focus, +.btn.default:active, +.btn.default.active, +.btn.default[disabled], +.btn.default.disabled { + color: #333333; + background-color: #d8d8d8 !important; + outline: none !important; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333; + background-color: #ebebeb; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #3276b1; + border-color: #285e8e; +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary .badge { + color: #428bca; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #47a447; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #39b3d7; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ed9c28; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #d2322d; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-sm { + padding: 2px 10px 8px 10px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .35s ease; + transition: height .35s ease; +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #999; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #999; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #428bca; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #428bca; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: none; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-form.navbar-right:last-child { + margin-right: -15px; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } + .navbar-text.navbar-right:last-child { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #999; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #999; +} +.navbar-inverse .navbar-nav > li > a { + color: #999; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #999; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #999; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #428bca; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #2a6496; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +.label[href]:hover, +.label[href]:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #999; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} +.label-primary { + background-color: #428bca; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #fff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.container .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #428bca; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable { + padding-right: 35px; +} +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +a.list-group-item.active .list-group-item-heading, +a.list-group-item.active:hover .list-group-item-heading, +a.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +a.list-group-item.active .list-group-item-text, +a.list-group-item.active:hover .list-group-item-text, +a.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table { + margin-bottom: 0; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #428bca; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ebccd1; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: auto; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -moz-transition: -moz-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + /*background-color: #000;*/ + background-color: #fff; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%)); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%)); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: none; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css new file mode 100644 index 00000000..0ed4ee27 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 00000000..b93a4953 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..8376c0f4 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 00000000..1413fc60 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 00000000..9e612858 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 00000000..64539b54 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js new file mode 100644 index 00000000..721101bc --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/bootstrap/js/bootstrap.js @@ -0,0 +1,1951 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } + +/* ======================================================================== + * Bootstrap: transition.js v3.1.1 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'MozTransition' : 'transitionend', + 'OTransition' : 'oTransitionEnd otransitionend', + 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.1.1 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.1.1 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.1.1 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return this.sliding = false + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid.bs.carousel', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) + }) + .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid.bs.carousel') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.1.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') option = !option + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.1.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('')[0]; + + /* Check to see if we should append an id and/or a class name to the container */ + cNext = aDom[i+1]; + if ( cNext == "'" || cNext == '"' ) + { + sAttr = ""; + j = 2; + while ( aDom[i+j] != cNext ) + { + sAttr += aDom[i+j]; + j++; + } + + /* Replace jQuery UI constants */ + if ( sAttr == "H" ) + { + sAttr = oSettings.oClasses.sJUIHeader; + } + else if ( sAttr == "F" ) + { + sAttr = oSettings.oClasses.sJUIFooter; + } + + /* The attribute can be in the format of "#id.class", "#id" or "class" This logic + * breaks the string into parts and applies them as needed + */ + if ( sAttr.indexOf('.') != -1 ) + { + var aSplit = sAttr.split('.'); + nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); + nNewNode.className = aSplit[1]; + } + else if ( sAttr.charAt(0) == "#" ) + { + nNewNode.id = sAttr.substr(1, sAttr.length-1); + } + else + { + nNewNode.className = sAttr; + } + + i += j; /* Move along the position array */ + } + + nInsertNode.appendChild( nNewNode ); + nInsertNode = nNewNode; + } + else if ( cOption == '>' ) + { + /* End container div */ + nInsertNode = nInsertNode.parentNode; + } + else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange ) + { + /* Length */ + nTmp = _fnFeatureHtmlLength( oSettings ); + iPushFeature = 1; + } + else if ( cOption == 'f' && oSettings.oFeatures.bFilter ) + { + /* Filter */ + nTmp = _fnFeatureHtmlFilter( oSettings ); + iPushFeature = 1; + } + else if ( cOption == 'r' && oSettings.oFeatures.bProcessing ) + { + /* pRocessing */ + nTmp = _fnFeatureHtmlProcessing( oSettings ); + iPushFeature = 1; + } + else if ( cOption == 't' ) + { + /* Table */ + nTmp = _fnFeatureHtmlTable( oSettings ); + iPushFeature = 1; + } + else if ( cOption == 'i' && oSettings.oFeatures.bInfo ) + { + /* Info */ + nTmp = _fnFeatureHtmlInfo( oSettings ); + iPushFeature = 1; + } + else if ( cOption == 'p' && oSettings.oFeatures.bPaginate ) + { + /* Pagination */ + nTmp = _fnFeatureHtmlPaginate( oSettings ); + iPushFeature = 1; + } + else if ( DataTable.ext.aoFeatures.length !== 0 ) + { + /* Plug-in features */ + var aoFeatures = DataTable.ext.aoFeatures; + for ( var k=0, kLen=aoFeatures.length ; k') : + sSearchStr==="" ? '' : sSearchStr+' '; + + var nFilter = document.createElement( 'div' ); + nFilter.className = oSettings.oClasses.sFilter; + nFilter.innerHTML = ''; + if ( !oSettings.aanFeatures.f ) + { + nFilter.id = oSettings.sTableId+'_filter'; + } + + var jqFilter = $('input[type="text"]', nFilter); + + // Store a reference to the input element, so other input elements could be + // added to the filter wrapper if needed (submit button for example) + nFilter._DT_Input = jqFilter[0]; + + jqFilter.val( oPreviousSearch.sSearch.replace('"','"') ); + jqFilter.bind( 'keyup.DT', function(e) { + /* Update all other filter input elements for the new display */ + var n = oSettings.aanFeatures.f; + var val = this.value==="" ? "" : this.value; // mental IE8 fix :-( + + for ( var i=0, iLen=n.length ; i=0 ; i-- ) + { + var sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ), + oSettings.aoColumns[iColumn].sType ); + if ( ! rpSearch.test( sData ) ) + { + oSettings.aiDisplay.splice( i, 1 ); + iIndexCorrector++; + } + } + } + + + /** + * Filter the data table based on user input and draw the table + * @param {object} oSettings dataTables settings object + * @param {string} sInput string to filter on + * @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0) + * @param {bool} bRegex treat as a regular expression or not + * @param {bool} bSmart perform smart filtering or not + * @param {bool} bCaseInsensitive Do case insenstive matching or not + * @memberof DataTable#oApi + */ + function _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive ) + { + var i; + var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive ); + var oPrevSearch = oSettings.oPreviousSearch; + + /* Check if we are forcing or not - optional parameter */ + if ( !iForce ) + { + iForce = 0; + } + + /* Need to take account of custom filtering functions - always filter */ + if ( DataTable.ext.afnFiltering.length !== 0 ) + { + iForce = 1; + } + + /* + * If the input is blank - we want the full data set + */ + if ( sInput.length <= 0 ) + { + oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length); + oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); + } + else + { + /* + * We are starting a new search or the new search string is smaller + * then the old one (i.e. delete). Search from the master array + */ + if ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length || + oPrevSearch.sSearch.length > sInput.length || iForce == 1 || + sInput.indexOf(oPrevSearch.sSearch) !== 0 ) + { + /* Nuke the old display array - we are going to rebuild it */ + oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length); + + /* Force a rebuild of the search array */ + _fnBuildSearchArray( oSettings, 1 ); + + /* Search through all records to populate the search array + * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1 + * mapping + */ + for ( i=0 ; i').html(sSearch).text(); + } + + // Strip newline characters + return sSearch.replace( /[\n\r]/g, " " ); + } + + /** + * Build a regular expression object suitable for searching a table + * @param {string} sSearch string to search for + * @param {bool} bRegex treat as a regular expression or not + * @param {bool} bSmart perform smart filtering or not + * @param {bool} bCaseInsensitive Do case insensitive matching or not + * @returns {RegExp} constructed object + * @memberof DataTable#oApi + */ + function _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive ) + { + var asSearch, sRegExpString; + + if ( bSmart ) + { + /* Generate the regular expression to use. Something along the lines of: + * ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$ + */ + asSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' ); + sRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$'; + return new RegExp( sRegExpString, bCaseInsensitive ? "i" : "" ); + } + else + { + sSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch ); + return new RegExp( sSearch, bCaseInsensitive ? "i" : "" ); + } + } + + + /** + * Convert raw data into something that the user can search on + * @param {string} sData data to be modified + * @param {string} sType data type + * @returns {string} search string + * @memberof DataTable#oApi + */ + function _fnDataToSearch ( sData, sType ) + { + if ( typeof DataTable.ext.ofnSearch[sType] === "function" ) + { + return DataTable.ext.ofnSearch[sType]( sData ); + } + else if ( sData === null ) + { + return ''; + } + else if ( sType == "html" ) + { + return sData.replace(/[\r\n]/g," ").replace( /<.*?>/g, "" ); + } + else if ( typeof sData === "string" ) + { + return sData.replace(/[\r\n]/g," "); + } + return sData; + } + + + /** + * scape a string such that it can be used in a regular expression + * @param {string} sVal string to escape + * @returns {string} escaped string + * @memberof DataTable#oApi + */ + function _fnEscapeRegex ( sVal ) + { + var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ]; + var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' ); + return sVal.replace(reReplace, '\\$1'); + } + + + /** + * Generate the node required for the info display + * @param {object} oSettings dataTables settings object + * @returns {node} Information element + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlInfo ( oSettings ) + { + var nInfo = document.createElement( 'div' ); + nInfo.className = oSettings.oClasses.sInfo; + + /* Actions that are to be taken once only for this feature */ + if ( !oSettings.aanFeatures.i ) + { + /* Add draw callback */ + oSettings.aoDrawCallback.push( { + "fn": _fnUpdateInfo, + "sName": "information" + } ); + + /* Add id */ + nInfo.id = oSettings.sTableId+'_info'; + } + oSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' ); + + return nInfo; + } + + + /** + * Update the information elements in the display + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnUpdateInfo ( oSettings ) + { + /* Show information about the table */ + if ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 ) + { + return; + } + + var + oLang = oSettings.oLanguage, + iStart = oSettings._iDisplayStart+1, + iEnd = oSettings.fnDisplayEnd(), + iMax = oSettings.fnRecordsTotal(), + iTotal = oSettings.fnRecordsDisplay(), + sOut; + + if ( iTotal === 0 ) + { + /* Empty record set */ + sOut = oLang.sInfoEmpty; + } + else { + /* Normal record set */ + sOut = oLang.sInfo; + } + + if ( iTotal != iMax ) + { + /* Record set after filtering */ + sOut += ' ' + oLang.sInfoFiltered; + } + + // Convert the macros + sOut += oLang.sInfoPostFix; + sOut = _fnInfoMacros( oSettings, sOut ); + + if ( oLang.fnInfoCallback !== null ) + { + sOut = oLang.fnInfoCallback.call( oSettings.oInstance, + oSettings, iStart, iEnd, iMax, iTotal, sOut ); + } + + var n = oSettings.aanFeatures.i; + for ( var i=0, iLen=n.length ; i'; + var i, iLen; + var aLengthMenu = oSettings.aLengthMenu; + + if ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && + typeof aLengthMenu[1] === 'object' ) + { + for ( i=0, iLen=aLengthMenu[0].length ; i'+aLengthMenu[1][i]+''; + } + } + else + { + for ( i=0, iLen=aLengthMenu.length ; i'+aLengthMenu[i]+''; + } + } + sStdMenu += ''; + + var nLength = document.createElement( 'div' ); + if ( !oSettings.aanFeatures.l ) + { + nLength.id = oSettings.sTableId+'_length'; + } + nLength.className = oSettings.oClasses.sLength; + nLength.innerHTML = ''; + + /* + * Set the length to the current display length - thanks to Andrea Pavlovic for this fix, + * and Stefan Skopnik for fixing the fix! + */ + $('select option[value="'+oSettings._iDisplayLength+'"]', nLength).attr("selected", true); + + $('select', nLength).bind( 'change.DT', function(e) { + var iVal = $(this).val(); + + /* Update all other length options for the new display */ + var n = oSettings.aanFeatures.l; + for ( i=0, iLen=n.length ; i oSettings.aiDisplay.length || + oSettings._iDisplayLength == -1 ) + { + oSettings._iDisplayEnd = oSettings.aiDisplay.length; + } + else + { + oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength; + } + } + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Note that most of the paging logic is done in + * DataTable.ext.oPagination + */ + + /** + * Generate the node required for default pagination + * @param {object} oSettings dataTables settings object + * @returns {node} Pagination feature node + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlPaginate ( oSettings ) + { + if ( oSettings.oScroll.bInfinite ) + { + return null; + } + + var nPaginate = document.createElement( 'div' ); + nPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType; + + DataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate, + function( oSettings ) { + _fnCalculateEnd( oSettings ); + _fnDraw( oSettings ); + } + ); + + /* Add a draw callback for the pagination on first instance, to update the paging display */ + if ( !oSettings.aanFeatures.p ) + { + oSettings.aoDrawCallback.push( { + "fn": function( oSettings ) { + DataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) { + _fnCalculateEnd( oSettings ); + _fnDraw( oSettings ); + } ); + }, + "sName": "pagination" + } ); + } + return nPaginate; + } + + + /** + * Alter the display settings to change the page + * @param {object} oSettings dataTables settings object + * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" + * or page number to jump to (integer) + * @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1 + * @memberof DataTable#oApi + */ + function _fnPageChange ( oSettings, mAction ) + { + var iOldStart = oSettings._iDisplayStart; + + if ( typeof mAction === "number" ) + { + oSettings._iDisplayStart = mAction * oSettings._iDisplayLength; + if ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() ) + { + oSettings._iDisplayStart = 0; + } + } + else if ( mAction == "first" ) + { + oSettings._iDisplayStart = 0; + } + else if ( mAction == "previous" ) + { + oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ? + oSettings._iDisplayStart - oSettings._iDisplayLength : + 0; + + /* Correct for under-run */ + if ( oSettings._iDisplayStart < 0 ) + { + oSettings._iDisplayStart = 0; + } + } + else if ( mAction == "next" ) + { + if ( oSettings._iDisplayLength >= 0 ) + { + /* Make sure we are not over running the display array */ + if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() ) + { + oSettings._iDisplayStart += oSettings._iDisplayLength; + } + } + else + { + oSettings._iDisplayStart = 0; + } + } + else if ( mAction == "last" ) + { + if ( oSettings._iDisplayLength >= 0 ) + { + var iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1; + oSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength; + } + else + { + oSettings._iDisplayStart = 0; + } + } + else + { + _fnLog( oSettings, 0, "Unknown paging action: "+mAction ); + } + $(oSettings.oInstance).trigger('page', oSettings); + + return iOldStart != oSettings._iDisplayStart; + } + + + + /** + * Generate the node required for the processing node + * @param {object} oSettings dataTables settings object + * @returns {node} Processing element + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlProcessing ( oSettings ) + { + var nProcessing = document.createElement( 'div' ); + + if ( !oSettings.aanFeatures.r ) + { + nProcessing.id = oSettings.sTableId+'_processing'; + } + nProcessing.innerHTML = oSettings.oLanguage.sProcessing; + nProcessing.className = oSettings.oClasses.sProcessing; + oSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable ); + + return nProcessing; + } + + + /** + * Display or hide the processing indicator + * @param {object} oSettings dataTables settings object + * @param {bool} bShow Show the processing indicator (true) or not (false) + * @memberof DataTable#oApi + */ + function _fnProcessingDisplay ( oSettings, bShow ) + { + if ( oSettings.oFeatures.bProcessing ) + { + var an = oSettings.aanFeatures.r; + for ( var i=0, iLen=an.length ; i 0 ) + { + nCaption = nCaption[0]; + if ( nCaption._captionSide === "top" ) + { + nScrollHeadTable.appendChild( nCaption ); + } + else if ( nCaption._captionSide === "bottom" && nTfoot ) + { + nScrollFootTable.appendChild( nCaption ); + } + } + + /* + * Sizing + */ + /* When x-scrolling add the width and a scroller to move the header with the body */ + if ( oSettings.oScroll.sX !== "" ) + { + nScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX ); + nScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX ); + + if ( nTfoot !== null ) + { + nScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX ); + } + + /* When the body is scrolled, then we also want to scroll the headers */ + $(nScrollBody).scroll( function (e) { + nScrollHead.scrollLeft = this.scrollLeft; + + if ( nTfoot !== null ) + { + nScrollFoot.scrollLeft = this.scrollLeft; + } + } ); + } + + /* When yscrolling, add the height */ + if ( oSettings.oScroll.sY !== "" ) + { + nScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY ); + } + + /* Redraw - align columns across the tables */ + oSettings.aoDrawCallback.push( { + "fn": _fnScrollDraw, + "sName": "scrolling" + } ); + + /* Infinite scrolling event handlers */ + if ( oSettings.oScroll.bInfinite ) + { + $(nScrollBody).scroll( function() { + /* Use a blocker to stop scrolling from loading more data while other data is still loading */ + if ( !oSettings.bDrawing && $(this).scrollTop() !== 0 ) + { + /* Check if we should load the next data set */ + if ( $(this).scrollTop() + $(this).height() > + $(oSettings.nTable).height() - oSettings.oScroll.iLoadGap ) + { + /* Only do the redraw if we have to - we might be at the end of the data */ + if ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() ) + { + _fnPageChange( oSettings, 'next' ); + _fnCalculateEnd( oSettings ); + _fnDraw( oSettings ); + } + } + } + } ); + } + + oSettings.nScrollHead = nScrollHead; + oSettings.nScrollFoot = nScrollFoot; + + return nScroller; + } + + + /** + * Update the various tables for resizing. It's a bit of a pig this function, but + * basically the idea to: + * 1. Re-create the table inside the scrolling div + * 2. Take live measurements from the DOM + * 3. Apply the measurements + * 4. Clean up + * @param {object} o dataTables settings object + * @returns {node} Node to add to the DOM + * @memberof DataTable#oApi + */ + function _fnScrollDraw ( o ) + { + var + nScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0], + nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0], + nScrollBody = o.nTable.parentNode, + i, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis, + nTheadSize, nTfootSize, + iWidth, aApplied=[], aAppliedFooter=[], iSanityWidth, + nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null, + nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null, + ie67 = o.oBrowser.bScrollOversize, + zeroOut = function(nSizer) { + oStyle = nSizer.style; + oStyle.paddingTop = "0"; + oStyle.paddingBottom = "0"; + oStyle.borderTopWidth = "0"; + oStyle.borderBottomWidth = "0"; + oStyle.height = 0; + }; + + /* + * 1. Re-create the table inside the scrolling div + */ + + /* Remove the old minimised thead and tfoot elements in the inner table */ + $(o.nTable).children('thead, tfoot').remove(); + + /* Clone the current header and footer elements and then place it into the inner table */ + nTheadSize = $(o.nTHead).clone()[0]; + o.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] ); + anHeadToSize = o.nTHead.getElementsByTagName('tr'); + anHeadSizers = nTheadSize.getElementsByTagName('tr'); + + if ( o.nTFoot !== null ) + { + nTfootSize = $(o.nTFoot).clone()[0]; + o.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] ); + anFootToSize = o.nTFoot.getElementsByTagName('tr'); + anFootSizers = nTfootSize.getElementsByTagName('tr'); + } + + /* + * 2. Take live measurements from the DOM - do not alter the DOM itself! + */ + + /* Remove old sizing and apply the calculated column widths + * Get the unique column headers in the newly created (cloned) header. We want to apply the + * calculated sizes to this header + */ + if ( o.oScroll.sX === "" ) + { + nScrollBody.style.width = '100%'; + nScrollHeadInner.parentNode.style.width = '100%'; + } + + var nThs = _fnGetUniqueThs( o, nTheadSize ); + for ( i=0, iLen=nThs.length ; i nScrollBody.offsetHeight || + $(nScrollBody).css('overflow-y') == "scroll") ) + { + o.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth); + } + } + else + { + if ( o.oScroll.sXInner !== "" ) + { + /* x scroll inner has been given - use it */ + o.nTable.style.width = _fnStringToCss(o.oScroll.sXInner); + } + else if ( iSanityWidth == $(nScrollBody).width() && + $(nScrollBody).height() < $(o.nTable).height() ) + { + /* There is y-scrolling - try to take account of the y scroll bar */ + o.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth ); + if ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth ) + { + /* Not possible to take account of it */ + o.nTable.style.width = _fnStringToCss( iSanityWidth ); + } + } + else + { + /* All else fails */ + o.nTable.style.width = _fnStringToCss( iSanityWidth ); + } + } + + /* Recalculate the sanity width - now that we've applied the required width, before it was + * a temporary variable. This is required because the column width calculation is done + * before this table DOM is created. + */ + iSanityWidth = $(o.nTable).outerWidth(); + + /* We want the hidden header to have zero height, so remove padding and borders. Then + * set the width based on the real headers + */ + + // Apply all styles in one pass. Invalidates layout only once because we don't read any + // DOM properties. + _fnApplyToChildren( zeroOut, anHeadSizers ); + + // Read all widths in next pass. Forces layout only once because we do not change + // any DOM properties. + _fnApplyToChildren( function(nSizer) { + aApplied.push( _fnStringToCss( $(nSizer).width() ) ); + }, anHeadSizers ); + + // Apply all widths in final pass. Invalidates layout only once because we do not + // read any DOM properties. + _fnApplyToChildren( function(nToSize, i) { + nToSize.style.width = aApplied[i]; + }, anHeadToSize ); + + $(anHeadSizers).height(0); + + /* Same again with the footer if we have one */ + if ( o.nTFoot !== null ) + { + _fnApplyToChildren( zeroOut, anFootSizers ); + + _fnApplyToChildren( function(nSizer) { + aAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) ); + }, anFootSizers ); + + _fnApplyToChildren( function(nToSize, i) { + nToSize.style.width = aAppliedFooter[i]; + }, anFootToSize ); + + $(anFootSizers).height(0); + } + + /* + * 3. Apply the measurements + */ + + /* "Hide" the header and footer that we used for the sizing. We want to also fix their width + * to what they currently are + */ + _fnApplyToChildren( function(nSizer, i) { + nSizer.innerHTML = ""; + nSizer.style.width = aApplied[i]; + //fix column align + nSizer.style.minWidth =nSizer.style.width; + }, anHeadSizers ); + + if ( o.nTFoot !== null ) + { + _fnApplyToChildren( function(nSizer, i) { + nSizer.innerHTML = ""; + nSizer.style.width = aAppliedFooter[i]; + }, anFootSizers ); + } + + /* Sanity check that the table is of a sensible width. If not then we are going to get + * misalignment - try to prevent this by not allowing the table to shrink below its min width + */ + if ( $(o.nTable).outerWidth() < iSanityWidth ) + { + /* The min width depends upon if we have a vertical scrollbar visible or not */ + var iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight || + $(nScrollBody).css('overflow-y') == "scroll")) ? + iSanityWidth+o.oScroll.iBarWidth : iSanityWidth; + + /* IE6/7 are a law unto themselves... */ + if ( ie67 && (nScrollBody.scrollHeight > + nScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == "scroll") ) + { + o.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth ); + } + + /* Apply the calculated minimum width to the table wrappers */ + nScrollBody.style.width = _fnStringToCss( iCorrection ); + o.nScrollHead.style.width = _fnStringToCss( iCorrection ); + + if ( o.nTFoot !== null ) + { + o.nScrollFoot.style.width = _fnStringToCss( iCorrection ); + } + + /* And give the user a warning that we've stopped the table getting too small */ + if ( o.oScroll.sX === "" ) + { + _fnLog( o, 1, "The table cannot fit into the current element which will cause column"+ + " misalignment. The table has been drawn at its minimum possible width." ); + } + else if ( o.oScroll.sXInner !== "" ) + { + _fnLog( o, 1, "The table cannot fit into the current element which will cause column"+ + " misalignment. Increase the sScrollXInner value or remove it to allow automatic"+ + " calculation" ); + } + } + else + { + nScrollBody.style.width = _fnStringToCss( '100%' ); + o.nScrollHead.style.width = _fnStringToCss( '100%' ); + + if ( o.nTFoot !== null ) + { + o.nScrollFoot.style.width = _fnStringToCss( '100%' ); + } + } + + + /* + * 4. Clean up + */ + if ( o.oScroll.sY === "" ) + { + /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting + * the scrollbar height from the visible display, rather than adding it on. We need to + * set the height in order to sort this. Don't want to do it in any other browsers. + */ + if ( ie67 ) + { + nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth ); + } + } + + if ( o.oScroll.sY !== "" && o.oScroll.bCollapse ) + { + nScrollBody.style.height = _fnStringToCss( o.oScroll.sY ); + + var iExtra = (o.oScroll.sX !== "" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ? + o.oScroll.iBarWidth : 0; + if ( o.nTable.offsetHeight < nScrollBody.offsetHeight ) + { + nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra ); + } + } + + /* Finally set the width's of the header and footer tables */ + var iOuterWidth = $(o.nTable).outerWidth(); + nScrollHeadTable.style.width = _fnStringToCss( iOuterWidth ); + nScrollHeadInner.style.width = _fnStringToCss( iOuterWidth ); + + // Figure out if there are scrollbar present - if so then we need a the header and footer to + // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) + var bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == "scroll"; + nScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px"; + + if ( o.nTFoot !== null ) + { + nScrollFootTable.style.width = _fnStringToCss( iOuterWidth ); + nScrollFootInner.style.width = _fnStringToCss( iOuterWidth ); + nScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px"; + } + + /* Adjust the position of the header in case we loose the y-scrollbar */ + $(nScrollBody).scroll(); + + /* If sorting or filtering has occurred, jump the scrolling back to the top */ + if ( o.bSorted || o.bFiltered ) + { + nScrollBody.scrollTop = 0; + } + } + + + /** + * Apply a given function to the display child nodes of an element array (typically + * TD children of TR rows + * @param {function} fn Method to apply to the objects + * @param array {nodes} an1 List of elements to look through for display children + * @param array {nodes} an2 Another list (identical structure to the first) - optional + * @memberof DataTable#oApi + */ + function _fnApplyToChildren( fn, an1, an2 ) + { + var index=0, i=0, iLen=an1.length; + var nNode1, nNode2; + + while ( i < iLen ) + { + nNode1 = an1[i].firstChild; + nNode2 = an2 ? an2[i].firstChild : null; + while ( nNode1 ) + { + if ( nNode1.nodeType === 1 ) + { + if ( an2 ) + { + fn( nNode1, nNode2, index ); + } + else + { + fn( nNode1, index ); + } + index++; + } + nNode1 = nNode1.nextSibling; + nNode2 = an2 ? nNode2.nextSibling : null; + } + i++; + } + } + + /** + * Convert a CSS unit width to pixels (e.g. 2em) + * @param {string} sWidth width to be converted + * @param {node} nParent parent to get the with for (required for relative widths) - optional + * @returns {int} iWidth width in pixels + * @memberof DataTable#oApi + */ + function _fnConvertToWidth ( sWidth, nParent ) + { + if ( !sWidth || sWidth === null || sWidth === '' ) + { + return 0; + } + + if ( !nParent ) + { + nParent = document.body; + } + + var iWidth; + var nTmp = document.createElement( "div" ); + nTmp.style.width = _fnStringToCss( sWidth ); + + nParent.appendChild( nTmp ); + iWidth = nTmp.offsetWidth; + nParent.removeChild( nTmp ); + + return ( iWidth ); + } + + + /** + * Calculate the width of columns for the table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnCalculateColumnWidths ( oSettings ) + { + var iTableWidth = oSettings.nTable.offsetWidth; + var iUserInputs = 0; + var iTmpWidth; + var iVisibleColumns = 0; + var iColums = oSettings.aoColumns.length; + var i, iIndex, iCorrector, iWidth; + var oHeaders = $('th', oSettings.nTHead); + var widthAttr = oSettings.nTable.getAttribute('width'); + var nWrapper = oSettings.nTable.parentNode; + + /* Convert any user input sizes into pixel sizes */ + for ( i=0 ; itd', nCalcTmp); + } + + /* Apply custom sizing to the cloned header */ + var nThs = _fnGetUniqueThs( oSettings, nTheadClone ); + iCorrector = 0; + for ( i=0 ; i 0 ) + { + oSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth ); + } + iCorrector++; + } + } + + var cssWidth = $(nCalcTmp).css('width'); + oSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ? + cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() ); + nCalcTmp.parentNode.removeChild( nCalcTmp ); + } + + if ( widthAttr ) + { + oSettings.nTable.style.width = _fnStringToCss( widthAttr ); + } + } + + + /** + * Adjust a table's width to take account of scrolling + * @param {object} oSettings dataTables settings object + * @param {node} n table node + * @memberof DataTable#oApi + */ + function _fnScrollingWidthAdjust ( oSettings, n ) + { + if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY !== "" ) + { + /* When y-scrolling only, we want to remove the width of the scroll bar so the table + * + scroll bar will fit into the area avaialble. + */ + var iOrigWidth = $(n).width(); + n.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth ); + } + else if ( oSettings.oScroll.sX !== "" ) + { + /* When x-scrolling both ways, fix the table at it's current size, without adjusting */ + n.style.width = _fnStringToCss( $(n).outerWidth() ); + } + } + + + /** + * Get the widest node + * @param {object} oSettings dataTables settings object + * @param {int} iCol column of interest + * @returns {node} widest table node + * @memberof DataTable#oApi + */ + function _fnGetWidestNode( oSettings, iCol ) + { + var iMaxIndex = _fnGetMaxLenString( oSettings, iCol ); + if ( iMaxIndex < 0 ) + { + return null; + } + + if ( oSettings.aoData[iMaxIndex].nTr === null ) + { + var n = document.createElement('td'); + n.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' ); + return n; + } + return _fnGetTdNodes(oSettings, iMaxIndex)[iCol]; + } + + + /** + * Get the maximum strlen for each data column + * @param {object} oSettings dataTables settings object + * @param {int} iCol column of interest + * @returns {string} max string length for each column + * @memberof DataTable#oApi + */ + function _fnGetMaxLenString( oSettings, iCol ) + { + var iMax = -1; + var iMaxIndex = -1; + + for ( var i=0 ; i/g, "" ); + if ( s.length > iMax ) + { + iMax = s.length; + iMaxIndex = i; + } + } + + return iMaxIndex; + } + + + /** + * Append a CSS unit (only if required) to a string + * @param {array} aArray1 first array + * @param {array} aArray2 second array + * @returns {int} 0 if match, 1 if length is different, 2 if no match + * @memberof DataTable#oApi + */ + function _fnStringToCss( s ) + { + if ( s === null ) + { + return "0px"; + } + + if ( typeof s == 'number' ) + { + if ( s < 0 ) + { + return "0px"; + } + return s+"px"; + } + + /* Check if the last character is not 0-9 */ + var c = s.charCodeAt( s.length-1 ); + if (c < 0x30 || c > 0x39) + { + return s; + } + return s+"px"; + } + + + /** + * Get the width of a scroll bar in this browser being used + * @returns {int} width in pixels + * @memberof DataTable#oApi + */ + function _fnScrollBarWidth () + { + var inner = document.createElement('p'); + var style = inner.style; + style.width = "100%"; + style.height = "200px"; + style.padding = "0px"; + + var outer = document.createElement('div'); + style = outer.style; + style.position = "absolute"; + style.top = "0px"; + style.left = "0px"; + style.visibility = "hidden"; + style.width = "200px"; + style.height = "150px"; + style.padding = "0px"; + style.overflow = "hidden"; + outer.appendChild(inner); + + document.body.appendChild(outer); + var w1 = inner.offsetWidth; + outer.style.overflow = 'scroll'; + var w2 = inner.offsetWidth; + if ( w1 == w2 ) + { + w2 = outer.clientWidth; + } + + document.body.removeChild(outer); + return (w1 - w2); + } + + /** + * Change the order of the table + * @param {object} oSettings dataTables settings object + * @param {bool} bApplyClasses optional - should we apply classes or not + * @memberof DataTable#oApi + */ + function _fnSort ( oSettings, bApplyClasses ) + { + var + i, iLen, j, jLen, k, kLen, + sDataType, nTh, + aaSort = [], + aiOrig = [], + oSort = DataTable.ext.oSort, + aoData = oSettings.aoData, + aoColumns = oSettings.aoColumns, + oAria = oSettings.oLanguage.oAria; + + /* No sorting required if server-side or no sorting array */ + if ( !oSettings.oFeatures.bServerSide && + (oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) ) + { + aaSort = ( oSettings.aaSortingFixed !== null ) ? + oSettings.aaSortingFixed.concat( oSettings.aaSorting ) : + oSettings.aaSorting.slice(); + + /* If there is a sorting data type, and a function belonging to it, then we need to + * get the data from the developer's function and apply it for this column + */ + for ( i=0 ; i/g, "" ); + nTh = aoColumns[i].nTh; + nTh.removeAttribute('aria-sort'); + nTh.removeAttribute('aria-label'); + + /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ + if ( aoColumns[i].bSortable ) + { + if ( aaSort.length > 0 && aaSort[0][0] == i ) + { + nTh.setAttribute('aria-sort', aaSort[0][1]=="asc" ? "ascending" : "descending" ); + + var nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ? + aoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0]; + nTh.setAttribute('aria-label', sTitle+ + (nextSort=="asc" ? oAria.sSortAscending : oAria.sSortDescending) ); + } + else + { + nTh.setAttribute('aria-label', sTitle+ + (aoColumns[i].asSorting[0]=="asc" ? oAria.sSortAscending : oAria.sSortDescending) ); + } + } + else + { + nTh.setAttribute('aria-label', sTitle); + } + } + + /* Tell the draw function that we have sorted the data */ + oSettings.bSorted = true; + $(oSettings.oInstance).trigger('sort', oSettings); + + /* Copy the master data into the draw array and re-draw */ + if ( oSettings.oFeatures.bFilter ) + { + /* _fnFilter() will redraw the table for us */ + _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 ); + } + else + { + oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); + oSettings._iDisplayStart = 0; /* reset display back to page 0 */ + _fnCalculateEnd( oSettings ); + _fnDraw( oSettings ); + } + } + + + /** + * Attach a sort handler (click) to a node + * @param {object} oSettings dataTables settings object + * @param {node} nNode node to attach the handler to + * @param {int} iDataIndex column sorting index + * @param {function} [fnCallback] callback function + * @memberof DataTable#oApi + */ + function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback ) + { + _fnBindAction( nNode, {}, function (e) { + /* If the column is not sortable - don't to anything */ + if ( oSettings.aoColumns[iDataIndex].bSortable === false ) + { + return; + } + + /* + * This is a little bit odd I admit... I declare a temporary function inside the scope of + * _fnBuildHead and the click handler in order that the code presented here can be used + * twice - once for when bProcessing is enabled, and another time for when it is + * disabled, as we need to perform slightly different actions. + * Basically the issue here is that the Javascript engine in modern browsers don't + * appear to allow the rendering engine to update the display while it is still executing + * it's thread (well - it does but only after long intervals). This means that the + * 'processing' display doesn't appear for a table sort. To break the js thread up a bit + * I force an execution break by using setTimeout - but this breaks the expected + * thread continuation for the end-developer's point of view (their code would execute + * too early), so we only do it when we absolutely have to. + */ + var fnInnerSorting = function () { + var iColumn, iNextSort; + + /* If the shift key is pressed then we are multiple column sorting */ + if ( e.shiftKey ) + { + /* Are we already doing some kind of sort on this column? */ + var bFound = false; + for ( var i=0 ; i 0 && sCurrentClass.indexOf(sNewClass) == -1 ) + { + /* We need to add a class */ + nTds[i].className = sCurrentClass + " " + sNewClass; + } + } + } + } + + + + /** + * Save the state of a table in a cookie such that the page can be reloaded + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnSaveState ( oSettings ) + { + if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying ) + { + return; + } + + /* Store the interesting variables */ + var i, iLen, bInfinite=oSettings.oScroll.bInfinite; + var oState = { + "iCreate": new Date().getTime(), + "iStart": (bInfinite ? 0 : oSettings._iDisplayStart), + "iEnd": (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd), + "iLength": oSettings._iDisplayLength, + "aaSorting": $.extend( true, [], oSettings.aaSorting ), + "oSearch": $.extend( true, {}, oSettings.oPreviousSearch ), + "aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ), + "abVisCols": [] + }; + + for ( i=0, iLen=oSettings.aoColumns.length ; i 4096 ) /* Magic 10 for padding */ + { + for ( var i=0, iLen=aCookies.length ; i 4096 ) { + if ( aOldCookies.length === 0 ) { + // Deleted all DT cookies and still not enough space. Can't state save + return; + } + + var old = aOldCookies.pop(); + document.cookie = old.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+ + aParts.join('/') + "/"; + } + } + + document.cookie = sFullCookie; + } + + + /** + * Read an old cookie to get a cookie with an old table state + * @param {string} sName name of the cookie to read + * @returns {string} contents of the cookie - or null if no cookie with that name found + * @memberof DataTable#oApi + */ + function _fnReadCookie ( sName ) + { + var + aParts = window.location.pathname.split('/'), + sNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\/:]/g,"").toLowerCase() + '=', + sCookieContents = document.cookie.split(';'); + + for( var i=0 ; i=0 ; i-- ) + { + aRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) ); + } + + if ( sTrigger !== null ) + { + $(oSettings.oInstance).trigger(sTrigger, aArgs); + } + + return aRet; + } + + + /** + * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other + * library, then we use that as it is fast, safe and accurate. If the function isn't + * available then we need to built it ourselves - the inspiration for this function comes + * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is + * not perfect and absolutely should not be used as a replacement to json2.js - but it does + * do what we need, without requiring a dependency for DataTables. + * @param {object} o JSON object to be converted + * @returns {string} JSON string + * @memberof DataTable#oApi + */ + var _fnJsonString = (window.JSON) ? JSON.stringify : function( o ) + { + /* Not an object or array */ + var sType = typeof o; + if (sType !== "object" || o === null) + { + // simple data type + if (sType === "string") + { + o = '"'+o+'"'; + } + return o+""; + } + + /* If object or array, need to recurse over it */ + var + sProp, mValue, + json = [], + bArr = $.isArray(o); + + for (sProp in o) + { + mValue = o[sProp]; + sType = typeof mValue; + + if (sType === "string") + { + mValue = '"'+mValue+'"'; + } + else if (sType === "object" && mValue !== null) + { + mValue = _fnJsonString(mValue); + } + + json.push((bArr ? "" : '"'+sProp+'":') + mValue); + } + + return (bArr ? "[" : "{") + json + (bArr ? "]" : "}"); + }; + + + /** + * From some browsers (specifically IE6/7) we need special handling to work around browser + * bugs - this function is used to detect when these workarounds are needed. + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnBrowserDetect( oSettings ) + { + /* IE6/7 will oversize a width 100% element inside a scrolling element, to include the + * width of the scrollbar, while other browsers ensure the inner element is contained + * without forcing scrolling + */ + var n = $( + '
    '+ + '
    '+ + '
    '+ + '
    '+ + '
    ')[0]; + + document.body.appendChild( n ); + oSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false; + document.body.removeChild( n ); + } + + + /** + * Perform a jQuery selector action on the table's TR elements (from the tbody) and + * return the resulting jQuery object. + * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on + * @param {object} [oOpts] Optional parameters for modifying the rows to be included + * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter + * criterion ("applied") or all TR elements (i.e. no filter). + * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. + * Can be either 'current', whereby the current sorting of the table is used, or + * 'original' whereby the original order the data was read into the table is used. + * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page + * ("current") or not ("all"). If 'current' is given, then order is assumed to be + * 'current' and filter is 'applied', regardless of what they might be given as. + * @returns {object} jQuery object, filtered by the given selector. + * @dtopt API + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Highlight every second row + * oTable.$('tr:odd').css('backgroundColor', 'blue'); + * } ); + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Filter to rows with 'Webkit' in them, add a background colour and then + * // remove the filter, thus highlighting the 'Webkit' rows only. + * oTable.fnFilter('Webkit'); + * oTable.$('tr', {"filter": "applied"}).css('backgroundColor', 'blue'); + * oTable.fnFilter(''); + * } ); + */ + this.$ = function ( sSelector, oOpts ) + { + var i, iLen, a = [], tr; + var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); + var aoData = oSettings.aoData; + var aiDisplay = oSettings.aiDisplay; + var aiDisplayMaster = oSettings.aiDisplayMaster; + + if ( !oOpts ) + { + oOpts = {}; + } + + oOpts = $.extend( {}, { + "filter": "none", // applied + "order": "current", // "original" + "page": "all" // current + }, oOpts ); + + // Current page implies that order=current and fitler=applied, since it is fairly + // senseless otherwise + if ( oOpts.page == 'current' ) + { + for ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i + *
  • 1D array of data - add a single row with the data provided
  • + *
  • 2D array of arrays - add multiple rows in a single call
  • + *
  • object - data object when using mData
  • + *
  • array of objects - multiple data objects when using mData
  • + * + * @param {bool} [bRedraw=true] redraw the table or not + * @returns {array} An array of integers, representing the list of indexes in + * aoData ({@link DataTable.models.oSettings}) that have been added to + * the table. + * @dtopt API + * + * @example + * // Global var for counter + * var giCount = 2; + * + * $(document).ready(function() { + * $('#example').dataTable(); + * } ); + * + * function fnClickAddRow() { + * $('#example').dataTable().fnAddData( [ + * giCount+".1", + * giCount+".2", + * giCount+".3", + * giCount+".4" ] + * ); + * + * giCount++; + * } + */ + this.fnAddData = function( mData, bRedraw ) + { + if ( mData.length === 0 ) + { + return []; + } + + var aiReturn = []; + var iTest; + + /* Find settings from table node */ + var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); + + /* Check if we want to add multiple rows or not */ + if ( typeof mData[0] === "object" && mData[0] !== null ) + { + for ( var i=0 ; i= oSettings.fnRecordsDisplay() ) + { + oSettings._iDisplayStart -= oSettings._iDisplayLength; + if ( oSettings._iDisplayStart < 0 ) + { + oSettings._iDisplayStart = 0; + } + } + + if ( bRedraw === undefined || bRedraw ) + { + _fnCalculateEnd( oSettings ); + _fnDraw( oSettings ); + } + + return oData; + }; + + + /** + * Restore the table to it's original state in the DOM by removing all of DataTables + * enhancements, alterations to the DOM structure of the table and event listeners. + * @param {boolean} [bRemove=false] Completely remove the table from the DOM + * @dtopt API + * + * @example + * $(document).ready(function() { + * // This example is fairly pointless in reality, but shows how fnDestroy can be used + * var oTable = $('#example').dataTable(); + * oTable.fnDestroy(); + * } ); + */ + this.fnDestroy = function ( bRemove ) + { + var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ); + var nOrig = oSettings.nTableWrapper.parentNode; + var nBody = oSettings.nTBody; + var i, iLen; + + bRemove = (bRemove===undefined) ? false : bRemove; + + /* Flag to note that the table is currently being destroyed - no action should be taken */ + oSettings.bDestroying = true; + + /* Fire off the destroy callbacks for plug-ins etc */ + _fnCallbackFire( oSettings, "aoDestroyCallback", "destroy", [oSettings] ); + + /* If the table is not being removed, restore the hidden columns */ + if ( !bRemove ) + { + for ( i=0, iLen=oSettings.aoColumns.length ; itr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove(); + + /* When scrolling we had to break the table up - restore it */ + if ( oSettings.nTable != oSettings.nTHead.parentNode ) + { + $(oSettings.nTable).children('thead').remove(); + oSettings.nTable.appendChild( oSettings.nTHead ); + } + + if ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode ) + { + $(oSettings.nTable).children('tfoot').remove(); + oSettings.nTable.appendChild( oSettings.nTFoot ); + } + + /* Remove the DataTables generated nodes, events and classes */ + oSettings.nTable.parentNode.removeChild( oSettings.nTable ); + $(oSettings.nTableWrapper).remove(); + + oSettings.aaSorting = []; + oSettings.aaSortingFixed = []; + _fnSortingClasses( oSettings ); + + $(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') ); + + $('th, td', oSettings.nTHead).removeClass( [ + oSettings.oClasses.sSortable, + oSettings.oClasses.sSortableAsc, + oSettings.oClasses.sSortableDesc, + oSettings.oClasses.sSortableNone ].join(' ') + ); + if ( oSettings.bJUI ) + { + $('th span.'+oSettings.oClasses.sSortIcon + + ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove(); + + $('th, td', oSettings.nTHead).each( function () { + var jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this); + var kids = jqWrapper.contents(); + $(this).append( kids ); + jqWrapper.remove(); + } ); + } + + /* Add the TR elements back into the table in their original order */ + if ( !bRemove && oSettings.nTableReinsertBefore ) + { + nOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore ); + } + else if ( !bRemove ) + { + nOrig.appendChild( oSettings.nTable ); + } + + for ( i=0, iLen=oSettings.aoData.length ; i
    ")[0];a.nTable.parentNode.insertBefore(b,a.nTable);a.nTableWrapper=h('
    ')[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var c=a.nTableWrapper,d=a.sDom.split(""),i,f,g,e,w,o,k,m=0;m
    ")[0];w=d[m+ +1];if("'"==w||'"'==w){o="";for(k=2;d[m+k]!=w;)o+=d[m+k],k++;"H"==o?o=a.oClasses.sJUIHeader:"F"==o&&(o=a.oClasses.sJUIFooter);-1!=o.indexOf(".")?(w=o.split("."),e.id=w[0].substr(1,w[0].length-1),e.className=w[1]):"#"==o.charAt(0)?e.id=o.substr(1,o.length-1):e.className=o;m+=k}c.appendChild(e);c=e}else if(">"==g)c=c.parentNode;else if("l"==g&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange)i=ya(a),f=1;else if("f"==g&&a.oFeatures.bFilter)i=za(a),f=1;else if("r"==g&&a.oFeatures.bProcessing)i=Aa(a),f= +1;else if("t"==g)i=Ba(a),f=1;else if("i"==g&&a.oFeatures.bInfo)i=Ca(a),f=1;else if("p"==g&&a.oFeatures.bPaginate)i=Da(a),f=1;else if(0!==j.ext.aoFeatures.length){e=j.ext.aoFeatures;k=0;for(w=e.length;k'):""===c?'':c+' ',d=l.createElement("div");d.className=a.oClasses.sFilter;d.innerHTML="";a.aanFeatures.f||(d.id=a.sTableId+"_filter");c=h('input[type="text"]',d);d._DT_Input=c[0];c.val(b.sSearch.replace('"',"""));c.bind("keyup.DT",function(){for(var c=a.aanFeatures.f,d=this.value===""?"":this.value, +g=0,e=c.length;g=b.length)a.aiDisplay.splice(0,a.aiDisplay.length),a.aiDisplay=a.aiDisplayMaster.slice();else if(a.aiDisplay.length==a.aiDisplayMaster.length||i.sSearch.length>b.length||1==c||0!==b.indexOf(i.sSearch)){a.aiDisplay.splice(0, +a.aiDisplay.length);la(a,1);for(b=0;b").html(c).text()); +return c.replace(/[\n\r]/g," ")}function ma(a,b,c,d){if(c)return a=b?a.split(" "):oa(a).split(" "),a="^(?=.*?"+a.join(")(?=.*?")+").*$",RegExp(a,d?"i":"");a=b?a:oa(a);return RegExp(a,d?"i":"")}function Ja(a,b){return"function"===typeof j.ext.ofnSearch[b]?j.ext.ofnSearch[b](a):null===a?"":"html"==b?a.replace(/[\r\n]/g," ").replace(/<.*?>/g,""):"string"===typeof a?a.replace(/[\r\n]/g," "):a}function oa(a){return a.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"), +"\\$1")}function Ca(a){var b=l.createElement("div");b.className=a.oClasses.sInfo;a.aanFeatures.i||(a.aoDrawCallback.push({fn:Ka,sName:"information"}),b.id=a.sTableId+"_info");a.nTable.setAttribute("aria-describedby",a.sTableId+"_info");return b}function Ka(a){if(a.oFeatures.bInfo&&0!==a.aanFeatures.i.length){var b=a.oLanguage,c=a._iDisplayStart+1,d=a.fnDisplayEnd(),i=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g;g=0===f?b.sInfoEmpty:b.sInfo;f!=i&&(g+=" "+b.sInfoFiltered);g+=b.sInfoPostFix;g=ja(a,g); +null!==b.fnInfoCallback&&(g=b.fnInfoCallback.call(a.oInstance,a,c,d,i,f,g));a=a.aanFeatures.i;b=0;for(c=a.length;b",c,d,i=a.aLengthMenu;if(2==i.length&&"object"===typeof i[0]&&"object"===typeof i[1]){c=0;for(d=i[0].length;c'+i[1][c]+""}else{c=0;for(d=i.length;c'+i[c]+""}b+="";i=l.createElement("div");a.aanFeatures.l|| +(i.id=a.sTableId+"_length");i.className=a.oClasses.sLength;i.innerHTML="";h('select option[value="'+a._iDisplayLength+'"]',i).attr("selected",!0);h("select",i).bind("change.DT",function(){var b=h(this).val(),i=a.aanFeatures.l;c=0;for(d=i.length;ca.aiDisplay.length||-1==a._iDisplayLength?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Da(a){if(a.oScroll.bInfinite)return null;var b=l.createElement("div");b.className=a.oClasses.sPaging+a.sPaginationType;j.ext.oPagination[a.sPaginationType].fnInit(a, +b,function(a){y(a);x(a)});a.aanFeatures.p||a.aoDrawCallback.push({fn:function(a){j.ext.oPagination[a.sPaginationType].fnUpdate(a,function(a){y(a);x(a)})},sName:"pagination"});return b}function qa(a,b){var c=a._iDisplayStart;if("number"===typeof b)a._iDisplayStart=b*a._iDisplayLength,a._iDisplayStart>a.fnRecordsDisplay()&&(a._iDisplayStart=0);else if("first"==b)a._iDisplayStart=0;else if("previous"==b)a._iDisplayStart=0<=a._iDisplayLength?a._iDisplayStart-a._iDisplayLength:0,0>a._iDisplayStart&&(a._iDisplayStart= +0);else if("next"==b)0<=a._iDisplayLength?a._iDisplayStart+a._iDisplayLengthh(a.nTable).height()-a.oScroll.iLoadGap&&a.fnDisplayEnd()d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(h(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else""!==a.oScroll.sXInner?a.nTable.style.width= +q(a.oScroll.sXInner):i==h(d).width()&&h(d).height()i-a.oScroll.iBarWidth&&(a.nTable.style.width=q(i))):a.nTable.style.width=q(i);i=h(a.nTable).outerWidth();C(s,e);C(function(a){p.push(q(h(a).width()))},e);C(function(a,b){a.style.width=p[b]},g);h(e).height(0);null!==a.nTFoot&&(C(s,j),C(function(a){n.push(q(h(a).width()))},j),C(function(a,b){a.style.width=n[b]},o),h(j).height(0));C(function(a,b){a.innerHTML= +"";a.style.width=p[b]},e);null!==a.nTFoot&&C(function(a,b){a.innerHTML="";a.style.width=n[b]},j);if(h(a.nTable).outerWidth()d.offsetHeight||"scroll"==h(d).css("overflow-y")?i+a.oScroll.iBarWidth:i;if(r&&(d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(g-a.oScroll.iBarWidth);d.style.width=q(g);a.nScrollHead.style.width=q(g);null!==a.nTFoot&&(a.nScrollFoot.style.width=q(g));""===a.oScroll.sX?D(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width."): +""!==a.oScroll.sXInner&&D(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else d.style.width=q("100%"),a.nScrollHead.style.width=q("100%"),null!==a.nTFoot&&(a.nScrollFoot.style.width=q("100%"));""===a.oScroll.sY&&r&&(d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth));""!==a.oScroll.sY&&a.oScroll.bCollapse&&(d.style.height=q(a.oScroll.sY),r=""!==a.oScroll.sX&&a.nTable.offsetWidth> +d.offsetWidth?a.oScroll.iBarWidth:0,a.nTable.offsetHeightd.clientHeight||"scroll"==h(d).css("overflow-y");b.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px";null!==a.nTFoot&&(R.style.width=q(r),l.style.width=q(r),l.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px");h(d).scroll();if(a.bSorted||a.bFiltered)d.scrollTop=0}function C(a,b,c){for(var d= +0,i=0,f=b.length,g,e;itd",b));j=N(a,f);for(f=d=0;fc)return null;if(null===a.aoData[c].nTr){var d=l.createElement("td");d.innerHTML=v(a,c,b,"");return d}return J(a,c)[b]}function Pa(a,b){for(var c=-1,d=-1,i=0;i/g,"");e.length>c&&(c=e.length,d=i)}return d}function q(a){if(null===a)return"0px";if("number"==typeof a)return 0>a?"0px":a+"px";var b=a.charCodeAt(a.length-1); +return 48>b||57/g,""),i=q[c].nTh,i.removeAttribute("aria-sort"),i.removeAttribute("aria-label"),q[c].bSortable?0d&&d++;f=RegExp(f+"[123]");var o;b=0;for(c=a.length;b
    ')[0];l.body.appendChild(b);a.oBrowser.bScrollOversize= +100===h("#DT_BrowserTest",b)[0].offsetWidth?!0:!1;l.body.removeChild(b)}function Va(a){return function(){var b=[s(this[j.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return j.ext.oApi[a].apply(this,b)}}var U=/\[.*?\]$/,Wa=X.JSON?JSON.stringify:function(a){var b=typeof a;if("object"!==b||null===a)return"string"===b&&(a='"'+a+'"'),a+"";var c,d,e=[],f=h.isArray(a);for(c in a)d=a[c],b=typeof d,"string"===b?d='"'+d+'"':"object"===b&&null!==d&&(d=Wa(d)),e.push((f?"":'"'+c+'":')+d);return(f? +"[":"{")+e+(f?"]":"}")};this.$=function(a,b){var c,d,e=[],f;d=s(this[j.ext.iApiIndex]);var g=d.aoData,o=d.aiDisplay,k=d.aiDisplayMaster;b||(b={});b=h.extend({},{filter:"none",order:"current",page:"all"},b);if("current"==b.page){c=d._iDisplayStart;for(d=d.fnDisplayEnd();c=d.fnRecordsDisplay()&&(d._iDisplayStart-=d._iDisplayLength,0>d._iDisplayStart&&(d._iDisplayStart=0));if(c===n||c)y(d),x(d);return g};this.fnDestroy=function(a){var b=s(this[j.ext.iApiIndex]),c=b.nTableWrapper.parentNode,d=b.nTBody,i,f,a=a===n?!1:a;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);if(!a){i=0;for(f=b.aoColumns.length;itr>td."+b.oClasses.sRowEmpty,b.nTable).parent().remove();b.nTable!=b.nTHead.parentNode&&(h(b.nTable).children("thead").remove(),b.nTable.appendChild(b.nTHead));b.nTFoot&&b.nTable!=b.nTFoot.parentNode&&(h(b.nTable).children("tfoot").remove(),b.nTable.appendChild(b.nTFoot));b.nTable.parentNode.removeChild(b.nTable);h(b.nTableWrapper).remove();b.aaSorting=[];b.aaSortingFixed=[];P(b);h(T(b)).removeClass(b.asStripeClasses.join(" "));h("th, td",b.nTHead).removeClass([b.oClasses.sSortable,b.oClasses.sSortableAsc, +b.oClasses.sSortableDesc,b.oClasses.sSortableNone].join(" "));b.bJUI&&(h("th span."+b.oClasses.sSortIcon+", td span."+b.oClasses.sSortIcon,b.nTHead).remove(),h("th, td",b.nTHead).each(function(){var a=h("div."+b.oClasses.sSortJUIWrapper,this),c=a.contents();h(this).append(c);a.remove()}));!a&&b.nTableReinsertBefore?c.insertBefore(b.nTable,b.nTableReinsertBefore):a||c.appendChild(b.nTable);i=0;for(f=b.aoData.length;i=t(d);if(!m)for(e=a;et<"F"ip>')):h.extend(g.oClasses,j.ext.oStdClasses);h(this).addClass(g.oClasses.sTable);if(""!==g.oScroll.sX||""!==g.oScroll.sY)g.oScroll.iBarWidth=Qa();g.iInitDisplayStart===n&&(g.iInitDisplayStart=e.iDisplayStart, +g._iDisplayStart=e.iDisplayStart);e.bStateSave&&(g.oFeatures.bStateSave=!0,Sa(g,e),z(g,"aoDrawCallback",ra,"state_save"));null!==e.iDeferLoading&&(g.bDeferLoading=!0,a=h.isArray(e.iDeferLoading),g._iRecordsDisplay=a?e.iDeferLoading[0]:e.iDeferLoading,g._iRecordsTotal=a?e.iDeferLoading[1]:e.iDeferLoading);null!==e.aaData&&(f=!0);""!==e.oLanguage.sUrl?(g.oLanguage.sUrl=e.oLanguage.sUrl,h.getJSON(g.oLanguage.sUrl,null,function(a){pa(a);h.extend(true,g.oLanguage,e.oLanguage,a);ba(g)}),i=!0):h.extend(!0, +g.oLanguage,e.oLanguage);null===e.asStripeClasses&&(g.asStripeClasses=[g.oClasses.sStripeOdd,g.oClasses.sStripeEven]);b=g.asStripeClasses.length;g.asDestroyStripes=[];if(b){c=!1;d=h(this).children("tbody").children("tr:lt("+b+")");for(a=0;a=g.aoColumns.length&&(g.aaSorting[a][0]=0);var k=g.aoColumns[g.aaSorting[a][0]];g.aaSorting[a][2]===n&&(g.aaSorting[a][2]=0);e.aaSorting===n&&g.saved_aaSorting===n&&(g.aaSorting[a][1]= +k.asSorting[0]);c=0;for(d=k.asSorting.length;c=parseInt(n,10)};j.fnIsDataTable=function(e){for(var h=j.settings,m=0;me)return e;for(var h=e+"",e=h.split(""),j="",h=h.length,k=0;k'+k.sPrevious+''+k.sNext+"":'';h(j).append(k);var l=h("a",j), +k=l[0],l=l[1];e.oApi._fnBindAction(k,{action:"previous"},n);e.oApi._fnBindAction(l,{action:"next"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_previous",l.id=e.sTableId+"_next",k.setAttribute("aria-controls",e.sTableId),l.setAttribute("aria-controls",e.sTableId))},fnUpdate:function(e){if(e.aanFeatures.p)for(var h=e.oClasses,j=e.aanFeatures.p,k,l=0,n=j.length;l'+k.sFirst+''+k.sPrevious+''+k.sNext+''+k.sLast+"");var t=h("a",j),k=t[0],l=t[1],r=t[2],t=t[3];e.oApi._fnBindAction(k,{action:"first"},n);e.oApi._fnBindAction(l,{action:"previous"},n);e.oApi._fnBindAction(r,{action:"next"},n);e.oApi._fnBindAction(t,{action:"last"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_first",l.id=e.sTableId+"_previous",r.id=e.sTableId+"_next",t.id=e.sTableId+"_last")}, +fnUpdate:function(e,o){if(e.aanFeatures.p){var m=j.ext.oPagination.iFullNumbersShowPages,k=Math.floor(m/2),l=Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength),n=Math.ceil(e._iDisplayStart/e._iDisplayLength)+1,t="",r,B=e.oClasses,u,M=e.aanFeatures.p,L=function(h){e.oApi._fnBindAction(this,{page:h+r-1},function(h){e.oApi._fnPageChange(e,h.data.page);o(e);h.preventDefault()})};-1===e._iDisplayLength?n=k=r=1:l=l-k?(r=l-m+1,k=l):(r=n-Math.ceil(m/2)+1,k=r+m-1);for(m=r;m<=k;m++)t+= +n!==m?''+e.fnFormatNumber(m)+"":''+e.fnFormatNumber(m)+"";m=0;for(k=M.length;mh?1:0},"string-desc":function(e,h){return eh?-1:0},"html-pre":function(e){return e.replace(/<.*?>/g,"").toLowerCase()},"html-asc":function(e,h){return eh?1:0},"html-desc":function(e,h){return e< +h?1:e>h?-1:0},"date-pre":function(e){e=Date.parse(e);if(isNaN(e)||""===e)e=Date.parse("01/01/1970 00:00:00");return e},"date-asc":function(e,h){return e-h},"date-desc":function(e,h){return h-e},"numeric-pre":function(e){return"-"==e||""===e?0:1*e},"numeric-asc":function(e,h){return e-h},"numeric-desc":function(e,h){return h-e}});h.extend(j.ext.aTypes,[function(e){if("number"===typeof e)return"numeric";if("string"!==typeof e)return null;var h,j=!1;h=e.charAt(0);if(-1=="0123456789-".indexOf(h))return null; +for(var k=1;k")?"html":null}]);h.fn.DataTable=j;h.fn.dataTable=j;h.fn.dataTableSettings=j.settings;h.fn.dataTableExt=j.ext};"function"===typeof define&&define.amd?define(["jquery"],L):jQuery&&!jQuery.fn.dataTable&& +L(jQuery)})(window,document); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css new file mode 100644 index 00000000..def18f25 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.css @@ -0,0 +1,382 @@ +/********************** + *CSS Animations by: + *http://codepen.io/vivinantony +***********************/ +.spinner1 { + width: 40px; + height: 40px; + position: relative; +} + + +.double-bounce1, .double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #fff; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + + -webkit-animation: bounce 2.0s infinite ease-in-out; + animation: bounce 2.0s infinite ease-in-out; +} + +.double-bounce2 { + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} + +@-webkit-keyframes bounce { + 0%, 100% { -webkit-transform: scale(0.0) } + 50% { -webkit-transform: scale(1.0) } +} + +@keyframes bounce { + 0%, 100% { + transform: scale(0.0); + -webkit-transform: scale(0.0); + } 50% { + transform: scale(1.0); + -webkit-transform: scale(1.0); + } +} + +.spinner2 { + width: 40px; + height: 40px; + position: relative; +} + + +.container1 > div, .container2 > div, .container3 > div { + width: 6px; + height: 6px; + background-color: #fff; + + border-radius: 100%; + position: absolute; + -webkit-animation: bouncedelay 1.2s infinite ease-in-out; + animation: bouncedelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.spinner2 .spinner-container { + position: absolute; + width: 100%; + height: 100%; +} + +.container2 { + -webkit-transform: rotateZ(45deg); + transform: rotateZ(45deg); +} + +.container3 { + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg); +} + +.circle1 { top: 0; left: 0; } +.circle2 { top: 0; right: 0; } +.circle3 { right: 0; bottom: 0; } +.circle4 { left: 0; bottom: 0; } + +.container2 .circle1 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.container3 .circle1 { + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} + +.container1 .circle2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.container2 .circle2 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +.container3 .circle2 { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; +} + +.container1 .circle3 { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; +} + +.container2 .circle3 { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; +} + +.container3 .circle3 { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; +} + +.container1 .circle4 { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} + +.container2 .circle4 { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; +} + +.container3 .circle4 { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; +} + +@-webkit-keyframes bouncedelay { + 0%, 80%, 100% { -webkit-transform: scale(0.0) } + 40% { -webkit-transform: scale(1.0) } +} + +@keyframes bouncedelay { + 0%, 80%, 100% { + transform: scale(0.0); + -webkit-transform: scale(0.0); + } 40% { + transform: scale(1.0); + -webkit-transform: scale(1.0); + } +} + +.spinner3 { + width: 40px; + height: 40px; + position: relative; + -webkit-animation: rotate 2.0s infinite linear; + animation: rotate 2.0s infinite linear; +} + +.dot1, .dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #fff; + border-radius: 100%; + + -webkit-animation: bounce 2.0s infinite ease-in-out; + animation: bounce 2.0s infinite ease-in-out; +} + +.dot2 { + top: auto; + bottom: 0px; + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} + +@-webkit-keyframes rotate { 100% { -webkit-transform: rotate(360deg) }} +@keyframes rotate { 100% { transform: rotate(360deg); -webkit-transform: rotate(360deg) }} + +@-webkit-keyframes bounce { + 0%, 100% { -webkit-transform: scale(0.0) } + 50% { -webkit-transform: scale(1.0) } +} + +@keyframes bounce { + 0%, 100% { + transform: scale(0.0); + -webkit-transform: scale(0.0); + } 50% { + transform: scale(1.0); + -webkit-transform: scale(1.0); + } +} + +.spinner4 { + width: 30px; + height: 30px; + background-color: #fff; + -webkit-animation: rotateplane 1.2s infinite ease-in-out; + animation: rotateplane 1.2s infinite ease-in-out; +} + +@-webkit-keyframes rotateplane { + 0% { -webkit-transform: perspective(120px) } + 50% { -webkit-transform: perspective(120px) rotateY(180deg) } + 100% { -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg) } +} + +@keyframes rotateplane { + 0% { + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg) + } 50% { + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg) + } 100% { + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} + +.spinner5 { + width: 32px; + height: 32px; + position: relative; +} + +.cube1, .cube2 { + background-color: #fff; + width: 10px; + height: 10px; + position: absolute; + top: 0; + left: 0; + + -webkit-animation: cubemove 1.8s infinite ease-in-out; + animation: cubemove 1.8s infinite ease-in-out; +} + +.cube2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +@-webkit-keyframes cubemove { + 25% { -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5) } + 50% { -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg) } + 75% { -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5) } + 100% { -webkit-transform: rotate(-360deg) } +} + +@keyframes cubemove { + 25% { + transform: translateX(42px) rotate(-90deg) scale(0.5); + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + } 50% { + transform: translateX(42px) translateY(42px) rotate(-179deg); + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + } 50.1% { + transform: translateX(42px) translateY(42px) rotate(-180deg); + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + } 75% { + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } 100% { + transform: rotate(-360deg); + -webkit-transform: rotate(-360deg); + } +} + +.spinner6 { + width: 50px; + height: 30px; + text-align: center; +} + +.spinner6 > div { + background-color: #fff; + height: 100%; + width: 6px; + margin-left:2px; + display: inline-block; + + -webkit-animation: stretchdelay 1.2s infinite ease-in-out; + animation: stretchdelay 1.2s infinite ease-in-out; +} + +.spinner6 .rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.spinner6 .rect3 { + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} + +.spinner6 .rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.spinner6 .rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +@-webkit-keyframes stretchdelay { + 0%, 40%, 100% { -webkit-transform: scaleY(0.4) } + 20% { -webkit-transform: scaleY(1.0) } +} + +@keyframes stretchdelay { + 0%, 40%, 100% { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); + } 20% { + transform: scaleY(1.0); + -webkit-transform: scaleY(1.0); + } +} + .spinner7 { + width: 90px; + height: 30px; + text-align: center; + } + + .spinner7 > div { + background-color: #fff; + height: 15px; + width: 15px; + margin-left:3px; + border-radius: 50%; + display: inline-block; + + -webkit-animation: stretchdelay 0.7s infinite ease-in-out; + animation: stretchdelay 0.7s infinite ease-in-out; + } + + .spinner7 .circ2 { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; + } + + .spinner7 .circ3 { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; + } + + .spinner7 .circ4 { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; + } + + .spinner7 .circ5 { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; + } + + @-webkit-keyframes stretchdelay { + 0%, 40%, 100% { -webkit-transform: translateY(-10px) } + 20% { -webkit-transform: translateY(-20px) } + } + + @keyframes stretchdelay { + 0%, 40%, 100% { + transform: translateY(-10px); + -webkit-transform: translateY(-10px); + } 20% { + transform: translateY(-20px); + -webkit-transform: translateY(-20px); + } + } \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js new file mode 100644 index 00000000..243dc0b2 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/fakeLoader/fakeLoader.min.js @@ -0,0 +1,174 @@ +/*-------------------------------------------------------------------- + *JAVASCRIPT "FakeLoader.js" + *Version: 1.1.0 - 2014 + *author: João Pereira + *website: http://www.joaopereira.pt + *Licensed MIT +-----------------------------------------------------------------------*/ +(function ($) { + + $.fn.fakeLoader = function(options) { + //Defaults + $.fn.settings = $.extend({ + timeToHide:0, // Default Time to hide fakeLoader + pos:'fixed',// Default Position + top:'0px', // Default Top value + left:'0px', // Default Left value + width:'100%', // Default width + height:'100%', // Default Height + zIndex: '999', // Default zIndex + bgColor: '#2ecc71', // Default background color + opacity:'0.6',//默认透明度 + text:'',//默认加载中文字 + spinner:'spinner1', // Default Spinner + imagePath:'' // Default Path custom image + }, options); + var timer=null; + $.fn.Setopacity=function(opacity){ + $(".loadingbackground").fadeTo("slow",opacity); + }; + $.fn.SetTimeToHide=function(timetohide){ + var el = $(this); + el.settings.timeToHide=timetohide; + if(!!timer)clearTimeout(timer); + el.css({ + 'display':"block" + });//fadeTo("fast",el.settings.opacity); + $(".loadingbackground").fadeTo(1,el.settings.opacity); + setTimeout(function(){ + el.fadeOut();//fadeTo("slow",0); + }, el.settings.timeToHide); + }; + $.fn.setToHide=function(){ + var el = $(this); + if(!!timer)clearTimeout(timer); + el.fadeOut();//fadeTo("slow",0); + }; + //The target + var el = $(this); + + //Customized Spinners + var spinner01 = '

    '+el.settings.text+'
    '; + var spinner02 = '

    '+el.settings.text+'
    '; + var spinner03 = '

    '+el.settings.text+'
    '; + var spinner04 = '

    '+el.settings.text+'
    '; + var spinner05 = '

    '+el.settings.text+'
    '; + var spinner06 = '

    '+el.settings.text+'
    '; + var spinner07 = '

    '+el.settings.text+'
    '; + + //Init styles + var initStyles = { + 'position':el.settings.pos, + 'width':el.settings.width, + 'height':el.settings.height, + 'top':el.settings.top, + 'left':el.settings.left + }; + + //Apply styles + el.css(initStyles); + //Each + el.each(function() { + var a = el.settings.spinner; + //console.log(a) + switch (a) { + case 'spinner1': + el.html(spinner01); + break; + case 'spinner2': + el.html(spinner02); + break; + case 'spinner3': + el.html(spinner03); + break; + case 'spinner4': + el.html(spinner04); + break; + case 'spinner5': + el.html(spinner05); + break; + case 'spinner6': + el.html(spinner06); + break; + case 'spinner7': + el.html(spinner07); + break; + default: + el.html(spinner01); + } + + //Add customized loader image + + if (el.settings.imagePath !='') { + el.html('
    '+el.settings.text+'
    '); + } + centerLoader(); + }); + + //Time to hide fakeLoader + if(el.settings.timeToHide>0){ + timer=setTimeout(function(){ + el.fadeOut();//fadeTo("slow",0); + }, el.settings.timeToHide); + } + //Return Styles + this.css({ + //'backgroundColor':el.settings.bgColor, + 'display':"block", + 'zIndex':el.settings.zIndex + }); + + $(".loadingbackground").css(initStyles).css({ + 'backgroundColor':el.settings.bgColor, + 'opacity':el.settings.opacity, + 'zIndex':el.settings.zIndex+1 + }); + $(".loadingTip").css(initStyles).css({ + //'backgroundColor':el.settings.bgColor, + 'zIndex':el.settings.zIndex+2 + }); + return this; + }; // End Fake Loader + + + //Center Spinner + function centerLoader() { + + var winW = $(window).width(); + var winH = $(window).height(); + + var spinnerW = $('.fl').outerWidth(); + var spinnerH = $('.fl').outerHeight(); + var fW = $('.f2').outerWidth(); + var left=(winW/2)-(spinnerW/2); + var left2=(winW/2)-(fW/2); + left=left>0?left:winW/2-20; + left2=left2==0||fW==0?left:left2; + //left2=left2>0?left2:winW/2-40; + left2=left2-20; + console.log("loding gif:"+left+" text:"+left2); + $('.fl').css({ + 'position':'absolute', + 'left':left, + 'top':(winH/2)-(spinnerH/2) + }); + $('.f2').css({ + 'position':'absolute', + 'left':left2, + 'top':(winH/2)+(spinnerH/2) + }); + } + + $(window).load(function(){ + centerLoader(); + $(window).resize(function(){ + centerLoader(); + }); + }); + + +}(jQuery)); + + + + diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css new file mode 100644 index 00000000..8bde0e26 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.css @@ -0,0 +1,1672 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.2.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.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: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.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; +} +@-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 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + 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 { + 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: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.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:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.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 { + 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: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-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.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"; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css new file mode 100644 index 00000000..318fb871 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.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}@-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{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{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{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:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.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{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: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-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.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"} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 00000000..81c9ad94 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/FontAwesome.otf differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..84677bc0 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.svg b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..a5c10445 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..96a3639c Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..628b6a52 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less new file mode 100644 index 00000000..48a7004d --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/bordered-pulled.less @@ -0,0 +1,16 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less new file mode 100644 index 00000000..792ba4a5 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/core.less @@ -0,0 +1,11 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less new file mode 100644 index 00000000..4fd1ed36 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less new file mode 100644 index 00000000..3727f967 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/font-awesome.less @@ -0,0 +1,17 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "spinning.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less new file mode 100644 index 00000000..1ff19e34 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/icons.less @@ -0,0 +1,552 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less new file mode 100644 index 00000000..3646d3d9 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less new file mode 100644 index 00000000..eb64bf4b --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less new file mode 100644 index 00000000..1f7153fe --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/mixins.less @@ -0,0 +1,25 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fa-icon-rotate(@degrees, @rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less new file mode 100644 index 00000000..39ebbd66 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/path.less @@ -0,0 +1,14 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); +// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less new file mode 100644 index 00000000..34faba58 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less new file mode 100644 index 00000000..7c007caa --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/spinning.less @@ -0,0 +1,29 @@ +// Spinning Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +@-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); + } +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less new file mode 100644 index 00000000..d3fc1016 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less new file mode 100644 index 00000000..512ecd5a --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/less/variables.less @@ -0,0 +1,561 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.2.0"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-ambulance: "\f0f9"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-ban: "\f05e"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-o: "\f133"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-credit-card: "\f09d"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-database: "\f1c0"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-square: "\f199"; +@fa-var-eraser: "\f12d"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-html5: "\f13b"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map-marker: "\f041"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medkit: "\f0fa"; +@fa-var-meh-o: "\f11a"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-openid: "\f19b"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f1a7"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-stop: "\f04d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-md: "\f0f0"; +@fa-var-users: "\f0c0"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-wheelchair: "\f193"; +@fa-var-wifi: "\f1eb"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-yahoo: "\f19e"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss new file mode 100644 index 00000000..904a09c9 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_bordered-pulled.scss @@ -0,0 +1,16 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss new file mode 100644 index 00000000..a0aa30e9 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_core.scss @@ -0,0 +1,11 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss new file mode 100644 index 00000000..b01670a9 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss new file mode 100644 index 00000000..f9d38e32 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_icons.scss @@ -0,0 +1,552 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before { content: $fa-var-gittip; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss new file mode 100644 index 00000000..4119795e --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss new file mode 100644 index 00000000..44137d73 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss new file mode 100644 index 00000000..deb0bb34 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_mixins.scss @@ -0,0 +1,25 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +@mixin fa-icon-rotate($degrees, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss new file mode 100644 index 00000000..2679b071 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_path.scss @@ -0,0 +1,14 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); + //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss new file mode 100644 index 00000000..ff0988aa --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss new file mode 100644 index 00000000..1c700579 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_spinning.scss @@ -0,0 +1,29 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +@-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); + } +} diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss new file mode 100644 index 00000000..5d65d0ab --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss new file mode 100644 index 00000000..fd158494 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/_variables.scss @@ -0,0 +1,561 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.2.0" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-ambulance: "\f0f9"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-ban: "\f05e"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-o: "\f133"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-credit-card: "\f09d"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-database: "\f1c0"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edit: "\f044"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-square: "\f199"; +$fa-var-eraser: "\f12d"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-html5: "\f13b"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map-marker: "\f041"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medkit: "\f0fa"; +$fa-var-meh-o: "\f11a"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-openid: "\f19b"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f1a7"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-stop: "\f04d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-md: "\f0f0"; +$fa-var-users: "\f0c0"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-wheelchair: "\f193"; +$fa-var-wifi: "\f1eb"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-yahoo: "\f19e"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss new file mode 100644 index 00000000..3ca46735 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/font-awesome/scss/font-awesome.scss @@ -0,0 +1,17 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "spinning"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js new file mode 100644 index 00000000..91daa39d --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/freewall/freewall.js @@ -0,0 +1,1306 @@ +// created by Minh Nguyen; +// version 1.05; + +(function($) { + + // for zeptojs; + $.isNumeric == null && ($.isNumeric = function(src) { + return src != null && src.constructor === Number; + }); + + $.isFunction == null && ($.isFunction = function(src) { + return src != null && src instanceof Function; + }); + + var $W = $(window); + var $D = $(document); + + var layoutManager = { + // default setting; + defaultConfig: { + animate: false, + cellW: 100, // function(container) {return 100;} + cellH: 100, // function(container) {return 100;} + delay: 0, // slowdown active block; + engine: 'giot', // 'giot' is a person name; + fixSize: null, // resize + adjust = fill gap; + //fixSize: 0, resize but keep ratio = no fill gap; + //fixSize: 1, no resize + no adjust = no fill gap; + gutterX: 15, // width spacing between blocks; + gutterY: 15, // height spacing between blocks; + keepOrder: false, + selector: '> div', + draggable: false, + cacheSize: true, // caches the original size of block; + rightToLeft: false, + bottomToTop: false, + onGapFound: function() {}, + onComplete: function() {}, + onResize: function() {}, + onBlockDrag: function() {}, + onBlockMove: function() {}, + onBlockDrop: function() {}, + onBlockReady: function() {}, + onBlockFinish: function() {}, + onBlockActive: function() {}, + onBlockResize: function() {} + }, + plugin: {}, + totalGrid: 1, + transition: false, + loadBlock: function(item, setting) { + var runtime = setting.runtime; + var gutterX = runtime.gutterX; + var gutterY = runtime.gutterY; + var cellH = runtime.cellH; + var cellW = runtime.cellW; + var block = null; + var $item = $(item); + var active = $item.data("active"); + var fixPos = $item.attr('data-position'); + var fixSize = parseInt($item.attr('data-fixSize')); + var blockId = runtime.lastId++ + '-' + runtime.totalGrid; + + //ignore dragging block; + if ($item.hasClass('fw-float')) return; + $item.attr({id: blockId, 'data-delay': item.index}); + + //remove animation for speed render; + if (setting.animate && this.transition) { + this.setTransition(item, ""); + } + + isNaN(fixSize) && (fixSize = null); + (fixSize == null) && (fixSize = setting.fixSize); + var makeRound = (fixSize >= 1) ? "ceil" : "round"; + // store original size; + + $item.attr('data-height') == null && $item.attr('data-height', $item.height()); + $item.attr('data-width') == null && $item.attr('data-width', $item.width()); + var height = 1 * $item.attr('data-height'); + var width = 1 * $item.attr('data-width'); + + if (!setting.cacheSize) { + item.style.width = ""; + width = $item.width(); + + item.style.height = ""; + height = $item.height(); + } + + var col = !width ? 0 : Math[makeRound]((width + gutterX) / cellW); + var row = !height ? 0 : Math[makeRound]((height + gutterY) / cellH); + + // estimate size; + if (!fixSize && setting.cellH == 'auto') { + $item.width(cellW * col - gutterX); + item.style.height = ""; + height = $item.height(); + row = !height ? 0 : Math.round((height + gutterY) / cellH); + } + + if (!fixSize && setting.cellW == 'auto') { + $item.height(cellH * row - gutterY); + item.style.width = ""; + width = $item.width(); + col = !width ? 0 : Math.round((width + gutterX) / cellW); + } + + // for none resize block; + if ((fixSize != null) && (col > runtime.limitCol || row > runtime.limitRow)) { + block = null; + } else { + // get smallest width and smallest height of block; + // using for image runtime; + row && row < runtime.minHoB && (runtime.minHoB = row); + col && col < runtime.minWoB && (runtime.minWoB = col); + + // get biggest width and biggest height of block; + row > runtime.maxHoB && (runtime.maxHoB = row); + col > runtime.maxWoB && (runtime.maxWoB = col); + + width == 0 && (col = 0); + height == 0 && (row = 0); + + block = { + resize: false, + id: blockId, + width: col, + height: row, + fixSize: fixSize + }; + + // for fix position; + if (fixPos) { + fixPos = fixPos.split("-"); + block.y = 1 * fixPos[0]; + block.x = 1 * fixPos[1]; + block.width = fixSize != null ? col : Math.min(col, runtime.limitCol - block.x); + block.height = fixSize != null ? row : Math.min(row, runtime.limitRow - block.y); + var holeId = block.y + "-" + block.x + "-" + block.width + "-" + block.height; + if (active) { + runtime.holes[holeId] = { + id: block.id, + top: block.y, + left: block.x, + width: block.width, + height: block.height + }; + this.setBlock(block, setting); + } else { + delete runtime.holes[holeId]; + } + + } + } + + // for css animation; + if ($item.attr("data-state") == null) { + $item.attr("data-state", "init"); + } else { + $item.attr("data-state", "move"); + } + + setting.onBlockReady.call(item, block, setting); + + return (fixPos && active) ? null : block; + }, + setBlock: function(block, setting) { + var runtime = setting.runtime; + var gutterX = runtime.gutterX; + var gutterY = runtime.gutterY; + var height = block.height; + var width = block.width; + var cellH = runtime.cellH; + var cellW = runtime.cellW; + var x = block.x; + var y = block.y; + + if (setting.rightToLeft) { + x = runtime.limitCol - x - width; + } + if (setting.bottomToTop) { + y = runtime.limitRow - y - height; + } + + var realBlock = { + fixSize: block.fixSize, + resize: block.resize, + top: y * cellH, + left: x * cellW, + width: cellW * width - gutterX, + height: cellH * height - gutterY + }; + + realBlock.top = 1 * realBlock.top.toFixed(2); + realBlock.left = 1 * realBlock.left.toFixed(2); + realBlock.width = 1 * realBlock.width.toFixed(2); + realBlock.height = 1 * realBlock.height.toFixed(2); + + //runtime.length += 1; + block.id && (runtime.blocks[block.id] = realBlock); + + // for append feature; + return realBlock; + }, + showBlock: function(item, setting) { + var runtime = setting.runtime; + var method = setting.animate && !this.transition ? 'animate' : 'css'; + var block = runtime.blocks[item.id]; + var $item = $(item); + var self = this; + var start = $item.attr("data-state") != "move"; + var trans = start ? "width 0.5s, height 0.5s" : "top 0.5s, left 0.5s, width 0.5s, height 0.5s, opacity 0.5s"; + + item.delay && clearTimeout(item.delay); + //ignore dragging block; + if ($item.hasClass('fw-float')) return; + + // kill the old transition; + self.setTransition(item, ""); + item.style.position = "absolute"; + setting.onBlockActive.call(item, block, setting); + + function action() { + // start to arrange; + start && $item.attr("data-state", "start"); + // add animation by using css3 transition; + if (setting.animate && self.transition) { + self.setTransition(item, trans); + } + + // for hidden block; + if (!block) { + //var position = $item.position(); <= make speed so slow; + var height = parseInt(item.style.height) || 0; + var width = parseInt(item.style.width) || 0; + var left = parseInt(item.style.left) || 0; + var top = parseInt(item.style.top) || 0; + $item[method]({ + left: left + width / 2, + top: top + height / 2, + width: 0, + height: 0, + opacity: 0 + }); + } else { + if (block.fixSize) { + block.height = 1 * $item.attr("data-height"); + block.width = 1 * $item.attr("data-width"); + } + + $item["css"]({ + opacity: 1, + width: block.width, + height: block.height + }); + + // for animating by javascript; + $item[method]({ + top: block.top, + left: block.left + }); + + if ($item.attr('data-nested') != null) { + self.nestedGrid(item, setting); + } + } + + runtime.length -= 1; + + setting.onBlockFinish.call(item, block, setting); + + runtime.length == 0 && setting.onComplete.call(item, block, setting); + } + + block && block.resize && setting.onBlockResize.call(item, block, setting); + + setting.delay > 0 ? (item.delay = setTimeout(action, setting.delay * $item.attr("data-delay"))) : action(); + }, + nestedGrid: function(item, setting) { + var innerWall, $item = $(item), runtime = setting.runtime; + var gutterX = $item.attr("data-gutterX") || setting.gutterX; + var gutterY = $item.attr("data-gutterY") || setting.gutterY; + var method = $item.attr("data-method") || "fitZone"; + var nested = $item.attr('data-nested') || "> div"; + var cellH = $item.attr("data-cellH") || setting.cellH; + var cellW = $item.attr("data-cellW") || setting.cellW; + var block = runtime.blocks[item.id]; + + if (block) { + innerWall = new freewall($item); + innerWall.reset({ + cellH: cellH, + cellW: cellW, + gutterX: 1 * gutterX, + gutterY: 1 * gutterY, + selector: nested, + cacheSize: false + }); + + switch (method) { + case "fitHeight": + innerWall[method](block.height); + break; + case "fitWidth": + innerWall[method](block.width); + break; + case "fitZone": + innerWall[method](block.width, block.height); + break; + } + } + }, + adjustBlock: function(block, setting) { + var runtime = setting.runtime; + var gutterX = runtime.gutterX; + var gutterY = runtime.gutterY; + var $item = $("#" + block.id); + var cellH = runtime.cellH; + var cellW = runtime.cellW; + + if (setting.cellH == 'auto') { + $item.width(block.width * cellW - gutterX); + $item[0].style.height = ""; + block.height = Math.round(($item.height() + gutterY) / cellH); + } + }, + adjustUnit: function(width, height, setting) { + var gutterX = setting.gutterX; + var gutterY = setting.gutterY; + var runtime = setting.runtime; + var cellW = setting.cellW; + var cellH = setting.cellH; + + $.isFunction(cellW) && (cellW = cellW(width)); + cellW = 1 * cellW; + !$.isNumeric(cellW) && (cellW = 1); + + $.isFunction(cellH) && (cellH = cellH(height)); + cellH = 1 * cellH; + !$.isNumeric(cellH) && (cellH = 1); + + if ($.isNumeric(width)) { + // adjust cell width via container; + cellW < 1 && (cellW = cellW * width); + + // estimate total columns; + var limitCol = Math.max(1, Math.floor(width / cellW)); + + // adjust unit size for fit width; + if (!$.isNumeric(gutterX)) { + gutterX = (width - limitCol * cellW) / Math.max(1, (limitCol - 1)); + gutterX = Math.max(0, gutterX); + } + + limitCol = Math.floor((width + gutterX) / cellW); + runtime.cellW = (width + gutterX) / Math.max(limitCol, 1); + runtime.cellS = runtime.cellW / cellW; + runtime.gutterX = gutterX; + runtime.limitCol = limitCol; + } + + if ($.isNumeric(height)) { + // adjust cell height via container; + cellH < 1 && (cellH = cellH * height); + + // estimate total rows; + var limitRow = Math.max(1, Math.floor(height / cellH)); + + // adjust size unit for fit height; + if (!$.isNumeric(gutterY)) { + gutterY = (height - limitRow * cellH) / Math.max(1, (limitRow - 1)); + gutterY = Math.max(0, gutterY); + } + + limitRow = Math.floor((height + gutterY) / cellH); + runtime.cellH = (height + gutterY) / Math.max(limitRow, 1); + runtime.cellS = runtime.cellH / cellH; + runtime.gutterY = gutterY; + runtime.limitRow = limitRow; + } + + if (!$.isNumeric(width)) { + // adjust cell width via cell height; + cellW < 1 && (cellW = runtime.cellH); + runtime.cellW = cellW != 1 ? cellW * runtime.cellS : 1; + runtime.gutterX = gutterX; + runtime.limitCol = 666666; + } + + if (!$.isNumeric(height)) { + // adjust cell height via cell width; + cellH < 1 && (cellH = runtime.cellW); + runtime.cellH = cellH != 1 ? cellH * runtime.cellS : 1; + runtime.gutterY = gutterY; + runtime.limitRow = 666666; + } + }, + resetGrid: function(runtime) { + runtime.blocks = {}; + runtime.length = 0; + runtime.cellH = 0; + runtime.cellW = 0; + runtime.lastId = 1; + runtime.matrix = {}; + runtime.totalCol = 0; + runtime.totalRow = 0; + }, + setDraggable: function(item, option) { + var isTouch = false; + var config = { + startX: 0, //start clientX; + startY: 0, + top: 0, + left: 0, + handle: null, + onDrop: function() {}, + onDrag: function() {}, + onStart: function() {} + }; + + $(item).each(function() { + var setting = $.extend({}, config, option); + var handle = setting.handle || this; + var ele = this; + var $E = $(ele); + var $H = $(handle); + + var posStyle = $E.css("position"); + posStyle != "absolute" && $E.css("position", "relative"); + + + function mouseDown(evt) { + evt.stopPropagation(); + evt = evt.originalEvent; + + if (evt.touches) { + isTouch = true; + evt = evt.changedTouches[0]; + } + + if (evt.button != 2 && evt.which != 3) { + setting.onStart.call(ele, evt); + + setting.startX = evt.clientX; + setting.startY = evt.clientY; + setting.top = parseInt($E.css("top")) || 0; + setting.left = parseInt($E.css("left")) || 0; + + $D.bind("mouseup touchend", mouseUp); + $D.bind("mousemove touchmove", mouseMove); + } + + return false; + }; + + + function mouseMove(evt) { + evt = evt.originalEvent; + isTouch && (evt = evt.changedTouches[0]); + + $E.css({ + top: setting.top - (setting.startY - evt.clientY), + left: setting.left - (setting.startX - evt.clientX) + }); + + setting.onDrag.call(ele, evt); + }; + + function mouseUp(evt) { + evt = evt.originalEvent; + isTouch && (evt = evt.changedTouches[0]); + + setting.onDrop.call(ele, evt); + + $D.unbind("mouseup touchend", mouseUp); + $D.unbind("mousemove touchmove", mouseMove); + }; + + // ignore drag drop on text field; + $E.find("iframe, form, input, textarea, .ignore-drag") + .each(function() { + $(this).on("touchstart mousedown", function(evt) { + evt.stopPropagation(); + }); + }); + + $D.unbind("mouseup touchend", mouseUp); + $D.unbind("mousemove touchmove", mouseMove); + $H.unbind("mousedown touchstart").bind("mousedown touchstart", mouseDown); + + }); + }, + setTransition: function(item, trans) { + var style = item.style; + var $item = $(item); + + // remove animation; + if (!this.transition && $item.stop) { + $item.stop(); + } else if (style.webkitTransition != null) { + style.webkitTransition = trans; + } else if (style.MozTransition != null) { + style.MozTransition = trans; + } else if (style.msTransition != null) { + style.msTransition = trans; + } else if (style.OTransition != null) { + style.OTransition = trans; + } else { + style.transition = trans; + } + }, + getFreeArea: function(t, l, runtime) { + var maxY = Math.min(t + runtime.maxHoB, runtime.limitRow); + var maxX = Math.min(l + runtime.maxWoB, runtime.limitCol); + var minX = maxX; + var minY = maxY; + var matrix = runtime.matrix; + + // find limit zone by horizon; + for (var y = t; y < minY; ++y) { + for (var x = l; x < maxX; ++x) { + if (matrix[y + '-' + x]) { + (l < x && x < minX) && (minX = x); + } + } + } + + // find limit zone by vertical; + for (var y = t; y < maxY; ++y) { + for (var x = l; x < minX; ++x) { + if (matrix[y + '-' + x]) { + (t < y && y < minY) && (minY = y); + } + } + } + + return { + top: t, + left: l, + width: minX - l, + height: minY - t + }; + + }, + setWallSize: function(runtime, container) { + var totalRow = runtime.totalRow; + var totalCol = runtime.totalCol; + var gutterY = runtime.gutterY; + var gutterX = runtime.gutterX; + var cellH = runtime.cellH; + var cellW = runtime.cellW; + var totalWidth = Math.max(0, cellW * totalCol - gutterX); + var totalHeight = Math.max(0, cellH * totalRow - gutterY); + + container.attr({ + 'data-total-col': totalCol, + 'data-total-row': totalRow, + 'data-wall-width': Math.ceil(totalWidth), + 'data-wall-height': Math.ceil(totalHeight) + }); + + if (runtime.limitCol < runtime.limitRow) { + // do not set height with nesting grid; + !container.attr("data-height") && container.height(Math.ceil(totalHeight)); + } + } + }; + + + + var engine = { + // Giot just a person name; + giot: function(items, setting) { + var runtime = setting.runtime, + row = runtime.limitRow, + col = runtime.limitCol, + x = 0, + y = 0, + maxX = runtime.totalCol, + maxY = runtime.totalRow, + wall = {}, + holes = runtime.holes, + block = null, + matrix = runtime.matrix, + bigLoop = Math.max(col, row), + freeArea = null, + misBlock = null, + fitWidth = col < row ? 1 : 0, + lastBlock = null, + smallLoop = Math.min(col, row); + + // fill area with top, left, width, height; + function fillMatrix(id, t, l, w, h) { + for (var y = t; y < t + h;) { + for (var x = l; x < l + w;) { + matrix[y + '-' + x] = id; + ++x > maxX && (maxX = x); + } + ++y > maxY && (maxY = y); + } + } + + // set holes on the wall; + for (var i in holes) { + if (holes.hasOwnProperty(i)) { + fillMatrix(holes[i]["id"] || true, holes[i]['top'], holes[i]['left'], holes[i]['width'], holes[i]['height']); + } + } + + + for (var b = 0; b < bigLoop; ++b) { + if (!items.length) break; + fitWidth ? (y = b) : (x = b); + lastBlock = null; + + for (var s = 0; s < smallLoop; ++s) { + if (!items.length) break; + block = null; + fitWidth ? (x = s) : (y = s); + if (runtime.matrix[y + '-' + x]) continue; + freeArea = layoutManager.getFreeArea(y, x, runtime); + + // trying resize last block to fit free area; + if (setting.fixSize == null) { + // resize near block to fill gap; + if (lastBlock && !fitWidth && runtime.minHoB > freeArea.height) { + lastBlock.height += freeArea.height; + lastBlock.resize = true; + fillMatrix(lastBlock.id, lastBlock.y, lastBlock.x, lastBlock.width, lastBlock.height); + layoutManager.setBlock(lastBlock, setting); + continue; + } else if (lastBlock && fitWidth && runtime.minWoB > freeArea.width) { + lastBlock.width += freeArea.width; + lastBlock.resize = true; + fillMatrix(lastBlock.id, lastBlock.y, lastBlock.x, lastBlock.width, lastBlock.height); + layoutManager.setBlock(lastBlock, setting); + continue; + } + } + + // get the next block to keep order; + if (setting.keepOrder) { + block = items.shift(); + block.resize = true; + } else { + // find a suitable block to fit gap; + for (var i = 0; i < items.length; ++i) { + if (items[i].height > freeArea.height) continue; + if (items[i].width > freeArea.width) continue; + block = items.splice(i, 1)[0]; + break; + } + + // trying resize the other block to fit gap; + if (block == null && setting.fixSize == null) { + // get other block fill to gap; + for (var i = 0; i < items.length; ++i) { + if (items[i]['fixSize'] != null) continue; + block = items.splice(i, 1)[0]; + block.resize = true; + break; + } + + } + } + + + if (block != null) { + // resize block with free area; + if (block.resize) { + if (fitWidth) { + block.width = freeArea.width; + if (setting.cellH == 'auto') { + layoutManager.adjustBlock(block, setting); + } + // for fitZone; + block.height = Math.min(block.height, freeArea.height); + } else { + block.height = freeArea.height; + // for fitZone; + block.width = Math.min(block.width, freeArea.width); + } + } + + wall[block.id] = { + id: block.id, + x: x, + y: y, + width: block.width, + height: block.height, + resize: block.resize, + fixSize: block.fixSize + }; + + // keep success block for next round; + lastBlock = wall[block.id]; + + fillMatrix(lastBlock.id, lastBlock.y, lastBlock.x, lastBlock.width, lastBlock.height); + layoutManager.setBlock(lastBlock, setting); + } else { + // get expect area; + var misBlock = { + x: x, + y: y, + fixSize: 0 + }; + if (fitWidth) { + misBlock.width = freeArea.width; + misBlock.height = 0; + var lastX = x - 1; + var lastY = y; + + while (matrix[lastY + '-' + lastX]) { + matrix[lastY + '-' + x] = true; + misBlock.height += 1; + lastY += 1; + } + } else { + misBlock.height = freeArea.height; + misBlock.width = 0; + var lastY = y - 1; + var lastX = x; + + while (matrix[lastY + '-' + lastX]) { + matrix[y + '-' + lastX] = true; + misBlock.width += 1; + lastX += 1; + } + } + setting.onGapFound(layoutManager.setBlock(misBlock, setting), setting); + } + } + + } + + runtime.matrix = matrix; + runtime.totalRow = maxY; + runtime.totalCol = maxX; + } + }; + + + + window.freewall = function(selector) { + + var container = $(selector); + if (container.css('position') == 'static') { + container.css('position', 'relative'); + } + var MAX = Number.MAX_VALUE; + var klass = this; + // increase the instance index; + layoutManager.totalGrid += 1; + + var setting = $.extend({}, layoutManager.defaultConfig); + var runtime = { + blocks: {}, // store all items; + events: {}, // store custome events; + matrix: {}, + holes: {}, // forbidden zone; + + cellW: 0, + cellH: 0, // unit adjust; + cellS: 1, // unit scale; + + filter: '', // filter selector; + + lastId: 0, + length: 0, + + maxWoB: 0, // max width of block; + maxHoB: 0, + minWoB: MAX, + minHoB: MAX, // min height of block; + + running: 0, // flag to check layout arranging; + + gutterX: 15, + gutterY: 15, + + totalCol: 0, + totalRow: 0, + + limitCol: 666666, // maximum column; + limitRow: 666666, + + currentMethod: null, + currentArguments: [] + }; + setting.runtime = runtime; + runtime.totalGrid = layoutManager.totalGrid; + + // check browser support transition; + var bodyStyle = document.body.style; + if (!layoutManager.transition) { + (bodyStyle.webkitTransition != null || + bodyStyle.MozTransition != null || + bodyStyle.msTransition != null || + bodyStyle.OTransition != null || + bodyStyle.transition != null) && + (layoutManager.transition = true); + } + + + function setDraggable(item) { + + var gutterX = runtime.gutterX; + var gutterY = runtime.gutterY; + var cellH = runtime.cellH; + var cellW = runtime.cellW; + var $item = $(item); + var handle = $item.find($item.attr("data-handle")); + layoutManager.setDraggable(item, { + handle: handle[0], + onStart: function(event) { + if (setting.animate && layoutManager.transition) { + layoutManager.setTransition(this, ""); + } + $item.css('z-index', 9999).addClass('fw-float'); + + setting.onBlockDrag.call(item, event); + }, + onDrag: function(event, tracker) { + var position = $item.position(); + var top = Math.round(position.top / cellH); + var left = Math.round(position.left / cellW); + var width = Math.round($item.width() / cellW); + var height = Math.round($item.height() / cellH); + top = Math.min(Math.max(0, top), runtime.limitRow - height); + left = Math.min(Math.max(0, left), runtime.limitCol - width); + klass.setHoles({top: top, left: left, width: width, height: height}); + klass.refresh(); + + setting.onBlockMove.call(item, event); + }, + onDrop: function(event) { + var position = $item.position(); + var top = Math.round(position.top / cellH); + var left = Math.round(position.left / cellW); + var width = Math.round($item.width() / cellW); + var height = Math.round($item.height() / cellH); + top = Math.min(Math.max(0, top), runtime.limitRow - height); + left = Math.min(Math.max(0, left), runtime.limitCol - width); + + $item.removeClass('fw-float'); + $item.css({ + zIndex: "auto", + top: top * cellH, + left: left * cellW + }); + + //check old drag element; + var x, y, key, oldDropId; + for (y = 0; y < height; ++y) { + for (x = 0; x < width; ++x) { + key = (y + top) + "-" + (x + left); + oldDropId = runtime.matrix[key]; + if (oldDropId && oldDropId != true) { + $("#" + oldDropId).removeAttr("data-position"); + } + } + } + + runtime.holes = {}; + + $item.attr({ + "data-width": $item.width(), + "data-height": $item.height(), + "data-position": top + "-" + left + }); + + klass.refresh(); + + setting.onBlockDrop.call(item, event); + } + }); + } + + + $.extend(klass, { + + addCustomEvent: function(name, func) { + var events = runtime.events; + name = name.toLowerCase(); + !events[name] && (events[name] = []); + func.eid = events[name].length; + events[name].push(func); + return this; + }, + + appendBlock: function(items) { + var allBlock = $(items).appendTo(container); + var block = null; + var activeBlock = []; + + if (runtime.currentMethod) { + allBlock.each(function(index, item) { + item.index = ++index; + block = layoutManager.loadBlock(item, setting); + block && activeBlock.push(block); + }); + + engine[setting.engine](activeBlock, setting); + + layoutManager.setWallSize(runtime, container); + + runtime.length = allBlock.length; + + allBlock.each(function(index, item) { + layoutManager.showBlock(item, setting); + if (setting.draggable || item.getAttribute('data-draggable')) { + setDraggable(item); + } + }); + } + }, + /* + add one or more blank area (hole) on layout; + example: + + wall.appendHoles({ + top: 10, + left: 36, + width: 2, + height: 6 + }); + + wall.appendHoles([ + { + top: 16, + left: 16, + width: 8, + height: 2 + }, + { + top: 10, + left: 36, + width: 2, + height: 6 + } + ]); + + */ + appendHoles: function(holes) { + var newHoles = [].concat(holes), h = {}, i; + for (i = 0; i < newHoles.length; ++i) { + h = newHoles[i]; + runtime.holes[h.top + "-" + h.left + "-" + h.width + "-" + h.height] = h; + } + return this; + }, + + container: container, + + destroy: function() { + var allBlock = container.find(setting.selector).removeAttr('id'), + block = null, + activeBlock = []; + + allBlock.each(function(index, item) { + $item = $(item); + var width = 1 * $item.attr('data-width') || ""; + var height = 1 * $item.attr('data-height') || ""; + $item.width(width).height(height).css({ + position: 'static' + }); + }); + }, + + fillHoles: function(holes) { + if (arguments.length == 0) { + runtime.holes = {}; + } else { + var newHoles = [].concat(holes), h = {}, i; + for (i = 0; i < newHoles.length; ++i) { + h = newHoles[i]; + delete runtime.holes[h.top + "-" + h.left + "-" + h.width + "-" + h.height]; + } + } + return this; + }, + + filter: function(filter) { + runtime.filter = filter; + runtime.currentMethod && this.refresh(); + return this; + }, + + fireEvent: function(name, object, setting) { + var events = runtime.events; + name = name.toLowerCase(); + if (events[name] && events[name].length) { + for (var i = 0; i < events[name].length; ++i) { + events[name][i].call(this, object, setting); + } + } + return this; + }, + + fitHeight: function(height) { + var allBlock = container.find(setting.selector).removeAttr('id'), + block = null, + activeBlock = []; + + height = height ? height : container.height() || $W.height(); + + runtime.currentMethod = arguments.callee; + runtime.currentArguments = arguments; + + layoutManager.resetGrid(runtime); + layoutManager.adjustUnit('auto', height, setting); + + if (runtime.filter) { + allBlock.data('active', 0); + allBlock.filter(runtime.filter).data('active', 1); + } else { + allBlock.data('active', 1); + } + + allBlock.each(function(index, item) { + var $item = $(item); + item.index = ++index; + block = layoutManager.loadBlock(item, setting); + block && $item.data("active") && activeBlock.push(block); + }); + + klass.fireEvent('onGridReady', container, setting); + + engine[setting.engine](activeBlock, setting); + + layoutManager.setWallSize(runtime, container); + + klass.fireEvent('onGridArrange', container, setting); + + runtime.length = allBlock.length; + + allBlock.each(function(index, item) { + layoutManager.showBlock(item, setting); + if (setting.draggable || item.getAttribute('data-draggable')) { + setDraggable(item); + } + }); + }, + + fitWidth: function(width) { + var allBlock = container.find(setting.selector).removeAttr('id'), + block = null, + activeBlock = []; + + width = width ? width : container.width() || $W.width(); + + runtime.currentMethod = arguments.callee; + runtime.currentArguments = arguments; + + layoutManager.resetGrid(runtime); + layoutManager.adjustUnit(width, 'auto', setting); + + if (runtime.filter) { + allBlock.data('active', 0); + allBlock.filter(runtime.filter).data('active', 1); + } else { + allBlock.data('active', 1); + } + + allBlock.each(function(index, item) { + var $item = $(item); + item.index = ++index; + block = layoutManager.loadBlock(item, setting); + block && $item.data("active") && activeBlock.push(block); + }); + + klass.fireEvent('onGridReady', container, setting); + + engine[setting.engine](activeBlock, setting); + + layoutManager.setWallSize(runtime, container); + + klass.fireEvent('onGridArrange', container, setting); + + runtime.length = allBlock.length; + + allBlock.each(function(index, item) { + layoutManager.showBlock(item, setting); + if (setting.draggable || item.getAttribute('data-draggable')) { + setDraggable(item); + } + }); + }, + + fitZone: function(width, height) { + var allBlock = container.find(setting.selector).removeAttr('id'), + block = null, + activeBlock = []; + + height = height ? height : container.height() || $W.height(); + width = width ? width : container.width() || $W.width(); + + runtime.currentMethod = arguments.callee; + runtime.currentArguments = arguments; + + layoutManager.resetGrid(runtime); + layoutManager.adjustUnit(width, height, setting); + + if (runtime.filter) { + allBlock.data('active', 0); + allBlock.filter(runtime.filter).data('active', 1); + } else { + allBlock.data('active', 1); + } + + allBlock.each(function(index, item) { + var $item = $(item); + item.index = ++index; + block = layoutManager.loadBlock(item, setting); + block && $item.data("active") && activeBlock.push(block); + }); + + klass.fireEvent('onGridReady', container, setting); + + engine[setting.engine](activeBlock, setting); + + layoutManager.setWallSize(runtime, container); + + klass.fireEvent('onGridArrange', container, setting); + + runtime.length = allBlock.length; + + allBlock.each(function(index, item) { + layoutManager.showBlock(item, setting); + if (setting.draggable || item.getAttribute('data-draggable')) { + setDraggable(item); + } + }); + }, + + /* + set block with special position, the top and left are multiple of unit width/height; + example: + + wall.fixPos({ + top: 0, + left: 0, + block: $('.free') + }); + */ + fixPos: function(option) { + $(option.block).attr({'data-position': option.top + "-" + option.left}); + return this; + }, + + /* + set block with special size, the width and height are multiple of unit width/height; + example: + + wall.fixSize({ + height: 5, + width: 2, + block: $('.free') + }); + */ + fixSize: function(option) { + option.height != null && $(option.block).attr({'data-height': option.height}); + option.width != null && $(option.block).attr({'data-width': option.width}); + return this; + }, + + prepend: function(items) { + container.prepend(items); + runtime.currentMethod && this.refresh(); + return this; + }, + + refresh: function() { + var params = arguments.length ? arguments : runtime.currentArguments; + runtime.currentMethod == null && (runtime.currentMethod = this.fitWidth); + runtime.currentMethod.apply(this, Array.prototype.slice.call(params, 0)); + return this; + }, + + /* + custom layout setting; + example: + + wall.reset({ + selector: '.brick', + animate: true, + cellW: 160, + cellH: 160, + delay: 50, + onResize: function() { + wall.fitWidth(); + } + }); + */ + reset: function(option) { + $.extend(setting, option); + return this; + }, + + /* + create one or more blank area (hole) on layout; + example: + + wall.setHoles({ + top: 2, + left: 2, + width: 2, + height: 2 + }); + */ + + setHoles: function(holes) { + var newHoles = [].concat(holes), h = {}, i; + runtime.holes = {}; + for (i = 0; i < newHoles.length; ++i) { + h = newHoles[i]; + runtime.holes[h.top + "-" + h.left + "-" + h.width + "-" + h.height] = h; + } + return this; + }, + + unFilter: function() { + delete runtime.filter; + this.refresh(); + return this; + } + }); + + container.attr('data-min-width', Math.floor($W.width() / 80) * 80); + // execute plugins; + for (var i in layoutManager.plugin) { + if (layoutManager.plugin.hasOwnProperty(i)) { + layoutManager.plugin[i].call(klass, setting, container); + } + } + + // setup resize event; + $W.resize(function() { + if (runtime.running) return; + runtime.running = 1; + setTimeout(function() { + runtime.running = 0; + setting.onResize.call(klass, container); + }, 122); + container.attr('data-min-width', Math.floor($W.width() / 80) * 80); + }); + }; + + /* + add default setting; + example: + + freewall.addConfig({ + offsetLeft: 0 + }); + */ + freewall.addConfig = function(newConfig) { + // add default setting; + $.extend(layoutManager.defaultConfig, newConfig); + }; + + + /* + support create new arrange algorithm; + example: + + freewall.createEngine({ + slice: function(items, setting) { + // slice engine; + } + }); + */ + freewall.createEngine = function(engineData) { + // create new engine; + $.extend(engine, engineData); + }; + + /* + support create new plugin; + example: + + freewall.createPlugin({ + centering: function(setting, container) { + console.log(this); + console.log(setting); + } + })l + */ + freewall.createPlugin = function(pluginData) { + // register new plugin; + $.extend(layoutManager.plugin, pluginData); + }; + + /* + support access helper function; + example: + + freewall.getMethod('setBlock')(block, setting); + */ + freewall.getMethod = function(method) { + // get helper method; + return layoutManager[method]; + }; + +})(window.Zepto || window.jQuery); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js new file mode 100644 index 00000000..6fa44096 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-blockui/jquery.blockui.min.js @@ -0,0 +1,15 @@ +/*! + * jQuery blockUI plugin + * Version 2.66.0-2013.10.09 + * Requires jQuery v1.7 or later + * + * Examples at: http://malsup.com/jquery/block/ + * Copyright (c) 2007-2013 M. Alsup + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Thanks to Amir-Hossein Sobhi for some excellent contributions! + */ + +!function(){"use strict";function e(e){function t(t,n){var s,h,k=t==window,y=n&&void 0!==n.message?n.message:void 0;if(n=e.extend({},e.blockUI.defaults,n||{}),!n.ignoreIfBlocked||!e(t).data("blockUI.isBlocked")){if(n.overlayCSS=e.extend({},e.blockUI.defaults.overlayCSS,n.overlayCSS||{}),s=e.extend({},e.blockUI.defaults.css,n.css||{}),n.onOverlayClick&&(n.overlayCSS.cursor="pointer"),h=e.extend({},e.blockUI.defaults.themedCSS,n.themedCSS||{}),y=void 0===y?n.message:y,k&&p&&o(window,{fadeOut:0}),y&&"string"!=typeof y&&(y.parentNode||y.jquery)){var m=y.jquery?y[0]:y,v={};e(t).data("blockUI.history",v),v.el=m,v.parent=m.parentNode,v.display=m.style.display,v.position=m.style.position,v.parent&&v.parent.removeChild(m)}e(t).data("blockUI.onUnblock",n.onUnblock);var g,I,w,U,x=n.baseZ;g=r||n.forceIframe?e(''):e(''),I=n.theme?e(''):e(''),n.theme&&k?(U='"):n.theme?(U='"):U=k?'':'',w=e(U),y&&(n.theme?(w.css(h),w.addClass("ui-widget-content")):w.css(s)),n.theme||I.css(n.overlayCSS),I.css("position",k?"fixed":"absolute"),(r||n.forceIframe)&&g.css("opacity",0);var C=[g,I,w],S=k?e("body"):e(t);e.each(C,function(){this.appendTo(S)}),n.theme&&n.draggable&&e.fn.draggable&&w.draggable({handle:".ui-dialog-titlebar",cancel:"li"});var O=f&&(!e.support.boxModel||e("object,embed",k?null:t).length>0);if(u||O){if(k&&n.allowBodyStretch&&e.support.boxModel&&e("html,body").css("height","100%"),(u||!e.support.boxModel)&&!k)var E=d(t,"borderTopWidth"),T=d(t,"borderLeftWidth"),M=E?"(0 - "+E+")":0,B=T?"(0 - "+T+")":0;e.each(C,function(e,t){var o=t[0].style;if(o.position="absolute",2>e)k?o.setExpression("height","Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:"+n.quirksmodeOffsetHack+') + "px"'):o.setExpression("height",'this.parentNode.offsetHeight + "px"'),k?o.setExpression("width",'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):o.setExpression("width",'this.parentNode.offsetWidth + "px"'),B&&o.setExpression("left",B),M&&o.setExpression("top",M);else if(n.centerY)k&&o.setExpression("top",'(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'),o.marginTop=0;else if(!n.centerY&&k){var i=n.css&&n.css.top?parseInt(n.css.top,10):0,s="((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "+i+') + "px"';o.setExpression("top",s)}})}if(y&&(n.theme?w.find(".ui-widget-content").append(y):w.append(y),(y.jquery||y.nodeType)&&e(y).show()),(r||n.forceIframe)&&n.showOverlay&&g.show(),n.fadeIn){var j=n.onBlock?n.onBlock:c,H=n.showOverlay&&!y?j:c,z=y?j:c;n.showOverlay&&I._fadeIn(n.fadeIn,H),y&&w._fadeIn(n.fadeIn,z)}else n.showOverlay&&I.show(),y&&w.show(),n.onBlock&&n.onBlock();if(i(1,t,n),k?(p=w[0],b=e(n.focusableElements,p),n.focusInput&&setTimeout(l,20)):a(w[0],n.centerX,n.centerY),n.timeout){var W=setTimeout(function(){k?e.unblockUI(n):e(t).unblock(n)},n.timeout);e(t).data("blockUI.timeout",W)}}}function o(t,o){var s,l=t==window,a=e(t),d=a.data("blockUI.history"),c=a.data("blockUI.timeout");c&&(clearTimeout(c),a.removeData("blockUI.timeout")),o=e.extend({},e.blockUI.defaults,o||{}),i(0,t,o),null===o.onUnblock&&(o.onUnblock=a.data("blockUI.onUnblock"),a.removeData("blockUI.onUnblock"));var r;r=l?e("body").children().filter(".blockUI").add("body > .blockUI"):a.find(">.blockUI"),o.cursorReset&&(r.length>1&&(r[1].style.cursor=o.cursorReset),r.length>2&&(r[2].style.cursor=o.cursorReset)),l&&(p=b=null),o.fadeOut?(s=r.length,r.stop().fadeOut(o.fadeOut,function(){0===--s&&n(r,d,o,t)})):n(r,d,o,t)}function n(t,o,n,i){var s=e(i);if(!s.data("blockUI.isBlocked")){t.each(function(){this.parentNode&&this.parentNode.removeChild(this)}),o&&o.el&&(o.el.style.display=o.display,o.el.style.position=o.position,o.parent&&o.parent.appendChild(o.el),s.removeData("blockUI.history")),s.data("blockUI.static")&&s.css("position","static"),"function"==typeof n.onUnblock&&n.onUnblock(i,n);var l=e(document.body),a=l.width(),d=l[0].style.width;l.width(a-1).width(a),l[0].style.width=d}}function i(t,o,n){var i=o==window,l=e(o);if((t||(!i||p)&&(i||l.data("blockUI.isBlocked")))&&(l.data("blockUI.isBlocked",t),i&&n.bindEvents&&(!t||n.showOverlay))){var a="mousedown mouseup keydown keypress keyup touchstart touchend touchmove";t?e(document).bind(a,n,s):e(document).unbind(a,s)}}function s(t){if("keydown"===t.type&&t.keyCode&&9==t.keyCode&&p&&t.data.constrainTabKey){var o=b,n=!t.shiftKey&&t.target===o[o.length-1],i=t.shiftKey&&t.target===o[0];if(n||i)return setTimeout(function(){l(i)},10),!1}var s=t.data,a=e(t.target);return a.hasClass("blockOverlay")&&s.onOverlayClick&&s.onOverlayClick(t),a.parents("div."+s.blockMsgClass).length>0?!0:0===a.parents().children().filter("div.blockUI").length}function l(e){if(b){var t=b[e===!0?b.length-1:0];t&&t.focus()}}function a(e,t,o){var n=e.parentNode,i=e.style,s=(n.offsetWidth-e.offsetWidth)/2-d(n,"borderLeftWidth"),l=(n.offsetHeight-e.offsetHeight)/2-d(n,"borderTopWidth");t&&(i.left=s>0?s+"px":"0"),o&&(i.top=l>0?l+"px":"0")}function d(t,o){return parseInt(e.css(t,o),10)||0}e.fn._fadeIn=e.fn.fadeIn;var c=e.noop||function(){},r=/MSIE/.test(navigator.userAgent),u=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent),f=(document.documentMode||0,e.isFunction(document.createElement("div").style.setExpression));e.blockUI=function(e){t(window,e)},e.unblockUI=function(e){o(window,e)},e.growlUI=function(t,o,n,i){var s=e('
    ');t&&s.append("

    "+t+"

    "),o&&s.append("

    "+o+"

    "),void 0===n&&(n=3e3);var l=function(t){t=t||{},e.blockUI({message:s,fadeIn:"undefined"!=typeof t.fadeIn?t.fadeIn:700,fadeOut:"undefined"!=typeof t.fadeOut?t.fadeOut:1e3,timeout:"undefined"!=typeof t.timeout?t.timeout:n,centerY:!1,showOverlay:!1,onUnblock:i,css:e.blockUI.defaults.growlCSS})};l();s.css("opacity");s.mouseover(function(){l({fadeIn:0,timeout:3e4});var t=e(".blockMsg");t.stop(),t.fadeTo(300,1)}).mouseout(function(){e(".blockMsg").fadeOut(1e3)})},e.fn.block=function(o){if(this[0]===window)return e.blockUI(o),this;var n=e.extend({},e.blockUI.defaults,o||{});return this.each(function(){var t=e(this);n.ignoreIfBlocked&&t.data("blockUI.isBlocked")||t.unblock({fadeOut:0})}),this.each(function(){"static"==e.css(this,"position")&&(this.style.position="relative",e(this).data("blockUI.static",!0)),this.style.zoom=1,t(this,o)})},e.fn.unblock=function(t){return this[0]===window?(e.unblockUI(t),this):this.each(function(){o(this,t)})},e.blockUI.version=2.66,e.blockUI.defaults={message:"

    Please wait...

    ",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1};var p=null,b=[]}"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],e):e(jQuery)}(); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js new file mode 100644 index 00000000..512203bf --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-cokie/jquery.cokie.min.js @@ -0,0 +1,9 @@ +/*! + * jQuery Cookie Plugin v1.3.1 + * https://github.com/carhartl/jquery-cookie + * Plugin file name changed to jquery.cokie.min to prevent blocking by ModSecurity module + * + * Copyright 2013 Klaus Hartl + * Released under the MIT license + */ +(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(e){var a=/\+/g;function d(g){return g}function b(g){return decodeURIComponent(g.replace(a," "))}function f(g){if(g.indexOf('"')===0){g=g.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\")}try{return c.json?JSON.parse(g):g}catch(h){}}var c=e.cookie=function(p,o,u){if(o!==undefined){u=e.extend({},c.defaults,u);if(typeof u.expires==="number"){var q=u.expires,s=u.expires=new Date();s.setDate(s.getDate()+q)}o=c.json?JSON.stringify(o):String(o);return(document.cookie=[c.raw?p:encodeURIComponent(p),"=",c.raw?o:encodeURIComponent(o),u.expires?"; expires="+u.expires.toUTCString():"",u.path?"; path="+u.path:"",u.domain?"; domain="+u.domain:"",u.secure?"; secure":""].join(""))}var g=c.raw?d:b;var r=document.cookie.split("; ");var v=p?undefined:{};for(var n=0,k=r.length;n + + + + + +``` + +Alternatively include jQuery and the plugin via requirejs in your module. + +```js +define(["jquery", "jquery.validate"], function( $ ) { + $("form").validate(); +}); +``` + +For more information on how to setup a rules and customizations, [check the documentation](http://jqueryvalidation.org/documentation/). + +## Reporting an Issue + +**IMPORTANT NOTE ABOUT EMAIL VALIDATION**. As of version 1.12.0 this plugin is using the same regular expression that the [HTML5 specification suggests for browsers to use](http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29). We will follow their lead and use the same check. If you think the specification is wrong, please report the issue to them. + +1. Make sure the problem you're addressing is reproducible. +2. Use http://jsbin.com or http://jsfiddle.net to provide a test page. +3. Indicate what browsers the issue can be reproduced in. **Note: IE Compatibilty modes issues will not be addressed.** +4. What version of the plug-in is the issue reproducible in. Is it reproducible after updating to the latest version. + +## Contributing + +See the [Contributing Guide](CONTRIBUTING.md) + +## License +Copyright (c) 2013 Jörn Zaefferer +Licensed under the MIT license. diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js new file mode 100644 index 00000000..5862dcd4 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.js @@ -0,0 +1,617 @@ +/*! + * jQuery Validation Plugin 1.11.1 + * + * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ + * http://docs.jquery.com/Plugins/Validation + * + * Copyright 2013 Jörn Zaefferer + * Released under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ + +(function() { + + function stripHtml(value) { + // remove html tags and space chars + return value.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' ') + // remove punctuation + .replace(/[.(),;:!?%#$'"_+=\/\-]*/g,''); + } + jQuery.validator.addMethod("maxWords", function(value, element, params) { + return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params; + }, jQuery.validator.format("Please enter {0} words or less.")); + + jQuery.validator.addMethod("minWords", function(value, element, params) { + return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params; + }, jQuery.validator.format("Please enter at least {0} words.")); + + jQuery.validator.addMethod("rangeWords", function(value, element, params) { + var valueStripped = stripHtml(value); + var regex = /\b\w+\b/g; + return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1]; + }, jQuery.validator.format("Please enter between {0} and {1} words.")); + +}()); + +jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) { + return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); +}, "Letters or punctuation only please"); + +jQuery.validator.addMethod("alphanumeric", function(value, element) { + return this.optional(element) || /^\w+$/i.test(value); +}, "Letters, numbers, and underscores only please"); + +jQuery.validator.addMethod("lettersonly", function(value, element) { + return this.optional(element) || /^[a-z]+$/i.test(value); +}, "Letters only please"); + +jQuery.validator.addMethod("nowhitespace", function(value, element) { + return this.optional(element) || /^\S+$/i.test(value); +}, "No white space please"); + +jQuery.validator.addMethod("ziprange", function(value, element) { + return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); +}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx"); + +jQuery.validator.addMethod("zipcodeUS", function(value, element) { + return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value); +}, "The specified US ZIP Code is invalid"); + +jQuery.validator.addMethod("integer", function(value, element) { + return this.optional(element) || /^-?\d+$/.test(value); +}, "A positive or negative non-decimal number please"); + +/** + * Return true, if the value is a valid vehicle identification number (VIN). + * + * Works with all kind of text inputs. + * + * @example + * @desc Declares a required input element whose value must be a valid vehicle identification number. + * + * @name jQuery.validator.methods.vinUS + * @type Boolean + * @cat Plugins/Validate/Methods + */ +jQuery.validator.addMethod("vinUS", function(v) { + if (v.length !== 17) { + return false; + } + var i, n, d, f, cd, cdv; + var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"]; + var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9]; + var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2]; + var rs = 0; + for(i = 0; i < 17; i++){ + f = FL[i]; + d = v.slice(i,i+1); + if (i === 8) { + cdv = d; + } + if (!isNaN(d)) { + d *= f; + } else { + for (n = 0; n < LL.length; n++) { + if (d.toUpperCase() === LL[n]) { + d = VL[n]; + d *= f; + if (isNaN(cdv) && n === 8) { + cdv = LL[n]; + } + break; + } + } + } + rs += d; + } + cd = rs % 11; + if (cd === 10) { + cd = "X"; + } + if (cd === cdv) { + return true; + } + return false; +}, "The specified vehicle identification number (VIN) is invalid."); + +/** + * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. + * + * @example jQuery.validator.methods.date("01/01/1900") + * @result true + * + * @example jQuery.validator.methods.date("01/13/1990") + * @result false + * + * @example jQuery.validator.methods.date("01.01.1900") + * @result false + * + * @example + * @desc Declares an optional input element whose value must be a valid date. + * + * @name jQuery.validator.methods.dateITA + * @type Boolean + * @cat Plugins/Validate/Methods + */ +jQuery.validator.addMethod("dateITA", function(value, element) { + var check = false; + var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/; + if( re.test(value)) { + var adata = value.split('/'); + var gg = parseInt(adata[0],10); + var mm = parseInt(adata[1],10); + var aaaa = parseInt(adata[2],10); + var xdata = new Date(aaaa,mm-1,gg); + if ( ( xdata.getFullYear() === aaaa ) && ( xdata.getMonth() === mm - 1 ) && ( xdata.getDate() === gg ) ){ + check = true; + } else { + check = false; + } + } else { + check = false; + } + return this.optional(element) || check; +}, "Please enter a correct date"); + +/** + * IBAN is the international bank account number. + * It has a country - specific format, that is checked here too + */ +jQuery.validator.addMethod("iban", function(value, element) { + // some quick simple tests to prevent needless work + if (this.optional(element)) { + return true; + } + if (!(/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(value))) { + return false; + } + + // check the country code and find the country specific format + var iban = value.replace(/ /g,'').toUpperCase(); // remove spaces and to upper case + var countrycode = iban.substring(0,2); + var bbancountrypatterns = { + 'AL': "\\d{8}[\\dA-Z]{16}", + 'AD': "\\d{8}[\\dA-Z]{12}", + 'AT': "\\d{16}", + 'AZ': "[\\dA-Z]{4}\\d{20}", + 'BE': "\\d{12}", + 'BH': "[A-Z]{4}[\\dA-Z]{14}", + 'BA': "\\d{16}", + 'BR': "\\d{23}[A-Z][\\dA-Z]", + 'BG': "[A-Z]{4}\\d{6}[\\dA-Z]{8}", + 'CR': "\\d{17}", + 'HR': "\\d{17}", + 'CY': "\\d{8}[\\dA-Z]{16}", + 'CZ': "\\d{20}", + 'DK': "\\d{14}", + 'DO': "[A-Z]{4}\\d{20}", + 'EE': "\\d{16}", + 'FO': "\\d{14}", + 'FI': "\\d{14}", + 'FR': "\\d{10}[\\dA-Z]{11}\\d{2}", + 'GE': "[\\dA-Z]{2}\\d{16}", + 'DE': "\\d{18}", + 'GI': "[A-Z]{4}[\\dA-Z]{15}", + 'GR': "\\d{7}[\\dA-Z]{16}", + 'GL': "\\d{14}", + 'GT': "[\\dA-Z]{4}[\\dA-Z]{20}", + 'HU': "\\d{24}", + 'IS': "\\d{22}", + 'IE': "[\\dA-Z]{4}\\d{14}", + 'IL': "\\d{19}", + 'IT': "[A-Z]\\d{10}[\\dA-Z]{12}", + 'KZ': "\\d{3}[\\dA-Z]{13}", + 'KW': "[A-Z]{4}[\\dA-Z]{22}", + 'LV': "[A-Z]{4}[\\dA-Z]{13}", + 'LB': "\\d{4}[\\dA-Z]{20}", + 'LI': "\\d{5}[\\dA-Z]{12}", + 'LT': "\\d{16}", + 'LU': "\\d{3}[\\dA-Z]{13}", + 'MK': "\\d{3}[\\dA-Z]{10}\\d{2}", + 'MT': "[A-Z]{4}\\d{5}[\\dA-Z]{18}", + 'MR': "\\d{23}", + 'MU': "[A-Z]{4}\\d{19}[A-Z]{3}", + 'MC': "\\d{10}[\\dA-Z]{11}\\d{2}", + 'MD': "[\\dA-Z]{2}\\d{18}", + 'ME': "\\d{18}", + 'NL': "[A-Z]{4}\\d{10}", + 'NO': "\\d{11}", + 'PK': "[\\dA-Z]{4}\\d{16}", + 'PS': "[\\dA-Z]{4}\\d{21}", + 'PL': "\\d{24}", + 'PT': "\\d{21}", + 'RO': "[A-Z]{4}[\\dA-Z]{16}", + 'SM': "[A-Z]\\d{10}[\\dA-Z]{12}", + 'SA': "\\d{2}[\\dA-Z]{18}", + 'RS': "\\d{18}", + 'SK': "\\d{20}", + 'SI': "\\d{15}", + 'ES': "\\d{20}", + 'SE': "\\d{20}", + 'CH': "\\d{5}[\\dA-Z]{12}", + 'TN': "\\d{20}", + 'TR': "\\d{5}[\\dA-Z]{17}", + 'AE': "\\d{3}\\d{16}", + 'GB': "[A-Z]{4}\\d{14}", + 'VG': "[\\dA-Z]{4}\\d{16}" + }; + var bbanpattern = bbancountrypatterns[countrycode]; + // As new countries will start using IBAN in the + // future, we only check if the countrycode is known. + // This prevents false negatives, while almost all + // false positives introduced by this, will be caught + // by the checksum validation below anyway. + // Strict checking should return FALSE for unknown + // countries. + if (typeof bbanpattern !== 'undefined') { + var ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); + if (!(ibanregexp.test(iban))) { + return false; // invalid country specific format + } + } + + // now check the checksum, first convert to digits + var ibancheck = iban.substring(4,iban.length) + iban.substring(0,4); + var ibancheckdigits = ""; + var leadingZeroes = true; + var charAt; + for (var i =0; i 9 && + phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); +}, "Please specify a valid phone number"); + +jQuery.validator.addMethod('phoneUK', function(phone_number, element) { + phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/); +}, 'Please specify a valid phone number'); + +jQuery.validator.addMethod('mobileUK', function(phone_number, element) { + phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/); +}, 'Please specify a valid mobile number'); + +//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers +jQuery.validator.addMethod('phonesUK', function(phone_number, element) { + phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/); +}, 'Please specify a valid uk phone number'); +// On the above three UK functions, do the following server side processing: +// Compare original input with this RegEx pattern: +// ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ +// Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' +// Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. +// A number of very detailed GB telephone number RegEx patterns can also be found at: +// http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers + +// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) +jQuery.validator.addMethod('postcodeUK', function(value, element) { + return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value); +}, 'Please specify a valid UK postcode'); + +// TODO check if value starts with <, otherwise don't try stripping anything +jQuery.validator.addMethod("strippedminlength", function(value, element, param) { + return jQuery(value).text().length >= param; +}, jQuery.validator.format("Please enter at least {0} characters")); + +// same as email, but TLD is optional +jQuery.validator.addMethod("email2", function(value, element, param) { + return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); +}, jQuery.validator.messages.email); + +// same as url, but TLD is optional +jQuery.validator.addMethod("url2", function(value, element, param) { + return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); +}, jQuery.validator.messages.url); + +// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator +// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 +// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) +jQuery.validator.addMethod("creditcardtypes", function(value, element, param) { + if (/[^0-9\-]+/.test(value)) { + return false; + } + + value = value.replace(/\D/g, ""); + + var validTypes = 0x0000; + + if (param.mastercard) { + validTypes |= 0x0001; + } + if (param.visa) { + validTypes |= 0x0002; + } + if (param.amex) { + validTypes |= 0x0004; + } + if (param.dinersclub) { + validTypes |= 0x0008; + } + if (param.enroute) { + validTypes |= 0x0010; + } + if (param.discover) { + validTypes |= 0x0020; + } + if (param.jcb) { + validTypes |= 0x0040; + } + if (param.unknown) { + validTypes |= 0x0080; + } + if (param.all) { + validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; + } + if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard + return value.length === 16; + } + if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa + return value.length === 16; + } + if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex + return value.length === 15; + } + if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub + return value.length === 14; + } + if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute + return value.length === 15; + } + if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover + return value.length === 16; + } + if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb + return value.length === 16; + } + if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb + return value.length === 15; + } + if (validTypes & 0x0080) { //unknown + return true; + } + return false; +}, "Please enter a valid credit card number."); + +jQuery.validator.addMethod("ipv4", function(value, element, param) { + return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value); +}, "Please enter a valid IP v4 address."); + +jQuery.validator.addMethod("ipv6", function(value, element, param) { + return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value); +}, "Please enter a valid IP v6 address."); + +/** +* Return true if the field value matches the given format RegExp +* +* @example jQuery.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) +* @result true +* +* @example jQuery.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) +* @result false +* +* @name jQuery.validator.methods.pattern +* @type Boolean +* @cat Plugins/Validate/Methods +*/ +jQuery.validator.addMethod("pattern", function(value, element, param) { + if (this.optional(element)) { + return true; + } + if (typeof param === 'string') { + param = new RegExp('^(?:' + param + ')$'); + } + return param.test(value); +}, "Invalid format."); + + +/* + * Lets you say "at least X inputs that match selector Y must be filled." + * + * The end result is that neither of these inputs: + * + * + * + * + * ...will validate unless at least one of them is filled. + * + * partnumber: {require_from_group: [1,".productinfo"]}, + * description: {require_from_group: [1,".productinfo"]} + * + */ +jQuery.validator.addMethod("require_from_group", function(value, element, options) { + var validator = this; + var selector = options[1]; + var validOrNot = $(selector, element.form).filter(function() { + return validator.elementValue(this); + }).length >= options[0]; + + if(!$(element).data('being_validated')) { + var fields = $(selector, element.form); + fields.data('being_validated', true); + fields.valid(); + fields.data('being_validated', false); + } + return validOrNot; +}, jQuery.format("Please fill at least {0} of these fields.")); + +/* + * Lets you say "either at least X inputs that match selector Y must be filled, + * OR they must all be skipped (left blank)." + * + * The end result, is that none of these inputs: + * + * + * + * + * + * ...will validate unless either at least two of them are filled, + * OR none of them are. + * + * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, + * description: {skip_or_fill_minimum: [2,".productinfo"]}, + * color: {skip_or_fill_minimum: [2,".productinfo"]} + * + */ +jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, options) { + var validator = this, + numberRequired = options[0], + selector = options[1]; + var numberFilled = $(selector, element.form).filter(function() { + return validator.elementValue(this); + }).length; + var valid = numberFilled >= numberRequired || numberFilled === 0; + + if(!$(element).data('being_validated')) { + var fields = $(selector, element.form); + fields.data('being_validated', true); + fields.valid(); + fields.data('being_validated', false); + } + return valid; +}, jQuery.format("Please either skip these fields or fill at least {0} of them.")); + +// Accept a value from a file input based on a required mimetype +jQuery.validator.addMethod("accept", function(value, element, param) { + // Split mime on commas in case we have multiple types we can accept + var typeParam = typeof param === "string" ? param.replace(/\s/g, '').replace(/,/g, '|') : "image/*", + optionalValue = this.optional(element), + i, file; + + // Element is optional + if (optionalValue) { + return optionalValue; + } + + if ($(element).attr("type") === "file") { + // If we are using a wildcard, make it regex friendly + typeParam = typeParam.replace(/\*/g, ".*"); + + // Check if the element has a FileList before checking each file + if (element.files && element.files.length) { + for (i = 0; i < element.files.length; i++) { + file = element.files[i]; + + // Grab the mimetype from the loaded file, verify it matches + if (!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) { + return false; + } + } + } + } + + // Either return true because we've validated each file, or because the + // browser does not support element.files and the FileList feature + return true; +}, jQuery.format("Please enter a value with a valid mimetype.")); + +// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept +jQuery.validator.addMethod("extension", function(value, element, param) { + param = typeof param === "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif"; + return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); +}, jQuery.format("Please enter a value with a valid extension.")); diff --git a/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js new file mode 100644 index 00000000..2a0e4669 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/component/thirdparty/jquery-validation/dist/additional-methods.min.js @@ -0,0 +1,11 @@ +/*! + * jQuery Validation Plugin 1.11.1 + * + * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ + * http://docs.jquery.com/Plugins/Validation + * + * Copyright 2013 Jörn Zaefferer + * Released under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + */ +(function(){function a(b){return b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'"_+=\/\-]*/g,"")}jQuery.validator.addMethod("maxWords",function(c,b,d){return this.optional(b)||a(c).match(/\b\w+\b/g).length<=d},jQuery.validator.format("Please enter {0} words or less."));jQuery.validator.addMethod("minWords",function(c,b,d){return this.optional(b)||a(c).match(/\b\w+\b/g).length>=d},jQuery.validator.format("Please enter at least {0} words."));jQuery.validator.addMethod("rangeWords",function(e,b,f){var d=a(e);var c=/\b\w+\b/g;return this.optional(b)||d.match(c).length>=f[0]&&d.match(c).length<=f[1]},jQuery.validator.format("Please enter between {0} and {1} words."))}());jQuery.validator.addMethod("letterswithbasicpunc",function(b,a){return this.optional(a)||/^[a-z\-.,()'"\s]+$/i.test(b)},"Letters or punctuation only please");jQuery.validator.addMethod("alphanumeric",function(b,a){return this.optional(a)||/^\w+$/i.test(b)},"Letters, numbers, and underscores only please");jQuery.validator.addMethod("lettersonly",function(b,a){return this.optional(a)||/^[a-z]+$/i.test(b)},"Letters only please");jQuery.validator.addMethod("nowhitespace",function(b,a){return this.optional(a)||/^\S+$/i.test(b)},"No white space please");jQuery.validator.addMethod("ziprange",function(b,a){return this.optional(a)||/^90[2-5]\d\{2\}-\d{4}$/.test(b)},"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");jQuery.validator.addMethod("zipcodeUS",function(b,a){return this.optional(a)||/\d{5}-\d{4}$|^\d{5}$/.test(b)},"The specified US ZIP Code is invalid");jQuery.validator.addMethod("integer",function(b,a){return this.optional(a)||/^-?\d+$/.test(b)},"A positive or negative non-decimal number please");jQuery.validator.addMethod("vinUS",function(o){if(o.length!==17){return false}var h,a,l,j,b,k;var c=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];var m=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];var g=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];var e=0;for(h=0;h<17;h++){j=g[h];l=o.slice(h,h+1);if(h===8){k=l}if(!isNaN(l)){l*=j}else{for(a=0;a9&&a.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number");jQuery.validator.addMethod("phoneUK",function(a,b){a=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number");jQuery.validator.addMethod("mobileUK",function(a,b){a=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number");jQuery.validator.addMethod("phonesUK",function(a,b){a=a.replace(/\(|\)|\s+|-/g,"");return this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number");jQuery.validator.addMethod("postcodeUK",function(b,a){return this.optional(a)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(b)},"Please specify a valid UK postcode");jQuery.validator.addMethod("strippedminlength",function(b,a,c){return jQuery(b).text().length>=c},jQuery.validator.format("Please enter at least {0} characters"));jQuery.validator.addMethod("email2",function(b,a,c){return this.optional(a)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(b)},jQuery.validator.messages.email);jQuery.validator.addMethod("url2",function(b,a,c){return this.optional(a)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(b)},jQuery.validator.messages.url);jQuery.validator.addMethod("creditcardtypes",function(b,a,c){if(/[^0-9\-]+/.test(b)){return false}b=b.replace(/\D/g,"");var d=0;if(c.mastercard){d|=1}if(c.visa){d|=2}if(c.amex){d|=4}if(c.dinersclub){d|=8}if(c.enroute){d|=16}if(c.discover){d|=32}if(c.jcb){d|=64}if(c.unknown){d|=128}if(c.all){d=1|2|4|8|16|32|64|128}if(d&1&&/^(5[12345])/.test(b)){return b.length===16}if(d&2&&/^(4)/.test(b)){return b.length===16}if(d&4&&/^(3[47])/.test(b)){return b.length===15}if(d&8&&/^(3(0[012345]|[68]))/.test(b)){return b.length===14}if(d&16&&/^(2(014|149))/.test(b)){return b.length===15}if(d&32&&/^(6011)/.test(b)){return b.length===16}if(d&64&&/^(3)/.test(b)){return b.length===16}if(d&64&&/^(2131|1800)/.test(b)){return b.length===15}if(d&128){return true}return false},"Please enter a valid credit card number.");jQuery.validator.addMethod("ipv4",function(b,a,c){return this.optional(a)||/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(b)},"Please enter a valid IP v4 address.");jQuery.validator.addMethod("ipv6",function(b,a,c){return this.optional(a)||/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(b)},"Please enter a valid IP v6 address.");jQuery.validator.addMethod("pattern",function(b,a,c){if(this.optional(a)){return true}if(typeof c==="string"){c=new RegExp("^(?:"+c+")$")}return c.test(b)},"Invalid format.");jQuery.validator.addMethod("require_from_group",function(g,f,d){var e=this;var b=d[1];var c=$(b,f.form).filter(function(){return e.elementValue(this)}).length>=d[0];if(!$(f).data("being_validated")){var a=$(b,f.form);a.data("being_validated",true);a.valid();a.data("being_validated",false)}return c},jQuery.format("Please fill at least {0} of these fields."));jQuery.validator.addMethod("skip_or_fill_minimum",function(h,e,i){var b=this,c=i[0],d=i[1];var g=$(d,e.form).filter(function(){return b.elementValue(this)}).length;var a=g>=c||g===0;if(!$(e).data("being_validated")){var f=$(d,e.form);f.data("being_validated",true);f.valid();f.data("being_validated",false)}return a},jQuery.format("Please either skip these fields or fill at least {0} of them."));jQuery.validator.addMethod("accept",function(e,c,g){var f=typeof g==="string"?g.replace(/\s/g,"").replace(/,/g,"|"):"image/*",d=this.optional(c),b,a;if(d){return d}if($(c).attr("type")==="file"){f=f.replace(/\*/g,".*");if(c.files&&c.files.length){for(b=0;b
    "; + $(".carousel-inner").append(itemHtml); + } + for(var i=0;i'; + $(".col-xs-12", $("#page_" + i + ".item")).append(buttonHtml); + } + } + } + + //moreOperationItems = transformQueryViewData(moreViewData, 14); + + var moreOperationPageSize = 14; + var windowWidth = $(window).width(); + if(windowWidth >= 1367 && windowWidth < 1441){ + moreOperationPageSize = 12; + }else if(windowWidth >= 1281 && windowWidth < 1367){ + moreOperationPageSize = 11; + }else if(windowWidth >= 1025 && windowWidth < 1281){ + moreOperationPageSize = 10; + }else if(windowWidth >= 920 && windowWidth < 1281){ + moreOperationPageSize = 9; + }else if(windowWidth >= 820 && windowWidth < 920){ + moreOperationPageSize = 8; + }else if(windowWidth >= 680 && windowWidth < 820){ + moreOperationPageSize = 7; + }else if(windowWidth >= 540 && windowWidth < 680){ + moreOperationPageSize = 4; + }else if(windowWidth >= 390 && windowWidth < 540){ + moreOperationPageSize = 3; + }else if(windowWidth < 390){ + moreOperationPageSize = 2; + } + + moreOperationItems = transformQueryViewData(moreViewData, moreOperationPageSize); + generateOperationItems(); + + $(".box.boxOperation").click(function(){ + $(".box.boxOperation", $(".carousel-inner")).removeClass("moreButtonSelected"); + $(this).addClass("moreButtonSelected"); + }); + + $($(".item", $(".carousel-inner"))[0]).addClass("active"); + + if($(".item.moreButtonsTag").length < 2){ + hideArrow(); + } +} + +var showArrow = function(){ + $(".carousel-control").show(); + $(".boxOperation").removeClass("boxOperationOnePage"); +} + +var hideArrow = function(){ + $(".carousel-control").hide(); + $(".boxOperation").addClass("boxOperationOnePage"); +} diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js new file mode 100644 index 00000000..bd18ef4c --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/js/security/aes.js @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, +r=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=p?c:4*a.length},toString:function(a){return(a||v).stringify(this)},concat:function(a){var c=this.words,e=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var k=0;k>>2]|=(e[k>>>2]>>>24-8*(k%4)&255)<<24-8*((j+k)%4);else if(65535>>2]=e[k>>>2];else c.push.apply(c,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< +32-8*(c%4);a.length=u.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],e=0;e>>2]>>>24-8*(j%4)&255;e.push((k>>>4).toString(16));e.push((k&15).toString(16))}return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j>>3]|=parseInt(a.substr(j, +2),16)<<24-4*(j%8);return new r.init(e,c/2)}},b=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j>>2]>>>24-8*(j%4)&255));return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new r.init(e,c)}},x=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(b.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return b.parse(unescape(encodeURIComponent(a)))}}, +q=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=x.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,e=c.words,j=c.sigBytes,k=this.blockSize,b=j/(4*k),b=a?u.ceil(b):u.max((b|0)-this._minBufferSize,0);a=b*k;j=u.min(4*a,j);if(a){for(var q=0;q>>2]>>>24-8*(r%4)&255)<<16|(l[r+1>>>2]>>>24-8*((r+1)%4)&255)<<8|l[r+2>>>2]>>>24-8*((r+2)%4)&255,v=0;4>v&&r+0.75*v>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w< +l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); +(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b<>>32-j)+n}function d(b,n,a,c,e,j,k){b=b+(n&c|a&~c)+e+k;return(b<>>32-j)+n}function l(b,n,a,c,e,j,k){b=b+(n^a^c)+e+k;return(b<>>32-j)+n}function s(b,n,a,c,e,j,k){b=b+(a^(n|~c))+e+k;return(b<>>32-j)+n}for(var t=CryptoJS,r=t.lib,w=r.WordArray,v=r.Hasher,r=t.algo,b=[],x=0;64>x;x++)b[x]=4294967296*u.abs(u.sin(x+1))|0;r=r.MD5=v.extend({_doReset:function(){this._hash=new w.init([1732584193,4023233417,2562383102,271733878])}, +_doProcessBlock:function(q,n){for(var a=0;16>a;a++){var c=n+a,e=q[c];q[c]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}var a=this._hash.words,c=q[n+0],e=q[n+1],j=q[n+2],k=q[n+3],z=q[n+4],r=q[n+5],t=q[n+6],w=q[n+7],v=q[n+8],A=q[n+9],B=q[n+10],C=q[n+11],u=q[n+12],D=q[n+13],E=q[n+14],x=q[n+15],f=a[0],m=a[1],g=a[2],h=a[3],f=p(f,m,g,h,c,7,b[0]),h=p(h,f,m,g,e,12,b[1]),g=p(g,h,f,m,j,17,b[2]),m=p(m,g,h,f,k,22,b[3]),f=p(f,m,g,h,z,7,b[4]),h=p(h,f,m,g,r,12,b[5]),g=p(g,h,f,m,t,17,b[6]),m=p(m,g,h,f,w,22,b[7]), +f=p(f,m,g,h,v,7,b[8]),h=p(h,f,m,g,A,12,b[9]),g=p(g,h,f,m,B,17,b[10]),m=p(m,g,h,f,C,22,b[11]),f=p(f,m,g,h,u,7,b[12]),h=p(h,f,m,g,D,12,b[13]),g=p(g,h,f,m,E,17,b[14]),m=p(m,g,h,f,x,22,b[15]),f=d(f,m,g,h,e,5,b[16]),h=d(h,f,m,g,t,9,b[17]),g=d(g,h,f,m,C,14,b[18]),m=d(m,g,h,f,c,20,b[19]),f=d(f,m,g,h,r,5,b[20]),h=d(h,f,m,g,B,9,b[21]),g=d(g,h,f,m,x,14,b[22]),m=d(m,g,h,f,z,20,b[23]),f=d(f,m,g,h,A,5,b[24]),h=d(h,f,m,g,E,9,b[25]),g=d(g,h,f,m,k,14,b[26]),m=d(m,g,h,f,v,20,b[27]),f=d(f,m,g,h,D,5,b[28]),h=d(h,f, +m,g,j,9,b[29]),g=d(g,h,f,m,w,14,b[30]),m=d(m,g,h,f,u,20,b[31]),f=l(f,m,g,h,r,4,b[32]),h=l(h,f,m,g,v,11,b[33]),g=l(g,h,f,m,C,16,b[34]),m=l(m,g,h,f,E,23,b[35]),f=l(f,m,g,h,e,4,b[36]),h=l(h,f,m,g,z,11,b[37]),g=l(g,h,f,m,w,16,b[38]),m=l(m,g,h,f,B,23,b[39]),f=l(f,m,g,h,D,4,b[40]),h=l(h,f,m,g,c,11,b[41]),g=l(g,h,f,m,k,16,b[42]),m=l(m,g,h,f,t,23,b[43]),f=l(f,m,g,h,A,4,b[44]),h=l(h,f,m,g,u,11,b[45]),g=l(g,h,f,m,x,16,b[46]),m=l(m,g,h,f,j,23,b[47]),f=s(f,m,g,h,c,6,b[48]),h=s(h,f,m,g,w,10,b[49]),g=s(g,h,f,m, +E,15,b[50]),m=s(m,g,h,f,r,21,b[51]),f=s(f,m,g,h,u,6,b[52]),h=s(h,f,m,g,k,10,b[53]),g=s(g,h,f,m,B,15,b[54]),m=s(m,g,h,f,e,21,b[55]),f=s(f,m,g,h,v,6,b[56]),h=s(h,f,m,g,x,10,b[57]),g=s(g,h,f,m,t,15,b[58]),m=s(m,g,h,f,D,21,b[59]),f=s(f,m,g,h,z,6,b[60]),h=s(h,f,m,g,C,10,b[61]),g=s(g,h,f,m,j,15,b[62]),m=s(m,g,h,f,A,21,b[63]);a[0]=a[0]+f|0;a[1]=a[1]+m|0;a[2]=a[2]+g|0;a[3]=a[3]+h|0},_doFinalize:function(){var b=this._data,n=b.words,a=8*this._nDataBytes,c=8*b.sigBytes;n[c>>>5]|=128<<24-c%32;var e=u.floor(a/ +4294967296);n[(c+64>>>9<<4)+15]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;n[(c+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(n.length+1);this._process();b=this._hash;n=b.words;for(a=0;4>a;a++)c=n[a],n[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return b},clone:function(){var b=v.clone.call(this);b._hash=this._hash.clone();return b}});t.MD5=v._createHelper(r);t.HmacMD5=v._createHmacHelper(r)})(Math); +(function(){var u=CryptoJS,p=u.lib,d=p.Base,l=p.WordArray,p=u.algo,s=p.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:p.MD5,iterations:1}),init:function(d){this.cfg=this.cfg.extend(d)},compute:function(d,r){for(var p=this.cfg,s=p.hasher.create(),b=l.create(),u=b.words,q=p.keySize,p=p.iterations;u.length>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a, +this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684, +1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})}, +decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d, +b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}(); +(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8, +16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;dd||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>> +8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r>>24]^e[h>>>16&255]^j[k>>>8&255]^l[n&255]^c[p++],s=d[h>>>24]^e[k>>>16&255]^j[n>>>8&255]^l[g&255]^c[p++],t= +d[k>>>24]^e[n>>>16&255]^j[g>>>8&255]^l[h&255]^c[p++],n=d[n>>>24]^e[g>>>16&255]^j[h>>>8&255]^l[k&255]^c[p++],g=q,h=s,k=t;q=(f[g>>>24]<<24|f[h>>>16&255]<<16|f[k>>>8&255]<<8|f[n&255])^c[p++];s=(f[h>>>24]<<24|f[k>>>16&255]<<16|f[n>>>8&255]<<8|f[g&255])^c[p++];t=(f[k>>>24]<<24|f[n>>>16&255]<<16|f[g>>>8&255]<<8|f[h&255])^c[p++];n=(f[n>>>24]<<24|f[g>>>16&255]<<16|f[h>>>8&255]<<8|f[k&255])^c[p++];a[b]=q;a[b+1]=s;a[b+2]=t;a[b+3]=n},keySize:8});u.AES=p._createHelper(d)})(); diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js new file mode 100644 index 00000000..72452372 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/js/security/changepwd.js @@ -0,0 +1,191 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var ChangePWD = function () { + $.validator.addMethod("passwordCheck", function() { + if( $('#password').attr('type') == 'text' && $('#rpassword').attr('type') == 'text'){ + return true; + } + if( $('#password').attr('type') == 'password' && $('#rpassword').attr('type') == 'password' ){ + if($('#password').val() == $('#rpassword').val() ){ + return true; + } + } + if($('#password').val() =='' && $('#rpassword').attr('type') == 'text' || $('#rpassword').val() =='' && $('#password').attr('type')){ + return true; + } + return false; + }); + var handleLogin = function () { + $('.login-form').validate({ + errorElement : 'span', //default input error message container + errorClass : 'help-block', // default input error message class + focusInvalid : true, // do not focus the last invalid input + onfocusout : function (element) { + $(element).valid(); + }, + rules : { + oldpassword : { + required : false + }, + password : { + required : false + }, + rpassword : { + required : false, + passwordCheck : true + } + }, + + messages : { + oldpassword : { + required : $.i18n.prop('com_zte_ums_ict_sm_user_inputoldpwd') + }, + password : { + required : $.i18n.prop('com_zte_ums_ict_sm_user_inputnewpwd') + }, + rpassword : { + required : $.i18n.prop('com_zte_ums_ict_sm_user_inputnewpwdagain'), + equalTo : $.i18n.prop('com_zte_ums_ict_sm_password_confirm_not_consistent'), + passwordCheck : $.i18n.prop('com_zte_ums_ict_sm_password_confirm_not_consistent'), + } + }, + + invalidHandler : function (event, validator) { //display error alert on form submit + $('.alert-danger', $('.login-form')).show(); + }, + + highlight : function (element) { // hightlight error inputs + $(element) + .closest('.form-group').addClass('has-error'); // set error class to the control group + }, + + success : function (label) { + label.closest('.form-group').removeClass('has-error'); + label.remove(); + }, + + errorPlacement : function (error, element) { + error.insertAfter(element.closest('.input-icon')); + }, + + submitHandler : function (form) { + // form.submit(); + var params = {}; + var currentUser = httpRequest("GET", FrameConst.REST_GET_USERNAME, ""); + params["userName"] = currentUser; + params["password"] = $("#oldpassword").attr('type')=='password' ? $("#oldpassword").val() : ''; + params["newPassword"] = $("#password").attr('type')=='password' ? $("#password").val() : ''; + params["confirmPassword"] = $("#rpassword").attr('type')=='password' ? $("#rpassword").val() : ''; + + + jQuery('#submitBtn').prop("disabled", true); + $.ajax({ + type : "POST", + url : "/web/rest/sm/user/modifyCurrentPassword", + data : params, + dataType : "json", + success : function (data) { + var returnValue = data; + + if (returnValue && returnValue.result == 1) { + bootbox.alert($.i18n.prop('com_zte_ums_ict_sm_user_op_ok'), function () { + window.closeModal('changepwdDlg'); + }); + } else { + bootbox.alert(returnValue.response.data); + } + jQuery('#submitBtn').prop("disabled", false); + }, + error : function (xhr, ajaxOptions, thrownError) { + jQuery('#submitBtn').prop("disabled", false); + } + }); + + } + }); + + $('.login-form input').keypress(function (e) { + $("#nameOrpwdError").hide(); + if (e.which == 13) { + if ($('.login-form').validate().form()) { + $('.login-form').submit(); + } + return false; + } + }); + } + var handleI18n = function () { + $("#com_zte_ums_ict_sm_user_modify_current_password").text($.i18n.prop('com_zte_ums_ict_sm_user_modify_current_password')); + $("#com_zte_ums_ict_sm_user_old_password").text($.i18n.prop('com_zte_ums_ict_sm_user_old_password')); + $("#com_zte_ums_ict_sm_user_password").text($.i18n.prop('com_zte_ums_ict_sm_user_password')); + $("#com_zte_ums_ict_sm_user_confirmpassword").text($.i18n.prop('com_zte_ums_ict_sm_user_confirmpassword')); + + $("#oldpassword").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_old_password')); + $("#password").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_password')); + $("#rpassword").attr("placeholder", $.i18n.prop('com_zte_ums_ict_sm_user_confirmpassword')); + + $("#com_zte_ums_ict_sm_user_ok").text($.i18n.prop('com_zte_ums_ict_sm_user_ok')); + $("#com_zte_ums_ict_sm_user_cancel_button").text($.i18n.prop('com_zte_ums_ict_sm_user_cancel_button')); + + } + var handleShowModalEvent = function () { + $('#changepwdDlg').on('show.bs.modal', function (e) { + $("#oldpassword").val(""); + $("#password").val(""); + $("#rpassword").val(""); + $(".has-error", this).removeClass("has-error"); + $("span.help-block", this).hide(); + + if(!('placeholder' in document.createElement('input'))){ // �ж�������Ƿ�֧�� placeholder,ie9��֧�֣���Ҫ���⴦�� + $("#rpassword").rules("remove", "equalTo"); + $('[placeholder]').focus(function() { + var input = $(this); + input.attr('type','password'); + $("#rpassword").rules("add", { + passwordCheck :true + }); + if (input.val() == input.attr('placeholder')) { + input.val(''); + + } + }).blur(function() { + var input = $(this); + if (input.val() == '' || input.val() == input.attr('placeholder')) { + input.attr('type','text'); + $("#rpassword").rules("remove", "passwordCheck"); + + input.val(input.attr('placeholder')); + + } + }).blur(); + + + // + }; + + + }); + } + return { + //main function to initiate the module + init : function () { + handleI18n(); + handleShowModalEvent(); + handleLogin(); + } + }; +} +(); diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js new file mode 100644 index 00000000..a3781125 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/js/security/framework-util.js @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function ict_framework_func1(word){ + var a1 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a1); + var a2 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a2); + var srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, a1, { iv: a2,mode:CryptoJS.mode.CBC}); + return encrypted.toString(); +} + +function ict_framework_func2(word){ + var a1 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a1); + var a2 = CryptoJS.enc.Utf8.parse(ict_framework_aes_a2); + var decrypt = CryptoJS.AES.decrypt(word, a1, { iv: a2,mode:CryptoJS.mode.CBC}); + return CryptoJS.enc.Utf8.stringify(decrypt).toString(); +} + + + + + + + +var ict_framework_aes_a1 = "9763853428462486"; +var ict_framework_aes_a2 = "9763853428462486"; \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/security/security.js b/uiframe-iui/src/main/resources/webroot/framework/js/security/security.js new file mode 100644 index 00000000..b900890b --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/js/security/security.js @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var ErrResult_LOGIN_SUCCESS = 0; +var ErrResult_LOGIN_FAILURE = 4; +var ErrResult_LOGIN_SUCCESS_WARN = 1; +var ErrResult_LOGIN_SUCCESS_PASSWORD_WARN = 2; +var ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE = 3; +var ErrResult_LOGIN_SERV_ERROR = -1; + +function processLoginResult(data,params){ + if(data.home="web/res/web-framework/index.html"||data.home.indexOf("index.html")>0){ + data.home=FrameConst.DEFAULT_LOGINSKIP_PAGE; + //下面这部分是为了演示需要临时增加的自动切换 + /*if(params.username=="admin1"){ + data.home="/web/res/web-framework/default.html?menu=1"; + }else if(params.username=="admin2"){ + data.home="/web/res/web-framework/default.html?menu=2"; + }else if(params.username=="admin3"){ + data.home="/web/res/web-framework/default.html?menu=3"; + }else if(params.username=="admin4"){ + data.home="/web/res/web-framework/default.html?menu=4"; + }else if(params.username=="admin5"){ + data.home="/web/res/web-framework/default.html?menu=5"; + }else if(params.username=="admin6"){ + data.home="/web/res/web-framework/default.html?menu=6"; + }else if(params.username=="admin7"){ + data.home="/web/res/web-framework/default.html?menu=7"; + }*/ + } + var toHomePage = function(){ + location.href = data.home; + } + + var loginHander = function(inParams){ + if(inParams != undefined){ + login(inParams); + } + else{ + login(params); + } + } + + var errors = data.detail; + if(data.result == 0){ + store('username',params.username); + if(errors){ + if(errors.code==ErrResult_LOGIN_SUCCESS_PASSWORD_WARN){ + + com_zte_ums_aos_portal_PasswordDialog.create({ + ID : "LOGIN_MODIFY_PASSWORD", + username : params.username, + oldPassword : ict_framework_func2(params.password), + descLabel : errors[ErrResult_LOGIN_SUCCESS_PASSWORD_WARN], + cancelHander : toHomePage, + confirmHander : toHomePage + }); + LOGIN_MODIFY_PASSWORD.show(); + } + else if(errors.code==ErrResult_LOGIN_SUCCESS_WARN){ + window.alert(errors[ErrResult_LOGIN_SUCCESS_WARN],toHomePage); + } + else { + location.href = data.home; + } + } + else { + location.href = data.home; + } + } + else { + if(errors.code==ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE){ + com_zte_ums_aos_portal_PasswordDialog.create({ + ID : "LOGIN_MODIFY_PASSWORD", + username : params.username, + oldPassword : ict_framework_func2(params.password), + descLabel : errors[ErrResult_LOGIN_SUCCESS_PASSWORD_MUSTCHANGE], + confirmHander : loginHander + + }); + LOGIN_MODIFY_PASSWORD.show(); + } + else if(errors.code==ErrResult_LOGIN_FAILURE){ + $("#nameOrpwdError").addClass('alert-danger'); + $("#com_zte_ums_ict_portal_login_userPassword").html(errors[ErrResult_LOGIN_FAILURE]); + var tip = $("#nameOrpwdError"); + if (tip.attr("tipstatus") == "normal") { + tip.show(); + } else if (tip.attr("tipstatus") == "close") { + tip.attr("tipstatus", "normal"); + } + // if(0 < $("#inputPassword").length){ + // $("#inputPassword")[0].value = ""; + // } + } + else if(errors.code==ErrResult_LOGIN_SERV_ERROR){ + $("#loginConnError").addClass('alert-danger'); + var tip = $("#loginConnError"); + if (tip.attr("tipstatus") == "normal") { + tip.show(); + } else if (tip.attr("tipstatus") == "close") { + tip.attr("tipstatus", "normal"); + } + } + } +} +function login(params){ + $.post("login",{ + username : params.username, + password : params.password, + isEncypted:true + },function(data){ + processLoginResult(data,params); + },"json"); +} diff --git a/uiframe-iui/src/main/resources/webroot/framework/js/tools.js b/uiframe-iui/src/main/resources/webroot/framework/js/tools.js new file mode 100644 index 00000000..710f4a7e --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/js/tools.js @@ -0,0 +1,1039 @@ +/* + * Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +////合并hk.min.js +/*! store2 - v2.3.0 - 2015-05-22 +* Copyright (c) 2015 Nathan Bubna; Licensed MIT, GPL */ +;(function(window, define) { + var _ = { + version: "2.3.0", + areas: {}, + apis: {}, + + // utilities + inherit: function(api, o) { + for (var p in api) { + if (!o.hasOwnProperty(p)) { + o[p] = api[p]; + } + } + return o; + }, + stringify: function(d) { + return d === undefined || typeof d === "function" ? d+'' : JSON.stringify(d); + }, + parse: function(s) { + // if it doesn't parse, return as is + try{ return JSON.parse(s); }catch(e){ return s; } + }, + + // extension hooks + fn: function(name, fn) { + _.storeAPI[name] = fn; + for (var api in _.apis) { + _.apis[api][name] = fn; + } + }, + get: function(area, key){ return area.getItem(key); }, + set: function(area, key, string){ area.setItem(key, string); }, + remove: function(area, key){ area.removeItem(key); }, + key: function(area, i){ return area.key(i); }, + length: function(area){ return area.length; }, + clear: function(area){ area.clear(); }, + + // core functions + Store: function(id, area, namespace) { + var store = _.inherit(_.storeAPI, function(key, data, overwrite) { + if (arguments.length === 0){ return store.getAll(); } + if (data !== undefined){ return store.set(key, data, overwrite); } + if (typeof key === "string"){ return store.get(key); } + if (!key){ return store.clear(); } + return store.setAll(key, data);// overwrite=data, data=key + }); + store._id = id; + try { + var testKey = '_safariPrivate_'; + area.setItem(testKey, 'sucks'); + store._area = area; + area.removeItem(testKey); + } catch (e) {} + if (!store._area) { + store._area = _.inherit(_.storageAPI, { items: {}, name: 'fake' }); + } + store._ns = namespace || ''; + if (!_.areas[id]) { + _.areas[id] = store._area; + } + if (!_.apis[store._ns+store._id]) { + _.apis[store._ns+store._id] = store; + } + return store; + }, + storeAPI: { + // admin functions + area: function(id, area) { + var store = this[id]; + if (!store || !store.area) { + store = _.Store(id, area, this._ns);//new area-specific api in this namespace + if (!this[id]){ this[id] = store; } + } + return store; + }, + namespace: function(namespace, noSession) { + if (!namespace){ + return this._ns ? this._ns.substring(0,this._ns.length-1) : ''; + } + var ns = namespace, store = this[ns]; + if (!store || !store.namespace) { + store = _.Store(this._id, this._area, this._ns+ns+'.');//new namespaced api + if (!this[ns]){ this[ns] = store; } + if (!noSession){ store.area('session', _.areas.session); } + } + return store; + }, + isFake: function(){ return this._area.name === 'fake'; }, + toString: function() { + return 'store'+(this._ns?'.'+this.namespace():'')+'['+this._id+']'; + }, + + // storage functions + has: function(key) { + if (this._area.has) { + return this._area.has(this._in(key));//extension hook + } + return !!(this._in(key) in this._area); + }, + size: function(){ return this.keys().length; }, + each: function(fn, and) { + for (var i=0, m=_.length(this._area); i _.length(this._area)) { m--; i--; }// in case of removeItem + } + return and || this; + }, + keys: function() { + return this.each(function(k, list){ list.push(k); }, []); + }, + get: function(key, alt) { + var s = _.get(this._area, this._in(key)); + return s !== null ? _.parse(s) : alt || s;// support alt for easy default mgmt + }, + getAll: function() { + return this.each(function(k, all){ all[k] = this.get(k); }, {}); + }, + set: function(key, data, overwrite) { + var d = this.get(key); + if (d != null && overwrite === false) { + return data; + } + return _.set(this._area, this._in(key), _.stringify(data), overwrite) || d; + }, + setAll: function(data, overwrite) { + var changed, val; + for (var key in data) { + val = data[key]; + if (this.set(key, val, overwrite) !== val) { + changed = true; + } + } + return changed; + }, + remove: function(key) { + var d = this.get(key); + _.remove(this._area, this._in(key)); + return d; + }, + clear: function() { + if (!this._ns) { + _.clear(this._area); + } else { + this.each(function(k){ _.remove(this._area, this._in(k)); }, 1); + } + return this; + }, + clearAll: function() { + var area = this._area; + for (var id in _.areas) { + if (_.areas.hasOwnProperty(id)) { + this._area = _.areas[id]; + this.clear(); + } + } + this._area = area; + return this; + }, + + // internal use functions + _in: function(k) { + if (typeof k !== "string"){ k = _.stringify(k); } + return this._ns ? this._ns + k : k; + }, + _out: function(k) { + return this._ns ? + k && k.indexOf(this._ns) === 0 ? + k.substring(this._ns.length) : + undefined : // so each() knows to skip it + k; + } + },// end _.storeAPI + storageAPI: { + length: 0, + has: function(k){ return this.items.hasOwnProperty(k); }, + key: function(i) { + var c = 0; + for (var k in this.items){ + if (this.has(k) && i === c++) { + return k; + } + } + }, + setItem: function(k, v) { + if (!this.has(k)) { + this.length++; + } + this.items[k] = v; + }, + removeItem: function(k) { + if (this.has(k)) { + delete this.items[k]; + this.length--; + } + }, + getItem: function(k){ return this.has(k) ? this.items[k] : null; }, + clear: function(){ for (var k in this.list){ this.removeItem(k); } }, + toString: function(){ return this.length+' items in '+this.name+'Storage'; } + }// end _.storageAPI + }; + + // setup the primary store fn + if (window.store){ _.conflict = window.store; } + var store = + // safely set this up (throws error in IE10/32bit mode for local files) + _.Store("local", (function(){try{ return localStorage; }catch(e){}})()); + store.local = store;// for completeness + store._ = _;// for extenders and debuggers... + // safely setup store.session (throws exception in FF for file:/// urls) + store.area("session", (function(){try{ return sessionStorage; }catch(e){}})()); + + //Expose store to the global object + window.store = store; + + if (typeof define === 'function' && define.amd !== undefined) { + define(function () { + return store; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = store; + } + +})(this, null); + +// XHook - v1.3.3 - https://github.com/jpillora/xhook +// Jaime Pillora - MIT Copyright 2015 +(function(window,undefined) { +var AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FIRE, FormData, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, proxyEvents, slice, xhook, _base, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + +document = window.document; + +BEFORE = 'before'; + +AFTER = 'after'; + +READY_STATE = 'readyState'; + +ON = 'addEventListener'; + +OFF = 'removeEventListener'; + +FIRE = 'dispatchEvent'; + +XMLHTTP = 'XMLHttpRequest'; + +FormData = 'FormData'; + +UPLOAD_EVENTS = ['load', 'loadend', 'loadstart']; + +COMMON_EVENTS = ['progress', 'abort', 'error', 'timeout']; + +msie = parseInt((/msie (\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); + +if (isNaN(msie)) { + msie = parseInt((/trident\/.*; rv:(\d+)/.exec(navigator.userAgent.toLowerCase()) || [])[1]); +} + +(_base = Array.prototype).indexOf || (_base.indexOf = function(item) { + var i, x, _i, _len; + for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) { + x = this[i]; + if (x === item) { + return i; + } + } + return -1; +}); + +slice = function(o, n) { + return Array.prototype.slice.call(o, n); +}; + +depricatedProp = function(p) { + return p === "returnValue" || p === "totalSize" || p === "position"; +}; + +mergeObjects = function(src, dst) { + var k, v; + for (k in src) { + v = src[k]; + if (depricatedProp(k)) { + continue; + } + try { + dst[k] = src[k]; + } catch (_error) {} + } + return dst; +}; + +proxyEvents = function(events, src, dst) { + var event, p, _i, _len; + p = function(event) { + return function(e) { + var clone, k, val; + clone = {}; + for (k in e) { + if (depricatedProp(k)) { + continue; + } + val = e[k]; + clone[k] = val === src ? dst : val; + } + return dst[FIRE](event, clone); + }; + }; + for (_i = 0, _len = events.length; _i < _len; _i++) { + event = events[_i]; + if (dst._has(event)) { + src["on" + event] = p(event); + } + } +}; + +fakeEvent = function(type) { + var msieEventObject; + if (document.createEventObject != null) { + msieEventObject = document.createEventObject(); + msieEventObject.type = type; + return msieEventObject; + } else { + try { + return new Event(type); + } catch (_error) { + return { + type: type + }; + } + } +}; + +EventEmitter = function(nodeStyle) { + var emitter, events, listeners; + events = {}; + listeners = function(event) { + return events[event] || []; + }; + emitter = {}; + emitter[ON] = function(event, callback, i) { + events[event] = listeners(event); + if (events[event].indexOf(callback) >= 0) { + return; + } + i = i === undefined ? events[event].length : i; + events[event].splice(i, 0, callback); + }; + emitter[OFF] = function(event, callback) { + var i; + if (event === undefined) { + events = {}; + return; + } + if (callback === undefined) { + events[event] = []; + } + i = listeners(event).indexOf(callback); + if (i === -1) { + return; + } + listeners(event).splice(i, 1); + }; + emitter[FIRE] = function() { + var args, event, i, legacylistener, listener, _i, _len, _ref; + args = slice(arguments); + event = args.shift(); + if (!nodeStyle) { + args[0] = mergeObjects(args[0], fakeEvent(event)); + } + legacylistener = emitter["on" + event]; + if (legacylistener) { + legacylistener.apply(undefined, args); + } + _ref = listeners(event).concat(listeners("*")); + for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { + listener = _ref[i]; + listener.apply(undefined, args); + } + }; + emitter._has = function(event) { + return !!(events[event] || emitter["on" + event]); + }; + if (nodeStyle) { + emitter.listeners = function(event) { + return slice(listeners(event)); + }; + emitter.on = emitter[ON]; + emitter.off = emitter[OFF]; + emitter.fire = emitter[FIRE]; + emitter.once = function(e, fn) { + var fire; + fire = function() { + emitter.off(e, fire); + return fn.apply(null, arguments); + }; + return emitter.on(e, fire); + }; + emitter.destroy = function() { + return events = {}; + }; + } + return emitter; +}; + +xhook = EventEmitter(true); + +xhook.EventEmitter = EventEmitter; + +xhook[BEFORE] = function(handler, i) { + if (handler.length < 1 || handler.length > 2) { + throw "invalid hook"; + } + return xhook[ON](BEFORE, handler, i); +}; + +xhook[AFTER] = function(handler, i) { + if (handler.length < 2 || handler.length > 3) { + throw "invalid hook"; + } + return xhook[ON](AFTER, handler, i); +}; + +xhook.enable = function() { + window[XMLHTTP] = XHookHttpRequest; + if (NativeFormData) { + window[FormData] = XHookFormData; + } +}; + +xhook.disable = function() { + window[XMLHTTP] = xhook[XMLHTTP]; + window[FormData] = NativeFormData; +}; + +convertHeaders = xhook.headers = function(h, dest) { + var header, headers, k, name, v, value, _i, _len, _ref; + if (dest == null) { + dest = {}; + } + switch (typeof h) { + case "object": + headers = []; + for (k in h) { + v = h[k]; + name = k.toLowerCase(); + headers.push("" + name + ":\t" + v); + } + return headers.join('\n'); + case "string": + headers = h.split('\n'); + for (_i = 0, _len = headers.length; _i < _len; _i++) { + header = headers[_i]; + if (/([^:]+):\s*(.+)/.test(header)) { + name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0; + value = RegExp.$2; + if (dest[name] == null) { + dest[name] = value; + } + } + } + return dest; + } +}; + +NativeFormData = window[FormData]; + +XHookFormData = function(form) { + var entries; + this.fd = form ? new NativeFormData(form) : new NativeFormData(); + this.form = form; + entries = []; + Object.defineProperty(this, 'entries', { + get: function() { + var fentries; + fentries = !form ? [] : slice(form.querySelectorAll("input,select")).filter(function(e) { + var _ref; + return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked; + }).map(function(e) { + return [e.name, e.type === "file" ? e.files : e.value]; + }); + return fentries.concat(entries); + } + }); + this.append = (function(_this) { + return function() { + var args; + args = slice(arguments); + entries.push(args); + return _this.fd.append.apply(_this.fd, args); + }; + })(this); +}; + +if (NativeFormData) { + xhook[FormData] = NativeFormData; + window[FormData] = XHookFormData; +} + +NativeXMLHttp = window[XMLHTTP]; + +xhook[XMLHTTP] = NativeXMLHttp; + +XHookHttpRequest = window[XMLHTTP] = function() { + var ABORTED, currentState, emitFinal, emitReadyState, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr; + ABORTED = -1; + xhr = new xhook[XMLHTTP](); + request = {}; + status = null; + hasError = void 0; + transiting = void 0; + response = void 0; + readHead = function() { + var key, name, val, _ref; + response.status = status || xhr.status; + if (!(status === ABORTED && msie < 10)) { + response.statusText = xhr.statusText; + } + if (status !== ABORTED) { + _ref = convertHeaders(xhr.getAllResponseHeaders()); + for (key in _ref) { + val = _ref[key]; + if (!response.headers[key]) { + name = key.toLowerCase(); + response.headers[name] = val; + } + } + } + }; + readBody = function() { + if (!xhr.responseType || xhr.responseType === "text") { + response.text = xhr.responseText; + response.data = xhr.responseText; + } else if (xhr.responseType === "document") { + response.xml = xhr.responseXML; + response.data = xhr.responseXML; + } else { + response.data = xhr.response; + } + if ("responseURL" in xhr) { + response.finalUrl = xhr.responseURL; + } + }; + writeHead = function() { + facade.status = response.status; + facade.statusText = response.statusText; + }; + writeBody = function() { + if ('text' in response) { + facade.responseText = response.text; + } + if ('xml' in response) { + facade.responseXML = response.xml; + } + if ('data' in response) { + facade.response = response.data; + } + if ('finalUrl' in response) { + facade.responseURL = response.finalUrl; + } + }; + emitReadyState = function(n) { + while (n > currentState && currentState < 4) { + facade[READY_STATE] = ++currentState; + if (currentState === 1) { + facade[FIRE]("loadstart", {}); + } + if (currentState === 2) { + writeHead(); + } + if (currentState === 4) { + writeHead(); + writeBody(); + } + facade[FIRE]("readystatechange", {}); + if (currentState === 4) { + setTimeout(emitFinal, 0); + } + } + }; + emitFinal = function() { + if (!hasError) { + facade[FIRE]("load", {}); + } + facade[FIRE]("loadend", {}); + if (hasError) { + facade[READY_STATE] = 0; + } + }; + currentState = 0; + setReadyState = function(n) { + var hooks, process; + if (n !== 4) { + emitReadyState(n); + return; + } + hooks = xhook.listeners(AFTER); + process = function() { + var hook; + if (!hooks.length) { + return emitReadyState(4); + } + hook = hooks.shift(); + if (hook.length === 2) { + hook(request, response); + return process(); + } else if (hook.length === 3 && request.async) { + return hook(request, response, process); + } else { + return process(); + } + }; + process(); + }; + facade = request.xhr = EventEmitter(); + xhr.onreadystatechange = function(event) { + try { + if (xhr[READY_STATE] === 2) { + readHead(); + } + } catch (_error) {} + if (xhr[READY_STATE] === 4) { + transiting = false; + readHead(); + readBody(); + } + setReadyState(xhr[READY_STATE]); + }; + hasErrorHandler = function() { + hasError = true; + }; + facade[ON]('error', hasErrorHandler); + facade[ON]('timeout', hasErrorHandler); + facade[ON]('abort', hasErrorHandler); + facade[ON]('progress', function() { + if (currentState < 3) { + setReadyState(3); + } else { + facade[FIRE]("readystatechange", {}); + } + }); + if ('withCredentials' in xhr || xhook.addWithCredentials) { + facade.withCredentials = false; + } + facade.status = 0; + facade.open = function(method, url, async, user, pass) { + currentState = 0; + hasError = false; + transiting = false; + request.headers = {}; + request.headerNames = {}; + request.status = 0; + response = {}; + response.headers = {}; + request.method = method; + request.url = url; + request.async = async !== false; + request.user = user; + request.pass = pass; + setReadyState(1); + }; + facade.send = function(body) { + var hooks, k, modk, process, send, _i, _len, _ref; + _ref = ['type', 'timeout', 'withCredentials']; + if(navigator.userAgent.indexOf("Firefox/") != -1){http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html + _ref = ['type', 'timeout']; + } + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + k = _ref[_i]; + modk = k === "type" ? "responseType" : k; + if (modk in facade) { + request[k] = facade[modk]; + } + } + request.body = body; + send = function() { + var header, value, _j, _len1, _ref1, _ref2; + proxyEvents(COMMON_EVENTS, xhr, facade); + if (facade.upload) { + proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload); + } + transiting = true; + xhr.open(request.method, request.url, request.async, request.user, request.pass); + _ref1 = ['type', 'timeout', 'withCredentials']; + if(navigator.userAgent.indexOf("Firefox/") != -1){//http://atmosphere-framework.2306103.n4.nabble.com/Atmosphere-js-withCredentials-true-does-not-work-in-Firefox-td4656661.html + _ref1 = ['type', 'timeout']; + } + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + k = _ref1[_j]; + modk = k === "type" ? "responseType" : k; + if (k in request) { + xhr[modk] = request[k]; + } + } + _ref2 = request.headers; + for (header in _ref2) { + value = _ref2[header]; + xhr.setRequestHeader(header, value); + } + if (request.body instanceof XHookFormData) { + request.body = request.body.fd; + } + xhr.send(request.body); + }; + hooks = xhook.listeners(BEFORE); + process = function() { + var done, hook; + if (!hooks.length) { + return send(); + } + done = function(userResponse) { + if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) { + mergeObjects(userResponse, response); + if (__indexOf.call(userResponse, 'data') < 0) { + userResponse.data = userResponse.response || userResponse.text; + } + setReadyState(4); + return; + } + process(); + }; + done.head = function(userResponse) { + mergeObjects(userResponse, response); + return setReadyState(2); + }; + done.progress = function(userResponse) { + mergeObjects(userResponse, response); + return setReadyState(3); + }; + hook = hooks.shift(); + if (hook.length === 1) { + return done(hook(request)); + } else if (hook.length === 2 && request.async) { + return hook(request, done); + } else { + return done(); + } + }; + process(); + }; + facade.abort = function() { + status = ABORTED; + if (transiting) { + xhr.abort(); + } else { + facade[FIRE]('abort', {}); + } + }; + facade.setRequestHeader = function(header, value) { + var lName, name; + lName = header != null ? header.toLowerCase() : void 0; + name = request.headerNames[lName] = request.headerNames[lName] || header; + if (request.headers[name]) { + value = request.headers[name] + ', ' + value; + } + request.headers[name] = value; + }; + facade.getResponseHeader = function(header) { + var name; + name = header != null ? header.toLowerCase() : void 0; + return response.headers[name]; + }; + facade.getAllResponseHeaders = function() { + return convertHeaders(response.headers); + }; + if (xhr.overrideMimeType) { + facade.overrideMimeType = function() { + return xhr.overrideMimeType.apply(xhr, arguments); + }; + } + if (xhr.upload) { + facade.upload = request.upload = EventEmitter(); + } + return facade; +}; +/* +if (typeof this.define === "function" && this.define.amd) { + define("xhook", [], function() { + return xhook; + }); +} else {*/ + (this.exports || this).xhook = xhook; +//} + +}.call(this,window)); + +xhook.before(function(request) { + var zte_headers = store('zte_http_headers'); + if (zte_headers && zte_headers.length > 0) { + for (i = 0; i < zte_headers.length; i++) { + if (zte_headers[i].store === true) { + if ( !! store(zte_headers[i].value)) { + request.headers[zte_headers[i].key] = store(zte_headers[i].value).toUpperCase() + } + } else { + request.headers[zte_headers[i].key] = zte_headers[i].value + } + } + } +}); +/** + * 初始化脚本文件装载工具 + * zongying 2010.12 + * modify: + */ +$Boot = {}; + +/** + * 创建命名空间 + * @param {Object} name + * @param {Object} object + */ +$Boot.createNamespace = function(name, object) { + var splits = name.split("."); + var parent = window; + //document.window浏览器内置对象 + var part = splits[0]; + for (var i = 0, len = splits.length - 1; i < len; i++, part = splits[i]) { + if (!parent[part]) { + parent = parent[part] = {}; + } else { + parent = parent[part]; + } + } + // 存放对象 + parent[part] = object; + // 返回 last part name (例如:classname) + return part; +} + +$Boot.isDefined = function(o) { + return typeof (o) != "undefined" +} +/** + * 启动配置类 + */ +$Boot.Config = function() { + + function isDefined(o) { + return typeof (o) != "undefined" + } + + //用户应用当前目录 + if (!isDefined(window.$userAppDir)) { + window.$userAppDir = './' + } + //组件库目录 + if (!isDefined(window.$userFrameDir)) { + window.$userFrameDir = '/common/' + } + //用户i18文件目录 + if (!isDefined(window.$userI18nDir)) { + window.$userI18nDir = './' + } + + //当前语言 默认为英语 + var language = "zh-CN"; + //var languageList = ['ar', 'ba', 'cr', 'cs', 'de', 'el', 'es', 'fi', 'fr', 'fr-FR', 'hu-HU', 'id', 'it', 'ja', 'nb-NO', 'nl', 'pl', 'pl-PL', 'pt', 'pt-BR', 'ro-RO', 'ru-RU', 'sk', 'sr', 'sr-Latn', 'sv-SE', 'en-US','uk-UA', 'zh-CN', 'zh-TW']; + var languageList = ['en-US', 'zh-CN']; + + //从服务端取客户端接受语言类型 + var getAcceptLangFromServer = true; + + + /** + * 创建XMLHttpRequest对象 + */ + function createXMLHttpRequest() { + if (window.ActiveXObject) { + return new ActiveXObject("Microsoft.XMLHTTP"); + } else if (window.XMLHttpRequest) { + return new XMLHttpRequest(); + } else { + throw new Error("This Brower do not support XMLHTTP!!"); + } + } + + + /** + * 同步发送xml http 请求 + * @param {Object} url + * @param {Object} data + * @param {Object} method + */ + function httpRequest(method, url, data) { + var xmlhttp; + xmlhttp = createXMLHttpRequest(); + var sendData = null; + if (method == "get") { + url = url + "?" + data; + + } else if (method == "post") { + sendData = data; + } + xmlhttp.open(method, url, false); + xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + xmlhttp.setRequestHeader("If-Modified-Since", "0"); + xmlhttp.send(sendData); + if (xmlhttp.status == 200) + return xmlhttp.responseText; + } + + /** + * 同步发送xml http 请求(给外部调用) + * @param {Object} url + * @param {Object} data + * @param {Object} method + */ + this.httpRequestStatic = function(method, url, data) { + var xmlhttp; + xmlhttp = createXMLHttpRequest(); + var sendData = null; + if (method == "get") { + url = url + "?" + data; + + } else if (method == "post") { + sendData = data; + } + xmlhttp.open(method, url, false); + xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + xmlhttp.setRequestHeader("If-Modified-Since", "0"); + xmlhttp.send(sendData); + if (xmlhttp.status == 200) + return xmlhttp.responseText; + } + + function inArray(array, obj) { + for (var i = 0; i < array.length; i++) { + if (array[i] == obj) { + return true; + } + } + return false; + + } + + /** + * 取得浏览器语言信息 + */ + this.getLanguage = function() { + var rtnLanguage = localStorage.getItem("language-option"); + if( rtnLanguage == "null" || rtnLanguage == null ){ + rtnLanguage = window.navigator.userLanguage||window.navigator.language; + } + if( rtnLanguage == '"zh-CN"' || rtnLanguage == "zh-CN" ){ + return "zh-CN"; + }else{ + return "en-US"; + } + //return "en-US"; + } + + this.getUrlParam=function(name){ + var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 + var search =decodeURIComponent(location.search.substring(1)); //decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 + var r =search.match(reg); //匹配目标参数 + if (r != null) return unescape(r[2]); //unescape() 函数可对通过 escape() 编码的字符串进行解码。 + return null; //返回参数值 + } + + +} + +//创建命名空间 +$Boot.createNamespace("com.zte.ums.aos.framework.BootConfig", $Boot.Config); +//创建基础配置对象实例 +$Boot.bootConfig = new com.zte.ums.aos.framework.BootConfig(); + +function getLanguage(){ + return $Boot.bootConfig.getLanguage(); +} + +function getStringWidth(text,fontSize) +{ + var span = document.getElementById("_ictframework_getwidth"); + if (span == null) { + span = document.createElement("span"); + span.id = "_ictframework_getwidth"; + document.body.appendChild(span); + } + span.innerText = text; + span.style.whiteSpace = "nowrap"; + $("#_ictframework_getwidth").attr('style','font-size:'+fontSize+'px;'); + var width = span.offsetWidth; + $("#_ictframework_getwidth").attr('style','display:none'); + return width; +} + +function getUrlParam(name){ + return $Boot.bootConfig.getUrlParam(name); +} + +function httpRequest(method, url, data) { + return $Boot.bootConfig.httpRequestStatic(method, url, data) +} + +// 定义JQUERY AJAX 完成函数,判断返回状态,如果状态正常,但HEADER头里有session超时信息,则刷新重登录 +// 如果状态为 401, 也刷新重登录 +// 注意如果在$.ajax() 函数中定义了 complete,则覆盖了这里预定义complete内容,以$.ajax()函数中定义的为准,这里预定义的函数则失效,如果 +// 要继续判断session超时,则需要在 $.ajax()函数中定义的complete函数中加入这里预定义内容。 +if (jQuery) { + $.ajaxSetup({ + complete:function(XMLHttpRequest,textStatus){ + if (XMLHttpRequest.status == 401) { + window.location.replace("login.html"); + } + // if (XMLHttpRequest.status == 200) { + // var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); ////通过XMLHttpRequest取得响应头,sessionstatus, + // if(sessionstatus=="timeout"){ + // window.location.replace("/"); + // } + // } else if (XMLHttpRequest.status == 401) { + // window.location.replace("/"); + // } + } + }); +} diff --git a/uiframe-iui/src/main/resources/webroot/framework/json/main-page.json b/uiframe-iui/src/main/resources/webroot/framework/json/main-page.json new file mode 100644 index 00000000..ca282f77 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/json/main-page.json @@ -0,0 +1,103 @@ +{ + "propertiesFileNamePrefix":"web-framework-integration-i18n", + "productName":"Net Numen ICT", + "productImage":"img/integration/zte_logo_white.png", + "modules":[ + { + "cover":"com_zte_ums_ict_framework_main_page_dashboard", + "background":"skyBlue-mainpage", + "toolsImage":"toolsImageBrokenLine", + "url":"", + "linkId":"ngict-dashboard-index", + "contentTip":"" + }, + { + "cover":"com_zte_ums_ict_framework_main_page_monitor", + "background":"golden-mainpage", + "toolsImage":"toolsImageHierachy", + "url":"", + "linkId":"ngict-itm-monintor", + "contentTip":"" + }, + { + "cover":"", + "background":"manLieONCloud-image", + "toolsImage":"", + "url":"http://vnjs.net/www/project/freewall/", + "contentTip":"" + }, + { + "cover":"com_zte_ums_ict_framework_main_page_alarm", + "background":"orange-mainpage", + "toolsImage":"toolsImageGear", + "url":"", + "linkId":"ngict-fm-summary", + + "contentTip":"" + }, + { + "cover":"com_zte_ums_ict_framework_main_page_performance", + "background":"pinkishRed-mainpage", + "toolsImage":"toolsImagePresent", + "url":"", + "linkId":"ngict-pm-meatask", + + "contentTip":"" + }, + { + "cover":"", + "background":"magicCube-image", + "toolsImage":"", + "url":"", + "contentTip":"" + }, + { + "cover":"com_zte_ums_ict_framework_main_page_security", + "background":"grassGreen-mainpage", + "toolsImage":"toolsImageFile", + "url":"", + "linkId":"ngict-sm", + + "contentTip":"" + }, + { + "cover":"", + "background":"meeting-image", + "toolsImage":"", + "url":"", + "contentTip":"" + }, + { + "cover":"", + "background":"earth-image", + "toolsImage":"", + "url":"", + "contentTip":"" + }, + { + "cover":"com_zte_ums_ict_framework_main_page_log", + "background":"orange-mainpage", + "toolsImage":"toolsImageGear", + "url":"", + "linkId":"ngict-log", + + "contentTip":"" + }, + { + "cover":"com_zte_ums_ict_framework_main_page_system", + "background":"skyBlue-mainpage", + "toolsImage":"toolsImageBriefcase", + "url":"", + "linkId":"ngict-system", + + "contentTip":"" + }, + { + "cover":"", + "background":"magicThought-image", + "toolsImage":"", + "url":"", + "contentTip":"" + } + ] +} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/login.html b/uiframe-iui/src/main/resources/webroot/framework/login.html new file mode 100644 index 00000000..bfc3f108 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/login.html @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    + +
    + + + + + + + + + + + + + + + + + diff --git a/uiframe-iui/src/main/resources/webroot/framework/main-page.html b/uiframe-iui/src/main/resources/webroot/framework/main-page.html new file mode 100644 index 00000000..66637ea2 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/main-page.html @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    Net Numen

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html b/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html new file mode 100644 index 00000000..142b1664 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fmegabar.html @@ -0,0 +1,17 @@ + diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html b/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html new file mode 100644 index 00000000..142b1664 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/menus/main_Fsiderbar.html @@ -0,0 +1,17 @@ + diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html b/uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html new file mode 100644 index 00000000..142b1664 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/menus/main_siderbar.html @@ -0,0 +1,17 @@ + diff --git a/uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt b/uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt new file mode 100644 index 00000000..ac089ae8 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/framework/menus/readme.txt @@ -0,0 +1,17 @@ +==== + Copyright (C) 2015 ZTE, Inc. and others. All rights reserved. (ZTE) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==== + +本目录放置菜单。 \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css b/uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css new file mode 100644 index 00000000..3a85ab38 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/animate/animate.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2014 Daniel Eden +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js b/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js new file mode 100644 index 00000000..786ed3c0 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.js @@ -0,0 +1,5819 @@ +/*================================================== + Copyright (c) 2013-2015 司徒正美 and other contributors + http://www.cnblogs.com/rubylouvre/ + https://github.com/RubyLouvre + http://weibo.com/jslouvre/ + + Released under the MIT license + avalon.js 1.45 built in 2015.7.17 + support IE6+ and other browsers + ==================================================*/ +(function(global, factory) { + + if (typeof module === "object" && typeof module.exports === "object") { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get avalon. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var avalon = require("avalon")(window); + module.exports = global.document ? factory(global, true) : function(w) { + if (!w.document) { + throw new Error("Avalon requires a window with a document") + } + return factory(w) + } + } else { + factory(global) + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function(window, noGlobal){ + +/********************************************************************* + * 全局变量及方法 * + **********************************************************************/ +var expose = new Date() - 0 +//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function +var DOC = window.document +var head = DOC.getElementsByTagName("head")[0] //HEAD元素 +var ifGroup = head.insertBefore(document.createElement("avalon"), head.firstChild) //避免IE6 base标签BUG +ifGroup.innerHTML = "X" +ifGroup.setAttribute("ms-skip", "1") +ifGroup.className = "avalonHide" +var rnative = /\[native code\]/ //判定是否原生函数 +function log() { + if (window.console && avalon.config.debug) { + // http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log + Function.apply.call(console.log, console, arguments) + } +} + + +var subscribers = "$" + expose +var otherRequire = window.require +var otherDefine = window.define +var innerRequire +var stopRepeatAssign = false +var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach +var rcomplexType = /^(?:object|array)$/ +var rsvg = /^\[object SVG\w*Element\]$/ +var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/ +var oproto = Object.prototype +var ohasOwn = oproto.hasOwnProperty +var serialize = oproto.toString +var ap = Array.prototype +var aslice = ap.slice +var Registry = {} //将函数曝光到此对象上,方便访问器收集依赖 +var W3C = window.dispatchEvent +var root = DOC.documentElement +var avalonFragment = DOC.createDocumentFragment() +var cinerator = DOC.createElement("div") +var class2type = {} +"Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) { + class2type["[object " + name + "]"] = name.toLowerCase() +}) + + +function noop() { +} + + +function oneObject(array, val) { + if (typeof array === "string") { + array = array.match(rword) || [] + } + var result = {}, + value = val !== void 0 ? val : 1 + for (var i = 0, n = array.length; i < n; i++) { + result[array[i]] = value + } + return result +} + +//生成UUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript +var generateID = function (prefix) { + prefix = prefix || "avalon" + return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix) +} +function IE() { + if (window.VBArray) { + var mode = document.documentMode + return mode ? mode : window.XMLHttpRequest ? 7 : 6 + } else { + return NaN + } +} +var IEVersion = IE() + +avalon = function (el) { //创建jQuery式的无new 实例化结构 + return new avalon.init(el) +} + +avalon.profile = function () { + if (window.console && avalon.config.profile) { + Function.apply.call(console.log, console, arguments) + } +} + +/*视浏览器情况采用最快的异步回调*/ +avalon.nextTick = new function () {// jshint ignore:line + var tickImmediate = window.setImmediate + var tickObserver = window.MutationObserver + var tickPost = W3C && window.postMessage + if (tickImmediate) { + return tickImmediate.bind(window) + } + + var queue = [] + function callback() { + var n = queue.length + for (var i = 0; i < n; i++) { + queue[i]() + } + queue = queue.slice(n) + } + + if (tickObserver) { + var node = document.createTextNode("avalon") + new tickObserver(callback).observe(node, {characterData: true})// jshint ignore:line + return function (fn) { + queue.push(fn) + node.data = Math.random() + } + } + + if (tickPost) { + window.addEventListener("message", function (e) { + var source = e.source + if ((source === window || source === null) && e.data === "process-tick") { + e.stopPropagation() + callback() + } + }) + + return function (fn) { + queue.push(fn) + window.postMessage('process-tick', '*') + } + } + + return function (fn) { + setTimeout(fn, 0) + } +}// jshint ignore:line +/********************************************************************* + * avalon的静态方法定义区 * + **********************************************************************/ +avalon.init = function (el) { + this[0] = this.element = el +} +avalon.fn = avalon.prototype = avalon.init.prototype + +avalon.type = function (obj) { //取得目标的类型 + if (obj == null) { + return String(obj) + } + // 早期的webkit内核浏览器实现了已废弃的ecma262v4标准,可以将正则字面量当作函数使用,因此typeof在判定正则时会返回function + return typeof obj === "object" || typeof obj === "function" ? + class2type[serialize.call(obj)] || "object" : + typeof obj +} + +var isFunction = typeof alert === "object" ? function (fn) { + try { + return /^\s*\bfunction\b/.test(fn + "") + } catch (e) { + return false + } +} : function (fn) { + return serialize.call(fn) === "[object Function]" +} +avalon.isFunction = isFunction + +avalon.isWindow = function (obj) { + if (!obj) + return false + // 利用IE678 window == document为true,document == window竟然为false的神奇特性 + // 标准浏览器及IE9,IE10等使用 正则检测 + return obj == obj.document && obj.document != obj //jshint ignore:line +} + +function isWindow(obj) { + return rwindow.test(serialize.call(obj)) +} +if (isWindow(window)) { + avalon.isWindow = isWindow +} +var enu +for (enu in avalon({})) { + break +} +var enumerateBUG = enu !== "0" //IE6下为true, 其他为false +/*判定是否是一个朴素的javascript对象(Object),不是DOM对象,不是BOM对象,不是自定义类的实例*/ +avalon.isPlainObject = function (obj, key) { + if (!obj || avalon.type(obj) !== "object" || obj.nodeType || avalon.isWindow(obj)) { + return false; + } + try { //IE内置对象没有constructor + if (obj.constructor && !ohasOwn.call(obj, "constructor") && !ohasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { + return false; + } + } catch (e) { //IE8 9会在这里抛错 + return false; + } + if (enumerateBUG) { + for (key in obj) { + return ohasOwn.call(obj, key) + } + } + for (key in obj) { + } + return key === void 0 || ohasOwn.call(obj, key) +} +if (rnative.test(Object.getPrototypeOf)) { + avalon.isPlainObject = function (obj) { + // 简单的 typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通不过 + return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto + } +} +//与jQuery.extend方法,可用于浅拷贝,深拷贝 +avalon.mix = avalon.fn.mix = function () { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false + + // 如果第一个参数为布尔,判定是否深拷贝 + if (typeof target === "boolean") { + deep = target + target = arguments[1] || {} + i++ + } + + //确保接受方为一个复杂的数据类型 + if (typeof target !== "object" && !isFunction(target)) { + target = {} + } + + //如果只有一个参数,那么新成员添加于mix所在的对象上 + if (i === length) { + target = this + i-- + } + + for (; i < length; i++) { + //只处理非空参数 + if ((options = arguments[i]) != null) { + for (name in options) { + src = target[name] + try { + copy = options[name] //当options为VBS对象时报错 + } catch (e) { + continue + } + + // 防止环引用 + if (target === copy) { + continue + } + if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { + + if (copyIsArray) { + copyIsArray = false + clone = src && Array.isArray(src) ? src : [] + + } else { + clone = src && avalon.isPlainObject(src) ? src : {} + } + + target[name] = avalon.mix(deep, clone, copy) + } else if (copy !== void 0) { + target[name] = copy + } + } + } + } + return target +} + +function _number(a, len) { //用于模拟slice, splice的效果 + a = Math.floor(a) || 0 + return a < 0 ? Math.max(len + a, 0) : Math.min(a, len); +} +avalon.mix({ + rword: rword, + subscribers: subscribers, + version: 1.45, + ui: {}, + log: log, + slice: W3C ? function (nodes, start, end) { + return aslice.call(nodes, start, end) + } : function (nodes, start, end) { + var ret = [] + var len = nodes.length + if (end === void 0) + end = len + if (typeof end === "number" && isFinite(end)) { + start = _number(start, len) + end = _number(end, len) + for (var i = start; i < end; ++i) { + ret[i - start] = nodes[i] + } + } + return ret + }, + noop: noop, + /*如果不用Error对象封装一下,str在控制台下可能会乱码*/ + error: function (str, e) { + throw (e || Error)(str) + }, + /*将一个以空格或逗号隔开的字符串或数组,转换成一个键值都为1的对象*/ + oneObject: oneObject, + /* avalon.range(10) + => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + avalon.range(1, 11) + => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + avalon.range(0, 30, 5) + => [0, 5, 10, 15, 20, 25] + avalon.range(0, -10, -1) + => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] + avalon.range(0) + => []*/ + range: function (start, end, step) { // 用于生成整数数组 + step || (step = 1) + if (end == null) { + end = start || 0 + start = 0 + } + var index = -1, + length = Math.max(0, Math.ceil((end - start) / step)), + result = new Array(length) + while (++index < length) { + result[index] = start + start += step + } + return result + }, + eventHooks: [], + /*绑定事件*/ + bind: function(el, type, fn, phase) { + var hooks = avalon.eventHooks + var hook = hooks[type] + if (typeof hook === "object") { + type = hook.type + if (hook.deel) { + fn = hook.deel(el, type, fn, phase) + } + } + var callback = W3C ? fn : function(e) { + fn.call(el, fixEvent(e)); + } + if (W3C) { + el.addEventListener(type, callback, !!phase) + } else { + el.attachEvent("on" + type, callback) + } + return callback + }, + /*卸载事件*/ + unbind: function(el, type, fn, phase) { + var hooks = avalon.eventHooks + var hook = hooks[type] + var callback = fn || noop + if (typeof hook === "object") { + type = hook.type + if (hook.deel) { + fn = hook.deel(el, type, fn, false) + } + } + if (W3C) { + el.removeEventListener(type, callback, !!phase) + } else { + el.detachEvent("on" + type, callback) + } + }, + /*读写删除元素节点的样式*/ + css: function (node, name, value) { + if (node instanceof avalon) { + node = node[0] + } + var prop = /[_-]/.test(name) ? camelize(name) : name, fn + name = avalon.cssName(prop) || prop + if (value === void 0 || typeof value === "boolean") { //获取样式 + fn = cssHooks[prop + ":get"] || cssHooks["@:get"] + if (name === "background") { + name = "backgroundColor" + } + var val = fn(node, name) + return value === true ? parseFloat(val) || 0 : val + } else if (value === "") { //请除样式 + node.style[name] = "" + } else { //设置样式 + if (value == null || value !== value) { + return + } + if (isFinite(value) && !avalon.cssNumber[prop]) { + value += "px" + } + fn = cssHooks[prop + ":set"] || cssHooks["@:set"] + fn(node, name, value) + } + }, + /*遍历数组与对象,回调的第一个参数为索引或键名,第二个或元素或键值*/ + each: function (obj, fn) { + if (obj) { //排除null, undefined + var i = 0 + if (isArrayLike(obj)) { + for (var n = obj.length; i < n; i++) { + if (fn(i, obj[i]) === false) + break + } + } else { + for (i in obj) { + if (obj.hasOwnProperty(i) && fn(i, obj[i]) === false) { + break + } + } + } + } + }, + //收集元素的data-{{prefix}}-*属性,并转换为对象 + getWidgetData: function (elem, prefix) { + var raw = avalon(elem).data() + var result = {} + for (var i in raw) { + if (i.indexOf(prefix) === 0) { + result[i.replace(prefix, "").replace(/\w/, function (a) { + return a.toLowerCase() + })] = raw[i] + } + } + return result + }, + Array: { + /*只有当前数组不存在此元素时只添加它*/ + ensure: function (target, item) { + if (target.indexOf(item) === -1) { + return target.push(item) + } + }, + /*移除数组中指定位置的元素,返回布尔表示成功与否*/ + removeAt: function (target, index) { + return !!target.splice(index, 1).length + }, + /*移除数组中第一个匹配传参的那个元素,返回布尔表示成功与否*/ + remove: function (target, item) { + var index = target.indexOf(item) + if (~index) + return avalon.Array.removeAt(target, index) + return false + } + } +}) + +var bindingHandlers = avalon.bindingHandlers = {} +var bindingExecutors = avalon.bindingExecutors = {} + +/*判定是否类数组,如节点集合,纯数组,arguments与拥有非负整数的length属性的纯JS对象*/ +function isArrayLike(obj) { + if (!obj) + return false + var n = obj.length + if (n === (n >>> 0)) { //检测length属性是否为非负整数 + var type = serialize.call(obj).slice(8, -1) + if (/(?:regexp|string|function|window|global)$/i.test(type)) + return false + if (type === "Array") + return true + try { + if ({}.propertyIsEnumerable.call(obj, "length") === false) { //如果是原生对象 + return /^\s?function/.test(obj.item || obj.callee) + } + return true + } catch (e) { //IE的NodeList直接抛错 + return !obj.window //IE6-8 window + } + } + return false +} + + +// https://github.com/rsms/js-lru +var Cache = new function() {// jshint ignore:line + function LRU(maxLength) { + this.size = 0 + this.limit = maxLength + this.head = this.tail = void 0 + this._keymap = {} + } + + var p = LRU.prototype + + p.put = function(key, value) { + var entry = { + key: key, + value: value + } + this._keymap[key] = entry + if (this.tail) { + this.tail.newer = entry + entry.older = this.tail + } else { + this.head = entry + } + this.tail = entry + if (this.size === this.limit) { + this.shift() + } else { + this.size++ + } + return value + } + + p.shift = function() { + var entry = this.head + if (entry) { + this.head = this.head.newer + this.head.older = + entry.newer = + entry.older = + this._keymap[entry.key] = void 0 + } + } + p.get = function(key) { + var entry = this._keymap[key] + if (entry === void 0) + return + if (entry === this.tail) { + return entry.value + } + // HEAD--------------TAIL + // <.older .newer> + // <--- add direction -- + // A B C E + if (entry.newer) { + if (entry === this.head) { + this.head = entry.newer + } + entry.newer.older = entry.older // C <-- E. + } + if (entry.older) { + entry.older.newer = entry.newer // C. --> E + } + entry.newer = void 0 // D --x + entry.older = this.tail // D. --> E + if (this.tail) { + this.tail.newer = entry // E. <-- D + } + this.tail = entry + return entry.value + } + return LRU +}// jshint ignore:line + +/********************************************************************* + * javascript 底层补丁 * + **********************************************************************/ +if (!"司徒正美".trim) { + var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g + String.prototype.trim = function () { + return this.replace(rtrim, "") + } +} +var hasDontEnumBug = !({ + 'toString': null +}).propertyIsEnumerable('toString'), + hasProtoEnumBug = (function () { + }).propertyIsEnumerable('prototype'), + dontEnums = [ + "toString", + "toLocaleString", + "valueOf", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "constructor" + ], + dontEnumsLength = dontEnums.length; +if (!Object.keys) { + Object.keys = function (object) { //ecma262v5 15.2.3.14 + var theKeys = [] + var skipProto = hasProtoEnumBug && typeof object === "function" + if (typeof object === "string" || (object && object.callee)) { + for (var i = 0; i < object.length; ++i) { + theKeys.push(String(i)) + } + } else { + for (var name in object) { + if (!(skipProto && name === "prototype") && ohasOwn.call(object, name)) { + theKeys.push(String(name)) + } + } + } + + if (hasDontEnumBug) { + var ctor = object.constructor, + skipConstructor = ctor && ctor.prototype === object + for (var j = 0; j < dontEnumsLength; j++) { + var dontEnum = dontEnums[j] + if (!(skipConstructor && dontEnum === "constructor") && ohasOwn.call(object, dontEnum)) { + theKeys.push(dontEnum) + } + } + } + return theKeys + } +} +if (!Array.isArray) { + Array.isArray = function (a) { + return serialize.call(a) === "[object Array]" + } +} + +if (!noop.bind) { + Function.prototype.bind = function (scope) { + if (arguments.length < 2 && scope === void 0) + return this + var fn = this, + argv = arguments + return function () { + var args = [], + i + for (i = 1; i < argv.length; i++) + args.push(argv[i]) + for (i = 0; i < arguments.length; i++) + args.push(arguments[i]) + return fn.apply(scope, args) + } + } +} + +function iterator(vars, body, ret) { + var fun = 'for(var ' + vars + 'i=0,n = this.length; i < n; i++){' + body.replace('_', '((i in this) && fn.call(scope,this[i],i,this))') + '}' + ret + /* jshint ignore:start */ + return Function("fn,scope", fun) + /* jshint ignore:end */ +} +if (!rnative.test([].map)) { + avalon.mix(ap, { + //定位操作,返回数组中第一个等于给定参数的元素的索引值。 + indexOf: function (item, index) { + var n = this.length, + i = ~~index + if (i < 0) + i += n + for (; i < n; i++) + if (this[i] === item) + return i + return -1 + }, + //定位操作,同上,不过是从后遍历。 + lastIndexOf: function (item, index) { + var n = this.length, + i = index == null ? n - 1 : index + if (i < 0) + i = Math.max(0, n + i) + for (; i >= 0; i--) + if (this[i] === item) + return i + return -1 + }, + //迭代操作,将数组的元素挨个儿传入一个函数中执行。Prototype.js的对应名字为each。 + forEach: iterator("", '_', ""), + //迭代类 在数组中的每个项上运行一个函数,如果此函数的值为真,则此元素作为新数组的元素收集起来,并返回新数组 + filter: iterator('r=[],j=0,', 'if(_)r[j++]=this[i]', 'return r'), + //收集操作,将数组的元素挨个儿传入一个函数中执行,然后把它们的返回值组成一个新数组返回。Prototype.js的对应名字为collect。 + map: iterator('r=[],', 'r[i]=_', 'return r'), + //只要数组中有一个元素满足条件(放进给定函数返回true),那么它就返回true。Prototype.js的对应名字为any。 + some: iterator("", 'if(_)return true', 'return false'), + //只有数组中的元素都满足条件(放进给定函数返回true),它才返回true。Prototype.js的对应名字为all。 + every: iterator("", 'if(!_)return false', 'return true') + }) +} +/********************************************************************* + * DOM 底层补丁 * + **********************************************************************/ + +function fixContains(root, el) { + try { //IE6-8,游离于DOM树外的文本节点,访问parentNode有时会抛错 + while ((el = el.parentNode)) + if (el === root) + return true + return false + } catch (e) { + return false + } +} +avalon.contains = fixContains +//IE6-11的文档对象没有contains +if (!DOC.contains) { + DOC.contains = function (b) { + return fixContains(DOC, b) + } +} + +function outerHTML() { + return new XMLSerializer().serializeToString(this) +} + +if (window.SVGElement) { + //safari5+是把contains方法放在Element.prototype上而不是Node.prototype + if (!DOC.createTextNode("x").contains) { + Node.prototype.contains = function (arg) {//IE6-8没有Node对象 + return !!(this.compareDocumentPosition(arg) & 16) + } + } + var svgns = "http://www.w3.org/2000/svg" + var svg = DOC.createElementNS(svgns, "svg") + svg.innerHTML = '' + if (!rsvg.test(svg.firstChild)) { // #409 + function enumerateNode(node, targetNode) {// jshint ignore:line + if (node && node.childNodes) { + var nodes = node.childNodes + for (var i = 0, el; el = nodes[i++]; ) { + if (el.tagName) { + var svg = DOC.createElementNS(svgns, + el.tagName.toLowerCase()) + ap.forEach.call(el.attributes, function (attr) { + svg.setAttribute(attr.name, attr.value) //复制属性 + })// jshint ignore:line + // 递归处理子节点 + enumerateNode(el, svg) + targetNode.appendChild(svg) + } + } + } + } + Object.defineProperties(SVGElement.prototype, { + "outerHTML": {//IE9-11,firefox不支持SVG元素的innerHTML,outerHTML属性 + enumerable: true, + configurable: true, + get: outerHTML, + set: function (html) { + var tagName = this.tagName.toLowerCase(), + par = this.parentNode, + frag = avalon.parseHTML(html) + // 操作的svg,直接插入 + if (tagName === "svg") { + par.insertBefore(frag, this) + // svg节点的子节点类似 + } else { + var newFrag = DOC.createDocumentFragment() + enumerateNode(frag, newFrag) + par.insertBefore(newFrag, this) + } + par.removeChild(this) + } + }, + "innerHTML": { + enumerable: true, + configurable: true, + get: function () { + var s = this.outerHTML + var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i") + var rclose = new RegExp("<\/" + this.nodeName + ">$", "i") + return s.replace(ropen, "").replace(rclose, "") + }, + set: function (html) { + if (avalon.clearHTML) { + avalon.clearHTML(this) + var frag = avalon.parseHTML(html) + enumerateNode(frag, this) + } + } + } + }) + } +} +if (!root.outerHTML && window.HTMLElement) { //firefox 到11时才有outerHTML + HTMLElement.prototype.__defineGetter__("outerHTML", outerHTML); +} + + +//============================= event binding ======================= +var rmouseEvent = /^(?:mouse|contextmenu|drag)|click/ +function fixEvent(event) { + var ret = {} + for (var i in event) { + ret[i] = event[i] + } + var target = ret.target = event.srcElement + if (event.type.indexOf("key") === 0) { + ret.which = event.charCode != null ? event.charCode : event.keyCode + } else if (rmouseEvent.test(event.type)) { + var doc = target.ownerDocument || DOC + var box = doc.compatMode === "BackCompat" ? doc.body : doc.documentElement + ret.pageX = event.clientX + (box.scrollLeft >> 0) - (box.clientLeft >> 0) + ret.pageY = event.clientY + (box.scrollTop >> 0) - (box.clientTop >> 0) + ret.wheelDeltaY = ret.wheelDelta + ret.wheelDeltaX = 0 + } + ret.timeStamp = new Date() - 0 + ret.originalEvent = event + ret.preventDefault = function () { //阻止默认行为 + event.returnValue = false + } + ret.stopPropagation = function () { //阻止事件在DOM树中的传播 + event.cancelBubble = true + } + return ret +} + +var eventHooks = avalon.eventHooks +//针对firefox, chrome修正mouseenter, mouseleave +if (!("onmouseenter" in root)) { + avalon.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }, function (origType, fixType) { + eventHooks[origType] = { + type: fixType, + deel: function (elem, _, fn) { + return function (e) { + var t = e.relatedTarget + if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) { + delete e.type + e.type = origType + return fn.call(elem, e) + } + } + } + } + }) +} +//针对IE9+, w3c修正animationend +avalon.each({ + AnimationEvent: "animationend", + WebKitAnimationEvent: "webkitAnimationEnd" +}, function (construct, fixType) { + if (window[construct] && !eventHooks.animationend) { + eventHooks.animationend = { + type: fixType + } + } +}) +//针对IE6-8修正input +if (!("oninput" in DOC.createElement("input"))) { + eventHooks.input = { + type: "propertychange", + deel: function (elem, _, fn) { + return function (e) { + if (e.propertyName === "value") { + e.type = "input" + return fn.call(elem, e) + } + } + } + } +} +if (DOC.onmousewheel === void 0) { + /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120 + firefox DOMMouseScroll detail 下3 上-3 + firefox wheel detlaY 下3 上-3 + IE9-11 wheel deltaY 下40 上-40 + chrome wheel deltaY 下100 上-100 */ + var fixWheelType = DOC.onwheel !== void 0 ? "wheel" : "DOMMouseScroll" + var fixWheelDelta = fixWheelType === "wheel" ? "deltaY" : "detail" + eventHooks.mousewheel = { + type: fixWheelType, + deel: function (elem, _, fn) { + return function (e) { + e.wheelDeltaY = e.wheelDelta = e[fixWheelDelta] > 0 ? -120 : 120 + e.wheelDeltaX = 0 + if (Object.defineProperty) { + Object.defineProperty(e, "type", { + value: "mousewheel" + }) + } + fn.call(elem, e) + } + } + } +} + + + +/********************************************************************* + * 配置系统 * + **********************************************************************/ + +function kernel(settings) { + for (var p in settings) { + if (!ohasOwn.call(settings, p)) + continue + var val = settings[p] + if (typeof kernel.plugins[p] === "function") { + kernel.plugins[p](val) + } else if (typeof kernel[p] === "object") { + avalon.mix(kernel[p], val) + } else { + kernel[p] = val + } + } + return this +} +var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g + +function escapeRegExp(target) { + //http://stevenlevithan.com/regex/xregexp/ + //将字符串安全格式化为正则表达式的源码 + return (target + "").replace(rregexp, "\\$&") +} + +var plugins = { + loader: function (builtin) { + var flag = innerRequire && builtin + window.require = flag ? innerRequire : otherRequire + window.define = flag ? innerRequire.define : otherDefine + }, + interpolate: function (array) { + openTag = array[0] + closeTag = array[1] + if (openTag === closeTag) { + throw new SyntaxError("openTag!==closeTag") + var test = openTag + "test" + closeTag + cinerator.innerHTML = test + if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("<") > -1) { + throw new SyntaxError("此定界符不合法") + } + cinerator.innerHTML = "" + } + var o = escapeRegExp(openTag), + c = escapeRegExp(closeTag) + rexpr = new RegExp(o + "(.*?)" + c) + rexprg = new RegExp(o + "(.*?)" + c, "g") + rbind = new RegExp(o + ".*?" + c + "|\\sms-") + } +} + +kernel.debug = true +kernel.plugins = plugins +kernel.plugins['interpolate'](["{{", "}}"]) +kernel.paths = {} +kernel.shim = {} +kernel.maxRepeatSize = 100 +avalon.config = kernel +var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/ +var findNodes = DOC.querySelectorAll ? function(str) { + return DOC.querySelectorAll(str) +} : function(str) { + var match = str.match(ravalon) + var all = DOC.getElementsByTagName(match[1]) + var nodes = [] + for (var i = 0, el; el = all[i++]; ) { + if (el.getAttribute(match[2]) === match[3]) { + nodes.push(el) + } + } + return nodes +} +/********************************************************************* + * 事件总线 * + **********************************************************************/ +var EventBus = { + $watch: function (type, callback) { + if (typeof callback === "function") { + var callbacks = this.$events[type] + if (callbacks) { + callbacks.push(callback) + } else { + this.$events[type] = [callback] + } + } else { //重新开始监听此VM的第一重简单属性的变动 + this.$events = this.$watch.backup + } + return this + }, + $unwatch: function (type, callback) { + var n = arguments.length + if (n === 0) { //让此VM的所有$watch回调无效化 + this.$watch.backup = this.$events + this.$events = {} + } else if (n === 1) { + this.$events[type] = [] + } else { + var callbacks = this.$events[type] || [] + var i = callbacks.length + while (~--i < 0) { + if (callbacks[i] === callback) { + return callbacks.splice(i, 1) + } + } + } + return this + }, + $fire: function (type) { + var special, i, v, callback + if (/^(\w+)!(\S+)$/.test(type)) { + special = RegExp.$1 + type = RegExp.$2 + } + var events = this.$events + if (!events) + return + var args = aslice.call(arguments, 1) + var detail = [type].concat(args) + if (special === "all") { + for (i in avalon.vmodels) { + v = avalon.vmodels[i] + if (v !== this) { + v.$fire.apply(v, detail) + } + } + } else if (special === "up" || special === "down") { + var elements = events.expr ? findNodes(events.expr) : [] + if (elements.length === 0) + return + for (i in avalon.vmodels) { + v = avalon.vmodels[i] + if (v !== this) { + if (v.$events.expr) { + var eventNodes = findNodes(v.$events.expr) + if (eventNodes.length === 0) { + continue + } + //循环两个vmodel中的节点,查找匹配(向上匹配或者向下匹配)的节点并设置标识 + /* jshint ignore:start */ + ap.forEach.call(eventNodes, function (node) { + ap.forEach.call(elements, function (element) { + var ok = special === "down" ? element.contains(node) : //向下捕获 + node.contains(element) //向上冒泡 + if (ok) { + node._avalon = v //符合条件的加一个标识 + } + }); + }) + /* jshint ignore:end */ + } + } + } + var nodes = DOC.getElementsByTagName("*") //实现节点排序 + var alls = [] + ap.forEach.call(nodes, function (el) { + if (el._avalon) { + alls.push(el._avalon) + el._avalon = "" + el.removeAttribute("_avalon") + } + }) + if (special === "up") { + alls.reverse() + } + for (i = 0; callback = alls[i++]; ) { + if (callback.$fire.apply(callback, detail) === false) { + break + } + } + } else { + var callbacks = events[type] || [] + var all = events.$all || [] + for (i = 0; callback = callbacks[i++]; ) { + if (isFunction(callback)) + callback.apply(this, args) + } + for (i = 0; callback = all[i++]; ) { + if (isFunction(callback)) + callback.apply(this, arguments) + } + } + } +} + +/********************************************************************* + * modelFactory * + **********************************************************************/ +//avalon最核心的方法的两个方法之一(另一个是avalon.scan),返回一个ViewModel(VM) +var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里 +avalon.define = function (id, factory) { + var $id = id.$id || id + if (!$id) { + log("warning: vm必须指定$id") + } + if (VMODELS[$id]) { + log("warning: " + $id + " 已经存在于avalon.vmodels中") + } + if (typeof id === "object") { + var model = modelFactory(id) + } else { + var scope = { + $watch: noop + } + factory(scope) //得到所有定义 + + model = modelFactory(scope) //偷天换日,将scope换为model + stopRepeatAssign = true + factory(model) + stopRepeatAssign = false + } + model.$id = $id + return VMODELS[$id] = model +} + +//一些不需要被监听的属性 +var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray,$proxy,$reinitialize,$propertyNames").match(rword) +var defineProperty = Object.defineProperty +var canHideOwn = true +//如果浏览器不支持ecma262v5的Object.defineProperties或者存在BUG,比如IE8 +//标准浏览器使用__defineGetter__, __defineSetter__实现 +try { + defineProperty({}, "_", { + value: "x" + }) + var defineProperties = Object.defineProperties +} catch (e) { + canHideOwn = false +} + +function modelFactory(source, $special, $model) { + if (Array.isArray(source)) { + var arr = source.concat() + source.length = 0 + var collection = arrayFactory(source) + collection.pushArray(arr) + return collection + } + //0 null undefined || Node || VModel(fix IE6-8 createWithProxy $val: val引发的BUG) + if (!source || source.nodeType > 0 || (source.$id && source.$events)) { + return source + } + var $skipArray = Array.isArray(source.$skipArray) ? source.$skipArray : [] + $skipArray.$special = $special || {} //强制要监听的属性 + var $vmodel = {} //要返回的对象, 它在IE6-8下可能被偷龙转凤 + $model = $model || {} //vmodels.$model属性 + var $events = {} //vmodel.$events属性 + var accessors = {} //监控属性 + var computed = [] + $$skipArray.forEach(function (name) { + delete source[name] + }) + var names = Object.keys(source) + /* jshint ignore:start */ + names.forEach(function (name, accessor) { + var val = source[name] + $model[name] = val + if (isObservable(name, val, $skipArray)) { + //总共产生三种accessor + $events[name] = [] + var valueType = avalon.type(val) + //总共产生三种accessor + if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) { + accessor = makeComputedAccessor(name, val) + computed.push(accessor) + } else if (rcomplexType.test(valueType)) { + accessor = makeComplexAccessor(name, val, valueType, $events[name]) + } else { + accessor = makeSimpleAccessor(name, val) + } + accessors[name] = accessor + } + }) + /* jshint ignore:end */ + + $vmodel = defineProperties($vmodel, descriptorFactory(accessors), source) //生成一个空的ViewModel + for (var i = 0; i < names.length; i++) { + var name = names[i] + if (!accessors[name]) { + $vmodel[name] = source[name] + } + } + //添加$id, $model, $events, $watch, $unwatch, $fire + $vmodel.$propertyNames = names.join("­") + $vmodel.$id = generateID() + $vmodel.$model = $model + $vmodel.$events = $events + for (i in EventBus) { + var fn = EventBus[i] + if (!W3C) { //在IE6-8下,VB对象的方法里的this并不指向自身,需要用bind处理一下 + fn = fn.bind($vmodel) + } + $vmodel[i] = fn + } + if (canHideOwn) { + Object.defineProperty($vmodel, "hasOwnProperty", hasOwnDescriptor) + } else { + /* jshint ignore:start */ + $vmodel.hasOwnProperty = function (name) { + return name in $vmodel.$model + } + /* jshint ignore:end */ + } + + $vmodel.$reinitialize = function () { + computed.forEach(function (accessor) { + delete accessor._value + delete accessor.oldArgs + accessor.digest = function () { + accessor.call($vmodel) + } + dependencyDetection.begin({ + callback: function (vm, dependency) {//dependency为一个accessor + var name = dependency._name + if (dependency !== accessor) { + var list = vm.$events[name] + injectDependency(list, accessor.digest) + } + } + }) + try { + accessor.get.call($vmodel) + } finally { + dependencyDetection.end() + } + }) + } + $vmodel.$reinitialize() + return $vmodel +} + +var hasOwnDescriptor = { + value: function (name) { + return name in this.$model + }, + writable: false, + enumerable: false, + configurable: true +} +//创建一个简单访问器 +function makeSimpleAccessor(name, value) { + function accessor(value) { + var oldValue = accessor._value + if (arguments.length > 0) { + if (!stopRepeatAssign && !isEqual(value, oldValue)) { + accessor.updateValue(this, value) + accessor.notify(this, value, oldValue) + } + return this + } else { + dependencyDetection.collectDependency(this, accessor) + return oldValue + } + } + accessorFactory(accessor, name) + accessor._value = value + return accessor; +} + +//创建一个计算访问器 +function makeComputedAccessor(name, options) { + function accessor(value) {//计算属性 + var oldValue = accessor._value + var init = ("_value" in accessor) + if (arguments.length > 0) { + if (stopRepeatAssign) { + return this + } + if (typeof accessor.set === "function") { + if (accessor.oldArgs !== value) { + accessor.oldArgs = value + var $events = this.$events + var lock = $events[name] + $events[name] = [] //清空回调,防止内部冒泡而触发多次$fire + accessor.set.call(this, value) + $events[name] = lock + value = accessor.get.call(this) + if (value !== oldValue) { + accessor.updateValue(this, value) + accessor.notify(this, value, oldValue) //触发$watch回调 + } + } + } + return this + } else { + //将依赖于自己的高层访问器或视图刷新函数(以绑定对象形式)放到自己的订阅数组中 + //将自己注入到低层访问器的订阅数组中 + value = accessor.get.call(this) + accessor.updateValue(this, value) + if (init && oldValue !== value) { + accessor.notify(this, value, oldValue) //触发$watch回调 + } + return value + } + } + accessor.set = options.set + accessor.get = options.get + accessorFactory(accessor, name) + return accessor +} + +//创建一个复杂访问器 +function makeComplexAccessor(name, initValue, valueType, list) { + function accessor(value) { + var oldValue = accessor._value + + var son = accessor._vmodel + if (arguments.length > 0) { + if (stopRepeatAssign) { + return this + } + if (valueType === "array") { + var a = son, b = value, + an = a.length, + bn = b.length + a.$lock = true + if (an > bn) { + a.splice(bn, an - bn) + } else if (bn > an) { + a.push.apply(a, b.slice(an)) + } + var n = Math.min(an, bn) + for (var i = 0; i < n; i++) { + a.set(i, b[i]) + } + delete a.$lock + a._fire("set") + } else if (valueType === "object") { + var newPropertyNames = Object.keys(value).join("­") + if (son.$propertyNames === newPropertyNames) { + for (i in value) { + son[i] = value[i] + } + } else { + var sson = accessor._vmodel = modelFactory(value) + var sevent = sson.$events + var oevent = son.$events + for (var i in sevent) { + var arr = sevent[i] + if (Array.isArray(arr)) { + arr = arr.concat(oevent[i]) + } + } + sevent[subscribers] = oevent[subscribers] + sson.$proxy = son.$proxy + son = sson + } + } + accessor.updateValue(this, son.$model) + accessor.notify(this, this._value, oldValue) + return this + } else { + dependencyDetection.collectDependency(this, accessor) + return son + } + } + accessorFactory(accessor, name) + var son = accessor._vmodel = modelFactory(initValue) + son.$events[subscribers] = list + return accessor +} + +function globalUpdateValue(vmodel, value) { + vmodel.$model[this._name] = this._value = value +} + +function globalNotify(vmodel, value, oldValue) { + var name = this._name + var array = vmodel.$events[name] //刷新值 + if (array) { + fireDependencies(array) //同步视图 + EventBus.$fire.call(vmodel, name, value, oldValue) //触发$watch回调 + } +} + +function accessorFactory(accessor, name) { + accessor._name = name + //同时更新_value与model + accessor.updateValue = globalUpdateValue + accessor.notify = globalNotify +} + +//比较两个值是否相等 +var isEqual = Object.is || function (v1, v2) { + if (v1 === 0 && v2 === 0) { + return 1 / v1 === 1 / v2 + } else if (v1 !== v1) { + return v2 !== v2 + } else { + return v1 === v2 + } +} + +function isObservable(name, value, $skipArray) { + if (isFunction(value) || value && value.nodeType) { + return false + } + if ($skipArray.indexOf(name) !== -1) { + return false + } + var $special = $skipArray.$special + if (name && name.charAt(0) === "$" && !$special[name]) { + return false + } + return true +} + +var descriptorFactory = W3C ? function (obj) { + var descriptors = {} + for (var i in obj) { + descriptors[i] = { + get: obj[i], + set: obj[i], + enumerable: true, + configurable: true + } + } + return descriptors +} : function (a) { + return a +} + +//===================修复浏览器对Object.defineProperties的支持================= +if (!canHideOwn) { + if ("__defineGetter__" in avalon) { + defineProperty = function (obj, prop, desc) { + if ('value' in desc) { + obj[prop] = desc.value + } + if ("get" in desc) { + obj.__defineGetter__(prop, desc.get) + } + if ('set' in desc) { + obj.__defineSetter__(prop, desc.set) + } + return obj + } + defineProperties = function (obj, descs) { + for (var prop in descs) { + if (descs.hasOwnProperty(prop)) { + defineProperty(obj, prop, descs[prop]) + } + } + return obj + } + } + if (IEVersion) { + var VBClassPool = {} + window.execScript([// jshint ignore:line + "Function parseVB(code)", + "\tExecuteGlobal(code)", + "End Function" //转换一段文本为VB代码 + ].join("\n"), "VBScript") + function VBMediator(instance, accessors, name, value) {// jshint ignore:line + var accessor = accessors[name] + if (arguments.length === 4) { + accessor.call(instance, value) + } else { + return accessor.call(instance) + } + } + defineProperties = function (name, accessors, properties) { + // jshint ignore:line + var buffer = [] + buffer.push( + "\r\n\tPrivate [__data__], [__proxy__]", + "\tPublic Default Function [__const__](d, p)", + "\t\tSet [__data__] = d: set [__proxy__] = p", + "\t\tSet [__const__] = Me", //链式调用 + "\tEnd Function") + //添加普通属性,因为VBScript对象不能像JS那样随意增删属性,必须在这里预先定义好 + for (name in properties) { + if (!accessors.hasOwnProperty(name)) { + buffer.push("\tPublic [" + name + "]") + } + } + $$skipArray.forEach(function (name) { + if (!accessors.hasOwnProperty(name)) { + buffer.push("\tPublic [" + name + "]") + } + }) + buffer.push("\tPublic [" + 'hasOwnProperty' + "]") + //添加访问器属性 + for (name in accessors) { + buffer.push( + //由于不知对方会传入什么,因此set, let都用上 + "\tPublic Property Let [" + name + "](val" + expose + ")", //setter + "\t\tCall [__proxy__](Me,[__data__], \"" + name + "\", val" + expose + ")", + "\tEnd Property", + "\tPublic Property Set [" + name + "](val" + expose + ")", //setter + "\t\tCall [__proxy__](Me,[__data__], \"" + name + "\", val" + expose + ")", + "\tEnd Property", + "\tPublic Property Get [" + name + "]", //getter + "\tOn Error Resume Next", //必须优先使用set语句,否则它会误将数组当字符串返回 + "\t\tSet[" + name + "] = [__proxy__](Me,[__data__],\"" + name + "\")", + "\tIf Err.Number <> 0 Then", + "\t\t[" + name + "] = [__proxy__](Me,[__data__],\"" + name + "\")", + "\tEnd If", + "\tOn Error Goto 0", + "\tEnd Property") + + } + + buffer.push("End Class") + var body = buffer.join("\r\n") + var className =VBClassPool[body] + if (!className) { + className = generateID("VBClass") + window.parseVB("Class " + className + body) + window.parseVB([ + "Function " + className + "Factory(a, b)", //创建实例并传入两个关键的参数 + "\tDim o", + "\tSet o = (New " + className + ")(a, b)", + "\tSet " + className + "Factory = o", + "End Function" + ].join("\r\n")) + VBClassPool[body] = className + } + var ret = window[className + "Factory"](accessors, VBMediator) //得到其产品 + return ret //得到其产品 + } + } +} + +/********************************************************************* + * 监控数组(与ms-each, ms-repeat配合使用) * + **********************************************************************/ + +function arrayFactory(model) { + var array = [] + array.$id = generateID() + array.$model = model //数据模型 + array.$events = {} + array.$events[subscribers] = [] + array._ = modelFactory({ + length: model.length + }) + array._.$watch("length", function (a, b) { + array.$fire("length", a, b) + }) + for (var i in EventBus) { + array[i] = EventBus[i] + } + avalon.mix(array, arrayPrototype) + return array +} + +function mutateArray(method, pos, n, index, method2, pos2, n2) { + var oldLen = this.length, loop = 2 + while (--loop) { + switch (method) { + case "add": + /* jshint ignore:start */ + var array = this.$model.slice(pos, pos + n).map(function (el) { + if (rcomplexType.test(avalon.type(el))) { + return el.$id ? el : modelFactory(el, 0, el) + } else { + return el + } + }) + /* jshint ignore:end */ + _splice.apply(this, [pos, 0].concat(array)) + this._fire("add", pos, n) + break + case "del": + var ret = this._splice(pos, n) + this._fire("del", pos, n) + break + } + if (method2) { + method = method2 + pos = pos2 + n = n2 + loop = 2 + method2 = 0 + } + } + this._fire("index", index) + if (this.length !== oldLen) { + this._.length = this.length + } + return ret +} + +var _splice = ap.splice +var arrayPrototype = { + _splice: _splice, + _fire: function (method, a, b) { + fireDependencies(this.$events[subscribers], method, a, b) + }, + size: function () { //取得数组长度,这个函数可以同步视图,length不能 + return this._.length + }, + pushArray: function (array) { + var m = array.length, n = this.length + if (m) { + ap.push.apply(this.$model, array) + mutateArray.call(this, "add", n, m, Math.max(0, n - 1)) + } + return m + n + }, + push: function () { + //http://jsperf.com/closure-with-arguments + var array = [] + var i, n = arguments.length + for (i = 0; i < n; i++) { + array[i] = arguments[i] + } + return this.pushArray(array) + }, + unshift: function () { + var m = arguments.length, n = this.length + if (m) { + ap.unshift.apply(this.$model, arguments) + mutateArray.call(this, "add", 0, m, 0) + } + return m + n //IE67的unshift不会返回长度 + }, + shift: function () { + if (this.length) { + var el = this.$model.shift() + mutateArray.call(this, "del", 0, 1, 0) + return el //返回被移除的元素 + } + }, + pop: function () { + var n = this.length + if (n) { + var el = this.$model.pop() + mutateArray.call(this, "del", n - 1, 1, Math.max(0, n - 2)) + return el //返回被移除的元素 + } + }, + splice: function (start) { + var m = arguments.length, args = [], change + var removed = _splice.apply(this.$model, arguments) + if (removed.length) { //如果用户删掉了元素 + args.push("del", start, removed.length, 0) + change = true + } + if (m > 2) { //如果用户添加了元素 + if (change) { + args.splice(3, 1, 0, "add", start, m - 2) + } else { + args.push("add", start, m - 2, 0) + } + change = true + } + if (change) { //返回被移除的元素 + return mutateArray.apply(this, args) + } else { + return [] + } + }, + contains: function (el) { //判定是否包含 + return this.indexOf(el) !== -1 + }, + remove: function (el) { //移除第一个等于给定值的元素 + return this.removeAt(this.indexOf(el)) + }, + removeAt: function (index) { //移除指定索引上的元素 + if (index >= 0) { + this.$model.splice(index, 1) + return mutateArray.call(this, "del", index, 1, 0) + } + return [] + }, + clear: function () { + this.$model.length = this.length = this._.length = 0 //清空数组 + this._fire("clear", 0) + return this + }, + removeAll: function (all) { //移除N个元素 + if (Array.isArray(all)) { + for (var i = this.length - 1; i >= 0; i--) { + if (all.indexOf(this[i]) !== -1) { + this.removeAt(i) + } + } + } else if (typeof all === "function") { + for ( i = this.length - 1; i >= 0; i--) { + var el = this[i] + if (all(el, i)) { + this.removeAt(i) + } + } + } else { + this.clear() + } + }, + ensure: function (el) { + if (!this.contains(el)) { //只有不存在才push + this.push(el) + } + return this + }, + set: function (index, val) { + if (index >= 0) { + var valueType = avalon.type(val) + if (val && val.$model) { + val = val.$model + } + var target = this[index] + if (valueType === "object") { + for (var i in val) { + if (target.hasOwnProperty(i)) { + target[i] = val[i] + } + } + } else if (valueType === "array") { + target.clear().push.apply(target, val) + } else if (target !== val) { + this[index] = val + this.$model[index] = val + this._fire("set", index, val) + } + } + return this + } +} +//相当于原来bindingExecutors.repeat 的index分支 +function resetIndex(array, pos) { + var last = array.length - 1 + for (var el; el = array[pos]; pos++) { + el.$index = pos + el.$first = pos === 0 + el.$last = pos === last + } +} + +function sortByIndex(array, indexes) { + var map = {}; + for (var i = 0, n = indexes.length; i < n; i++) { + map[i] = array[i] // preserve + var j = indexes[i] + if (j in map) { + array[i] = map[j] + delete map[j] + } else { + array[i] = array[j] + } + } +} + +"sort,reverse".replace(rword, function (method) { + arrayPrototype[method] = function () { + var newArray = this.$model//这是要排序的新数组 + var oldArray = newArray.concat() //保持原来状态的旧数组 + var mask = Math.random() + var indexes = [] + var hasSort + ap[method].apply(newArray, arguments) //排序 + for (var i = 0, n = oldArray.length; i < n; i++) { + var neo = newArray[i] + var old = oldArray[i] + if (isEqual(neo, old)) { + indexes.push(i) + } else { + var index = oldArray.indexOf(neo) + indexes.push(index)//得到新数组的每个元素在旧数组对应的位置 + oldArray[index] = mask //屏蔽已经找过的元素 + hasSort = true + } + } + if (hasSort) { + sortByIndex(this, indexes) + // sortByIndex(this.$proxy, indexes) + this._fire("move", indexes) + this._fire("index", 0) + } + return this + } +}) + + +/********************************************************************* + * 依赖调度系统 * + **********************************************************************/ +//检测两个对象间的依赖关系 +var dependencyDetection = (function () { + var outerFrames = [] + var currentFrame + return { + begin: function (accessorObject) { + //accessorObject为一个拥有callback的对象 + outerFrames.push(currentFrame) + currentFrame = accessorObject + }, + end: function () { + currentFrame = outerFrames.pop() + }, + collectDependency: function (vmodel, accessor) { + if (currentFrame) { + //被dependencyDetection.begin调用 + currentFrame.callback(vmodel, accessor); + } + } + }; +})() +//将绑定对象注入到其依赖项的订阅数组中 +var ronduplex = /^(duplex|on)$/ +avalon.injectBinding = function (data) { + var valueFn = data.evaluator + if (valueFn) { //如果是求值函数 + dependencyDetection.begin({ + callback: function (vmodel, dependency) { + injectDependency(vmodel.$events[dependency._name], data) + } + }) + try { + var value = ronduplex.test(data.type) ? data : valueFn.apply(0, data.args) + if(value === void 0){ + delete data.evaluator + } + data.handler(value, data.element, data) + } catch (e) { + //log("warning:exception throwed in [avalon.injectBinding] " + e) + delete data.evaluator + var node = data.element + if (node.nodeType === 3) { + var parent = node.parentNode + if (kernel.commentInterpolate) { + parent.replaceChild(DOC.createComment(data.value), node) + } else { + node.data = openTag + (data.oneTime ? "::" : "") + data.value + closeTag + } + } + } finally { + dependencyDetection.end() + } + } +} + +//将依赖项(比它高层的访问器或构建视图刷新函数的绑定对象)注入到订阅者数组 +function injectDependency(list, data) { + if (data.oneTime) + return + if (list && avalon.Array.ensure(list, data) && data.element) { + injectDisposeQueue(data, list) + } +} + +//通知依赖于这个访问器的订阅者更新自身 +function fireDependencies(list) { + if (list && list.length) { + if (new Date() - beginTime > 444 && typeof list[0] === "object") { + rejectDisposeQueue() + } + var args = aslice.call(arguments, 1) + for (var i = list.length, fn; fn = list[--i]; ) { + var el = fn.element + if (el && el.parentNode) { + try { + var valueFn = fn.evaluator + if (fn.$repeat) { + fn.handler.apply(fn, args) //处理监控数组的方法 + }else if("$repeat" in fn || !valueFn ){//如果没有eval,先eval + bindingHandlers[fn.type](fn, fn.vmodels) + } else if (fn.type !== "on") { //事件绑定只能由用户触发,不能由程序触发 + var value = valueFn.apply(0, fn.args || []) + fn.handler(value, el, fn) + } + } catch (e) { } + } + } + } +} +/********************************************************************* + * 定时GC回收机制 * + **********************************************************************/ +var disposeCount = 0 +var disposeQueue = avalon.$$subscribers = [] +var beginTime = new Date() +var oldInfo = {} +var uuid2Node = {} +function getUid(obj, makeID) { //IE9+,标准浏览器 + if (!obj.uuid && !makeID) { + obj.uuid = ++disposeCount + uuid2Node[obj.uuid] = obj + } + return obj.uuid +} +function getNode(uuid) { + return uuid2Node[uuid] +} +//添加到回收列队中 +function injectDisposeQueue(data, list) { + var elem = data.element + if (!data.uuid) { + if (elem.nodeType !== 1) { + data.uuid = data.type + (data.pos || 0) + "-" + getUid(elem.parentNode) + } else { + data.uuid = data.name + "-" + getUid(elem) + } + } + var lists = data.lists || (data.lists = []) + avalon.Array.ensure(lists, list) + list.$uuid = list.$uuid || generateID() + if (!disposeQueue[data.uuid]) { + disposeQueue[data.uuid] = 1 + disposeQueue.push(data) + } +} + +function rejectDisposeQueue(data) { + if (avalon.optimize) + return + var i = disposeQueue.length + var n = i + var allTypes = [] + var iffishTypes = {} + var newInfo = {} + //对页面上所有绑定对象进行分门别类, 只检测个数发生变化的类型 + while (data = disposeQueue[--i]) { + var type = data.type + if (newInfo[type]) { + newInfo[type]++ + } else { + newInfo[type] = 1 + allTypes.push(type) + } + } + var diff = false + allTypes.forEach(function (type) { + if (oldInfo[type] !== newInfo[type]) { + iffishTypes[type] = 1 + diff = true + } + }) + i = n + if (diff) { + while (data = disposeQueue[--i]) { + if (!data.element) + continue + if (iffishTypes[data.type] && shouldDispose(data.element)) { //如果它没有在DOM树 + disposeQueue.splice(i, 1) + delete disposeQueue[data.uuid] + delete uuid2Node[data.element.uuid] + var lists = data.lists + for (var k = 0, list; list = lists[k++]; ) { + avalon.Array.remove(lists, list) + avalon.Array.remove(list, data) + } + disposeData(data) + } + } + } + oldInfo = newInfo + beginTime = new Date() +} + +function disposeData(data) { + data.element = null + data.rollback && data.rollback() + for (var key in data) { + data[key] = null + } +} + +function shouldDispose(el) { + try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错 + if (!el.parentNode) { + return true + } + } catch (e) { + return true + } + + return el.msRetain ? 0 : (el.nodeType === 1 ? !root.contains(el) : !avalon.contains(root, el)) +} + +/************************************************************************ + * HTML处理(parseHTML, innerHTML, clearHTML) * + ************************************************************************/ +// We have to close these tags to support XHTML +var tagHooks = { + area: [1, "", ""], + param: [1, "", ""], + col: [2, "", "
    "], + legend: [1, "
    ", "
    "], + option: [1, ""], + thead: [1, "", "
    "], + tr: [2, "", "
    "], + td: [3, "", "
    "], + g: [1, '', ''], + //IE6-8在用innerHTML生成节点时,不能直接创建no-scope元素与HTML5的新标签 + _default: W3C ? [0, "", ""] : [1, "X
    ", "
    "] //div可以不用闭合 +} +tagHooks.th = tagHooks.td +tagHooks.optgroup = tagHooks.option +tagHooks.tbody = tagHooks.tfoot = tagHooks.colgroup = tagHooks.caption = tagHooks.thead +String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function (tag) { + tagHooks[tag] = tagHooks.g //处理SVG +}) +var rtagName = /<([\w:]+)/ //取得其tagName +var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig +var rcreate = W3C ? /[^\d\D]/ : /(<(?:script|link|style|meta|noscript))/ig +var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"]) +var rnest = /<(?:tb|td|tf|th|tr|col|opt|leg|cap|area)/ //需要处理套嵌关系的标签 +var script = DOC.createElement("script") +var rhtml = /<|&#?\w+;/ +avalon.parseHTML = function (html) { + var fragment = avalonFragment.cloneNode(false) + if (typeof html !== "string") { + return fragment + } + if (!rhtml.test(html)) { + fragment.appendChild(DOC.createTextNode(html)) + return fragment + } + html = html.replace(rxhtml, "<$1>").trim() + var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(), + //取得其标签名 + wrap = tagHooks[tag] || tagHooks._default, + wrapper = cinerator, + firstChild, neo + if (!W3C) { //fix IE + html = html.replace(rcreate, "
    $1") //在link style script等标签之前添加一个补丁 + } + wrapper.innerHTML = wrap[1] + html + wrap[2] + var els = wrapper.getElementsByTagName("script") + if (els.length) { //使用innerHTML生成的script节点不会发出请求与执行text属性 + for (var i = 0, el; el = els[i++]; ) { + if (scriptTypes[el.type]) { + //以偷龙转凤方式恢复执行脚本功能 + neo = script.cloneNode(false) //FF不能省略参数 + ap.forEach.call(el.attributes, function (attr) { + if (attr && attr.specified) { + neo[attr.name] = attr.value //复制其属性 + neo.setAttribute(attr.name, attr.value) + } + }) // jshint ignore:line + neo.text = el.text + el.parentNode.replaceChild(neo, el) //替换节点 + } + } + } + if (!W3C) { //fix IE + var target = wrap[1] === "X
    " ? wrapper.lastChild.firstChild : wrapper.lastChild + if (target && target.tagName === "TABLE" && tag !== "tbody") { + //IE6-7处理 --> , + // --> , + // -->
    + for (els = target.childNodes, i = 0; el = els[i++]; ) { + if (el.tagName === "TBODY" && !el.innerHTML) { + target.removeChild(el) + break + } + } + } + els = wrapper.getElementsByTagName("br") + var n = els.length + while (el = els[--n]) { + if (el.className === "msNoScope") { + el.parentNode.removeChild(el) + } + } + for (els = wrapper.all, i = 0; el = els[i++]; ) { //fix VML + if (isVML(el)) { + fixVML(el) + } + } + } + //移除我们为了符合套嵌关系而添加的标签 + for (i = wrap[0]; i--; wrapper = wrapper.lastChild) { + } + while (firstChild = wrapper.firstChild) { // 将wrapper上的节点转移到文档碎片上! + fragment.appendChild(firstChild) + } + return fragment +} + +function isVML(src) { + var nodeName = src.nodeName + return nodeName.toLowerCase() === nodeName && src.scopeName && src.outerText === "" +} + +function fixVML(node) { + if (node.currentStyle.behavior !== "url(#default#VML)") { + node.style.behavior = "url(#default#VML)" + node.style.display = "inline-block" + node.style.zoom = 1 //hasLayout + } +} +avalon.innerHTML = function (node, html) { + if (!W3C && (!rcreate.test(html) && !rnest.test(html))) { + try { + node.innerHTML = html + return + } catch (e) { + } + } + var a = this.parseHTML(html) + this.clearHTML(node).appendChild(a) +} +avalon.clearHTML = function (node) { + node.textContent = "" + while (node.firstChild) { + node.removeChild(node.firstChild) + } + return node +} + +/********************************************************************* + * avalon的原型方法定义区 * + **********************************************************************/ + +function hyphen(target) { + //转换为连字符线风格 + return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase() +} + +function camelize(target) { + //提前判断,提高getStyle等的效率 + if (!target || target.indexOf("-") < 0 && target.indexOf("_") < 0) { + return target + } + //转换为驼峰风格 + return target.replace(/[-_][^-_]/g, function(match) { + return match.charAt(1).toUpperCase() + }) +} + +var fakeClassListMethods = { + _toString: function() { + var node = this.node + var cls = node.className + var str = typeof cls === "string" ? cls : cls.baseVal + return str.split(/\s+/).join(" ") + }, + _contains: function(cls) { + return (" " + this + " ").indexOf(" " + cls + " ") > -1 + }, + _add: function(cls) { + if (!this.contains(cls)) { + this._set(this + " " + cls) + } + }, + _remove: function(cls) { + this._set((" " + this + " ").replace(" " + cls + " ", " ")) + }, + __set: function(cls) { + cls = cls.trim() + var node = this.node + if (rsvg.test(node)) { + //SVG元素的className是一个对象 SVGAnimatedString { baseVal="", animVal=""},只能通过set/getAttribute操作 + node.setAttribute("class", cls) + } else { + node.className = cls + } + } //toggle存在版本差异,因此不使用它 +} + + function fakeClassList(node) { + if (!("classList" in node)) { + node.classList = { + node: node + } + for (var k in fakeClassListMethods) { + node.classList[k.slice(1)] = fakeClassListMethods[k] + } + } + return node.classList + } + + + "add,remove".replace(rword, function(method) { + avalon.fn[method + "Class"] = function(cls) { + var el = this[0] + //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26 + if (cls && typeof cls === "string" && el && el.nodeType === 1) { + cls.replace(/\S+/g, function(c) { + fakeClassList(el)[method](c) + }) + } + return this + } + }) + avalon.fn.mix({ + hasClass: function(cls) { + var el = this[0] || {} + return el.nodeType === 1 && fakeClassList(el).contains(cls) + }, + toggleClass: function(value, stateVal) { + var className, i = 0 + var classNames = String(value).split(/\s+/) + var isBool = typeof stateVal === "boolean" + while ((className = classNames[i++])) { + var state = isBool ? stateVal : !this.hasClass(className) + this[state ? "addClass" : "removeClass"](className) + } + return this + }, + attr: function(name, value) { + if (arguments.length === 2) { + this[0].setAttribute(name, value) + return this + } else { + return this[0].getAttribute(name) + } + }, + data: function(name, value) { + name = "data-" + hyphen(name || "") + switch (arguments.length) { + case 2: + this.attr(name, value) + return this + case 1: + var val = this.attr(name) + return parseData(val) + case 0: + var ret = {} + ap.forEach.call(this[0].attributes, function(attr) { + if (attr) { + name = attr.name + if (!name.indexOf("data-")) { + name = camelize(name.slice(5)) + ret[name] = parseData(attr.value) + } + } + }) + return ret + } + }, + removeData: function(name) { + name = "data-" + hyphen(name) + this[0].removeAttribute(name) + return this + }, + css: function(name, value) { + if (avalon.isPlainObject(name)) { + for (var i in name) { + avalon.css(this, i, name[i]) + } + } else { + var ret = avalon.css(this, name, value) + } + return ret !== void 0 ? ret : this + }, + position: function() { + var offsetParent, offset, + elem = this[0], + parentOffset = { + top: 0, + left: 0 + } + if (!elem) { + return + } + if (this.css("position") === "fixed") { + offset = elem.getBoundingClientRect() + } else { + offsetParent = this.offsetParent() //得到真正的offsetParent + offset = this.offset() // 得到正确的offsetParent + if (offsetParent[0].tagName !== "HTML") { + parentOffset = offsetParent.offset() + } + parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true) + parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true) + + // Subtract offsetParent scroll positions + parentOffset.top -= offsetParent.scrollTop() + parentOffset.left -= offsetParent.scrollLeft() + } + return { + top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true), + left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true) + } + }, + offsetParent: function() { + var offsetParent = this[0].offsetParent + while (offsetParent && avalon.css(offsetParent, "position") === "static") { + offsetParent = offsetParent.offsetParent; + } + return avalon(offsetParent || root) + }, + bind: function(type, fn, phase) { + if (this[0]) { //此方法不会链 + return avalon.bind(this[0], type, fn, phase) + } + }, + unbind: function(type, fn, phase) { + if (this[0]) { + avalon.unbind(this[0], type, fn, phase) + } + return this + }, + val: function(value) { + var node = this[0] + if (node && node.nodeType === 1) { + var get = arguments.length === 0 + var access = get ? ":get" : ":set" + var fn = valHooks[getValType(node) + access] + if (fn) { + var val = fn(node, value) + } else if (get) { + return (node.value || "").replace(/\r/g, "") + } else { + node.value = value + } + } + return get ? val : this + } + }) + + function parseData(data) { + try { + if (typeof data === "object") + return data + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? avalon.parseJSON(data) : data + } catch (e) {} + return data + } +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g +avalon.parseJSON = window.JSON ? JSON.parse : function(data) { + if (typeof data === "string") { + data = data.trim(); + if (data) { + if (rvalidchars.test(data.replace(rvalidescape, "@") + .replace(rvalidtokens, "]") + .replace(rvalidbraces, ""))) { + return (new Function("return " + data))() // jshint ignore:line + } + } + avalon.error("Invalid JSON: " + data) + } + return data +} + +//生成avalon.fn.scrollLeft, avalon.fn.scrollTop方法 +avalon.each({ + scrollLeft: "pageXOffset", + scrollTop: "pageYOffset" +}, function(method, prop) { + avalon.fn[method] = function(val) { + var node = this[0] || {}, win = getWindow(node), + top = method === "scrollTop" + if (!arguments.length) { + return win ? (prop in win) ? win[prop] : root[method] : node[method] + } else { + if (win) { + win.scrollTo(!top ? val : avalon(win).scrollLeft(), top ? val : avalon(win).scrollTop()) + } else { + node[method] = val + } + } + } +}) + +function getWindow(node) { + return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false; +} +//=============================css相关======================= +var cssHooks = avalon.cssHooks = {} +var prefixes = ["", "-webkit-", "-o-", "-moz-", "-ms-"] +var cssMap = { + "float": W3C ? "cssFloat" : "styleFloat" +} +avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom") + +avalon.cssName = function(name, host, camelCase) { + if (cssMap[name]) { + return cssMap[name] + } + host = host || root.style + for (var i = 0, n = prefixes.length; i < n; i++) { + camelCase = camelize(prefixes[i] + name) + if (camelCase in host) { + return (cssMap[name] = camelCase) + } + } + return null +} +cssHooks["@:set"] = function(node, name, value) { + try { //node.style.width = NaN;node.style.width = "xxxxxxx";node.style.width = undefine 在旧式IE下会抛异常 + node.style[name] = value + } catch (e) {} +} +if (window.getComputedStyle) { + cssHooks["@:get"] = function(node, name) { + if (!node || !node.style) { + throw new Error("getComputedStyle要求传入一个节点 " + node) + } + var ret, styles = getComputedStyle(node, null) + if (styles) { + ret = name === "filter" ? styles.getPropertyValue(name) : styles[name] + if (ret === "") { + ret = node.style[name] //其他浏览器需要我们手动取内联样式 + } + } + return ret + } + cssHooks["opacity:get"] = function(node) { + var ret = cssHooks["@:get"](node, "opacity") + return ret === "" ? "1" : ret + } +} else { + var rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i + var rposition = /^(top|right|bottom|left)$/ + var ralpha = /alpha\([^)]*\)/i + var ie8 = !! window.XDomainRequest + var salpha = "DXImageTransform.Microsoft.Alpha" + var border = { + thin: ie8 ? '1px' : '2px', + medium: ie8 ? '3px' : '4px', + thick: ie8 ? '5px' : '6px' + } + cssHooks["@:get"] = function(node, name) { + //取得精确值,不过它有可能是带em,pc,mm,pt,%等单位 + var currentStyle = node.currentStyle + var ret = currentStyle[name] + if ((rnumnonpx.test(ret) && !rposition.test(ret))) { + //①,保存原有的style.left, runtimeStyle.left, + var style = node.style, + left = style.left, + rsLeft = node.runtimeStyle.left + //②由于③处的style.left = xxx会影响到currentStyle.left, + //因此把它currentStyle.left放到runtimeStyle.left, + //runtimeStyle.left拥有最高优先级,不会style.left影响 + node.runtimeStyle.left = currentStyle.left + //③将精确值赋给到style.left,然后通过IE的另一个私有属性 style.pixelLeft + //得到单位为px的结果;fontSize的分支见http://bugs.jquery.com/ticket/760 + style.left = name === 'fontSize' ? '1em' : (ret || 0) + ret = style.pixelLeft + "px" + //④还原 style.left,runtimeStyle.left + style.left = left + node.runtimeStyle.left = rsLeft + } + if (ret === "medium") { + name = name.replace("Width", "Style") + //border width 默认值为medium,即使其为0" + if (currentStyle[name] === "none") { + ret = "0px" + } + } + return ret === "" ? "auto" : border[ret] || ret + } + cssHooks["opacity:set"] = function(node, name, value) { + var style = node.style + var opacity = isFinite(value) && value <= 1 ? "alpha(opacity=" + value * 100 + ")" : "" + var filter = style.filter || ""; + style.zoom = 1 + //不能使用以下方式设置透明度 + //node.filters.alpha.opacity = value * 100 + style.filter = (ralpha.test(filter) ? + filter.replace(ralpha, opacity) : + filter + " " + opacity).trim() + if (!style.filter) { + style.removeAttribute("filter") + } + } + cssHooks["opacity:get"] = function(node) { + //这是最快的获取IE透明值的方式,不需要动用正则了! + var alpha = node.filters.alpha || node.filters[salpha], + op = alpha && alpha.enabled ? alpha.opacity : 100 + return (op / 100) + "" //确保返回的是字符串 + } +} + +"top,left".replace(rword, function(name) { + cssHooks[name + ":get"] = function(node) { + var computed = cssHooks["@:get"](node, name) + return /px$/.test(computed) ? computed : + avalon(node).position()[name] + "px" + } +}) + +var cssShow = { + position: "absolute", + visibility: "hidden", + display: "block" +} + +var rdisplayswap = /^(none|table(?!-c[ea]).+)/ + + function showHidden(node, array) { + //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html + if (node.offsetWidth <= 0) { //opera.offsetWidth可能小于0 + if (rdisplayswap.test(cssHooks["@:get"](node, "display"))) { + var obj = { + node: node + } + for (var name in cssShow) { + obj[name] = node.style[name] + node.style[name] = cssShow[name] + } + array.push(obj) + } + var parent = node.parentNode + if (parent && parent.nodeType === 1) { + showHidden(parent, array) + } + } + } + "Width,Height".replace(rword, function(name) { //fix 481 + var method = name.toLowerCase(), + clientProp = "client" + name, + scrollProp = "scroll" + name, + offsetProp = "offset" + name + cssHooks[method + ":get"] = function(node, which, override) { + var boxSizing = -4 + if (typeof override === "number") { + boxSizing = override + } + which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] + var ret = node[offsetProp] // border-box 0 + if (boxSizing === 2) { // margin-box 2 + return ret + avalon.css(node, "margin" + which[0], true) + avalon.css(node, "margin" + which[1], true) + } + if (boxSizing < 0) { // padding-box -2 + ret = ret - avalon.css(node, "border" + which[0] + "Width", true) - avalon.css(node, "border" + which[1] + "Width", true) + } + if (boxSizing === -4) { // content-box -4 + ret = ret - avalon.css(node, "padding" + which[0], true) - avalon.css(node, "padding" + which[1], true) + } + return ret + } + cssHooks[method + "&get"] = function(node) { + var hidden = []; + showHidden(node, hidden); + var val = cssHooks[method + ":get"](node) + for (var i = 0, obj; obj = hidden[i++];) { + node = obj.node + for (var n in obj) { + if (typeof obj[n] === "string") { + node.style[n] = obj[n] + } + } + } + return val; + } + avalon.fn[method] = function(value) { //会忽视其display + var node = this[0] + if (arguments.length === 0) { + if (node.setTimeout) { //取得窗口尺寸,IE9后可以用node.innerWidth /innerHeight代替 + return node["inner" + name] || node.document.documentElement[clientProp] + } + if (node.nodeType === 9) { //取得页面尺寸 + var doc = node.documentElement + //FF chrome html.scrollHeight< body.scrollHeight + //IE 标准模式 : html.scrollHeight> body.scrollHeight + //IE 怪异模式 : html.scrollHeight 最大等于可视窗口多一点? + return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp]) + } + return cssHooks[method + "&get"](node) + } else { + return this.css(method, value) + } + } + avalon.fn["inner" + name] = function() { + return cssHooks[method + ":get"](this[0], void 0, -2) + } + avalon.fn["outer" + name] = function(includeMargin) { + return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0) + } + }) + avalon.fn.offset = function() { //取得距离页面左右角的坐标 + var node = this[0], + box = { + left: 0, + top: 0 + } + if (!node || !node.tagName || !node.ownerDocument) { + return box + } + var doc = node.ownerDocument, + body = doc.body, + root = doc.documentElement, + win = doc.defaultView || doc.parentWindow + if (!avalon.contains(root, node)) { + return box + } + //http://hkom.blog1.fc2.com/?mode=m&no=750 body的偏移量是不包含margin的 + //我们可以通过getBoundingClientRect来获得元素相对于client的rect. + //http://msdn.microsoft.com/en-us/library/ms536433.aspx + if (node.getBoundingClientRect) { + box = node.getBoundingClientRect() // BlackBerry 5, iOS 3 (original iPhone) + } + //chrome/IE6: body.scrollTop, firefox/other: root.scrollTop + var clientTop = root.clientTop || body.clientTop, + clientLeft = root.clientLeft || body.clientLeft, + scrollTop = Math.max(win.pageYOffset || 0, root.scrollTop, body.scrollTop), + scrollLeft = Math.max(win.pageXOffset || 0, root.scrollLeft, body.scrollLeft) + // 把滚动距离加到left,top中去。 + // IE一些版本中会自动为HTML元素加上2px的border,我们需要去掉它 + // http://msdn.microsoft.com/en-us/library/ms533564(VS.85).aspx + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + } + } + + //==================================val相关============================ + + function getValType(elem) { + var ret = elem.tagName.toLowerCase() + return ret === "input" && /checkbox|radio/.test(elem.type) ? "checked" : ret + } +var roption = /^]+))?)*\s+value[\s=]/i +var valHooks = { + "option:get": IEVersion ? function(node) { + //在IE11及W3C,如果没有指定value,那么node.value默认为node.text(存在trim作),但IE9-10则是取innerHTML(没trim操作) + //specified并不可靠,因此通过分析outerHTML判定用户有没有显示定义value + return roption.test(node.outerHTML) ? node.value : node.text.trim() + } : function(node) { + return node.value + }, + "select:get": function(node, value) { + var option, options = node.options, + index = node.selectedIndex, + getter = valHooks["option:get"], + one = node.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? max : one ? index : 0 + for (; i < max; i++) { + option = options[i] + //旧式IE在reset后不会改变selected,需要改用i === index判定 + //我们过滤所有disabled的option元素,但在safari5下,如果设置select为disable,那么其所有孩子都disable + //因此当一个元素为disable,需要检测其是否显式设置了disable及其父节点的disable情况 + if ((option.selected || i === index) && !option.disabled) { + value = getter(option) + if (one) { + return value + } + //收集所有selected值组成数组返回 + values.push(value) + } + } + return values + }, + "select:set": function(node, values, optionSet) { + values = [].concat(values) //强制转换为数组 + var getter = valHooks["option:get"] + for (var i = 0, el; el = node.options[i++];) { + if ((el.selected = values.indexOf(getter(el)) > -1)) { + optionSet = true + } + } + if (!optionSet) { + node.selectedIndex = -1 + } + } +} + +/********************************************************************* + * 编译系统 * + **********************************************************************/ +var meta = { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"': '\\"', + '\\': '\\\\' +} +var quote = window.JSON && JSON.stringify || function(str) { + return '"' + str.replace(/[\\\"\x00-\x1f]/g, function(a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' +} + +var keywords = [ + "break,case,catch,continue,debugger,default,delete,do,else,false", + "finally,for,function,if,in,instanceof,new,null,return,switch,this", + "throw,true,try,typeof,var,void,while,with", /* 关键字*/ + "abstract,boolean,byte,char,class,const,double,enum,export,extends", + "final,float,goto,implements,import,int,interface,long,native", + "package,private,protected,public,short,static,super,synchronized", + "throws,transient,volatile", /*保留字*/ + "arguments,let,yield,undefined" /* ECMA 5 - use strict*/].join(",") +var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g +var rsplit = /[^\w$]+/g +var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g') +var rnumber = /\b\d[^,]*/g +var rcomma = /^,+|,+$/g +var variablePool = new Cache(512) +var getVariables = function (code) { + var key = "," + code.trim() + var ret = variablePool.get(key) + if (ret) { + return ret + } + var match = code + .replace(rrexpstr, "") + .replace(rsplit, ",") + .replace(rkeywords, "") + .replace(rnumber, "") + .replace(rcomma, "") + .split(/^$|,+/) + return variablePool.put(key, uniqSet(match)) +} +/*添加赋值语句*/ + +function addAssign(vars, scope, name, data) { + var ret = [], + prefix = " = " + name + "." + for (var i = vars.length, prop; prop = vars[--i]; ) { + if (scope.hasOwnProperty(prop)) { + ret.push(prop + prefix + prop) + data.vars.push(prop) + if (data.type === "duplex") { + vars.get = name + "." + prop + } + vars.splice(i, 1) + } + } + return ret +} + +function uniqSet(array) { + var ret = [], + unique = {} + for (var i = 0; i < array.length; i++) { + var el = array[i] + var id = el && typeof el.$id === "string" ? el.$id : el + if (!unique[id]) { + unique[id] = ret.push(el) + } + } + return ret +} +//缓存求值函数,以便多次利用 +var evaluatorPool = new Cache(128) +//取得求值函数及其传参 +var rduplex = /\w\[.*\]|\w\.\w/ +var rproxy = /(\$proxy\$[a-z]+)\d+$/ +var rthimRightParentheses = /\)\s*$/ +var rthimOtherParentheses = /\)\s*\|/g +var rquoteFilterName = /\|\s*([$\w]+)/g +var rpatchBracket = /"\s*\["/g +var rthimLeftParentheses = /"\s*\(/g +function parseFilter(val, filters) { + filters = filters + .replace(rthimRightParentheses, "")//处理最后的小括号 + .replace(rthimOtherParentheses, function () {//处理其他小括号 + return "],|" + }) + .replace(rquoteFilterName, function (a, b) { //处理|及它后面的过滤器的名字 + return "[" + quote(b) + }) + .replace(rpatchBracket, function () { + return '"],["' + }) + .replace(rthimLeftParentheses, function () { + return '",' + }) + "]" + return "return avalon.filters.$filter(" + val + ", " + filters + ")" +} + +function parseExpr(code, scopes, data) { + var dataType = data.type + var filters = data.filters || "" + var exprId = scopes.map(function (el) { + return String(el.$id).replace(rproxy, "$1") + }) + code + dataType + filters + var vars = getVariables(code).concat(), + assigns = [], + names = [], + args = [], + prefix = "" + //args 是一个对象数组, names 是将要生成的求值函数的参数 + scopes = uniqSet(scopes) + data.vars = [] + for (var i = 0, sn = scopes.length; i < sn; i++) { + if (vars.length) { + var name = "vm" + expose + "_" + i + names.push(name) + args.push(scopes[i]) + assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data)) + } + } + if (!assigns.length && dataType === "duplex") { + return + } + if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) { + //https://github.com/RubyLouvre/avalon/issues/583 + data.vars.forEach(function (v) { + var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig") + code = code.replace(reg, function (_) { + var c = _.charAt(v.length) + var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext + var method = /^\s*\(/.test(r) + if (c === "." || c === "[" || method) {//比如v为aa,我们只匹配aa.bb,aa[cc],不匹配aaa.xxx + var name = "var" + String(Math.random()).replace(/^0\./, "") + if (method) {//array.size() + var array = _.split(".") + if (array.length > 2) { + var last = array.pop() + assigns.push(name + " = " + array.join(".")) + return name + "." + last + } else { + return _ + } + } + assigns.push(name + " = " + _) + return name + } else { + return _ + } + }) + }) + } + //---------------args---------------- + data.args = args + //---------------cache---------------- + delete data.vars + var fn = evaluatorPool.get(exprId) //直接从缓存,免得重复生成 + if (fn) { + data.evaluator = fn + return + } + prefix = assigns.join(", ") + if (prefix) { + prefix = "var " + prefix + } + if (/\S/.test(filters)) { //文本绑定,双工绑定才有过滤器 + if (!/text|html/.test(data.type)) { + throw Error("ms-" + data.type + "不支持过滤器") + } + code = "\nvar ret" + expose + " = " + code + ";\r\n" + code += parseFilter("ret" + expose, filters) + } else if (dataType === "duplex") { //双工绑定 + var _body = "'use strict';\nreturn function(vvv){\n\t" + + prefix + + ";\n\tif(!arguments.length){\n\t\treturn " + + code + + "\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) + + "= vvv;\n} " + try { + fn = Function.apply(noop, names.concat(_body)) + data.evaluator = evaluatorPool.put(exprId, fn) + } catch (e) { + log("debug: parse error," + e.message) + } + return + } else if (dataType === "on") { //事件绑定 + if (code.indexOf("(") === -1) { + code += ".call(this, $event)" + } else { + code = code.replace("(", ".call(this,") + } + names.push("$event") + code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") + var lastIndex = code.lastIndexOf("\nreturn") + var header = code.slice(0, lastIndex) + var footer = code.slice(lastIndex) + code = header + "\n" + footer + } else { //其他绑定 + code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") + } + try { + fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code)) + data.evaluator = evaluatorPool.put(exprId, fn) + } catch (e) { + log("debug: parse error," + e.message) + } finally { + vars = assigns = names = null //释放内存 + } +} + + +//parseExpr的智能引用代理 + +function parseExprProxy(code, scopes, data, tokens, noRegister) { + if (Array.isArray(tokens)) { + code = tokens.map(function (el) { + return el.expr ? "(" + el.value + ")" : quote(el.value) + }).join(" + ") + } + parseExpr(code, scopes, data) + if (data.evaluator && !noRegister) { + data.handler = bindingExecutors[data.handlerName || data.type] + //方便调试 + //这里非常重要,我们通过判定视图刷新函数的element是否在DOM树决定 + //将它移出订阅者列表 + avalon.injectBinding(data) + } +} +avalon.parseExprProxy = parseExprProxy +/********************************************************************* + * 扫描系统 * + **********************************************************************/ + +avalon.scan = function(elem, vmodel) { + elem = elem || root + var vmodels = vmodel ? [].concat(vmodel) : [] + scanTag(elem, vmodels) +} + +//http://www.w3.org/TR/html5/syntax.html#void-elements +var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()) + +function checkScan(elem, callback, innerHTML) { + var id = setTimeout(function() { + var currHTML = elem.innerHTML + clearTimeout(id) + if (currHTML === innerHTML) { + callback() + } else { + checkScan(elem, callback, currHTML) + } + }) +} + + +function createSignalTower(elem, vmodel) { + var id = elem.getAttribute("avalonctrl") || vmodel.$id + elem.setAttribute("avalonctrl", id) + vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]' +} + +var getBindingCallback = function(elem, name, vmodels) { + var callback = elem.getAttribute(name) + if (callback) { + for (var i = 0, vm; vm = vmodels[i++]; ) { + if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") { + return vm[callback] + } + } + } +} + +function executeBindings(bindings, vmodels) { + for (var i = 0, data; data = bindings[i++]; ) { + data.vmodels = vmodels + bindingHandlers[data.type](data, vmodels) + if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数据绑定,防止被二次解析 + //chrome使用removeAttributeNode移除不存在的特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99 + data.element.removeAttribute(data.name) + } + } + bindings.length = 0 +} + +//https://github.com/RubyLouvre/avalon/issues/636 +var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) { + var node = elem.firstChild, text + while (node) { + var aaa = node.nextSibling + if (node.nodeType === 3) { + if (text) { + text.nodeValue += node.nodeValue + elem.removeChild(node) + } else { + text = node + } + } else { + text = null + } + node = aaa + } +} : 0 +var roneTime = /^\s*::/ +var rmsAttr = /ms-(\w+)-?(.*)/ +var priorityMap = { + "if": 10, + "repeat": 90, + "data": 100, + "widget": 110, + "each": 1400, + "with": 1500, + "duplex": 2000, + "on": 3000 +} + +var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit") +var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled") +function bindingSorter(a, b) { + return a.priority - b.priority +} + +function scanAttr(elem, vmodels, match) { + var scanNode = true + if (vmodels.length) { + var attributes = getAttributes ? getAttributes(elem) : elem.attributes + var bindings = [] + var fixAttrs = [] + var msData = {} + for (var i = 0, attr; attr = attributes[i++]; ) { + if (attr.specified) { + if (match = attr.name.match(rmsAttr)) { + //如果是以指定前缀命名的 + var type = match[1] + var param = match[2] || "" + var value = attr.value + var name = attr.name + if (events[type]) { + param = type + type = "on" + } else if (obsoleteAttrs[type]) { + if (type === "enabled") {//吃掉ms-enabled绑定,用ms-disabled代替 + log("warning!ms-enabled或ms-attr-enabled已经被废弃") + type = "disabled" + value = "!(" + value + ")" + } + param = type + type = "attr" + name = "ms-" + type + "-"+ param + fixAttrs.push([attr.name, name, value]) + } + msData[name] = value + if (typeof bindingHandlers[type] === "function") { + var newValue = value.replace(roneTime, "") + var oneTime = value !== newValue + var binding = { + type: type, + param: param, + element: elem, + name: name, + value: newValue, + oneTime: oneTime, + uuid: name+"-"+getUid(elem), + //chrome与firefox下Number(param)得到的值不一样 #855 + priority: (priorityMap[type] || type.charCodeAt(0) * 10 )+ (Number(param.replace(/\D/g, "")) || 0) + } + if (type === "html" || type === "text") { + var token = getToken(value) + avalon.mix(binding, token) + binding.filters = binding.filters.replace(rhasHtml, function () { + binding.type = "html" + binding.group = 1 + return "" + })// jshint ignore:line + } else if (type === "duplex") { + var hasDuplex = name + } else if (name === "ms-if-loop") { + binding.priority += 100 + } + bindings.push(binding) + if (type === "widget") { + elem.msData = elem.msData || msData + } + } + } + } + } + if (bindings.length) { + bindings.sort(bindingSorter) + fixAttrs.forEach(function (arr) { + log("warning!请改用" + arr[1] + "代替" + arr[0] + "!") + elem.removeAttribute(arr[0]) + elem.setAttribute(arr[1], arr[2]) + }) + //http://bugs.jquery.com/ticket/7071 + //在IE下对VML读取type属性,会让此元素所有属性都变成 + if (hasDuplex) { + if (msData["ms-attr-checked"]) { + log("warning!一个控件不能同时定义ms-attr-checked与" + hasDuplex) + } + if (msData["ms-attr-value"]) { + log("warning!一个控件不能同时定义ms-attr-value与" + hasDuplex) + } + } + for (i = 0; binding = bindings[i]; i++) { + type = binding.type + if (rnoscanAttrBinding.test(type)) { + return executeBindings(bindings.slice(0, i + 1), vmodels) + } else if (scanNode) { + scanNode = !rnoscanNodeBinding.test(type) + } + } + executeBindings(bindings, vmodels) + } + } + if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML.replace(rlt, "<").replace(rgt, ">"))) { + mergeTextNodes && mergeTextNodes(elem) + scanNodeList(elem, vmodels) //扫描子孙元素 + } +} +var rnoscanAttrBinding = /^if|widget|repeat$/ +var rnoscanNodeBinding = /^each|with|html|include$/ +//IE67下,在循环绑定中,一个节点如果是通过cloneNode得到,自定义属性的specified为false,无法进入里面的分支, +//但如果我们去掉scanAttr中的attr.specified检测,一个元素会有80+个特性节点(因为它不区分固有属性与自定义属性),很容易卡死页面 +if (!"1" [0]) { + var attrPool = new Cache(512) + var rattrs = /\s+(ms-[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g, + rquote = /^['"]/, + rtag = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/i, + ramp = /&/g + //IE6-8解析HTML5新标签,会将它分解两个元素节点与一个文本节点 + //
    ddd
    + // window.onload = function() { + // var body = document.body + // for (var i = 0, el; el = body.children[i++]; ) { + // avalon.log(el.outerHTML) + // } + // } + //依次输出
    ,
    + var getAttributes = function (elem) { + var html = elem.outerHTML + //处理IE6-8解析HTML5新标签的情况,及
    等半闭合标签outerHTML为空的情况 + if (html.slice(0, 2) === " ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) + //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)垫后 + var a = elem.getAttribute("ms-skip") + //#360 在旧式IE中 Object标签在引入Flash等资源时,可能出现没有getAttributeNode,innerHTML的情形 + if (!elem.getAttributeNode) { + return log("warning " + elem.tagName + " no getAttributeNode method") + } + var b = elem.getAttributeNode("ms-important") + var c = elem.getAttributeNode("ms-controller") + if (typeof a === "string") { + return + } else if (node = b || c) { + var newVmodel = avalon.vmodels[node.value] + if (!newVmodel) { + return + } + //ms-important不包含父VM,ms-controller相反 + vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) + var name = node.name + elem.removeAttribute(name) //removeAttributeNode不会刷新[ms-controller]样式规则 + avalon(elem).removeClass(name) + createSignalTower(elem, newVmodel) + } + scanAttr(elem, vmodels) //扫描特性节点 +} +var rhasHtml = /\|\s*html(?:\b|$)/, + r11a = /\|\|/g, + rlt = /</g, + rgt = />/g, + rstringLiteral = /(['"])(\\\1|.)+?\1/g +function getToken(value) { + if (value.indexOf("|") > 0) { + var scapegoat = value.replace(rstringLiteral, function (_) { + return Array(_.length + 1).join("1")// jshint ignore:line + }) + var index = scapegoat.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或 + if (index > -1) { + return { + filters: value.slice(index), + value: value.slice(0, index), + expr: true + } + } + } + return { + value: value, + filters: "", + expr: true + } +} + +function scanExpr(str) { + var tokens = [], + value, start = 0, + stop + do { + stop = str.indexOf(openTag, start) + if (stop === -1) { + break + } + value = str.slice(start, stop) + if (value) { // {{ 左边的文本 + tokens.push({ + value: value, + filters: "", + expr: false + }) + } + start = stop + openTag.length + stop = str.indexOf(closeTag, start) + if (stop === -1) { + break + } + value = str.slice(start, stop) + if (value) { //处理{{ }}插值表达式 + tokens.push(getToken(value, start)) + } + start = stop + closeTag.length + } while (1) + value = str.slice(start) + if (value) { //}} 右边的文本 + tokens.push({ + value: value, + expr: false, + filters: "" + }) + } + return tokens +} + +function scanText(textNode, vmodels, index) { + var bindings = [] + tokens = scanExpr(textNode.data) + if (tokens.length) { + for (var i = 0; token = tokens[i++]; ) { + var node = DOC.createTextNode(token.value) //将文本转换为文本节点,并替换原来的文本节点 + if (token.expr) { + token.value = token.value.replace(roneTime, function () { + token.oneTime = true + return "" + }) + token.type = "text" + token.element = node + token.filters = token.filters.replace(rhasHtml, function (a, b,c) { + token.type = "html" + return "" + })// jshint ignore:line + token.pos = index * 1000 + i + bindings.push(token) //收集带有插值表达式的文本 + } + avalonFragment.appendChild(node) + } + textNode.parentNode.replaceChild(avalonFragment, textNode) + if (bindings.length) + executeBindings(bindings, vmodels) + } +} + +var bools = ["autofocus,autoplay,async,allowTransparency,checked,controls", + "declare,disabled,defer,defaultChecked,defaultSelected", + "contentEditable,isMap,loop,multiple,noHref,noResize,noShade", + "open,readOnly,selected" +].join(",") +var boolMap = {} +bools.replace(rword, function(name) { + boolMap[name.toLowerCase()] = name +}) + +var propMap = { //属性名映射 + "accept-charset": "acceptCharset", + "char": "ch", + "charoff": "chOff", + "class": "className", + "for": "htmlFor", + "http-equiv": "httpEquiv" +} + +var anomaly = ["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan", + "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight", + "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign" +].join(",") +anomaly.replace(rword, function(name) { + propMap[name.toLowerCase()] = name +}) + +var rnoscripts = /(?:[\s\S]+?)<\/noscript>/img +var rnoscriptText = /([\s\S]+?)<\/noscript>/im + +var getXHR = function() { + return new(window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") // jshint ignore:line +} + +var templatePool = avalon.templateCache = {} + +bindingHandlers.attr = function(data, vmodels) { + var text = data.value.trim(), + simple = true + if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) { + simple = false + if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") { + simple = true + text = RegExp.$1 + } + } + if (data.type === "include") { + var elem = data.element + data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels) + data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels) + var outer = data.includeReplace = !! avalon(elem).data("includeReplace") + if (avalon(elem).data("includeCache")) { + data.templateCache = {} + } + data.startInclude = DOC.createComment("ms-include") + data.endInclude = DOC.createComment("ms-include-end") + if (outer) { + data.element = data.startInclude + elem.parentNode.insertBefore(data.startInclude, elem) + elem.parentNode.insertBefore(data.endInclude, elem.nextSibling) + } else { + elem.insertBefore(data.startInclude, elem.firstChild) + elem.appendChild(data.endInclude) + } + } + data.handlerName = "attr" //handleName用于处理多种绑定共用同一种bindingExecutor的情况 + parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value))) +} + +bindingExecutors.attr = function(val, elem, data) { + var method = data.type, + attrName = data.param + if (method === "css") { + avalon(elem).css(attrName, val) + } else if (method === "attr") { + + // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc + // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类名 + // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性 + var toRemove = (val === false) || (val === null) || (val === void 0) + + if (!W3C && propMap[attrName]) { //旧式IE下需要进行名字映射 + attrName = propMap[attrName] + } + var bool = boolMap[attrName] + if (typeof elem[bool] === "boolean") { + elem[bool] = !! val //布尔属性必须使用el.xxx = true|false方式设值 + if (!val) { //如果为false, IE全系列下相当于setAttribute(xxx,''),会影响到样式,需要进一步处理 + toRemove = true + } + } + if (toRemove) { + return elem.removeAttribute(attrName) + } + //SVG只能使用setAttribute(xxx, yyy), VML只能使用elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy + var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false) + if (isInnate) { + elem[attrName] = val+"" + } else { + elem.setAttribute(attrName, val) + } + } else if (method === "include" && val) { + var vmodels = data.vmodels + var rendered = data.includeRendered + var loaded = data.includeLoaded + var replace = data.includeReplace + var target = replace ? elem.parentNode : elem + var scanTemplate = function(text) { + if (loaded) { + var newText = loaded.apply(target, [text].concat(vmodels)) + if (typeof newText === "string") + text = newText + } + if (rendered) { + checkScan(target, function() { + rendered.call(target) + }, NaN) + } + var lastID = data.includeLastID + if (data.templateCache && lastID && lastID !== val) { + var lastTemplate = data.templateCache[lastID] + if (!lastTemplate) { + lastTemplate = data.templateCache[lastID] = DOC.createElement("div") + ifGroup.appendChild(lastTemplate) + } + } + data.includeLastID = val + while (true) { + var node = data.startInclude.nextSibling + if (node && node !== data.endInclude) { + target.removeChild(node) + if (lastTemplate) + lastTemplate.appendChild(node) + } else { + break + } + } + var dom = getTemplateNodes(data, val, text) + var nodes = avalon.slice(dom.childNodes) + target.insertBefore(dom, data.endInclude) + scanNodeArray(nodes, vmodels) + } + + if (data.param === "src") { + if (typeof templatePool[val] === "string") { + avalon.nextTick(function() { + scanTemplate(templatePool[val]) + }) + } else if (Array.isArray(templatePool[val])) { //#805 防止在循环绑定中发出许多相同的请求 + templatePool[val].push(scanTemplate) + } else { + var xhr = getXHR() + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + var s = xhr.status + if (s >= 200 && s < 300 || s === 304 || s === 1223) { + var text = xhr.responseText + for (var f = 0, fn; fn = templatePool[val][f++];) { + fn(text) + } + templatePool[val] = text + } + } + } + templatePool[val] = [scanTemplate] + xhr.open("GET", val, true) + if ("withCredentials" in xhr) { + xhr.withCredentials = true + } + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") + xhr.send(null) + } + } else { + //IE系列与够新的标准浏览器支持通过ID取得元素(firefox14+) + //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ + var el = val && val.nodeType === 1 ? val : DOC.getElementById(val) + if (el) { + if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法取得其内容,IE6能取得其innerHTML + xhr = getXHR() //IE9-11与chrome的innerHTML会得到转义的内容,它们的innerText可以 + xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构 + xhr.send(null) + //http://bbs.csdn.net/topics/390349046?page=1#post-393492653 + var noscripts = DOC.getElementsByTagName("noscript") + var array = (xhr.responseText || "").match(rnoscripts) || [] + var n = array.length + for (var i = 0; i < n; i++) { + var tag = noscripts[i] + if (tag) { //IE6-8中noscript标签的innerHTML,innerText是只读的 + tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug + tag.fixIE78 = (array[i].match(rnoscriptText) || ["", " "])[1] + } + } + } + avalon.nextTick(function() { + scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML) + }) + } + } + } else { + if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) { + val = val.replace(/&/g, "&") //处理IE67自动转义的问题 + } + elem[method] = val + if (window.chrome && elem.tagName === "EMBED") { + var parent = elem.parentNode //#525 chrome1-37下embed标签动态设置src不能发生请求 + var comment = document.createComment("ms-src") + parent.replaceChild(comment, elem) + parent.replaceChild(elem, comment) + } + } +} + +function getTemplateNodes(data, id, text) { + var div = data.templateCache && data.templateCache[id] + if (div) { + var dom = DOC.createDocumentFragment(), + firstChild + while (firstChild = div.firstChild) { + dom.appendChild(firstChild) + } + return dom + } + return avalon.parseHTML(text) +} + +//这几个指令都可以使用插值表达式,如ms-src="aaa/{{b}}/{{c}}.html" +"title,alt,src,value,css,include,href".replace(rword, function(name) { + bindingHandlers[name] = bindingHandlers.attr +}) +//根据VM的属性值或表达式的值切换类名,ms-class="xxx yyy zzz:flag" +//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html +bindingHandlers["class"] = function(data, vmodels) { + var oldStyle = data.param, + text = data.value, + rightExpr + data.handlerName = "class" + if (!oldStyle || isFinite(oldStyle)) { + data.param = "" //去掉数字 + var noExpr = text.replace(rexprg, function(a) { + return a.replace(/./g, "0") + //return Math.pow(10, a.length - 1) //将插值表达式插入10的N-1次方来占位 + }) + var colonIndex = noExpr.indexOf(":") //取得第一个冒号的位置 + if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况 + var className = text + } else { // 比如 ms-class-1="ui-state-active:checked" 的情况 + className = text.slice(0, colonIndex) + rightExpr = text.slice(colonIndex + 1) + parseExpr(rightExpr, vmodels, data) //决定是添加还是删除 + if (!data.evaluator) { + log("debug: ms-class '" + (rightExpr || "").trim() + "' 不存在于VM中") + return false + } else { + data._evaluator = data.evaluator + data._args = data.args + } + } + var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况 + if (!hasExpr) { + data.immobileClass = className + } + parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0)) + } else { + data.immobileClass = data.oldStyle = data.param + parseExprProxy(text, vmodels, data) + } +} + +bindingExecutors["class"] = function(val, elem, data) { + var $elem = avalon(elem), + method = data.type + if (method === "class" && data.oldStyle) { //如果是旧风格 + $elem.toggleClass(data.oldStyle, !! val) + } else { + //如果存在冒号就有求值函数 + data.toggleClass = data._evaluator ? !! data._evaluator.apply(elem, data._args) : true + data.newClass = data.immobileClass || val + if (data.oldClass && data.newClass !== data.oldClass) { + $elem.removeClass(data.oldClass) + } + data.oldClass = data.newClass + switch (method) { + case "class": + $elem.toggleClass(data.newClass, data.toggleClass) + break + case "hover": + case "active": + if (!data.hasBindEvent) { //确保只绑定一次 + var activate = "mouseenter" //在移出移入时切换类名 + var abandon = "mouseleave" + if (method === "active") { //在聚焦失焦中切换类名 + elem.tabIndex = elem.tabIndex || -1 + activate = "mousedown" + abandon = "mouseup" + var fn0 = $elem.bind("mouseleave", function() { + data.toggleClass && $elem.removeClass(data.newClass) + }) + } + var fn1 = $elem.bind(activate, function() { + data.toggleClass && $elem.addClass(data.newClass) + }) + var fn2 = $elem.bind(abandon, function() { + data.toggleClass && $elem.removeClass(data.newClass) + }) + data.rollback = function() { + $elem.unbind("mouseleave", fn0) + $elem.unbind(activate, fn1) + $elem.unbind(abandon, fn2) + } + data.hasBindEvent = true + } + break; + } + } +} + +"hover,active".replace(rword, function(method) { + bindingHandlers[method] = bindingHandlers["class"] +}) +//ms-controller绑定已经在scanTag 方法中实现 +//ms-css绑定已由ms-attr绑定实现 + + +// bindingHandlers.data 定义在if.js +bindingExecutors.data = function(val, elem, data) { + var key = "data-" + data.param + if (val && typeof val === "object") { + elem[key] = val + } else { + elem.setAttribute(key, String(val)) + } +} +//双工绑定 +var duplexBinding = bindingHandlers.duplex = function(data, vmodels) { + var elem = data.element, + hasCast + parseExprProxy(data.value, vmodels, data, 0, 1) + + data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop + if (data.evaluator && data.args) { + var params = [] + var casting = oneObject("string,number,boolean,checked") + if (elem.type === "radio" && data.param === "") { + data.param = "checked" + } + if (elem.msData) { + elem.msData["ms-duplex"] = data.value + } + data.param.replace(/\w+/g, function(name) { + if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) { + if (name === "radio") + log("ms-duplex-radio已经更名为ms-duplex-checked") + name = "checked" + data.isChecked = true + } + if (name === "bool") { + name = "boolean" + log("ms-duplex-bool已经更名为ms-duplex-boolean") + } else if (name === "text") { + name = "string" + log("ms-duplex-text已经更名为ms-duplex-string") + } + if (casting[name]) { + hasCast = true + } + avalon.Array.ensure(params, name) + }) + if (!hasCast) { + params.push("string") + } + data.param = params.join("-") + data.bound = function(type, callback) { + if (elem.addEventListener) { + elem.addEventListener(type, callback, false) + } else { + elem.attachEvent("on" + type, callback) + } + var old = data.rollback + data.rollback = function() { + elem.avalonSetter = null + avalon.unbind(elem, type, callback) + old && old() + } + } + for (var i in avalon.vmodels) { + var v = avalon.vmodels[i] + v.$fire("avalon-ms-duplex-init", data) + } + var cpipe = data.pipe || (data.pipe = pipe) + cpipe(null, data, "init") + var tagName = elem.tagName + duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data) + } +} +//不存在 bindingExecutors.duplex + + function fixNull(val) { + return val == null ? "" : val + } +avalon.duplexHooks = { + checked: { + get: function(val, data) { + return !data.element.oldValue + } + }, + string: { + get: function(val) { //同步到VM + return val + }, + set: fixNull + }, + "boolean": { + get: function(val) { + return val === "true" + }, + set: fixNull + }, + number: { + get: function(val, data) { + var number = parseFloat(val) + if (-val === -number) { + return number + } + var arr = /strong|medium|weak/.exec(data.element.getAttribute("data-duplex-number")) || ["medium"] + switch (arr[0]) { + case "strong": + return 0 + case "medium": + return val === "" ? "" : 0 + case "weak": + return val + } + }, + set: fixNull + } +} + +function pipe(val, data, action, e) { + data.param.replace(/\w+/g, function(name) { + var hook = avalon.duplexHooks[name] + if (hook && typeof hook[action] === "function") { + val = hook[action](val, data) + } + }) + return val +} + +var TimerID, ribbon = [] + + avalon.tick = function(fn) { + if (ribbon.push(fn) === 1) { + TimerID = setInterval(ticker, 60) + } + } + + function ticker() { + for (var n = ribbon.length - 1; n >= 0; n--) { + var el = ribbon[n] + if (el() === false) { + ribbon.splice(n, 1) + } + } + if (!ribbon.length) { + clearInterval(TimerID) + } + } + +var watchValueInTimer = noop +var rmsinput = /text|password|hidden/ +new function() { // jshint ignore:line + try { //#272 IE9-IE11, firefox + var setters = {} + var aproto = HTMLInputElement.prototype + var bproto = HTMLTextAreaElement.prototype + function newSetter(value) { // jshint ignore:line + setters[this.tagName].call(this, value) + if (rmsinput.test(this.type) && !this.msFocus && this.avalonSetter) { + this.avalonSetter() + } + } + var inputProto = HTMLInputElement.prototype + Object.getOwnPropertyNames(inputProto) //故意引发IE6-8等浏览器报错 + setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set + + Object.defineProperty(aproto, "value", { + set: newSetter + }) + setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set + Object.defineProperty(bproto, "value", { + set: newSetter + }) + } catch (e) { + //在chrome 43中 ms-duplex终于不需要使用定时器实现双向绑定了 + // http://updates.html5rocks.com/2015/04/DOM-attributes-now-on-the-prototype + // https://docs.google.com/document/d/1jwA8mtClwxI-QJuHT7872Z0pxpZz8PBkf2bGAbsUtqs/edit?pli=1 + watchValueInTimer = avalon.tick + } +} // jshint ignore:line +if (IEVersion) { + avalon.bind(DOC, "selectionchange", function(e) { + var el = DOC.activeElement + if (el && typeof el.avalonSetter === "function") { + el.avalonSetter() + } + }) +} + +//处理radio, checkbox, text, textarea, password +duplexBinding.INPUT = function(element, evaluator, data) { + var $type = element.type, + bound = data.bound, + $elem = avalon(element), + composing = false + + function callback(value) { + data.changed.call(this, value, data) + } + + function compositionStart() { + composing = true + } + + function compositionEnd() { + composing = false + } + //当value变化时改变model的值 + var updateVModel = function() { + if (composing) //处理中文输入法在minlengh下引发的BUG + return + var val = element.oldValue = element.value //防止递归调用形成死循环 + var lastValue = data.pipe(val, data, "get") + if ($elem.data("duplexObserve") !== false) { + evaluator(lastValue) + callback.call(element, lastValue) + if ($elem.data("duplex-focus")) { + avalon.nextTick(function() { + element.focus() + }) + } + } + } + //当model变化时,它就会改变value的值 + data.handler = function() { + var val = data.pipe(evaluator(), data, "set") + "" //fix #673 + if (val !== element.oldValue) { + element.value = val + } + } + if (data.isChecked || $type === "radio") { + var IE6 = IEVersion === 6 + updateVModel = function() { + if ($elem.data("duplexObserve") !== false) { + var lastValue = data.pipe(element.value, data, "get") + evaluator(lastValue) + callback.call(element, lastValue) + } + } + data.handler = function() { + var val = evaluator() + var checked = data.isChecked ? !! val : val + "" === element.value + element.oldValue = checked + if (IE6) { + setTimeout(function() { + //IE8 checkbox, radio是使用defaultChecked控制选中状态, + //并且要先设置defaultChecked后设置checked + //并且必须设置延迟 + element.defaultChecked = checked + element.checked = checked + }, 31) + } else { + element.checked = checked + } + } + bound("click", updateVModel) + } else if ($type === "checkbox") { + updateVModel = function() { + if ($elem.data("duplexObserve") !== false) { + var method = element.checked ? "ensure" : "remove" + var array = evaluator() + if (!Array.isArray(array)) { + log("ms-duplex应用于checkbox上要对应一个数组") + array = [array] + } + var val = data.pipe(element.value, data, "get") + avalon.Array[method](array, val) + callback.call(element, array) + } + } + + data.handler = function() { + var array = [].concat(evaluator()) //强制转换为数组 + var val = data.pipe(element.value, data, "get") + element.checked = array.indexOf(val) > -1 + } + bound(W3C ? "change" : "click", updateVModel) + } else { + var events = element.getAttribute("data-duplex-event") || "input" + if (element.attributes["data-event"]) { + log("data-event指令已经废弃,请改用data-duplex-event") + } + + function delay(e) { // jshint ignore:line + setTimeout(function() { + updateVModel(e) + }) + } + events.replace(rword, function(name) { + switch (name) { + case "input": + if (!IEVersion) { // W3C + bound("input", updateVModel) + //非IE浏览器才用这个 + bound("compositionstart", compositionStart) + bound("compositionend", compositionEnd) + bound("DOMAutoComplete", updateVModel) + } else { //onpropertychange事件无法区分是程序触发还是用户触发 + // IE下通过selectionchange事件监听IE9+点击input右边的X的清空行为,及粘贴,剪切,删除行为 + if (IEVersion > 8) { + bound("input", updateVModel) //IE9使用propertychange无法监听中文输入改动 + } else { + bound("propertychange", function(e) { //IE6-8下第一次修改时不会触发,需要使用keydown或selectionchange修正 + if (e.propertyName === "value") { + updateVModel() + } + }) + } + bound("dragend", delay) + //http://www.cnblogs.com/rubylouvre/archive/2013/02/17/2914604.html + //http://www.matts411.com/post/internet-explorer-9-oninput/ + } + break + default: + bound(name, updateVModel) + break + } + }) + bound("focus", function() { + element.msFocus = true + }) + bound("blur", function() { + element.msFocus = false + }) + + if (rmsinput.test($type)) { + watchValueInTimer(function() { + if (root.contains(element)) { + if (!element.msFocus && element.oldValue !== element.value) { + updateVModel() + } + } else if (!element.msRetain) { + return false + } + }) + } + + element.avalonSetter = updateVModel //#765 + } + + element.oldValue = element.value + avalon.injectBinding(data) + callback.call(element, element.value) +} +duplexBinding.TEXTAREA = duplexBinding.INPUT +duplexBinding.SELECT = function(element, evaluator, data) { + var $elem = avalon(element) + + function updateVModel() { + if ($elem.data("duplexObserve") !== false) { + var val = $elem.val() //字符串或字符串数组 + if (Array.isArray(val)) { + val = val.map(function(v) { + return data.pipe(v, data, "get") + }) + } else { + val = data.pipe(val, data, "get") + } + if (val + "" !== element.oldValue) { + evaluator(val) + } + data.changed.call(element, val, data) + } + } + data.handler = function() { + var val = evaluator() + val = val && val.$model || val + if (Array.isArray(val)) { + if (!element.multiple) { + log("ms-duplex在不能对应一个数组") + } + } + //必须变成字符串后才能比较 + val = Array.isArray(val) ? val.map(String) : val + "" + if (val + "" !== element.oldValue) { + $elem.val(val) + element.oldValue = val + "" + } + } + data.bound("change", updateVModel) + element.msCallback = function() { + avalon.injectBinding(data) + data.changed.call(element, evaluator(), data) + } +} +// bindingHandlers.html 定义在if.js +bindingExecutors.html = function (val, elem, data) { + var isHtmlFilter = elem.nodeType !== 1 + var parent = isHtmlFilter ? elem.parentNode : elem + if (!parent) + return + val = val == null ? "" : val + if (data.oldText !== val) { + data.oldText = val + } else { + return + } + if (elem.nodeType === 3) { + var signature = generateID("html") + parent.insertBefore(DOC.createComment(signature), elem) + data.element = DOC.createComment(signature + ":end") + parent.replaceChild(data.element, elem) + elem = data.element + } + if (typeof val !== "object") {//string, number, boolean + var fragment = avalon.parseHTML(String(val)) + } else if (val.nodeType === 11) { //将val转换为文档碎片 + fragment = val + } else if (val.nodeType === 1 || val.item) { + var nodes = val.nodeType === 1 ? val.childNodes : val.item + fragment = avalonFragment.cloneNode(true) + while (nodes[0]) { + fragment.appendChild(nodes[0]) + } + } + + nodes = avalon.slice(fragment.childNodes) + //插入占位符, 如果是过滤器,需要有节制地移除指定的数量,如果是html指令,直接清空 + if (isHtmlFilter) { + var endValue = elem.nodeValue.slice(0, -4) + while (true) { + var node = elem.previousSibling + if (!node || node.nodeType === 8 && node.nodeValue === endValue) { + break + } else { + parent.removeChild(node) + } + } + parent.insertBefore(fragment, elem) + } else { + avalon.clearHTML(elem).appendChild(fragment) + } + scanNodeArray(nodes, data.vmodels) +} +bindingHandlers["if"] = + bindingHandlers.data = + bindingHandlers.text = + bindingHandlers.html = + function(data, vmodels) { + parseExprProxy(data.value, vmodels, data) +} + +bindingExecutors["if"] = function(val, elem, data) { + try { + if(!elem.parentNode) return + } catch(e) {return} + if (val) { //插回DOM树 + if (elem.nodeType === 8) { + elem.parentNode.replaceChild(data.template, elem) + // animate.enter(data.template, elem.parentNode) + elem = data.element = data.template //这时可能为null + } + if (elem.getAttribute(data.name)) { + elem.removeAttribute(data.name) + scanAttr(elem, data.vmodels) + } + data.rollback = null + } else { //移出DOM树,并用注释节点占据原位置 + if (elem.nodeType === 1) { + var node = data.element = DOC.createComment("ms-if") + elem.parentNode.replaceChild(node, elem) + // animate.leave(elem, node.parentNode, node) + data.template = elem //元素节点 + ifGroup.appendChild(elem) + data.rollback = function() { + if (elem.parentNode === ifGroup) { + ifGroup.removeChild(elem) + } + } + } + } +} +//ms-important绑定已经在scanTag 方法中实现 +//ms-include绑定已由ms-attr绑定实现 + +var rdash = /\(([^)]*)\)/ +bindingHandlers.on = function(data, vmodels) { + var value = data.value + data.type = "on" + var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 + if (typeof bindingHandlers.on[eventType + "Hook"] === "function") { + bindingHandlers.on[eventType + "Hook"](data) + } + if (value.indexOf("(") > 0 && value.indexOf(")") > -1) { + var matched = (value.match(rdash) || ["", ""])[1].trim() + if (matched === "" || matched === "$event") { // aaa() aaa($event)当成aaa处理 + value = value.replace(rdash, "") + } + } + parseExprProxy(value, vmodels, data) +} + +bindingExecutors.on = function(callback, elem, data) { + callback = function(e) { + var fn = data.evaluator || noop + return fn.apply(this, data.args.concat(e)) + } + var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 + if (eventType === "scan") { + callback.call(elem, { + type: eventType + }) + } else if (typeof data.specialBind === "function") { + data.specialBind(elem, callback) + } else { + var removeFn = avalon.bind(elem, eventType, callback) + } + data.rollback = function() { + if (typeof data.specialUnbind === "function") { + data.specialUnbind() + } else { + avalon.unbind(elem, eventType, removeFn) + } + } +} +bindingHandlers.repeat = function (data, vmodels) { + var type = data.type + parseExprProxy(data.value, vmodels, data, 0, 1) + data.proxies = [] + var freturn = false + try { + var $repeat = data.$repeat = data.evaluator.apply(0, data.args || []) + var xtype = avalon.type($repeat) + if (xtype !== "object" && xtype !== "array") { + freturn = true + avalon.log("warning:" + data.value + "只能是对象或数组") + } + } catch (e) { + freturn = true + } + var arr = data.value.split(".") || [] + if (arr.length > 1) { + arr.pop() + var n = arr[0] + for (var i = 0, v; v = vmodels[i++]; ) { + if (v && v.hasOwnProperty(n)) { + var events = v[n].$events || {} + events[subscribers] = events[subscribers] || [] + events[subscribers].push(data) + break + } + } + } + + var elem = data.element + if (elem.nodeType === 1) { + elem.removeAttribute(data.name) + data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels) + data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels) + var signature = generateID(type) + var start = DOC.createComment(signature) + var end = DOC.createComment(signature + ":end") + data.signature = signature + data.template = avalonFragment.cloneNode(false) + if (type === "repeat") { + var parent = elem.parentNode + parent.replaceChild(end, elem) + parent.insertBefore(start, end) + data.template.appendChild(elem) + } else { + while (elem.firstChild) { + data.template.appendChild(elem.firstChild) + } + elem.appendChild(start) + elem.appendChild(end) + } + data.element = end + data.handler = bindingExecutors.repeat + data.rollback = function () { + var elem = data.element + if (!elem) + return + data.handler("clear") + } + } + + if (freturn) { + return + } + + data.$outer = {} + var check0 = "$key" + var check1 = "$val" + if (Array.isArray($repeat)) { + check0 = "$first" + check1 = "$last" + } + + for (i = 0; v = vmodels[i++]; ) { + if (v.hasOwnProperty(check0) && v.hasOwnProperty(check1)) { + data.$outer = v + break + } + } + var $events = $repeat.$events + var $list = ($events || {})[subscribers] + injectDependency($list, data) + if (xtype === "object") { + data.$with = true + $repeat.$proxy || ($repeat.$proxy = {}) + data.handler("append", $repeat) + } else if ($repeat.length) { + data.handler("add", 0, $repeat.length) + } +} + +bindingExecutors.repeat = function (method, pos, el) { + if (!method && this.$with) { + method = "append" + var flag = "update" + } + if (method) { + var data = this, start, fragment + var end = data.element + var comments = getComments(data) + var parent = end.parentNode + var proxies = data.proxies + var transation = avalonFragment.cloneNode(false) + switch (method) { + case "add": //在pos位置后添加el数组(pos为插入位置,el为要插入的个数) + var n = pos + el + var fragments = [] + for (var i = pos; i < n; i++) { + var proxy = eachProxyAgent(i, data) + proxies.splice(i, 0, proxy) + shimController(data, transation, proxy, fragments) + } + var now = new Date() - 0 + avalon.optimize = avalon.optimize || now + for (i = 0; fragment = fragments[i++]; ) { + scanNodeArray(fragment.nodes, fragment.vmodels) + fragment.nodes = fragment.vmodels = null + } + if (avalon.optimize === now) { + avalon.optimize = null + } + parent.insertBefore(transation, comments[pos] || end) + avalon.profile("插入操作花费了 " + (new Date - now)) + break + case "del": //将pos后的el个元素删掉(pos, el都是数字) + sweepNodes(comments[pos], comments[pos + el] || end) + var removed = proxies.splice(pos, el) + recycleProxies(removed, "each") + break + case "clear": + start = comments[0] + if (start) { + sweepNodes(start, end) + if (data.$with) { + parent.insertBefore(start, end) + } + } + recycleProxies(proxies, "each") + break + case "move": + start = comments[0] + if (start) { + var signature = start.nodeValue + var rooms = [] + var room = [], + node + sweepNodes(start, end, function () { + room.unshift(this) + if (this.nodeValue === signature) { + rooms.unshift(room) + room = [] + } + }) + sortByIndex(rooms, pos) + sortByIndex(proxies, pos) + while (room = rooms.shift()) { + while (node = room.shift()) { + transation.appendChild(node) + } + } + parent.insertBefore(transation, end) + } + break + case "index": //将proxies中的第pos个起的所有元素重新索引 + var last = proxies.length - 1 + for (; el = proxies[pos]; pos++) { + el.$index = pos + el.$first = pos === 0 + el.$last = pos === last + } + return + case "set": //将proxies中的第pos个元素的VM设置为el(pos为数字,el任意) + proxy = proxies[pos] + if (proxy) { + fireDependencies(proxy.$events[data.param || "el"]) + } + break + case "append": + var object = data.$repeat //原来第2参数, 被循环对象 + var oldProxy = object.$proxy //代理对象组成的hash + var keys = [] + now = new Date() - 0 + avalon.optimize = avalon.optimize || now + if (flag === "update") { + if (!data.evaluator) { + parseExprProxy(data.value, data.vmodels, data, 0, 1) + } + object = data.$repeat = data.evaluator.apply(0, data.args || []) + object.$proxy = oldProxy + } + var pool = object.$proxy || {} + removed = [] + var nodes = data.element.parentNode.childNodes + var add = false + for (i = 0; node = nodes[i++]; ) { + if (node.nodeValue === data.signature) { + add = true + } else if (node.nodeValue === data.signature + ":end") { + add = false + } + if (add) { + removed.push(node) + } + } + + var indexNode = [], item + var keyIndex = data.keyIndex || (data.keyIndex = {}) + //将现有的节点全部移出DOM树 + for ( i = 0; i < removed.length; i++) { + el = removed[i] + if (el.nodeValue === data.signature) { + item = avalonFragment.cloneNode(false) + indexNode.push(item) + } + item.appendChild(el) + } + + + for (var key in object) { //当前对象的所有键名 + if (object.hasOwnProperty(key) && key !== "hasOwnProperty" && key !== "$proxy") { + keys.push(key) + } + } + + for (var i = 0; key = keys[i++]; ) { + if (!pool.hasOwnProperty(key)) {//添加缺失的代理VM + pool[key] = withProxyAgent(pool[key], key, data) + } else { + pool[key].$val = object[key] + } + } + + for ( key in pool) { + if (keys.indexOf(key) === -1) {//删除没用的代理VM + proxyRecycler(pool[key], withProxyPool) //去掉之前的代理VM + delete pool[key] + } + } + var fragments = [] + var renderKeys = keys //需要渲染到DOM树去的键名 + var end = data.element + if (data.sortedCallback) { //如果有回调,则让它们排序 + var keys2 = data.sortedCallback.call(parent, keys) + if (keys2 && Array.isArray(keys2)) { + renderKeys = keys2 + } + } + + for (i = 0; i < renderKeys.length; i++) { + key = renderKeys[i] + if (typeof keyIndex[key] === "number") { + transation.appendChild(indexNode[keyIndex[key]]) + fragments.push({}) + } else { + shimController(data, transation, pool[key], fragments) + } + } + + for (i = 0; i < renderKeys.length; i++) { + keyIndex[renderKeys[i]] = i + } + + for (i = 0; fragment = fragments[i++]; ) { + if (fragment.nodes) { + scanNodeArray(fragment.nodes, fragment.vmodels) + fragment.nodes = fragment.vmodels = null + } + } + if (avalon.optimize === now) { + avalon.optimize = null + } + parent.insertBefore(transation, end) + avalon.profile("插入操作花费了 " + (new Date - now)) + break + } + if (!data.$repeat || data.$repeat.hasOwnProperty("$lock")) //IE6-8 VBScript对象会报错, 有时候data.$repeat不存在 + return + if (method === "clear") + method = "del" + var callback = data.renderedCallback || noop, + args = arguments + if (parent.oldValue && parent.tagName === "SELECT") { //fix #503 + avalon(parent).val(parent.oldValue.split(",")) + } + callback.apply(parent, args) + } +} +"with,each".replace(rword, function (name) { + bindingHandlers[name] = bindingHandlers.repeat +}) + +function shimController(data, transation, proxy, fragments) { + var content = data.template.cloneNode(true) + var nodes = avalon.slice(content.childNodes) + content.insertBefore(DOC.createComment(data.signature), content.firstChild) + transation.appendChild(content) + var nv = [proxy].concat(data.vmodels) + var fragment = { + nodes: nodes, + vmodels: nv + } + fragments.push(fragment) +} + +function getComments(data) { + var ret = [] + var nodes = data.element.parentNode.childNodes + for(var i= 0, node; node = nodes[i++];){ + if(node.nodeValue === data.signature){ + ret.push( node ) + }else if(node.nodeValue === data.signature+":end"){ + break + } + } + return ret +} + + +//移除掉start与end之间的节点(保留end) +function sweepNodes(start, end, callback) { + while (true) { + var node = end.previousSibling + if (!node) + break + node.parentNode.removeChild(node) + callback && callback.call(node) + if (node === start) { + break + } + } +} + +// 为ms-each,ms-with, ms-repeat会创建一个代理VM, +// 通过它们保持一个下上文,让用户能调用$index,$first,$last,$remove,$key,$val,$outer等属性与方法 +// 所有代理VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现 +var withProxyPool = [] +function withProxyFactory() { + var proxy = modelFactory({ + $key: "", + $outer: {}, + $host: {}, + $val: { + get: function () { + return this.$host[this.$key] + }, + set: function (val) { + this.$host[this.$key] = val + } + } + }, { + $val: 1 + }) + proxy.$id = generateID("$proxy$with") + return proxy +} + +function withProxyAgent(proxy, key, data) { + proxy = proxy || withProxyPool.pop() + if (!proxy) { + proxy = withProxyFactory() + } else { + proxy.$reinitialize() + } + var host = data.$repeat + proxy.$key = key + proxy.$host = host + proxy.$outer = data.$outer + if (host.$events) { + proxy.$events.$val = host.$events[key] + } else { + proxy.$events = {} + } + return proxy +} + + +function recycleProxies(proxies) { + eachProxyRecycler(proxies) +} +function eachProxyRecycler(proxies) { + proxies.forEach(function (proxy) { + proxyRecycler(proxy, eachProxyPool) + }) + proxies.length = 0 +} + + +var eachProxyPool = [] +function eachProxyFactory(name) { + var source = { + $host: [], + $outer: {}, + $index: 0, + $first: false, + $last: false, + $remove: avalon.noop + } + source[name] = { + get: function () { + var e = this.$events + var array = e.$index + e.$index = e[name] //#817 通过$index为el收集依赖 + try { + return this.$host[this.$index] + } finally { + e.$index = array + } + }, + set: function (val) { + try { + var e = this.$events + var array = e.$index + e.$index = [] + this.$host.set(this.$index, val) + } finally { + e.$index = array + } + } + } + var second = { + $last: 1, + $first: 1, + $index: 1 + } + var proxy = modelFactory(source, second) + proxy.$id = generateID("$proxy$each") + return proxy +} + +function eachProxyAgent(index, data) { + var param = data.param || "el", + proxy + for (var i = 0, n = eachProxyPool.length; i < n; i++) { + var candidate = eachProxyPool[i] + if (candidate && candidate.hasOwnProperty(param)) { + proxy = candidate + eachProxyPool.splice(i, 1) + } + } + if (!proxy) { + proxy = eachProxyFactory(param) + } + var host = data.$repeat + var last = host.length - 1 + proxy.$index = index + proxy.$first = index === 0 + proxy.$last = index === last + proxy.$host = host + proxy.$outer = data.$outer + proxy.$remove = function () { + return host.removeAt(proxy.$index) + } + return proxy +} + + +function proxyRecycler(proxy, proxyPool) { + for (var i in proxy.$events) { + if (Array.isArray(proxy.$events[i])) { + proxy.$events[i].forEach(function (data) { + if (typeof data === "object") + disposeData(data) + })// jshint ignore:line + proxy.$events[i].length = 0 + } + } + proxy.$host = proxy.$outer = {} + if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) { + proxyPool.pop() + } +} +/********************************************************************* + * 各种指令 * + **********************************************************************/ +//ms-skip绑定已经在scanTag 方法中实现 +// bindingHandlers.text 定义在if.js +bindingExecutors.text = function(val, elem) { + val = val == null ? "" : val //不在页面上显示undefined null + if (elem.nodeType === 3) { //绑定在文本节点上 + try { //IE对游离于DOM树外的节点赋值会报错 + elem.data = val + } catch (e) {} + } else { //绑定在特性节点上 + if ("textContent" in elem) { + elem.textContent = val + } else { + elem.innerText = val + } + } +} +function parseDisplay(nodeName, val) { + //用于取得此类标签的默认display值 + var key = "_" + nodeName + if (!parseDisplay[key]) { + var node = DOC.createElement(nodeName) + root.appendChild(node) + if (W3C) { + val = getComputedStyle(node, null).display + } else { + val = node.currentStyle.display + } + root.removeChild(node) + parseDisplay[key] = val + } + return parseDisplay[key] +} + +avalon.parseDisplay = parseDisplay + +bindingHandlers.visible = function(data, vmodels) { + var elem = data.element + var display = elem.style.display + if(display === "none"){ + display = parseDisplay(elem.nodeName) + } + data.display = display + parseExprProxy(data.value, vmodels, data) +} + +bindingExecutors.visible = function(val, elem, data) { + elem.style.display = val ? data.display : "none" +} +bindingHandlers.widget = function(data, vmodels) { + var args = data.value.match(rword) + var elem = data.element + var widget = args[0] + var id = args[1] + if (!id || id === "$") { //没有定义或为$时,取组件名+随机数 + id = generateID(widget) + } + var optName = args[2] || widget //没有定义,取组件名 + var constructor = avalon.ui[widget] + if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname" + vmodels = elem.vmodels || vmodels + for (var i = 0, v; v = vmodels[i++];) { + if (v.hasOwnProperty(optName) && typeof v[optName] === "object") { + var vmOptions = v[optName] + vmOptions = vmOptions.$model || vmOptions + break + } + } + if (vmOptions) { + var wid = vmOptions[widget + "Id"] + if (typeof wid === "string") { + log("warning!不再支持" + widget + "Id") + id = wid + } + } + //抽取data-tooltip-text、data-tooltip-attr属性,组成一个配置对象 + var widgetData = avalon.getWidgetData(elem, widget) + data.value = [widget, id, optName].join(",") + data[widget + "Id"] = id + data.evaluator = noop + elem.msData["ms-widget-id"] = id + var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData) + elem.removeAttribute("ms-widget") + var vmodel = constructor(elem, data, vmodels) || {} //防止组件不返回VM + if (vmodel.$id) { + avalon.vmodels[id] = vmodel + createSignalTower(elem, vmodel) + try { + vmodel.$init(function() { + avalon.scan(elem, [vmodel].concat(vmodels)) + if (typeof options.onInit === "function") { + options.onInit.call(elem, vmodel, options, vmodels) + } + }) + } catch (e) {} + data.rollback = function() { + try { + vmodel.widgetElement = null + vmodel.$remove() + } catch (e) {} + elem.msData = {} + delete avalon.vmodels[vmodel.$id] + } + injectDisposeQueue(data, widgetList) + if (window.chrome) { + elem.addEventListener("DOMNodeRemovedFromDocument", function() { + setTimeout(rejectDisposeQueue) + }) + } + } else { + avalon.scan(elem, vmodels) + } + } else if (vmodels.length) { //如果该组件还没有加载,那么保存当前的vmodels + elem.vmodels = vmodels + } +} +var widgetList = [] +//不存在 bindingExecutors.widget +/********************************************************************* + * 自带过滤器 * + **********************************************************************/ +var rscripts = /]*>([\S\s]*?)<\/script\s*>/gim +var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g +var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig +var rsanitize = { + a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig, + img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig, + form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig +} +var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g +var rnoalphanumeric = /([^\#-~| |!])/g; + +function numberFormat(number, decimals, point, thousands) { + //form http://phpjs.org/functions/number_format/ + //number 必需,要格式化的数字 + //decimals 可选,规定多少个小数位。 + //point 可选,规定用作小数点的字符串(默认为 . )。 + //thousands 可选,规定用作千位分隔符的字符串(默认为 , ),如果设置了该参数,那么所有其他参数都是必需的。 + number = (number + '') + .replace(/[^0-9+\-Ee.]/g, '') + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 3 : Math.abs(decimals), + sep = thousands || ",", + dec = point || ".", + s = '', + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec) + return '' + (Math.round(n * k) / k) + .toFixed(prec) + } + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) + .split('.') + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep) + } + if ((s[1] || '') + .length < prec) { + s[1] = s[1] || '' + s[1] += new Array(prec - s[1].length + 1) + .join('0') + } + return s.join(dec) +} + + +var filters = avalon.filters = { + uppercase: function(str) { + return str.toUpperCase() + }, + lowercase: function(str) { + return str.toLowerCase() + }, + truncate: function(str, length, truncation) { + //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串 + length = length || 30 + truncation = typeof truncation === "string" ? truncation : "..." + return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str) + }, + $filter: function(val) { + for (var i = 1, n = arguments.length; i < n; i++) { + var array = arguments[i] + var fn = avalon.filters[array.shift()] + if (typeof fn === "function") { + var arr = [val].concat(array) + val = fn.apply(null, arr) + } + } + return val + }, + camelize: camelize, + //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet + // chrome + // chrome + // IE67chrome + // IE67chrome + // IE67chrome + sanitize: function(str) { + return str.replace(rscripts, "").replace(ropen, function(a, b) { + var match = a.toLowerCase().match(/<(\w+)\s/) + if (match) { //处理a标签的href属性,img标签的src属性,form标签的action属性 + var reg = rsanitize[match[1]] + if (reg) { + a = a.replace(reg, function(s, name, value) { + var quote = value.charAt(0) + return name + "=" + quote + "javascript:void(0)" + quote// jshint ignore:line + }) + } + } + return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件 + }) + }, + escape: function(str) { + //将字符串经过 str 转义得到适合在页面中显示的内容, 例如替换 < 为 < + return String(str). + replace(/&/g, '&'). + replace(rsurrogate, function(value) { + var hi = value.charCodeAt(0) + var low = value.charCodeAt(1) + return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' + }). + replace(rnoalphanumeric, function(value) { + return '&#' + value.charCodeAt(0) + ';' + }). + replace(//g, '>') + }, + currency: function(amount, symbol, fractionSize) { + return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize : 2) + }, + number: numberFormat +} +/* + 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) + 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) + 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) + 'MMMM': Month in year (January-December) + 'MMM': Month in year (Jan-Dec) + 'MM': Month in year, padded (01-12) + 'M': Month in year (1-12) + 'dd': Day in month, padded (01-31) + 'd': Day in month (1-31) + 'EEEE': Day in Week,(Sunday-Saturday) + 'EEE': Day in Week, (Sun-Sat) + 'HH': Hour in day, padded (00-23) + 'H': Hour in day (0-23) + 'hh': Hour in am/pm, padded (01-12) + 'h': Hour in am/pm, (1-12) + 'mm': Minute in hour, padded (00-59) + 'm': Minute in hour (0-59) + 'ss': Second in minute, padded (00-59) + 's': Second in minute (0-59) + 'a': am/pm marker + 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200) + format string can also be one of the following predefined localizable formats: + + 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm) + 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm) + 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010) + 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010 + 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010) + 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10) + 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm) + 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm) + */ +new function() {// jshint ignore:line + function toInt(str) { + return parseInt(str, 10) || 0 + } + + function padNumber(num, digits, trim) { + var neg = "" + if (num < 0) { + neg = '-' + num = -num + } + num = "" + num + while (num.length < digits) + num = "0" + num + if (trim) + num = num.substr(num.length - digits) + return neg + num + } + + function dateGetter(name, size, offset, trim) { + return function(date) { + var value = date["get" + name]() + if (offset > 0 || value > -offset) + value += offset + if (value === 0 && offset === -12) { + value = 12 + } + return padNumber(value, size, trim) + } + } + + function dateStrGetter(name, shortForm) { + return function(date, formats) { + var value = date["get" + name]() + var get = (shortForm ? ("SHORT" + name) : name).toUpperCase() + return formats[get][value] + } + } + + function timeZoneGetter(date) { + var zone = -1 * date.getTimezoneOffset() + var paddedZone = (zone >= 0) ? "+" : "" + paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2) + return paddedZone + } + //取得上午下午 + + function ampmGetter(date, formats) { + return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1] + } + var DATE_FORMATS = { + yyyy: dateGetter("FullYear", 4), + yy: dateGetter("FullYear", 2, 0, true), + y: dateGetter("FullYear", 1), + MMMM: dateStrGetter("Month"), + MMM: dateStrGetter("Month", true), + MM: dateGetter("Month", 2, 1), + M: dateGetter("Month", 1, 1), + dd: dateGetter("Date", 2), + d: dateGetter("Date", 1), + HH: dateGetter("Hours", 2), + H: dateGetter("Hours", 1), + hh: dateGetter("Hours", 2, -12), + h: dateGetter("Hours", 1, -12), + mm: dateGetter("Minutes", 2), + m: dateGetter("Minutes", 1), + ss: dateGetter("Seconds", 2), + s: dateGetter("Seconds", 1), + sss: dateGetter("Milliseconds", 3), + EEEE: dateStrGetter("Day"), + EEE: dateStrGetter("Day", true), + a: ampmGetter, + Z: timeZoneGetter + } + var rdateFormat = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/ + var raspnetjson = /^\/Date\((\d+)\)\/$/ + filters.date = function(date, format) { + var locate = filters.date.locate, + text = "", + parts = [], + fn, match + format = format || "mediumDate" + format = locate[format] || format + if (typeof date === "string") { + if (/^\d+$/.test(date)) { + date = toInt(date) + } else if (raspnetjson.test(date)) { + date = +RegExp.$1 + } else { + var trimDate = date.trim() + var dateArray = [0, 0, 0, 0, 0, 0, 0] + var oDate = new Date(0) + //取得年月日 + trimDate = trimDate.replace(/^(\d+)\D(\d+)\D(\d+)/, function(_, a, b, c) { + var array = c.length === 4 ? [c, a, b] : [a, b, c] + dateArray[0] = toInt(array[0]) //年 + dateArray[1] = toInt(array[1]) - 1 //月 + dateArray[2] = toInt(array[2]) //日 + return "" + }) + var dateSetter = oDate.setFullYear + var timeSetter = oDate.setHours + trimDate = trimDate.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/, function(_, a, b, c, d) { + dateArray[3] = toInt(a) //小时 + dateArray[4] = toInt(b) //分钟 + dateArray[5] = toInt(c) //秒 + if (d) { //毫秒 + dateArray[6] = Math.round(parseFloat("0." + d) * 1000) + } + return "" + }) + var tzHour = 0 + var tzMin = 0 + trimDate = trimDate.replace(/Z|([+-])(\d\d):?(\d\d)/, function(z, symbol, c, d) { + dateSetter = oDate.setUTCFullYear + timeSetter = oDate.setUTCHours + if (symbol) { + tzHour = toInt(symbol + c) + tzMin = toInt(symbol + d) + } + return "" + }) + + dateArray[3] -= tzHour + dateArray[4] -= tzMin + dateSetter.apply(oDate, dateArray.slice(0, 3)) + timeSetter.apply(oDate, dateArray.slice(3)) + date = oDate + } + } + if (typeof date === "number") { + date = new Date(date) + } + if (avalon.type(date) !== "date") { + return + } + while (format) { + match = rdateFormat.exec(format) + if (match) { + parts = parts.concat(match.slice(1)) + format = parts.pop() + } else { + parts.push(format) + format = null + } + } + parts.forEach(function(value) { + fn = DATE_FORMATS[value] + text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'") + }) + return text + } + var locate = { + AMPMS: { + 0: "上午", + 1: "下午" + }, + DAY: { + 0: "星期日", + 1: "星期一", + 2: "星期二", + 3: "星期三", + 4: "星期四", + 5: "星期五", + 6: "星期六" + }, + MONTH: { + 0: "1月", + 1: "2月", + 2: "3月", + 3: "4月", + 4: "5月", + 5: "6月", + 6: "7月", + 7: "8月", + 8: "9月", + 9: "10月", + 10: "11月", + 11: "12月" + }, + SHORTDAY: { + "0": "周日", + "1": "周一", + "2": "周二", + "3": "周三", + "4": "周四", + "5": "周五", + "6": "周六" + }, + fullDate: "y年M月d日EEEE", + longDate: "y年M月d日", + medium: "yyyy-M-d H:mm:ss", + mediumDate: "yyyy-M-d", + mediumTime: "H:mm:ss", + "short": "yy-M-d ah:mm", + shortDate: "yy-M-d", + shortTime: "ah:mm" + } + locate.SHORTMONTH = locate.MONTH + filters.date.locate = locate +}// jshint ignore:line +/********************************************************************* + * AMD加载器 * + **********************************************************************/ +//https://www.devbridge.com/articles/understanding-amd-requirejs/ +//http://maxogden.com/nested-dependencies.html +var modules = avalon.modules = { + "domReady!": { + exports: avalon, + state: 3 + }, + "avalon": { + exports: avalon, + state: 4 + } +} +//Object(modules[id]).state拥有如下值 +// undefined 没有定义 +// 1(send) 已经发出请求 +// 2(loading) 已经被执行但还没有执行完成,在这个阶段define方法会被执行 +// 3(loaded) 执行完毕,通过onload/onreadystatechange回调判定,在这个阶段checkDeps方法会执行 +// 4(execute) 其依赖也执行完毕, 值放到exports对象上,在这个阶段fireFactory方法会执行 +modules.exports = modules.avalon + +new function () {// jshint ignore:line + var loadings = [] //正在加载中的模块列表 + var factorys = [] //放置define方法的factory函数 + var rjsext = /\.js$/i + function makeRequest(name, config) { +//1. 去掉资源前缀 + var res = "js" + name = name.replace(/^(\w+)\!/, function (a, b) { + res = b + return "" + }) + if (res === "ready") { + log("debug: ready!已经被废弃,请使用domReady!") + res = "domReady" + } +//2. 去掉querystring, hash + var query = "" + name = name.replace(rquery, function (a) { + query = a + return "" + }) + //3. 去掉扩展名 + var suffix = "." + res + var ext = /js|css/.test(suffix) ? suffix : "" + name = name.replace(/\.[a-z0-9]+$/g, function (a) { + if (a === suffix) { + ext = a + return "" + } else { + return a + } + }) + var req = avalon.mix({ + query: query, + ext: ext, + res: res, + name: name, + toUrl: toUrl + }, config) + req.toUrl(name) + return req + } + + function fireRequest(req) { + var name = req.name + var res = req.res + //1. 如果该模块已经发出请求,直接返回 + var module = modules[name] + var urlNoQuery = name && req.urlNoQuery + if (module && module.state >= 1) { + return name + } + module = modules[urlNoQuery] + if (module && module.state >= 3) { + innerRequire(module.deps || [], module.factory, urlNoQuery) + return urlNoQuery + } + if (name && !module) { + module = modules[urlNoQuery] = { + id: urlNoQuery, + state: 1 //send + } + var wrap = function (obj) { + resources[res] = obj + obj.load(name, req, function (a) { + if (arguments.length && a !== void 0) { + module.exports = a + } + module.state = 4 + checkDeps() + }) + } + + if (!resources[res]) { + innerRequire([res], wrap) + } else { + wrap(resources[res]) + } + } + return name ? urlNoQuery : res + "!" + } + +//核心API之一 require + var requireQueue = [] + var isUserFirstRequire = false + innerRequire = avalon.require = function (array, factory, parentUrl, defineConfig) { + if (!isUserFirstRequire) { + requireQueue.push(avalon.slice(arguments)) + if (arguments.length <= 2) { + isUserFirstRequire = true + var queue = requireQueue.splice(0, requireQueue.length), args + while (args = queue.shift()) { + innerRequire.apply(null, args) + } + } + return + } + + if (!Array.isArray(array)) { + avalon.error("require方法的第一个参数应为数组 " + array) + } + var deps = [] // 放置所有依赖项的完整路径 + var uniq = {} + var id = parentUrl || "callback" + setTimeout("1")// jshint ignore:line + defineConfig = defineConfig || {} + defineConfig.baseUrl = kernel.baseUrl + var isBuilt = !!defineConfig.built + if (parentUrl) { + defineConfig.parentUrl = parentUrl.substr(0, parentUrl.lastIndexOf("/")) + defineConfig.mapUrl = parentUrl.replace(rjsext, "") + } + if (isBuilt) { + var req = makeRequest(defineConfig.defineName, defineConfig) + id = req.urlNoQuery + } else { + array.forEach(function (name) { + var req = makeRequest(name, defineConfig) + var url = fireRequest(req) //加载资源,并返回该资源的完整地址 + if (url) { + if (!uniq[url]) { + deps.push(url) + uniq[url] = "司徒正美" //去重 + } + } + }) + } + + var module = modules[id] + if (!module || module.state !== 4) { + modules[id] = { + id: id, + deps: isBuilt ? array.concat() : deps, + factory: factory || noop, + state: 3 + } + } + if (!module) { + //如果此模块是定义在另一个JS文件中, 那必须等该文件加载完毕, 才能放到检测列队中 + loadings.push(id) + } + checkDeps() + } + +//核心API之二 require + innerRequire.define = function (name, deps, factory) { //模块名,依赖列表,模块本身 + if (typeof name !== "string") { + factory = deps + deps = name + name = "anonymous" + } + if (!Array.isArray(deps)) { + factory = deps + deps = [] + } + var config = { + built: !isUserFirstRequire, //用r.js打包后,所有define会放到requirejs之前 + defineName: name + } + var args = [deps, factory, config] + factory.require = function (url) { + args.splice(2, 0, url) + if (modules[url]) { + modules[url].state = 3 //loaded + var isCycle = false + try { + isCycle = checkCycle(modules[url].deps, url) + } catch (e) { + } + if (isCycle) { + avalon.error(url + "模块与之前的模块存在循环依赖,请不要直接用script标签引入" + url + "模块") + } + } + delete factory.require //释放内存 + innerRequire.apply(null, args) //0,1,2 --> 1,2,0 + } +//根据标准,所有遵循W3C标准的浏览器,script标签会按标签的出现顺序执行。 +//老的浏览器中,加载也是按顺序的:一个文件下载完成后,才开始下载下一个文件。 +//较新的浏览器中(IE8+ 、FireFox3.5+ 、Chrome4+ 、Safari4+),为了减小请求时间以优化体验, +//下载可以是并行的,但是执行顺序还是按照标签出现的顺序。 +//但如果script标签是动态插入的, 就未必按照先请求先执行的原则了,目测只有firefox遵守 +//唯一比较一致的是,IE10+及其他标准浏览器,一旦开始解析脚本, 就会一直堵在那里,直接脚本解析完毕 +//亦即,先进入loading阶段的script标签(模块)必然会先进入loaded阶段 + var url = config.built ? "unknown" : getCurrentScript() + if (url) { + var module = modules[url] + if (module) { + module.state = 2 + } + factory.require(url) + } else {//合并前后的safari,合并后的IE6-9走此分支 + factorys.push(factory) + } + } +//核心API之三 require.config(settings) + innerRequire.config = kernel + //核心API之四 define.amd 标识其符合AMD规范 + innerRequire.define.amd = modules + + //==========================对用户配置项进行再加工========================== + var allpaths = kernel["orig.paths"] = {} + var allmaps = kernel["orig.map"] = {} + var allpackages = kernel["packages"] = [] + var allargs = kernel["orig.args"] = {} + avalon.mix(plugins, { + paths: function (hash) { + avalon.mix(allpaths, hash) + kernel.paths = makeIndexArray(allpaths) + }, + map: function (hash) { + avalon.mix(allmaps, hash) + var list = makeIndexArray(allmaps, 1, 1) + avalon.each(list, function (_, item) { + item.val = makeIndexArray(item.val) + }) + kernel.map = list + }, + packages: function (array) { + array = array.concat(allpackages) + var uniq = {} + var ret = [] + for (var i = 0, pkg; pkg = array[i++]; ) { + pkg = typeof pkg === "string" ? {name: pkg} : pkg + var name = pkg.name + if (!uniq[name]) { + var url = joinPath(pkg.location || name, pkg.main || "main") + url = url.replace(rjsext, "") + ret.push(pkg) + uniq[name] = pkg.location = url + pkg.reg = makeMatcher(name) + } + } + kernel.packages = ret.sort() + }, + urlArgs: function (hash) { + if (typeof hash === "string") { + hash = {"*": hash} + } + avalon.mix(allargs, hash) + kernel.urlArgs = makeIndexArray(allargs, 1) + }, + baseUrl: function (url) { + if (!isAbsUrl(url)) { + var baseElement = head.getElementsByTagName("base")[0] + if (baseElement) { + head.removeChild(baseElement) + } + var node = DOC.createElement("a") + node.href = url + url = getFullUrl(node, "href") + if (baseElement) { + head.insertBefore(baseElement, head.firstChild) + } + } + if (url.length > 3) + kernel.baseUrl = url + }, + shim: function (obj) { + for (var i in obj) { + var value = obj[i] + if (Array.isArray(value)) { + value = obj[i] = { + deps: value + } + } + if (!value.exportsFn && (value.exports || value.init)) { + value.exportsFn = makeExports(value) + } + } + kernel.shim = obj + } + + }) + + + //==============================内部方法================================= + function checkCycle(deps, nick) { + //检测是否存在循环依赖 + for (var i = 0, id; id = deps[i++]; ) { + if (modules[id].state !== 4 && + (id === nick || checkCycle(modules[id].deps, nick))) { + return true + } + } + } + + function checkFail(node, onError, fuckIE) { + var id = trimQuery(node.src) //检测是否死链 + node.onload = node.onreadystatechange = node.onerror = null + if (onError || (fuckIE && modules[id] && !modules[id].state)) { + setTimeout(function () { + head.removeChild(node) + node = null // 处理旧式IE下的循环引用问题 + }) + log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state)) + } else { + return true + } + } + + function checkDeps() { + //检测此JS模块的依赖是否都已安装完毕,是则安装自身 + loop: for (var i = loadings.length, id; id = loadings[--i]; ) { + var obj = modules[id], + deps = obj.deps + if (!deps) + continue + for (var j = 0, key; key = deps[j]; j++) { + if (Object(modules[key]).state !== 4) { + continue loop + } + } + //如果deps是空对象或者其依赖的模块的状态都是2 + if (obj.state !== 4) { + loadings.splice(i, 1) //必须先移除再安装,防止在IE下DOM树建完后手动刷新页面,会多次执行它 + fireFactory(obj.id, obj.deps, obj.factory) + checkDeps() //如果成功,则再执行一次,以防有些模块就差本模块没有安装好 + } + } + } + + var rreadyState = /complete|loaded/ + function loadJS(url, id, callback) { + //通过script节点加载目标模块 + var node = DOC.createElement("script") + node.className = subscribers //让getCurrentScript只处理类名为subscribers的script节点 + var supportLoad = "onload" in node + var onEvent = supportLoad ? "onload" : "onreadystatechange" + function onload() { + var factory = factorys.pop() + factory && factory.require(id) + if (callback) { + callback() + } + if (checkFail(node, false, !supportLoad)) { + log("debug: 已成功加载 " + url) + id && loadings.push(id) + checkDeps() + } + } + var index = 0, loadID + node[onEvent] = supportLoad ? onload : function () { + if (rreadyState.test(node.readyState)) { + ++index + if (index === 1) { + loadID = setTimeout(onload, 500) + } else { + clearTimeout(loadID) + onload() + } + } + } + node.onerror = function () { + checkFail(node, true) + } + + head.insertBefore(node, head.firstChild) //chrome下第二个参数不能为null + node.src = url //插入到head的第一个节点前,防止IE6下head标签没闭合前使用appendChild抛错 + log("debug: 正准备加载 " + url) //更重要的是IE6下可以收窄getCurrentScript的寻找范围 + } + + var resources = innerRequire.plugins = { + //三大常用资源插件 js!, css!, text!, ready! + ready: { + load: noop + }, + js: { + load: function (name, req, onLoad) { + var url = req.url + var id = req.urlNoQuery + var shim = kernel.shim[name.replace(rjsext, "")] + if (shim) { //shim机制 + innerRequire(shim.deps || [], function () { + var args = avalon.slice(arguments) + loadJS(url, id, function () { + onLoad(shim.exportsFn ? shim.exportsFn.apply(0, args) : void 0) + }) + }) + } else { + loadJS(url, id) + } + } + }, + css: { + load: function (name, req, onLoad) { + var url = req.url + var node = DOC.createElement("link") + node.rel = "stylesheet" + node.href = url + head.insertBefore(node, head.firstChild) + log("debug: 已成功加载 " + url) + onLoad() + } + }, + text: { + load: function (name, req, onLoad) { + var url = req.url + var xhr = getXHR() + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + var status = xhr.status; + if (status > 399 && status < 600) { + avalon.error(url + " 对应资源不存在或没有开启 CORS") + } else { + log("debug: 已成功加载 " + url) + onLoad(xhr.responseText) + } + } + } + var time = "_=" + (new Date() - 0) + var _url = url.indexOf("?") === -1 ? url + "?" + time : url + "&" + time + xhr.open("GET", _url, true) + if ("withCredentials" in xhr) {//这是处理跨域 + xhr.withCredentials = true + } + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")//告诉后端这是AJAX请求 + xhr.send() + log("debug: 正准备加载 " + url) + } + } + } + innerRequire.checkDeps = checkDeps + + var rquery = /(\?[^#]*)$/ + function trimQuery(url) { + return (url || "").replace(rquery, "") + } + + function isAbsUrl(path) { + //http://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative + return /^(?:[a-z]+:)?\/\//i.test(String(path)) + } + + function getFullUrl(node, src) { + return"1"[0] ? node[src] : node.getAttribute(src, 4) + } + + function getCurrentScript() { + // inspireb by https://github.com/samyk/jiagra/blob/master/jiagra.js + var stack + try { + a.b.c() //强制报错,以便捕获e.stack + } catch (e) { //safari5的sourceURL,firefox的fileName,它们的效果与e.stack不一样 + stack = e.stack + if (!stack && window.opera) { + //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 + stack = (String(e).match(/of linked script \S+/g) || []).join(" ") + } + } + if (stack) { + /**e.stack最后一行在所有支持的浏览器大致如下: + *chrome23: + * at http://113.93.50.63/data.js:4:1 + *firefox17: + *@http://113.93.50.63/query.js:4 + *opera12:http://www.oldapps.com/opera.php?system=Windows_XP + *@http://113.93.50.63/data.js:4 + *IE10: + * at Global code (http://113.93.50.63/data.js:4:1) + * //firefox4+ 可以用document.currentScript + */ + stack = stack.split(/[@ ]/g).pop() //取得最后一行,最后一个空格或@之后的部分 + stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉换行符 + return trimQuery(stack.replace(/(:\d+)?:\d+$/i, "")) //去掉行号与或许存在的出错字符起始位置 + } + var nodes = head.getElementsByTagName("script") //只在head标签中寻找 + for (var i = nodes.length, node; node = nodes[--i]; ) { + if (node.className === subscribers && node.readyState === "interactive") { + var url = getFullUrl(node, "src") + return node.className = trimQuery(url) + } + } + } + + var rcallback = /^callback\d+$/ + function fireFactory(id, deps, factory) { + var module = Object(modules[id]) + module.state = 4 + for (var i = 0, array = [], d; d = deps[i++]; ) { + if (d === "exports") { + var obj = module.exports || (module.exports = {}) + array.push(obj) + } else { + array.push(modules[d].exports) + } + } + try { + var ret = factory.apply(window, array) + } catch (e) { + log("执行[" + id + "]模块的factory抛错: ", e) + } + if (ret !== void 0) { + module.exports = ret + } + if (rcallback.test(id)) { + delete modules[id] + } + delete module.factory + return ret + } + function toUrl(id) { + if (id.indexOf(this.res + "!") === 0) { + id = id.slice(this.res.length + 1) //处理define("css!style",[], function(){})的情况 + } + var url = id + //1. 是否命中paths配置项 + var usePath = 0 + var baseUrl = this.baseUrl + var rootUrl = this.parentUrl || baseUrl + eachIndexArray(id, kernel.paths, function (value, key) { + url = url.replace(key, value) + usePath = 1 + }) + //2. 是否命中packages配置项 + if (!usePath) { + eachIndexArray(id, kernel.packages, function (value, key, item) { + url = url.replace(item.name, item.location) + }) + } + //3. 是否命中map配置项 + if (this.mapUrl) { + eachIndexArray(this.mapUrl, kernel.map, function (array) { + eachIndexArray(url, array, function (mdValue, mdKey) { + url = url.replace(mdKey, mdValue) + rootUrl = baseUrl + }) + }) + } + var ext = this.ext + if (ext && usePath && url.slice(-ext.length) === ext) { + url = url.slice(0, -ext.length) + } + //4. 转换为绝对路径 + if (!isAbsUrl(url)) { + rootUrl = this.built || /^\w/.test(url) ? baseUrl : rootUrl + url = joinPath(rootUrl, url) + } + //5. 还原扩展名,query + var urlNoQuery = url + ext + url = urlNoQuery + this.query + //6. 处理urlArgs + eachIndexArray(id, kernel.urlArgs, function (value) { + url += (url.indexOf("?") === -1 ? "?" : "&") + value; + }) + this.url = url + return this.urlNoQuery = urlNoQuery + } + + function makeIndexArray(hash, useStar, part) { + //创建一个经过特殊算法排好序的数组 + var index = hash2array(hash, useStar, part) + index.sort(descSorterByName) + return index + } + + function makeMatcher(prefix) { + return new RegExp('^' + prefix + '(/|$)') + } + + function makeExports(value) { + return function () { + var ret + if (value.init) { + ret = value.init.apply(window, arguments) + } + return ret || (value.exports && getGlobal(value.exports)) + } + } + + + function hash2array(hash, useStar, part) { + var array = []; + for (var key in hash) { + if (ohasOwn.call(hash, key)) { + var item = { + name: key, + val: hash[key] + } + array.push(item) + item.reg = key === "*" && useStar ? /^/ : makeMatcher(key) + if (part && key !== "*") { + item.reg = new RegExp('\/' + key.replace(/^\//, "") + '(/|$)') + } + } + } + return array + } + + function eachIndexArray(moduleID, array, matcher) { + array = array || [] + for (var i = 0, el; el = array[i++]; ) { + if (el.reg.test(moduleID)) { + matcher(el.val, el.name, el) + return false + } + } + } + // 根据元素的name项进行数组字符数逆序的排序函数 + function descSorterByName(a, b) { + var aaa = a.name + var bbb = b.name + if (bbb === "*") { + return -1 + } + if (aaa === "*") { + return 1 + } + return bbb.length - aaa.length + } + + var rdeuce = /\/\w+\/\.\./ + function joinPath(a, b) { + if (a.charAt(a.length - 1) !== "/") { + a += "/" + } + if (b.slice(0, 2) === "./") { //相对于兄弟路径 + return a + b.slice(2) + } + if (b.slice(0, 2) === "..") { //相对于父路径 + a += b + while (rdeuce.test(a)) { + a = a.replace(rdeuce, "") + } + return a + } + if (b.slice(0, 1) === "/") { + return a + b.slice(1) + } + return a + b + } + + function getGlobal(value) { + if (!value) { + return value + } + var g = window + value.split(".").forEach(function (part) { + g = g[part] + }) + return g + } + + var mainNode = DOC.scripts[DOC.scripts.length - 1] + var dataMain = mainNode.getAttribute("data-main") + if (dataMain) { + plugins.baseUrl(dataMain) + var href = kernel.baseUrl + kernel.baseUrl = href.slice(0, href.lastIndexOf("/") + 1) + loadJS(href.replace(rjsext, "") + ".js") + } else { + var loaderUrl = trimQuery(getFullUrl(mainNode, "src")) + kernel.baseUrl = loaderUrl.slice(0, loaderUrl.lastIndexOf("/") + 1) + } +}// jshint ignore:line + +/********************************************************************* + * DOMReady * + **********************************************************************/ + +var readyList = [], isReady +var fireReady = function(fn) { + isReady = true + if (innerRequire) { + modules["domReady!"].state = 4 + innerRequire.checkDeps() + } + while(fn = readyList.shift()){ + fn(avalon) + } +} + +function doScrollCheck() { + try { //IE下通过doScrollCheck检测DOM树是否建完 + root.doScroll("left") + fireReady() + } catch (e) { + setTimeout(doScrollCheck) + } +} + +if (DOC.readyState === "complete") { + setTimeout(fireReady) //如果在domReady之外加载 +} else if (W3C) { + DOC.addEventListener("DOMContentLoaded", fireReady) +} else { + DOC.attachEvent("onreadystatechange", function() { + if (DOC.readyState === "complete") { + fireReady() + } + }) + try { + var isTop = window.frameElement === null + } catch (e) { + } + if (root.doScroll && isTop && window.external) {//fix IE iframe BUG + doScrollCheck() + } +} +avalon.bind(window, "load", fireReady) + +avalon.ready = function(fn) { + if (!isReady) { + readyList.push(fn) + } else { + fn(avalon) + } +} + +avalon.config({ + loader: true +}) + +avalon.ready(function() { + avalon.scan(DOC.body) +}) + +// Register as a named AMD module, since avalon can be concatenated with other +// files that may use define, but not via a proper concatenation script that +// understands anonymous AMD modules. A named AMD is safest and most robust +// way to register. Lowercase avalon is used because AMD module names are +// derived from file names, and Avalon is normally delivered in a lowercase +// file name. Do this after creating the global so that if an AMD module wants +// to call noConflict to hide this version of avalon, it will work. + +// Note that for maximum portability, libraries that are not avalon should +// declare themselves as anonymous modules, and avoid setting a global if an +// AMD loader is present. avalon is a special case. For more information, see +// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon + if (typeof define === "function" && define.amd) { + define("avalon", [], function() { + return avalon + }) + } +// Map over avalon in case of overwrite + var _avalon = window.avalon + avalon.noConflict = function(deep) { + if (deep && window.avalon === avalon) { + window.avalon = _avalon + } + return avalon + } +// Expose avalon identifiers, even in AMD +// and CommonJS for browser emulators + if (noGlobal === void 0) { + window.avalon = avalon + } + return avalon + +})); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js b/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js new file mode 100644 index 00000000..5479d1a9 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/avalon/avalon.modern.js @@ -0,0 +1,4440 @@ +/*================================================== + Copyright (c) 2013-2014 司徒正美 and other contributors + http://www.cnblogs.com/rubylouvre/ + https://github.com/RubyLouvre + http://weibo.com/jslouvre/ + + Released under the MIT license + avalon.modern.js 1.39 build in 2015.1.15 +______________________________ + support IE6+ and other browsers + ==================================================*/ +(function(global, factory) { + + if (typeof module === "object" && typeof module.exports === "object") { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get avalon. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var avalon = require("avalon")(window); + module.exports = global.document ? factory(global, true) : function(w) { + if (!w.document) { + throw new Error("Avalon requires a window with a document") + } + return factory(w) + } + } else { + factory(global) + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function(window, noGlobal){ + +/********************************************************************* + * 全局变量及方法 * + **********************************************************************/ +var expose = Date.now() +//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function +var DOC = window.document +var head = DOC.head //HEAD元素 +head.insertAdjacentHTML("afterBegin", '') +var ifGroup = head.firstChild + +function log() { + if (avalon.config.debug) { +// http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log + console.log.apply(console, arguments) + } +} + +var subscribers = "$" + expose +var otherRequire = window.require +var otherDefine = window.define +var stopRepeatAssign = false +var rword = /[^, ]+/g //切割字符串为一个个小块,以空格或豆号分开它们,结合replace实现字符串的forEach +var rcomplexType = /^(?:object|array)$/ +var rsvg = /^\[object SVG\w*Element\]$/ +var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/ +var oproto = Object.prototype +var ohasOwn = oproto.hasOwnProperty +var serialize = oproto.toString +var ap = Array.prototype +var aslice = ap.slice +var Registry = {} //将函数曝光到此对象上,方便访问器收集依赖 +var W3C = window.dispatchEvent +var root = DOC.documentElement +var hyperspace = DOC.createDocumentFragment() +var cinerator = DOC.createElement("div") +var class2type = {} +"Boolean Number String Function Array Date RegExp Object Error".replace(rword, function(name) { + class2type["[object " + name + "]"] = name.toLowerCase() +}) + + +function noop() { +} + + +function oneObject(array, val) { + if (typeof array === "string") { + array = array.match(rword) || [] + } + var result = {}, + value = val !== void 0 ? val : 1 + for (var i = 0, n = array.length; i < n; i++) { + result[array[i]] = value + } + return result +} + +function createCache(maxLength) { + var keys = [] + function cache(key, value) { + if (keys.push(key) > maxLength) { + delete cache[keys.shift()] + } + return cache[key] = value; + } + return cache; +} +//生成UUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript +var generateID = function(prefix) { + prefix = prefix || "avalon" + return (prefix + Math.random() + Math.random()).replace(/0\./g, "") +} +function IE() { + if (window.VBArray) { + var mode = document.documentMode + return mode ? mode : window.XMLHttpRequest ? 7 : 6 + } else { + return 0 + } +} +var IEVersion = IE() +/********************************************************************* + * avalon的静态方法定义区 * + **********************************************************************/ +avalon = function(el) { //创建jQuery式的无new 实例化结构 + return new avalon.init(el) +} + +avalon.init = function(el) { + this[0] = this.element = el +} +avalon.fn = avalon.prototype = avalon.init.prototype + +avalon.type = function(obj) { //取得目标的类型 + if (obj == null) { + return String(obj) + } + // 早期的webkit内核浏览器实现了已废弃的ecma262v4标准,可以将正则字面量当作函数使用,因此typeof在判定正则时会返回function + return typeof obj === "object" || typeof obj === "function" ? + class2type[serialize.call(obj)] || "object" : + typeof obj +} + +var isFunction = function(fn) { + return serialize.call(fn) == "[object Function]" +} + +avalon.isFunction = isFunction + +avalon.isWindow = function(obj) { + return rwindow.test(serialize.call(obj)) +} + +/*判定是否是一个朴素的javascript对象(Object),不是DOM对象,不是BOM对象,不是自定义类的实例*/ + +avalon.isPlainObject = function(obj) { + // 简单的 typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通不过 + return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto +} + +//与jQuery.extend方法,可用于浅拷贝,深拷贝 +avalon.mix = avalon.fn.mix = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false + + // 如果第一个参数为布尔,判定是否深拷贝 + if (typeof target === "boolean") { + deep = target + target = arguments[1] || {} + i++ + } + + //确保接受方为一个复杂的数据类型 + if (typeof target !== "object" && !isFunction(target)) { + target = {} + } + + //如果只有一个参数,那么新成员添加于mix所在的对象上 + if (i === length) { + target = this + i-- + } + + for (; i < length; i++) { + //只处理非空参数 + if ((options = arguments[i]) != null) { + for (name in options) { + src = target[name] + copy = options[name] + // 防止环引用 + if (target === copy) { + continue + } + if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { + + if (copyIsArray) { + copyIsArray = false + clone = src && Array.isArray(src) ? src : [] + + } else { + clone = src && avalon.isPlainObject(src) ? src : {} + } + + target[name] = avalon.mix(deep, clone, copy) + } else if (copy !== void 0) { + target[name] = copy + } + } + } + } + return target +} + +function _number(a, len) { //用于模拟slice, splice的效果 + a = Math.floor(a) || 0 + return a < 0 ? Math.max(len + a, 0) : Math.min(a, len); +} +avalon.mix({ + rword: rword, + subscribers: subscribers, + version: 1.39, + ui: {}, + log: log, + slice: function(nodes, start, end) { + return aslice.call(nodes, start, end) + }, + noop: noop, + /*如果不用Error对象封装一下,str在控制台下可能会乱码*/ + error: function(str, e) { + throw new (e || Error)(str) + }, + /*将一个以空格或逗号隔开的字符串或数组,转换成一个键值都为1的对象*/ + oneObject: oneObject, + /* avalon.range(10) + => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + avalon.range(1, 11) + => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + avalon.range(0, 30, 5) + => [0, 5, 10, 15, 20, 25] + avalon.range(0, -10, -1) + => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] + avalon.range(0) + => []*/ + range: function(start, end, step) { // 用于生成整数数组 + step || (step = 1) + if (end == null) { + end = start || 0 + start = 0 + } + var index = -1, + length = Math.max(0, Math.ceil((end - start) / step)), + result = Array(length) + while (++index < length) { + result[index] = start + start += step + } + return result + }, + eventHooks: {}, + /*绑定事件*/ + bind: function(el, type, fn, phase) { + var hooks = avalon.eventHooks + var hook = hooks[type] + if (typeof hook === "object") { + type = hook.type + if (hook.deel) { + fn = hook.deel(el, fn) + } + } + el.addEventListener(type, fn, !!phase) + return fn + }, + /*卸载事件*/ + unbind: function(el, type, fn, phase) { + var hooks = avalon.eventHooks + var hook = hooks[type] + var callback = fn || noop + if (typeof hook === "object") { + type = hook.type + } + el.removeEventListener(type, callback, !!phase) + }, + /*读写删除元素节点的样式*/ + css: function(node, name, value) { + if (node instanceof avalon) { + node = node[0] + } + var prop = /[_-]/.test(name) ? camelize(name) : name + name = avalon.cssName(prop) || prop + if (value === void 0 || typeof value === "boolean") { //获取样式 + var fn = cssHooks[prop + ":get"] || cssHooks["@:get"] + if (name === "background") { + name = "backgroundColor" + } + var val = fn(node, name) + return value === true ? parseFloat(val) || 0 : val + } else if (value === "") { //请除样式 + node.style[name] = "" + } else { //设置样式 + if (value == null || value !== value) { + return + } + if (isFinite(value) && !avalon.cssNumber[prop]) { + value += "px" + } + fn = cssHooks[prop + ":set"] || cssHooks["@:set"] + fn(node, name, value) + } + }, + /*遍历数组与对象,回调的第一个参数为索引或键名,第二个或元素或键值*/ + each: function(obj, fn) { + if (obj) { //排除null, undefined + var i = 0 + if (isArrayLike(obj)) { + for (var n = obj.length; i < n; i++) { + fn(i, obj[i]) + } + } else { + for (i in obj) { + if (obj.hasOwnProperty(i)) { + fn(i, obj[i]) + } + } + } + } + }, + //收集元素的data-{{prefix}}-*属性,并转换为对象 + getWidgetData: function(elem, prefix) { + var raw = avalon(elem).data() + var result = {} + for (var i in raw) { + if (i.indexOf(prefix) === 0) { + result[i.replace(prefix, "").replace(/\w/, function(a) { + return a.toLowerCase() + })] = raw[i] + } + } + return result + }, + Array: { + /*只有当前数组不存在此元素时只添加它*/ + ensure: function(target, item) { + if (target.indexOf(item) === -1) { + return target.push(item) + } + }, + /*移除数组中指定位置的元素,返回布尔表示成功与否*/ + removeAt: function(target, index) { + return !!target.splice(index, 1).length + }, + /*移除数组中第一个匹配传参的那个元素,返回布尔表示成功与否*/ + remove: function(target, item) { + var index = target.indexOf(item) + if (~index) + return avalon.Array.removeAt(target, index) + return false + } + } +}) + +var bindingHandlers = avalon.bindingHandlers = {} +var bindingExecutors = avalon.bindingExecutors = {} + +/*判定是否类数组,如节点集合,纯数组,arguments与拥有非负整数的length属性的纯JS对象*/ +function isArrayLike(obj) { + if (obj && typeof obj === "object") { + var n = obj.length, + str = serialize.call(obj) + if (/(Array|List|Collection|Map|Arguments)\]$/.test(str)) { + return true + } else if (str === "[object Object]" && n === (n >>> 0)) { + return true //由于ecma262v5能修改对象属性的enumerable,因此不能用propertyIsEnumerable来判定了 + } + } + return false +} +/*视浏览器情况采用最快的异步回调(在avalon.ready里,还有一个分支,用于处理IE6-9)*/ +avalon.nextTick = window.setImmediate ? setImmediate.bind(window) : function(callback) { + setTimeout(callback, 0) //IE10-11 or W3C +} + +/********************************************************************* + * DOM 底层补丁 * + **********************************************************************/ +if (!root.contains) { //safari5+是把contains方法放在Element.prototype上而不是Node.prototype + Node.prototype.contains = function(arg) { + return !!(this.compareDocumentPosition(arg) & 16) + } +} +avalon.contains = function(root, el) { + try { + while ((el = el.parentNode)) + if (el === root) + return true; + return false + } catch (e) { + return false + } +} +if (window.SVGElement) { + var svgns = "http://www.w3.org/2000/svg" + var svg = DOC.createElementNS(svgns, "svg") + svg.innerHTML = '' + if (!rsvg.test(svg.firstChild)) {// #409 + + function enumerateNode(node, targetNode) { + if (node && node.childNodes) { + var nodes = node.childNodes + for (var i = 0, el; el = nodes[i++]; ) { + if (el.tagName) { + var svg = DOC.createElementNS(svgns, + el.tagName.toLowerCase()) + // copy attrs + ap.forEach.call(el.attributes, function(attr) { + svg.setAttribute(attr.name, attr.value) + }) + // 递归处理子节点 + enumerateNode(el, svg) + targetNode.appendChild(svg) + } + } + } + } + Object.defineProperties(SVGElement.prototype, { + "outerHTML": {//IE9-11,firefox不支持SVG元素的innerHTML,outerHTML属性 + enumerable: true, + configurable: true, + get: function() { + return new XMLSerializer().serializeToString(this) + }, + set: function(html) { + var tagName = this.tagName.toLowerCase(), + par = this.parentNode, + frag = avalon.parseHTML(html) + // 操作的svg,直接插入 + if (tagName === "svg") { + par.insertBefore(frag, this) + // svg节点的子节点类似 + } else { + var newFrag = DOC.createDocumentFragment() + enumerateNode(frag, newFrag) + par.insertBefore(newFrag, this) + } + par.removeChild(this) + } + }, + "innerHTML": { + enumerable: true, + configurable: true, + get: function() { + var s = this.outerHTML + var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i") + var rclose = new RegExp("<\/" + this.nodeName + ">$", "i") + return s.replace(ropen, "").replace(rclose, "") + }, + set: function(html) { + if (avalon.clearHTML) { + avalon.clearHTML(this) + var frag = avalon.parseHTML(html) + enumerateNode(frag, this) + } + } + } + }) + } +} +//========================= event binding ==================== +var eventHooks = avalon.eventHooks +//针对firefox, chrome修正mouseenter, mouseleave(chrome30+) +if (!("onmouseenter" in root)) { + avalon.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }, function(origType, fixType) { + eventHooks[origType] = { + type: fixType, + deel: function(elem, fn) { + return function(e) { + var t = e.relatedTarget + if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) { + delete e.type + e.type = origType + return fn.call(elem, e) + } + } + } + } + }) +} +//针对IE9+, w3c修正animationend +avalon.each({ + AnimationEvent: "animationend", + WebKitAnimationEvent: "webkitAnimationEnd" +}, function(construct, fixType) { + if (window[construct] && !eventHooks.animationend) { + eventHooks.animationend = { + type: fixType + } + } +}) + +if (DOC.onmousewheel === void 0) { + /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120 + firefox DOMMouseScroll detail 下3 上-3 + firefox wheel detlaY 下3 上-3 + IE9-11 wheel deltaY 下40 上-40 + chrome wheel deltaY 下100 上-100 */ + eventHooks.mousewheel = { + type: "wheel", + deel: function(elem, fn) { + return function(e) { + e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120 + e.wheelDeltaX = 0 + Object.defineProperty(e, "type", { + value: "mousewheel" + }) + fn.call(elem, e) + } + } + } +} + +/********************************************************************* + * 配置系统 * + **********************************************************************/ + +function kernel(settings) { + for (var p in settings) { + if (!ohasOwn.call(settings, p)) + continue + var val = settings[p] + if (typeof kernel.plugins[p] === "function") { + kernel.plugins[p](val) + } else if (typeof kernel[p] === "object") { + avalon.mix(kernel[p], val) + } else { + kernel[p] = val + } + } + return this +} +var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g + +function escapeRegExp(target) { + //http://stevenlevithan.com/regex/xregexp/ + //将字符串安全格式化为正则表达式的源码 + return (target + "").replace(rregexp, "\\$&") +} +var innerRequire = noop +var plugins = { + loader: function(builtin) { + window.define = builtin ? innerRequire.define : otherDefine + window.require = builtin ? innerRequire : otherRequire + }, + interpolate: function(array) { + openTag = array[0] + closeTag = array[1] + if (openTag === closeTag) { + throw new SyntaxError("openTag!==closeTag") + } else if (array + "" === "") { + kernel.commentInterpolate = true + } else { + var test = openTag + "test" + closeTag + cinerator.innerHTML = test + if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("<") > -1) { + throw new SyntaxError("此定界符不合法") + } + cinerator.innerHTML = "" + } + var o = escapeRegExp(openTag), + c = escapeRegExp(closeTag) + rexpr = new RegExp(o + "(.*?)" + c) + rexprg = new RegExp(o + "(.*?)" + c, "g") + rbind = new RegExp(o + ".*?" + c + "|\\sms-") + } +} + +kernel.debug = true +kernel.plugins = plugins +kernel.plugins['interpolate'](["{{", "}}"]) +kernel.paths = {} +kernel.shim = {} +kernel.maxRepeatSize = 100 +avalon.config = kernel +/********************************************************************* + * 事件总线 * + **********************************************************************/ +var EventBus = { + $watch: function(type, callback) { + if (typeof callback === "function") { + var callbacks = this.$events[type] + if (callbacks) { + callbacks.push(callback) + } else { + this.$events[type] = [callback] + } + } else { //重新开始监听此VM的第一重简单属性的变动 + this.$events = this.$watch.backup + } + return this + }, + $unwatch: function(type, callback) { + var n = arguments.length + if (n === 0) { //让此VM的所有$watch回调无效化 + this.$watch.backup = this.$events + this.$events = {} + } else if (n === 1) { + this.$events[type] = [] + } else { + var callbacks = this.$events[type] || [] + var i = callbacks.length + while (~--i < 0) { + if (callbacks[i] === callback) { + return callbacks.splice(i, 1) + } + } + } + return this + }, + $fire: function(type) { + var special + if (/^(\w+)!(\S+)$/.test(type)) { + special = RegExp.$1 + type = RegExp.$2 + } + var events = this.$events + var args = aslice.call(arguments, 1) + var detail = [type].concat(args) + if (special === "all") { + for (var i in avalon.vmodels) { + var v = avalon.vmodels[i] + if (v !== this) { + v.$fire.apply(v, detail) + } + } + } else if (special === "up" || special === "down") { + var elements = events.expr ? findNodes(events.expr) : [] + if (elements.length === 0) + return + for (var i in avalon.vmodels) { + var v = avalon.vmodels[i] + if (v !== this) { + if (v.$events.expr) { + var eventNodes = findNodes(v.$events.expr) + if (eventNodes.length === 0) { + continue + } + //循环两个vmodel中的节点,查找匹配(向上匹配或者向下匹配)的节点并设置标识 + Array.prototype.forEach.call(eventNodes, function(node) { + Array.prototype.forEach.call(elements, function(element) { + var ok = special === "down" ? element.contains(node) : //向下捕获 + node.contains(element) //向上冒泡 + + if (ok) { + node._avalon = v //符合条件的加一个标识 + } + }); + }) + } + } + } + var nodes = DOC.getElementsByTagName("*") //实现节点排序 + var alls = [] + Array.prototype.forEach.call(nodes, function(el) { + if (el._avalon) { + alls.push(el._avalon) + el._avalon = "" + el.removeAttribute("_avalon") + } + }) + if (special === "up") { + alls.reverse() + } + for (var i = 0, el; el = alls[i++]; ) { + if (el.$fire.apply(el, detail) === false) { + break + } + } + } else { + var callbacks = events[type] || [] + var all = events.$all || [] + for (var i = 0, callback; callback = callbacks[i++]; ) { + if (isFunction(callback)) + callback.apply(this, args) + } + for (var i = 0, callback; callback = all[i++]; ) { + if (isFunction(callback)) + callback.apply(this, arguments) + } + } + } +} + +var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/ +var findNodes = function(str) { + //pc safari v5.1: typeof DOC.querySelectorAll(str) === 'function' + //https://gist.github.com/DavidBruant/1016007 + return DOC.querySelectorAll(str) +} +/********************************************************************* + * modelFactory * + **********************************************************************/ +//avalon最核心的方法的两个方法之一(另一个是avalon.scan),返回一个ViewModel(VM) +var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里 +avalon.define = function(id, factory) { + var $id = id.$id || id + if (!$id) { + log("warning: vm必须指定$id") + } + if (VMODELS[$id]) { + log("warning: " + $id + " 已经存在于avalon.vmodels中") + } + if (typeof id === "object") { + var model = modelFactory(id) + } else { + var scope = { + $watch: noop + } + factory(scope) //得到所有定义 + model = modelFactory(scope) //偷天换日,将scope换为model + stopRepeatAssign = true + factory(model) + stopRepeatAssign = false + } + model.$id = $id + return VMODELS[$id] = model +} + +//一些不需要被监听的属性 +var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray").match(rword) + +function isObservable(name, value, $skipArray) { + if (isFunction(value) || value && value.nodeType) { + return false + } + if ($skipArray.indexOf(name) !== -1) { + return false + } + if ($$skipArray.indexOf(name) !== -1) { + return false + } + var $special = $skipArray.$special + if (name && name.charAt(0) === "$" && !$special[name]) { + return false + } + return true +} +//ms-with,ms-each, ms-repeat绑定生成的代理对象储存池 +var midway = {} +function getNewValue(accessor, name, value, $vmodel) { + switch (accessor.type) { + case 0://计算属性 + var getter = accessor.get + var setter = accessor.set + if (isFunction(setter)) { + var $events = $vmodel.$events + var lock = $events[name] + $events[name] = [] //清空回调,防止内部冒泡而触发多次$fire + setter.call($vmodel, value) + $events[name] = lock + } + return getter.call($vmodel) //同步$model + case 1://监控属性 + return value + case 2://对象属性(包括数组与哈希) + if (value !== $vmodel.$model[name]) { + var svmodel = accessor.svmodel = objectFactory($vmodel, name, value, accessor.valueType) + value = svmodel.$model //同步$model + var fn = midway[svmodel.$id] + fn && fn() //同步视图 + } + return value + } +} + +var defineProperty = Object.defineProperty +var canHideOwn = true +//如果浏览器不支持ecma262v5的Object.defineProperties或者存在BUG,比如IE8 +//标准浏览器使用__defineGetter__, __defineSetter__实现 +try { + defineProperty({}, "_", { + value: "x" + }) + var defineProperties = Object.defineProperties +} catch (e) { + canHideOwn = false +} +function modelFactory(source, $special, $model) { + if (Array.isArray(source)) { + var arr = source.concat() + source.length = 0 + var collection = Collection(source) + collection.pushArray(arr) + return collection + } + if (typeof source.nodeType === "number") { + return source + } + if (source.$id && source.$events) { //fix IE6-8 createWithProxy $val: val引发的BUG + return source + } + if (!Array.isArray(source.$skipArray)) { + source.$skipArray = [] + } + source.$skipArray.$special = $special || {} //强制要监听的属性 + var $vmodel = {} //要返回的对象, 它在IE6-8下可能被偷龙转凤 + $model = $model || {} //vmodels.$model属性 + var $events = {} //vmodel.$events属性 + var watchedProperties = {} //监控属性 + var initCallbacks = [] //初始化才执行的函数 + for (var i in source) { + (function(name, val) { + $model[name] = val + if (!isObservable(name, val, source.$skipArray)) { + return //过滤所有非监控属性 + } + //总共产生三种accessor + $events[name] = [] + var valueType = avalon.type(val) + var accessor = function(newValue) { + var name = accessor._name + var $vmodel = this + var $model = $vmodel.$model + var oldValue = $model[name] + var $events = $vmodel.$events + + if (arguments.length) { + if (stopRepeatAssign) { + return + } + //计算属性与对象属性需要重新计算newValue + if (accessor.type !== 1) { + newValue = getNewValue(accessor, name, newValue, $vmodel) + } + if (!isEqual(oldValue, newValue)) { + $model[name] = newValue + if ($events.$digest) { + if(accessor.pedding) + return + accessor.pedding = true + setTimeout(function() { + notifySubscribers($events[name]) //同步视图 + safeFire($vmodel, name, $model[name], oldValue) //触发$watch回调 + accessor.pedding = false + }) + } else { + notifySubscribers($events[name]) //同步视图 + safeFire($vmodel, name, newValue, oldValue) //触发$watch回调 + } + } + } else { + if (accessor.type === 0) { //type 0 计算属性 1 监控属性 2 对象属性 + //计算属性不需要收集视图刷新函数,都是由其他监控属性代劳 + return $model[name] = accessor.get.call($vmodel) + } else { + collectSubscribers($events[name]) //收集视图函数 + return accessor.svmodel || oldValue + } + } + } + //总共产生三种accessor + if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) { + //第1种为计算属性, 因变量,通过其他监控属性触发其改变 + accessor.set = val.set + accessor.get = val.get + accessor.type = 0 + initCallbacks.push(function() { + var data = { + evaluator: function() { + data.element = null + data.type = new Date - 0 + $model[name] = accessor.get.call($vmodel) + }, + element: head, + type: new Date - 0, + handler: noop, + args: [] + } + Registry[expose] = data + accessor.call($vmodel) + delete Registry[expose] + }) + } else if (rcomplexType.test(valueType)) { + //第2种为对象属性,产生子VM与监控数组 + accessor.type = 2 + accessor.valueType = val.valueType + initCallbacks.push(function() { + var svmodel = modelFactory(val, 0, $model[name]) + accessor.svmodel = svmodel + svmodel.$events[subscribers] = $events[name] + }) + } else { + accessor.type = 1 + //第3种为监控属性,对应简单的数据类型,自变量 + } + accessor._name = name + watchedProperties[name] = accessor + })(i, source[i]) + } + + $$skipArray.forEach(function(name) { + delete source[name] + delete $model[name] //这些特殊属性不应该在$model中出现 + }) + + $vmodel = defineProperties($vmodel, descriptorFactory(watchedProperties), source) //生成一个空的ViewModel + for (var name in source) { + if (!watchedProperties[name]) { + $vmodel[name] = source[name] + } + } + //添加$id, $model, $events, $watch, $unwatch, $fire + $vmodel.$id = generateID() + $vmodel.$model = $model + $vmodel.$events = $events + for (var i in EventBus) { + var fn = EventBus[i] + if (!W3C) { //在IE6-8下,VB对象的方法里的this并不指向自身,需要用bind处理一下 + fn = fn.bind($vmodel) + } + $vmodel[i] = fn + } + + if (canHideOwn) { + Object.defineProperty($vmodel, "hasOwnProperty", { + value: function(name) { + return name in this.$model + }, + writable: false, + enumerable: false, + configurable: true + }) + + } else { + $vmodel.hasOwnProperty = function(name) { + return name in $vmodel.$model + } + } + initCallbacks.forEach(function(cb) { //收集依赖 + cb() + }) + return $vmodel +} + +//比较两个值是否相等 +var isEqual = Object.is || function(v1, v2) { + if (v1 === 0 && v2 === 0) { + return 1 / v1 === 1 / v2 + } else if (v1 !== v1) { + return v2 !== v2 + } else { + return v1 === v2 + } +} + +function safeFire(a, b, c, d) { + if (a.$events) { + EventBus.$fire.call(a, b, c, d) + } +} + +var descriptorFactory = W3C ? function(obj) { + var descriptors = {} + for (var i in obj) { + descriptors[i] = { + get: obj[i], + set: obj[i], + enumerable: true, + configurable: true + } + } + return descriptors +} : function(a) { + return a +} + + + +//应用于第2种accessor +function objectFactory(parent, name, value, valueType) { + //a为原来的VM, b为新数组或新对象 + var son = parent[name] + if (valueType === "array") { + if (!Array.isArray(value) || son === value) { + return son //fix https://github.com/RubyLouvre/avalon/issues/261 + } + son.clear() + son.pushArray(value.concat()) + return son + } else { + var iterators = parent.$events[name] + var pool = son.$events.$withProxyPool + if (pool) { + recycleProxies(pool, "with") + son.$events.$withProxyPool = null + } + var ret = modelFactory(value) + ret.$events[subscribers] = iterators + midway[ret.$id] = function(data) { + while (data = iterators.shift()) { + (function(el) { + avalon.nextTick(function() { + if (el.type) { //重新绑定 + el.rollback && el.rollback() //还原 ms-with ms-on + bindingHandlers[el.type](el, el.vmodels) + } + }) + })(data) + } + delete midway[ret.$id] + } + return ret + } +} +/********************************************************************* + * 监控数组(与ms-each, ms-repeat配合使用) * + **********************************************************************/ + +function Collection(model) { + var array = [] + array.$id = generateID() + array.$model = model //数据模型 + array.$events = {} + array.$events[subscribers] = [] + array._ = modelFactory({ + length: model.length + }) + array._.$watch("length", function(a, b) { + array.$fire("length", a, b) + }) + for (var i in EventBus) { + array[i] = EventBus[i] + } + avalon.mix(array, CollectionPrototype) + return array +} + +function mutateArray(method, pos, n, index, method2, pos2, n2) { + var oldLen = this.length, loop = 2 + while (--loop) { + switch (method) { + case "add": + var array = this.$model.slice(pos, pos + n).map(function(el) { + if (rcomplexType.test(avalon.type(el))) { + return el.$id ? el : modelFactory(el, 0, el) + } else { + return el + } + }) + _splice.apply(this, [pos, 0].concat(array)) + this._fire("add", pos, n) + break + case "del": + var ret = this._splice(pos, n) + this._fire("del", pos, n) + break + } + if (method2) { + method = method2 + pos = pos2 + n = n2 + loop = 2 + method2 = 0 + } + } + this._fire("index", index) + if (this.length !== oldLen) { + this._.length = this.length + } + return ret +} + +var _splice = ap.splice +var CollectionPrototype = { + _splice: _splice, + _fire: function(method, a, b) { + var list = this.$events[subscribers] + for (var i = 0, fn; fn = list[i++]; ) { + if (fn.$repeat) { + fn.handler.call(fn, method, a, b) //处理监控数组的方法 + } + } + }, + size: function() { //取得数组长度,这个函数可以同步视图,length不能 + return this._.length + }, + pushArray: function(array) { + var m = array.length, n = this.length + if (m) { + ap.push.apply(this.$model, array) + mutateArray.call(this, "add", n, m, n) + } + return m + n + }, + push: function() { + //http://jsperf.com/closure-with-arguments + var array = [] + var i, n = arguments.length + for (i = 0; i < n; i++) { + array[i] = arguments[i] + } + return this.pushArray(arguments) + }, + unshift: function() { + var m = arguments.length, n = this.length + if (m) { + ap.unshift.apply(this.$model, arguments) + mutateArray.call(this, "add", 0, m, 0) + } + return m + n //IE67的unshift不会返回长度 + }, + shift: function() { + if (this.length) { + var el = this.$model.shift() + mutateArray.call(this, "del", 0, 1, 0) + return el //返回被移除的元素 + } + }, + pop: function() { + var m = this.length + if (m) { + var el = this.$model.pop() + mutateArray.call(this, "del", m - 1, 1, Math.max(0, m - 2)) + return el //返回被移除的元素 + } + }, + splice: function(start) { + var m = arguments.length, args = [], change + var removed = _splice.apply(this.$model, arguments) + if (removed.length) { //如果用户删掉了元素 + args.push("del", start, removed.length, 0) + change = true + } + if (m > 2) { //如果用户添加了元素 + args.splice(3, 1, 0, "add", start, m - 2) + change = true + } + if (change) { //返回被移除的元素 + return mutateArray.apply(this, args) + } else { + return [] + } + }, + contains: function(el) { //判定是否包含 + return this.indexOf(el) !== -1 + }, + remove: function(el) { //移除第一个等于给定值的元素 + return this.removeAt(this.indexOf(el)) + }, + removeAt: function(index) { //移除指定索引上的元素 + if (index >= 0) { + this.$model.splice(index, 1) + return mutateArray.call(this, "del", index, 1, 0) + } + return [] + }, + clear: function() { + this.$model.length = this.length = this._.length = 0 //清空数组 + this._fire("clear", 0) + return this + }, + removeAll: function(all) { //移除N个元素 + if (Array.isArray(all)) { + all.forEach(function(el) { + this.remove(el) + }, this) + } else if (typeof all === "function") { + for (var i = this.length - 1; i >= 0; i--) { + var el = this[i] + if (all(el, i)) { + this.removeAt(i) + } + } + } else { + this.clear() + } + }, + ensure: function(el) { + if (!this.contains(el)) { //只有不存在才push + this.push(el) + } + return this + }, + set: function(index, val) { + if (index >= 0) { + var valueType = avalon.type(val) + if (val && val.$model) { + val = val.$model + } + var target = this[index] + if (valueType === "object") { + for (var i in val) { + if (target.hasOwnProperty(i)) { + target[i] = val[i] + } + } + } else if (valueType === "array") { + target.clear().push.apply(target, val) + } else if (target !== val) { + this[index] = val + this.$model[index] = val + this._fire("set", index, val) + } + } + return this + } +} + +function sortByIndex(array, indexes) { + var map = {}; + for (var i = 0, n = indexes.length; i < n; i++) { + map[i] = array[i] // preserve + var j = indexes[i] + if (j in map) { + array[i] = map[j] + delete map[j] + } else { + array[i] = array[j] + } + } +} + +"sort,reverse".replace(rword, function(method) { + CollectionPrototype[method] = function() { + var newArray = this.$model//这是要排序的新数组 + var oldArray = newArray.concat() //保持原来状态的旧数组 + var mask = Math.random() + var indexes = [] + var hasSort + ap[method].apply(newArray, arguments) //排序 + for (var i = 0, n = oldArray.length; i < n; i++) { + var neo = newArray[i] + var old = oldArray[i] + if (isEqual(neo, old)) { + indexes.push(i) + } else { + var index = oldArray.indexOf(neo) + indexes.push(index)//得到新数组的每个元素在旧数组对应的位置 + oldArray[index] = mask //屏蔽已经找过的元素 + hasSort = true + } + } + if (hasSort) { + sortByIndex(this, indexes) + this._fire("move", indexes) + this._fire("index", 0) + } + return this + } +}) + +/********************************************************************* + * 依赖调度系统 * + **********************************************************************/ +var ronduplex = /^(duplex|on)$/ + +function registerSubscriber(data) { + Registry[expose] = data //暴光此函数,方便collectSubscribers收集 + avalon.openComputedCollect = true + var fn = data.evaluator + if (fn) { //如果是求值函数 + try { + var c = ronduplex.test(data.type) ? data : fn.apply(0, data.args) + data.handler(c, data.element, data) + } catch (e) { + //log("warning:exception throwed in [registerSubscriber] " + e) + delete data.evaluator + var node = data.element + if (node.nodeType === 3) { + var parent = node.parentNode + if (kernel.commentInterpolate) { + parent.replaceChild(DOC.createComment(data.value), node) + } else { + node.data = openTag + data.value + closeTag + } + } + } + } + avalon.openComputedCollect = false + delete Registry[expose] +} + +function collectSubscribers(list) { //收集依赖于这个访问器的订阅者 + var data = Registry[expose] + if (list && data && avalon.Array.ensure(list, data) && data.element) { //只有数组不存在此元素才push进去 + addSubscribers(data, list) + } +} + + +function addSubscribers(data, list) { + data.$uuid = data.$uuid || generateID() + list.$uuid = list.$uuid || generateID() + var obj = { + data: data, + list: list, + $$uuid: data.$uuid + list.$uuid + } + if (!$$subscribers[obj.$$uuid]) { + $$subscribers[obj.$$uuid] = 1 + $$subscribers.push(obj) + } +} + +function disposeData(data) { + data.element = null + data.rollback && data.rollback() + for (var key in data) { + data[key] = null + } +} + +function isRemove(el) { + try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错 + if (!el.parentNode) { + return true + } + } catch (e) { + return true + } + return el.msRetain ? 0 : (el.nodeType === 1 ? typeof el.sourceIndex === "number" ? + el.sourceIndex === 0 : !root.contains(el) : !avalon.contains(root, el)) +} +var $$subscribers = avalon.$$subscribers = [] +var beginTime = new Date() +var oldInfo = {} +function removeSubscribers() { + var i = $$subscribers.length + var n = i + var k = 0 + var obj + var types = [] + var newInfo = {} + var needTest = {} + while (obj = $$subscribers[--i]) { + var data = obj.data + var type = data.type + if (newInfo[type]) { + newInfo[type]++ + } else { + newInfo[type] = 1 + types.push(type) + } + } + var diff = false + types.forEach(function(type) { + if (oldInfo[type] !== newInfo[type]) { + needTest[type] = 1 + diff = true + } + }) + i = n + //avalon.log("需要检测的个数 " + i) + if (diff) { + //avalon.log("有需要移除的元素") + while (obj = $$subscribers[--i]) { + var data = obj.data + if (data.element === void 0) + continue + if (needTest[data.type] && isRemove(data.element)) { //如果它没有在DOM树 + k++ + $$subscribers.splice(i, 1) + delete $$subscribers[obj.$$uuid] + avalon.Array.remove(obj.list, data) + //log("debug: remove " + data.type) + disposeData(data) + obj.data = obj.list = null + } + } + } + oldInfo = newInfo + // avalon.log("已经移除的个数 " + k) + beginTime = new Date() +} + +function notifySubscribers(list) { //通知依赖于这个访问器的订阅者更新自身 + if (list && list.length) { + if (new Date() - beginTime > 444 && typeof list[0] === "object") { + removeSubscribers() + } + var args = aslice.call(arguments, 1) + for (var i = list.length, fn; fn = list[--i]; ) { + var el = fn.element + if (el && el.parentNode) { + if (fn.$repeat) { + fn.handler.apply(fn, args) //处理监控数组的方法 + } else if (fn.type !== "on") { //事件绑定只能由用户触发,不能由程序触发 + var fun = fn.evaluator || noop + fn.handler(fun.apply(0, fn.args || []), el, fn) + } + } + } + } +} + +/************************************************************************ + * HTML处理(parseHTML, innerHTML, clearHTML) * + **************************************************************************/ +//parseHTML的辅助变量 +var tagHooks = new function() { + avalon.mix(this, { + option: DOC.createElement("select"), + thead: DOC.createElement("table"), + td: DOC.createElement("tr"), + area: DOC.createElement("map"), + tr: DOC.createElement("tbody"), + col: DOC.createElement("colgroup"), + legend: DOC.createElement("fieldset"), + _default: DOC.createElement("div"), + "g": DOC.createElementNS("http://www.w3.org/2000/svg", "svg") + }) + this.optgroup = this.option + this.tbody = this.tfoot = this.colgroup = this.caption = this.thead + this.th = this.td +} + +tagHooks.optgroup = tagHooks.option +tagHooks.tbody = tagHooks.tfoot = tagHooks.colgroup = tagHooks.caption = tagHooks.thead +tagHooks.th = tagHooks.td + +String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function(tag) { + tagHooks[tag] = tagHooks.g //处理SVG +}) +var rtagName = /<([\w:]+)/ +var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig +var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"]) +var script = DOC.createElement("script") + +avalon.parseHTML = function(html) { + if (typeof html !== "string") { + html = html + "" + } + html = html.replace(rxhtml, "<$1>").trim() + var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(), + //取得其标签名 + wrapper = tagHooks[tag] || tagHooks._default, + fragment = hyperspace.cloneNode(false), + firstChild + wrapper.innerHTML = html + var els = wrapper.getElementsByTagName("script") + if (els.length) { //使用innerHTML生成的script节点不会发出请求与执行text属性 + for (var i = 0, el; el = els[i++]; ) { + if (scriptTypes[el.type]) { + var neo = script.cloneNode(false) //FF不能省略参数 + ap.forEach.call(el.attributes, function(attr) { + neo.setAttribute(attr.name, attr.value) + }) + neo.text = el.text + el.parentNode.replaceChild(neo, el) + } + } + } + + while (firstChild = wrapper.firstChild) { // 将wrapper上的节点转移到文档碎片上! + fragment.appendChild(firstChild) + } + return fragment +} + +avalon.innerHTML = function(node, html) { + var a = this.parseHTML(html) + this.clearHTML(node).appendChild(a) +} + +avalon.clearHTML = function(node) { + node.textContent = "" + while (node.firstChild) { + node.removeChild(node.firstChild) + } + return node +} +/********************************************************************* + * 扫描系统 * + **********************************************************************/ + +avalon.scan = function(elem, vmodel, group) { + elem = elem || root + var vmodels = vmodel ? [].concat(vmodel) : [] + scanTag(elem, vmodels) +} + +//http://www.w3.org/TR/html5/syntax.html#void-elements +var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()) + +function checkScan(elem, callback, innerHTML) { + var id = setTimeout(function() { + var currHTML = elem.innerHTML + clearTimeout(id) + if (currHTML === innerHTML) { + callback() + } else { + checkScan(elem, callback, currHTML) + } + }) +} + + +function createSignalTower(elem, vmodel) { + var id = elem.getAttribute("avalonctrl") || vmodel.$id + elem.setAttribute("avalonctrl", id) + vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]' +} + +var getBindingCallback = function(elem, name, vmodels) { + var callback = elem.getAttribute(name) + if (callback) { + for (var i = 0, vm; vm = vmodels[i++]; ) { + if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") { + return vm[callback] + } + } + } +} + +function executeBindings(bindings, vmodels) { + for (var i = 0, data; data = bindings[i++]; ) { + data.vmodels = vmodels + bindingHandlers[data.type](data, vmodels) + if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数据绑定,防止被二次解析 + //chrome使用removeAttributeNode移除不存在的特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99 + data.element.removeAttribute(data.name) + } + } + bindings.length = 0 +} + +//https://github.com/RubyLouvre/avalon/issues/636 +var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) { + var node = elem.firstChild, text + while (node) { + var aaa = node.nextSibling + if (node.nodeType === 3) { + if (text) { + text.nodeValue += node.nodeValue + elem.removeChild(node) + } else { + text = node + } + } else { + text = null + } + node = aaa + } +} : 0 + +var rmsAttr = /ms-(\w+)-?(.*)/ +var priorityMap = { + "if": 10, + "repeat": 90, + "data": 100, + "widget": 110, + "each": 1400, + "with": 1500, + "duplex": 2000, + "on": 3000 +} + +var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit") +var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled") +function bindingSorter(a, b) { + return a.priority - b.priority +} + +function scanTag(elem, vmodels, node) { + //扫描顺序 ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) + //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)垫后 + var a = elem.getAttribute("ms-skip") + var b = elem.getAttributeNode("ms-important") + var c = elem.getAttributeNode("ms-controller") + if (typeof a === "string") { + return + } else if (node = b || c) { + var newVmodel = avalon.vmodels[node.value] + if (!newVmodel) { + return + } + //ms-important不包含父VM,ms-controller相反 + vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) + elem.removeAttribute(node.name) //removeAttributeNode不会刷新[ms-controller]样式规则 + elem.classList.remove(node.name) + createSignalTower(elem, newVmodel) + } + scanAttr(elem, vmodels) //扫描特性节点 +} +function scanNodeList(parent, vmodels) { + var node = parent.firstChild + while (node) { + var nextNode = node.nextSibling + scanNode(node, node.nodeType, vmodels) + node = nextNode + } +} + +function scanNodeArray(nodes, vmodels) { + for (var i = 0, node; node = nodes[i++]; ) { + scanNode(node, node.nodeType, vmodels) + } +} +function scanNode(node, nodeType, vmodels) { + if (nodeType === 1) { + scanTag(node, vmodels) //扫描元素节点 + } else if (nodeType === 3 && rexpr.test(node.data)){ + scanText(node, vmodels) //扫描文本节点 + } else if (kernel.commentInterpolate && nodeType === 8 && !rexpr.test(node.nodeValue)) { + scanText(node, vmodels) //扫描注释节点 + } +} +function scanAttr(elem, vmodels) { + //防止setAttribute, removeAttribute时 attributes自动被同步,导致for循环出错 + var attributes = elem.hasAttributes() ? avalon.slice(elem.attributes) : [] + var bindings = [], + msData = {}, + match + for (var i = 0, attr; attr = attributes[i++]; ) { + if (attr.specified) { + if (match = attr.name.match(rmsAttr)) { + //如果是以指定前缀命名的 + var type = match[1] + var param = match[2] || "" + var value = attr.value + var name = attr.name + msData[name] = value + if (events[type]) { + param = type + type = "on" + } else if (obsoleteAttrs[type]) { + log("ms-" + type + "已经被废弃,请使用ms-attr-*代替") + if (type === "enabled") {//吃掉ms-enabled绑定,用ms-disabled代替 + type = "disabled" + value = "!(" + value + ")" + } + param = type + type = "attr" + elem.removeAttribute(name) + name = "ms-attr-" + param + elem.setAttribute(name, value) + match = [name] + msData[name] = value + } + if (typeof bindingHandlers[type] === "function") { + var binding = { + type: type, + param: param, + element: elem, + name: match[0], + value: value, + priority: type in priorityMap ? priorityMap[type] : type.charCodeAt(0) * 10 + (Number(param) || 0) + } + if (type === "html" || type === "text") { + var token = getToken(value) + avalon.mix(binding, token) + binding.filters = binding.filters.replace(rhasHtml, function() { + binding.type = "html" + binding.group = 1 + return "" + }) + } + if (name === "ms-if-loop") { + binding.priority += 100 + } + if (vmodels.length) { + bindings.push(binding) + if (type === "widget") { + elem.msData = elem.msData || msData + } + } + } + } + } + } + if (msData["ms-attr-checked"] && msData["ms-duplex"]) { + log("warning!一个元素上不能同时定义ms-attr-checked与ms-duplex") + } + bindings.sort(bindingSorter) + var scanNode = true + for (var i = 0, binding; binding = bindings[i]; i++) { + var type = binding.type + if (rnoscanAttrBinding.test(type)) { + return executeBindings(bindings.slice(0, i + 1), vmodels) + } else if (scanNode) { + scanNode = !rnoscanNodeBinding.test(type) + } + } + executeBindings(bindings, vmodels) + if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML + elem.textContent)) { + mergeTextNodes && mergeTextNodes(elem) + scanNodeList(elem, vmodels) //扫描子孙元素 + } +} + +var rnoscanAttrBinding = /^if|widget|repeat$/ +var rnoscanNodeBinding = /^each|with|html|include$/ +var rhasHtml = /\|\s*html\s*/, + r11a = /\|\|/g, + rlt = /</g, + rgt = />/g + +function getToken(value) { + if (value.indexOf("|") > 0) { + var index = value.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或 + if (index > -1) { + return { + filters: value.slice(index), + value: value.slice(0, index), + expr: true + } + } + } + return { + value: value, + filters: "", + expr: true + } +} + +function scanExpr(str) { + var tokens = [], + value, start = 0, + stop + do { + stop = str.indexOf(openTag, start) + if (stop === -1) { + break + } + value = str.slice(start, stop) + if (value) { // {{ 左边的文本 + tokens.push({ + value: value, + filters: "", + expr: false + }) + } + start = stop + openTag.length + stop = str.indexOf(closeTag, start) + if (stop === -1) { + break + } + value = str.slice(start, stop) + if (value) { //处理{{ }}插值表达式 + tokens.push(getToken(value)) + } + start = stop + closeTag.length + } while (1) + value = str.slice(start) + if (value) { //}} 右边的文本 + tokens.push({ + value: value, + expr: false, + filters: "" + }) + } + return tokens +} + +function scanText(textNode, vmodels) { + var bindings = [] + if (textNode.nodeType === 8) { + var token = getToken(textNode.nodeValue) + var tokens = [token] + } else { + tokens = scanExpr(textNode.data) + } + if (tokens.length) { + for (var i = 0, token; token = tokens[i++]; ) { + var node = DOC.createTextNode(token.value) //将文本转换为文本节点,并替换原来的文本节点 + if (token.expr) { + token.type = "text" + token.element = node + token.filters = token.filters.replace(rhasHtml, function() { + token.type = "html" + token.group = 1 + return "" + }) + bindings.push(token) //收集带有插值表达式的文本 + } + hyperspace.appendChild(node) + } + textNode.parentNode.replaceChild(hyperspace, textNode) + if (bindings.length) + executeBindings(bindings, vmodels) + } +} + + +/********************************************************************* + * avalon的原型方法定义区 * + **********************************************************************/ +function hyphen(target) { + //转换为连字符线风格 + return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase() +} +function camelize(target) { + //转换为驼峰风格 + if (target.indexOf("-") < 0 && target.indexOf("_") < 0) { + return target //提前判断,提高getStyle等的效率 + } + return target.replace(/[-_][^-_]/g, function(match) { + return match.charAt(1).toUpperCase() + }) +} + +"add,remove".replace(rword, function(method) { + avalon.fn[method + "Class"] = function(cls) { + var el = this[0] + //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26 + if (cls && typeof cls === "string" && el && el.nodeType === 1) { + cls.replace(/\S+/g, function(c) { + el.classList[method](c) + }) + } + return this + } +}) + +avalon.fn.mix({ + hasClass: function(cls) { + var el = this[0] || {} //IE10+, chrome8+, firefox3.6+, safari5.1+,opera11.5+支持classList,chrome24+,firefox26+支持classList2.0 + return el.nodeType === 1 && el.classList.contains(cls) + }, + toggleClass: function(value, stateVal) { + var className, i = 0 + var classNames = value.split(/\s+/) + var isBool = typeof stateVal === "boolean" + while ((className = classNames[i++])) { + var state = isBool ? stateVal : !this.hasClass(className) + this[state ? "addClass" : "removeClass"](className) + } + return this + }, + attr: function(name, value) { + if (arguments.length === 2) { + this[0].setAttribute(name, value) + return this + } else { + return this[0].getAttribute(name) + } + }, + data: function(name, value) { + name = "data-" + hyphen(name || "") + switch (arguments.length) { + case 2: + this.attr(name, value) + return this + case 1: + var val = this.attr(name) + return parseData(val) + case 0: + var ret = {} + ap.forEach.call(this[0].attributes, function(attr) { + if (attr) { + name = attr.name + if (!name.indexOf("data-")) { + name = camelize(name.slice(5)) + ret[name] = parseData(attr.value) + } + } + }) + return ret + } + }, + removeData: function(name) { + name = "data-" + hyphen(name) + this[0].removeAttribute(name) + return this + }, + css: function(name, value) { + if (avalon.isPlainObject(name)) { + for (var i in name) { + avalon.css(this, i, name[i]) + } + } else { + var ret = avalon.css(this, name, value) + } + return ret !== void 0 ? ret : this + }, + position: function() { + var offsetParent, offset, + elem = this[0], + parentOffset = { + top: 0, + left: 0 + }; + if (!elem) { + return + } + if (this.css("position") === "fixed") { + offset = elem.getBoundingClientRect() + } else { + offsetParent = this.offsetParent() //得到真正的offsetParent + offset = this.offset() // 得到正确的offsetParent + if (offsetParent[0].tagName !== "HTML") { + parentOffset = offsetParent.offset() + } + parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true) + parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true) + } + return { + top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true), + left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true) + } + }, + offsetParent: function() { + var offsetParent = this[0].offsetParent + while (offsetParent && avalon.css(offsetParent, "position") === "static") { + offsetParent = offsetParent.offsetParent; + } + return avalon(offsetParent) + }, + bind: function(type, fn, phase) { + if (this[0]) { //此方法不会链 + return avalon.bind(this[0], type, fn, phase) + } + }, + unbind: function(type, fn, phase) { + if (this[0]) { + avalon.unbind(this[0], type, fn, phase) + } + return this + }, + val: function(value) { + var node = this[0] + if (node && node.nodeType === 1) { + var get = arguments.length === 0 + var access = get ? ":get" : ":set" + var fn = valHooks[getValType(node) + access] + if (fn) { + var val = fn(node, value) + } else if (get) { + return (node.value || "").replace(/\r/g, "") + } else { + node.value = value + } + } + return get ? val : this + } +}) + +if (root.dataset) { + avalon.fn.data = function(name, val) { + var dataset = this[0].dataset + switch (arguments.length) { + case 2: + dataset[name] = val + return this + case 1: + val = dataset[name] + return parseData(val) + case 0: + var ret = {} + for (var name in dataset) { + ret[name] = parseData(dataset[name]) + } + return ret + } + } +} +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ +avalon.parseJSON = JSON.parse + +function parseData(data) { + try { + if (typeof data === "object") + return data + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data + } catch (e) { + } + return data +} +avalon.each({ + scrollLeft: "pageXOffset", + scrollTop: "pageYOffset" +}, function(method, prop) { + avalon.fn[method] = function(val) { + var node = this[0] || {}, win = getWindow(node), + top = method === "scrollTop" + if (!arguments.length) { + return win ? win[prop] : node[method] + } else { + if (win) { + win.scrollTo(!top ? val : avalon(win).scrollLeft(), top ? val : avalon(win).scrollTop()) + } else { + node[method] = val + } + } + } +}) + +function getWindow(node) { + return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView : false +} + +//=============================css相关================================== +var cssHooks = avalon.cssHooks = {} +var prefixes = ["", "-webkit-", "-moz-", "-ms-"]//去掉opera-15的支持 +var cssMap = { + "float": "cssFloat" +} +avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom") + +avalon.cssName = function(name, host, camelCase) { + if (cssMap[name]) { + return cssMap[name] + } + host = host || root.style + for (var i = 0, n = prefixes.length; i < n; i++) { + camelCase = camelize(prefixes[i] + name) + if (camelCase in host) { + return (cssMap[name] = camelCase) + } + } + return null +} +cssHooks["@:set"] = function(node, name, value) { + node.style[name] = value +} + +cssHooks["@:get"] = function(node, name) { + if (!node || !node.style) { + throw new Error("getComputedStyle要求传入一个节点 " + node) + } + var ret, computed = getComputedStyle(node, null) + if (computed) { + ret = name === "filter" ? computed.getPropertyValue(name) : computed[name] + if (ret === "") { + ret = node.style[name] //其他浏览器需要我们手动取内联样式 + } + } + return ret +} +cssHooks["opacity:get"] = function(node) { + var ret = cssHooks["@:get"](node, "opacity") + return ret === "" ? "1" : ret +} + +"top,left".replace(rword, function(name) { + cssHooks[name + ":get"] = function(node) { + var computed = cssHooks["@:get"](node, name) + return /px$/.test(computed) ? computed : + avalon(node).position()[name] + "px" + } +}) +var cssShow = { + position: "absolute", + visibility: "hidden", + display: "block" +} +var rdisplayswap = /^(none|table(?!-c[ea]).+)/ + +function showHidden(node, array) { + //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html + if (node.offsetWidth <= 0) { //opera.offsetWidth可能小于0 + var styles = getComputedStyle(node, null) + if (rdisplayswap.test(styles["display"])) { + var obj = { + node: node + } + for (var name in cssShow) { + obj[name] = styles[name] + node.style[name] = cssShow[name] + } + array.push(obj) + } + var parent = node.parentNode + if (parent && parent.nodeType === 1) { + showHidden(parent, array) + } + } +} + +"Width,Height".replace(rword, function(name) {//fix 481 + var method = name.toLowerCase(), + clientProp = "client" + name, + scrollProp = "scroll" + name, + offsetProp = "offset" + name + cssHooks[method + ":get"] = function(node, which, override) { + var boxSizing = -4 + if (typeof override === "number") { + boxSizing = override + } + which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] + var ret = node[offsetProp] // border-box 0 + if (boxSizing === 2) { // margin-box 2 + return ret + + avalon.css(node, "margin" + which[0], true) + + avalon.css(node, "margin" + which[1], true) + } + if (boxSizing < 0) { // padding-box -2 + ret = ret + - avalon.css(node, "border" + which[0] + "Width", true) + - avalon.css(node, "border" + which[1] + "Width", true) + } + if (boxSizing === -4) { // content-box -4 + ret = ret + - avalon.css(node, "padding" + which[0], true) + - avalon.css(node, "padding" + which[1], true) + } + return ret + } + cssHooks[method + "&get"] = function(node) { + var hidden = []; + showHidden(node, hidden); + var val = cssHooks[method + ":get"](node) + for (var i = 0, obj; obj = hidden[i++]; ) { + node = obj.node + for (var n in obj) { + if (typeof obj[n] === "string") { + node.style[n] = obj[n] + } + } + } + return val; + } + avalon.fn[method] = function(value) { //会忽视其display + var node = this[0] + if (arguments.length === 0) { + if (node.setTimeout) { //取得窗口尺寸,IE9后可以用node.innerWidth /innerHeight代替 + return node["inner" + name] || node.document.documentElement[clientProp] + } + if (node.nodeType === 9) { //取得页面尺寸 + var doc = node.documentElement + //FF chrome html.scrollHeight< body.scrollHeight + //IE 标准模式 : html.scrollHeight> body.scrollHeight + //IE 怪异模式 : html.scrollHeight 最大等于可视窗口多一点? + return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp]) + } + return cssHooks[method + "&get"](node) + } else { + return this.css(method, value) + } + } + avalon.fn["inner" + name] = function() { + return cssHooks[method + ":get"](this[0], void 0, -2) + } + avalon.fn["outer" + name] = function(includeMargin) { + return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0) + } +}) +avalon.fn.offset = function() { //取得距离页面左右角的坐标 + var node = this[0], box = { + left: 0, + top: 0 + } + if (!node || !node.tagName || !node.ownerDocument) { + return box + } + var doc = node.ownerDocument, + root = doc.documentElement, + win = doc.defaultView + if (!root.contains(node)) { + return box + } + if (node.getBoundingClientRect !== void 0) { + box = node.getBoundingClientRect() + } + return { + top: box.top + win.pageYOffset - root.clientTop, + left: box.left + win.pageXOffset - root.clientLeft + } +} +//=============================val相关======================= + +function getValType(el) { + var ret = el.tagName.toLowerCase() + return ret === "input" && /checkbox|radio/.test(el.type) ? "checked" : ret +} +var valHooks = { + "select:get": function(node, value) { + var option, options = node.options, + index = node.selectedIndex, + one = node.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? max : one ? index : 0 + for (; i < max; i++) { + option = options[i] + //旧式IE在reset后不会改变selected,需要改用i === index判定 + //我们过滤所有disabled的option元素,但在safari5下,如果设置select为disable,那么其所有孩子都disable + //因此当一个元素为disable,需要检测其是否显式设置了disable及其父节点的disable情况 + if ((option.selected || i === index) && !option.disabled) { + value = option.value + if (one) { + return value + } + //收集所有selected值组成数组返回 + values.push(value) + } + } + return values + }, + "select:set": function(node, values, optionSet) { + values = [].concat(values) //强制转换为数组 + for (var i = 0, el; el = node.options[i++]; ) { + if ((el.selected = values.indexOf(el.value) > -1)) { + optionSet = true + } + } + if (!optionSet) { + node.selectedIndex = -1 + } + } +} + +/********************************************************************* + * 编译系统 * + **********************************************************************/ +var quote = JSON.stringify + +var keywords = + // 关键字 + "break,case,catch,continue,debugger,default,delete,do,else,false" + + ",finally,for,function,if,in,instanceof,new,null,return,switch,this" + + ",throw,true,try,typeof,var,void,while,with" + // 保留字 + + ",abstract,boolean,byte,char,class,const,double,enum,export,extends" + + ",final,float,goto,implements,import,int,interface,long,native" + + ",package,private,protected,public,short,static,super,synchronized" + + ",throws,transient,volatile" + // ECMA 5 - use strict + + ",arguments,let,yield" + ",undefined" +var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g +var rsplit = /[^\w$]+/g +var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g') +var rnumber = /\b\d[^,]*/g +var rcomma = /^,+|,+$/g +var cacheVars = createCache(512) +var getVariables = function(code) { + var key = "," + code.trim() + if (cacheVars[key]) { + return cacheVars[key] + } + var match = code + .replace(rrexpstr, "") + .replace(rsplit, ",") + .replace(rkeywords, "") + .replace(rnumber, "") + .replace(rcomma, "") + .split(/^$|,+/) + return cacheVars(key, uniqSet(match)) +} +/*添加赋值语句*/ + +function addAssign(vars, scope, name, data) { + var ret = [], + prefix = " = " + name + "." + for (var i = vars.length, prop; prop = vars[--i]; ) { + if (scope.hasOwnProperty(prop)) { + ret.push(prop + prefix + prop) + data.vars.push(prop) + if (data.type === "duplex") { + vars.get = name + "." + prop + } + vars.splice(i, 1) + } + } + return ret +} + +function uniqSet(array) { + var ret = [], + unique = {} + for (var i = 0; i < array.length; i++) { + var el = array[i] + var id = el && typeof el.$id === "string" ? el.$id : el + if (!unique[id]) { + unique[id] = ret.push(el) + } + } + return ret +} +//缓存求值函数,以便多次利用 +var cacheExprs = createCache(128) +//取得求值函数及其传参 +var rduplex = /\w\[.*\]|\w\.\w/ +var rproxy = /(\$proxy\$[a-z]+)\d+$/ +var rthimRightParentheses = /\)\s*$/ +var rthimOtherParentheses = /\)\s*\|/g +var rquoteFilterName = /\|\s*([$\w]+)/g +var rpatchBracket = /"\s*\["/g +var rthimLeftParentheses = /"\s*\(/g +function parseFilter(val, filters) { + filters = filters + .replace(rthimRightParentheses, "")//处理最后的小括号 + .replace(rthimOtherParentheses, function() {//处理其他小括号 + return "],|" + }) + .replace(rquoteFilterName, function(a, b) { //处理|及它后面的过滤器的名字 + return "[" + quote(b) + }) + .replace(rpatchBracket, function() { + return '"],["' + }) + .replace(rthimLeftParentheses, function() { + return '",' + }) + "]" + return "return avalon.filters.$filter(" + val + ", " + filters + ")" +} + +function parseExpr(code, scopes, data) { + var dataType = data.type + var filters = data.filters || "" + var exprId = scopes.map(function(el) { + return String(el.$id).replace(rproxy, "$1") + }) + code + dataType + filters + var vars = getVariables(code).concat(), + assigns = [], + names = [], + args = [], + prefix = "" + //args 是一个对象数组, names 是将要生成的求值函数的参数 + scopes = uniqSet(scopes) + data.vars = [] + for (var i = 0, sn = scopes.length; i < sn; i++) { + if (vars.length) { + var name = "vm" + expose + "_" + i + names.push(name) + args.push(scopes[i]) + assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data)) + } + } + if (!assigns.length && dataType === "duplex") { + return + } + if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) { + //https://github.com/RubyLouvre/avalon/issues/583 + data.vars.forEach(function(v) { + var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig") + code = code.replace(reg, function(_) { + var c = _.charAt(v.length) + var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext + var method = /^\s*\(/.test(r) + if (c === "." || c === "[" || method) {//比如v为aa,我们只匹配aa.bb,aa[cc],不匹配aaa.xxx + var name = "var" + String(Math.random()).replace(/^0\./, "") + if (method) {//array.size() + var array = _.split(".") + if (array.length > 2) { + var last = array.pop() + assigns.push(name + " = " + array.join(".")) + return name + "." + last + } else { + return _ + } + } + assigns.push(name + " = " + _) + return name + } else { + return _ + } + }) + }) + } + //---------------args---------------- + data.args = args + //---------------cache---------------- + var fn = cacheExprs[exprId] //直接从缓存,免得重复生成 + if (fn) { + data.evaluator = fn + return + } + var prefix = assigns.join(", ") + if (prefix) { + prefix = "var " + prefix + } + if (/\S/.test(filters)) { //文本绑定,双工绑定才有过滤器 + if (!/text|html/.test(data.type)) { + throw Error("ms-" + data.type + "不支持过滤器") + } + code = "\nvar ret" + expose + " = " + code + ";\r\n" + code += parseFilter("ret" + expose, filters) + } else if (dataType === "duplex") { //双工绑定 + var _body = "'use strict';\nreturn function(vvv){\n\t" + + prefix + + ";\n\tif(!arguments.length){\n\t\treturn " + + code + + "\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) + + "= vvv;\n} " + try { + fn = Function.apply(noop, names.concat(_body)) + data.evaluator = cacheExprs(exprId, fn) + } catch (e) { + log("debug: parse error," + e.message) + } + return + } else if (dataType === "on") { //事件绑定 + if (code.indexOf("(") === -1) { + code += ".call(this, $event)" + } else { + code = code.replace("(", ".call(this,") + } + names.push("$event") + code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") + var lastIndex = code.lastIndexOf("\nreturn") + var header = code.slice(0, lastIndex) + var footer = code.slice(lastIndex) + code = header + "\n" + footer + } else { //其他绑定 + code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需要Function("return ;") + } + try { + fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code)) + data.evaluator = cacheExprs(exprId, fn) + } catch (e) { + log("debug: parse error," + e.message) + } finally { + vars = textBuffer = names = null //释放内存 + } +} + + +//parseExpr的智能引用代理 + +function parseExprProxy(code, scopes, data, tokens, noregister) { + if (Array.isArray(tokens)) { + code = tokens.map(function(el) { + return el.expr ? "(" + el.value + ")" : quote(el.value) + }).join(" + ") + } + parseExpr(code, scopes, data) + if (data.evaluator && !noregister) { + data.handler = bindingExecutors[data.handlerName || data.type] + //方便调试 + //这里非常重要,我们通过判定视图刷新函数的element是否在DOM树决定 + //将它移出订阅者列表 + registerSubscriber(data) + } +} +avalon.parseExprProxy = parseExprProxy +/********************************************************************* + * 各种指令 * + **********************************************************************/ +//ms-skip绑定已经在scanTag 方法中实现 +//ms-controller绑定已经在scanTag 方法中实现 +//ms-important绑定已经在scanTag 方法中实现 +var bools = "autofocus,autoplay,async,allowTransparency,checked,controls,declare,disabled,defer,defaultChecked,defaultSelected" + + "contentEditable,isMap,loop,multiple,noHref,noResize,noShade,open,readOnly,selected" +var boolMap = {} +bools.replace(rword, function(name) { + boolMap[name.toLowerCase()] = name +}) + +var propMap = {//属性名映射 + "accept-charset": "acceptCharset", + "char": "ch", + "charoff": "chOff", + "class": "className", + "for": "htmlFor", + "http-equiv": "httpEquiv" +} + +var anomaly = "accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan," + "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight," + "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign" +anomaly.replace(rword, function(name) { + propMap[name.toLowerCase()] = name +}) + +var rnoscripts = /(?:[\s\S]+?)<\/noscript>/img +var rnoscriptText = /([\s\S]+?)<\/noscript>/im + +var getXHR = function() { + return new (window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") +} + +var cacheTmpls = avalon.templateCache = {} + +bindingHandlers.attr = function(data, vmodels) { + var text = data.value.trim(), + simple = true + if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) { + simple = false + if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") { + simple = true + text = RegExp.$1 + } + } + if (data.type === "include") { + var elem = data.element + data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels) + data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels) + var outer = data.includeReplaced = !!avalon(elem).data("includeReplace") + data.startInclude = DOC.createComment("ms-include") + data.endInclude = DOC.createComment("ms-include-end") + if (outer) { + data.element = data.startInclude + elem.parentNode.insertBefore(data.startInclude, elem) + elem.parentNode.insertBefore(data.endInclude, elem.nextSibling) + } else { + elem.insertBefore(data.startInclude, elem.firstChild) + elem.appendChild(data.endInclude) + } + } + data.handlerName = "attr" //handleName用于处理多种绑定共用同一种bindingExecutor的情况 + parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value))) +} + +bindingExecutors.attr = function(val, elem, data) { + var method = data.type, + attrName = data.param + if (method === "css") { + avalon(elem).css(attrName, val) + } else if (method === "attr") { + // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc + // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类名 + // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性 + if (boolMap[attrName]) { + var bool = boolMap[attrName] + if (typeof elem[bool] === "boolean") { + // IE6-11不支持动态设置fieldset的disabled属性,IE11下样式是生效了,但无法阻止用户对其底下的input元素进行设值…… + return elem[bool] = !!val + } + } + var toRemove = (val === false) || (val === null) || (val === void 0) + + if (!W3C && propMap[attrName]) { //旧式IE下需要进行名字映射 + attrName = propMap[attrName] + } + if (toRemove) { + return elem.removeAttribute(attrName) + } + //SVG只能使用setAttribute(xxx, yyy), VML只能使用elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy + var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false) + if (isInnate) { + elem[attrName] = val + } else { + elem.setAttribute(attrName, val) + } + } else if (method === "include" && val) { + var vmodels = data.vmodels + var rendered = data.includeRendered + var loaded = data.includeLoaded + var replace = data.includeReplaced + var target = replace ? elem.parentNode : elem + function scanTemplate(text) { + if (loaded) { + text = loaded.apply(target, [text].concat(vmodels)) + } + if (rendered) { + checkScan(target, function() { + rendered.call(target) + }, NaN) + } + while (true) { + var node = data.startInclude.nextSibling + if (node && node !== data.endInclude) { + target.removeChild(node) + } else { + break + } + } + var dom = avalon.parseHTML(text) + var nodes = avalon.slice(dom.childNodes) + target.insertBefore(dom, data.endInclude) + scanNodeArray(nodes, vmodels) + } + if (data.param === "src") { + if (cacheTmpls[val]) { + avalon.nextTick(function() { + scanTemplate(cacheTmpls[val]) + }) + } else { + var xhr = getXHR() + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + var s = xhr.status + if (s >= 200 && s < 300 || s === 304 || s === 1223) { + scanTemplate(cacheTmpls[val] = xhr.responseText) + } + } + } + xhr.open("GET", val, true) + if ("withCredentials" in xhr) { + xhr.withCredentials = true + } + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") + xhr.send(null) + } + } else { + //IE系列与够新的标准浏览器支持通过ID取得元素(firefox14+) + //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ + var el = val && val.nodeType === 1 ? val : DOC.getElementById(val) + if (el) { + if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法取得其内容,IE6能取得其innerHTML + var xhr = getXHR() //IE9-11与chrome的innerHTML会得到转义的内容,它们的innerText可以 + xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构 + xhr.send(null) + //http://bbs.csdn.net/topics/390349046?page=1#post-393492653 + var noscripts = DOC.getElementsByTagName("noscript") + var array = (xhr.responseText || "").match(rnoscripts) || [] + var n = array.length + for (var i = 0; i < n; i++) { + var tag = noscripts[i] + if (tag) { //IE6-8中noscript标签的innerHTML,innerText是只读的 + tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug + tag.fixIE78 = (array[i].match(rnoscriptText) || ["", " "])[1] + } + } + } + avalon.nextTick(function() { + scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML) + }) + } + } + } else { + if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) { + val = val.replace(/&/g, "&") //处理IE67自动转义的问题 + } + elem[method] = val + if (window.chrome && elem.tagName === "EMBED") { + var parent = elem.parentNode //#525 chrome1-37下embed标签动态设置src不能发生请求 + var comment = document.createComment("ms-src") + parent.replaceChild(comment, elem) + parent.replaceChild(elem, comment) + } + } +} + +//这几个指令都可以使用插值表达式,如ms-src="aaa/{{b}}/{{c}}.html" +"title,alt,src,value,css,include,href".replace(rword, function(name) { + bindingHandlers[name] = bindingHandlers.attr +}) +//ms-include绑定已由ms-attr绑定实现 + +//根据VM的属性值或表达式的值切换类名,ms-class="xxx yyy zzz:flag" +//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html +bindingHandlers["class"] = function(data, vmodels) { + var oldStyle = data.param, + text = data.value, + rightExpr + data.handlerName = "class" + if (!oldStyle || isFinite(oldStyle)) { + data.param = "" //去掉数字 + var noExpr = text.replace(rexprg, function(a) { + return a.replace(/./g, "0") + //return Math.pow(10, a.length - 1) //将插值表达式插入10的N-1次方来占位 + }) + var colonIndex = noExpr.indexOf(":") //取得第一个冒号的位置 + if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况 + var className = text + } else { // 比如 ms-class-1="ui-state-active:checked" 的情况 + className = text.slice(0, colonIndex) + rightExpr = text.slice(colonIndex + 1) + parseExpr(rightExpr, vmodels, data) //决定是添加还是删除 + if (!data.evaluator) { + log("debug: ms-class '" + (rightExpr || "").trim() + "' 不存在于VM中") + return false + } else { + data._evaluator = data.evaluator + data._args = data.args + } + } + var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况 + if (!hasExpr) { + data.immobileClass = className + } + parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0)) + } else { + data.immobileClass = data.oldStyle = data.param + parseExprProxy(text, vmodels, data) + } +} + +bindingExecutors ["class"] = function(val, elem, data) { + var $elem = avalon(elem), + method = data.type + if (method === "class" && data.oldStyle) { //如果是旧风格 + $elem.toggleClass(data.oldStyle, !!val) + } else { + //如果存在冒号就有求值函数 + data.toggleClass = data._evaluator ? !!data._evaluator.apply(elem, data._args) : true + data.newClass = data.immobileClass || val + if (data.oldClass && data.newClass !== data.oldClass) { + $elem.removeClass(data.oldClass) + } + data.oldClass = data.newClass + switch (method) { + case "class": + $elem.toggleClass(data.newClass, data.toggleClass) + break + case "hover": + case "active": + if (!data.hasBindEvent) { //确保只绑定一次 + var activate = "mouseenter" //在移出移入时切换类名 + var abandon = "mouseleave" + if (method === "active") { //在聚焦失焦中切换类名 + elem.tabIndex = elem.tabIndex || -1 + activate = "mousedown" + abandon = "mouseup" + var fn0 = $elem.bind("mouseleave", function() { + data.toggleClass && $elem.removeClass(data.newClass) + }) + } + var fn1 = $elem.bind(activate, function() { + data.toggleClass && $elem.addClass(data.newClass) + }) + var fn2 = $elem.bind(abandon, function() { + data.toggleClass && $elem.removeClass(data.newClass) + }) + data.rollback = function() { + $elem.unbind("mouseleave", fn0) + $elem.unbind(activate, fn1) + $elem.unbind(abandon, fn2) + } + data.hasBindEvent = true + } + break; + } + } +} + +"hover,active".replace(rword, function(method) { + bindingHandlers[method] = bindingHandlers["class"] +}) +// bindingHandlers.data 定义在if.js +bindingExecutors.data = function(val, elem, data) { + var key = "data-" + data.param + if (val && typeof val === "object") { + elem[key] = val + } else { + elem.setAttribute(key, String(val)) + } +} + +// bindingHandlers.text 定义在if.js +bindingExecutors.text = function(val, elem) { + val = val == null ? "" : val //不在页面上显示undefined null + if (elem.nodeType === 3) { //绑定在文本节点上 + try { //IE对游离于DOM树外的节点赋值会报错 + elem.data = val + } catch (e) { + } + } else { //绑定在特性节点上 + elem.textContent = val + } +} + +// bindingHandlers.html 定义在if.js +bindingExecutors.html = function(val, elem, data) { + val = val == null ? "" : val + var isHtmlFilter = "group" in data + var parent = isHtmlFilter ? elem.parentNode : elem + if (!parent) + return + if (val.nodeType === 11) { //将val转换为文档碎片 + var fragment = val + } else if (val.nodeType === 1 || val.item) { + var nodes = val.nodeType === 1 ? val.childNodes : val.item ? val : [] + fragment = hyperspace.cloneNode(true) + while (nodes[0]) { + fragment.appendChild(nodes[0]) + } + } else { + fragment = avalon.parseHTML(val) + } + //插入占位符, 如果是过滤器,需要有节制地移除指定的数量,如果是html指令,直接清空 + var comment = DOC.createComment("ms-html") + if (isHtmlFilter) { + parent.insertBefore(comment, elem) + var n = data.group, i = 1 + while (i < n) { + var node = elem.nextSibling + if (node) { + parent.removeChild(node) + i++ + } + } + parent.removeChild(elem) + data.element = comment //防止被CG + } else { + avalon.clearHTML(parent).appendChild(comment) + } + if (isHtmlFilter) { + data.group = fragment.childNodes.length || 1 + } + var nodes = avalon.slice(fragment.childNodes) + if (nodes[0]) { + if (comment.parentNode) + comment.parentNode.replaceChild(fragment, comment) + if (isHtmlFilter) { + data.element = nodes[0] + } + } + scanNodeArray(nodes, data.vmodels) +} + +bindingHandlers["if"] = + bindingHandlers.data = + bindingHandlers.text = + bindingHandlers.html = + function(data, vmodels) { + parseExprProxy(data.value, vmodels, data) + } + +bindingExecutors["if"] = function(val, elem, data) { + if (val) { //插回DOM树 + if (elem.nodeType === 8) { + elem.parentNode.replaceChild(data.template, elem) + elem = data.element = data.template //这时可能为null + } + if (elem.getAttribute(data.name)) { + elem.removeAttribute(data.name) + scanAttr(elem, data.vmodels) + } + data.rollback = null + } else { //移出DOM树,并用注释节点占据原位置 + if (elem.nodeType === 1) { + var node = data.element = DOC.createComment("ms-if") + elem.parentNode.replaceChild(node, elem) + data.template = elem //元素节点 + ifGroup.appendChild(elem) + data.rollback = function() { + if (elem.parentNode === ifGroup) { + ifGroup.removeChild(elem) + } + } + } + } +} + + +function parseDisplay(nodeName, val) { + //用于取得此类标签的默认display值 + var key = "_" + nodeName + if (!parseDisplay[key]) { + var node = DOC.createElement(nodeName) + root.appendChild(node) + if (W3C) { + val = getComputedStyle(node, null).display + } else { + val = node.currentStyle.display + } + root.removeChild(node) + parseDisplay[key] = val + } + return parseDisplay[key] +} + +avalon.parseDisplay = parseDisplay + +bindingHandlers.visible = function(data, vmodels) { + var elem = avalon(data.element) + var display = elem.css("display") + if (display === "none") { + var style = elem[0].style + var has = /visibility/i.test(style.cssText) + var visible = elem.css("visibility") + style.display = "" + style.visibility = "hidden" + display = elem.css("display") + if (display === "none") { + display = parseDisplay(elem[0].nodeName) + } + style.visibility = has ? visible : "" + } + data.display = display + parseExprProxy(data.value, vmodels, data) +} + +bindingExecutors.visible = function(val, elem, data) { + elem.style.display = val ? data.display : "none" +} + +var rdash = /\(([^)]*)\)/ +bindingHandlers.on = function(data, vmodels) { + var value = data.value + var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 + if (typeof bindingHandlers.on[eventType + "Hook"] === "function") { + bindingHandlers.on[eventType + "Hook"](data) + } + if (value.indexOf("(") > 0 && value.indexOf(")") > -1) { + var matched = (value.match(rdash) || ["", ""])[1].trim() + if (matched === "" || matched === "$event") { // aaa() aaa($event)当成aaa处理 + value = value.replace(rdash, "") + } + } + parseExprProxy(value, vmodels, data) +} + +bindingExecutors.on = function(callback, elem, data) { + data.type = "on" + callback = function(e) { + var fn = data.evaluator || noop + return fn.apply(this, data.args.concat(e)) + } + var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 + if (eventType === "scan") { + callback.call(elem, { + type: eventType + }) + } else if (typeof data.specialBind === "function") { + data.specialBind(elem, callback) + } else { + var removeFn = avalon.bind(elem, eventType, callback) + } + data.rollback = function() { + if (typeof data.specialUnbind === "function") { + data.specialUnbind() + } else { + avalon.unbind(elem, eventType, removeFn) + } + } +} + + +bindingHandlers.widget = function(data, vmodels) { + var args = data.value.match(rword) + var elem = data.element + var widget = args[0] + var id = args[1] + if (!id || id === "$") {//没有定义或为$时,取组件名+随机数 + id = generateID(widget) + } + var optName = args[2] || widget//没有定义,取组件名 + var constructor = avalon.ui[widget] + if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname" + vmodels = elem.vmodels || vmodels + for (var i = 0, v; v = vmodels[i++]; ) { + if (v.hasOwnProperty(optName) && typeof v[optName] === "object") { + var vmOptions = v[optName] + vmOptions = vmOptions.$model || vmOptions + break + } + } + if (vmOptions) { + var wid = vmOptions[widget + "Id"] + if (typeof wid === "string") { + id = wid + } + } + //抽取data-tooltip-text、data-tooltip-attr属性,组成一个配置对象 + var widgetData = avalon.getWidgetData(elem, widget) + data.value = [widget, id, optName].join(",") + data[widget + "Id"] = id + data.evaluator = noop + elem.msData["ms-widget-id"] = id + var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData) + elem.removeAttribute("ms-widget") + var vmodel = constructor(elem, data, vmodels) || {} //防止组件不返回VM + if (vmodel.$id) { + avalon.vmodels[id] = vmodel + createSignalTower(elem, vmodel) + if (vmodel.hasOwnProperty("$init")) { + vmodel.$init(function() { + avalon.scan(elem, [vmodel].concat(vmodels)) + if (typeof options.onInit === "function") { + options.onInit.call(elem, vmodel, options, vmodels) + } + }) + } + data.rollback = function() { + try { + vmodel.widgetElement = null + vmodel.$remove() + } catch (e) { + } + elem.msData = {} + delete avalon.vmodels[vmodel.$id] + } + addSubscribers(data, widgetList) + if (window.chrome) { + elem.addEventListener("DOMNodeRemovedFromDocument", function() { + setTimeout(removeSubscribers) + }) + } + } else { + avalon.scan(elem, vmodels) + } + } else if (vmodels.length) { //如果该组件还没有加载,那么保存当前的vmodels + elem.vmodels = vmodels + } +} +var widgetList = [] +//不存在 bindingExecutors.widget +//双工绑定 +var duplexBinding = bindingHandlers.duplex = function(data, vmodels) { + var elem = data.element, + hasCast + parseExprProxy(data.value, vmodels, data, 0, 1) + + data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop + if (data.evaluator && data.args) { + var params = [] + var casting = oneObject("string,number,boolean,checked") + if (elem.type === "radio" && data.param === "") { + data.param = "checked" + } + if (elem.msData) { + elem.msData["ms-duplex"] = data.value + } + data.param.replace(/\w+/g, function(name) { + if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) { + if (name === "radio") + log("ms-duplex-radio已经更名为ms-duplex-checked") + name = "checked" + data.isChecked = true + } + if (name === "bool") { + name = "boolean" + log("ms-duplex-bool已经更名为ms-duplex-boolean") + } else if (name === "text") { + name = "string" + log("ms-duplex-text已经更名为ms-duplex-string") + } + if (casting[name]) { + hasCast = true + } + avalon.Array.ensure(params, name) + }) + if (!hasCast) { + params.push("string") + } + data.param = params.join("-") + data.bound = function(type, callback) { + if (elem.addEventListener) { + elem.addEventListener(type, callback, false) + } else { + elem.attachEvent("on" + type, callback) + } + var old = data.rollback + data.rollback = function() { + elem.avalonSetter = null + avalon.unbind(elem, type, callback) + old && old() + } + } + for (var i in avalon.vmodels) { + var v = avalon.vmodels[i] + v.$fire("avalon-ms-duplex-init", data) + } + var cpipe = data.pipe || (data.pipe = pipe) + cpipe(null, data, "init") + var tagName = elem.tagName + duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data) + } +} +//不存在 bindingExecutors.duplex +function fixNull(val) { + return val == null ? "" : val +} +avalon.duplexHooks = { + checked: { + get: function(val, data) { + return !data.element.oldValue + } + }, + string: { + get: function(val) { //同步到VM + return val + }, + set: fixNull + }, + "boolean": { + get: function(val) { + return val === "true" + }, + set: fixNull + }, + number: { + get: function(val) { + return isFinite(val) ? parseFloat(val) || 0 : val + }, + set: fixNull + } +} + +function pipe(val, data, action, e) { + data.param.replace(/\w+/g, function(name) { + var hook = avalon.duplexHooks[name] + if (hook && typeof hook[action] === "function") { + val = hook[action](val, data) + } + }) + return val +} + +var TimerID, ribbon = [] +function W3CFire(el, name, detail) { + var event = DOC.createEvent("Events") + event.initEvent(name, true, true) + event.fireByAvalon = true//签名,标记事件是由avalon触发 + //event.isTrusted = false 设置这个opera会报错 + if (detail) + event.detail = detail + el.dispatchEvent(event) +} + + +avalon.tick = function(fn) { + if (ribbon.push(fn) === 1) { + TimerID = setInterval(ticker, 60) + } +} + +function ticker() { + for (var n = ribbon.length - 1; n >= 0; n--) { + var el = ribbon[n] + if (el() === false) { + ribbon.splice(n, 1) + } + } + if (!ribbon.length) { + clearInterval(TimerID) + } +} + +var watchValueInTimer = noop +new function() { + try {//#272 IE9-IE11, firefox + var setters = {} + var aproto = HTMLInputElement.prototype + var bproto = HTMLTextAreaElement.prototype + function newSetter(value) { + if (avalon.contains(root, this)) { + setters[this.tagName].call(this, value) + if (this.avalonSetter) { + this.avalonSetter() + } + } + } + var inputProto = HTMLInputElement.prototype + Object.getOwnPropertyNames(inputProto) //故意引发IE6-8等浏览器报错 + setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set + Object.defineProperty(aproto, "value", { + set: newSetter + }) + setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set + Object.defineProperty(bproto, "value", { + set: newSetter + }) + } catch (e) { + watchValueInTimer = avalon.tick + } +} + + +//处理radio, checkbox, text, textarea, password +duplexBinding.INPUT = function(element, evaluator, data) { + var type = element.type, + bound = data.bound, + $elem = avalon(element), + composing = false + function callback(value) { + data.changed.call(this, value, data) + } + function compositionStart() { + composing = true + } + function compositionEnd() { + composing = false + } + //当value变化时改变model的值 + function updateVModel() { + if (composing)//处理中文输入法在minlengh下引发的BUG + return + var val = element.oldValue = element.value //防止递归调用形成死循环 + var lastValue = data.pipe(val, data, "get") + if ($elem.data("duplex-observe") !== false) { + evaluator(lastValue) + callback.call(element, lastValue) + if ($elem.data("duplex-focus")) { + avalon.nextTick(function() { + element.focus() + }) + } + } + } + //当model变化时,它就会改变value的值 + data.handler = function() { + var val = data.pipe(evaluator(), data, "set") + if (val !== element.oldValue) { + element.value = val + } + } + if (data.isChecked || element.type === "radio") { + updateVModel = function() { + if ($elem.data("duplex-observe") !== false) { + var lastValue = data.pipe(element.value, data, "get") + evaluator(lastValue) + callback.call(element, lastValue) + } + } + data.handler = function() { + var val = evaluator() + var checked = data.isChecked ? !!val : val + "" === element.value + element.checked = element.oldValue = checked + } + bound("click", updateVModel) + } else if (type === "checkbox") { + updateVModel = function() { + if ($elem.data("duplex-observe") !== false) { + var method = element.checked ? "ensure" : "remove" + var array = evaluator() + if (!Array.isArray(array)) { + log("ms-duplex应用于checkbox上要对应一个数组") + array = [array] + } + avalon.Array[method](array, data.pipe(element.value, data, "get")) + callback.call(element, array) + } + } + data.handler = function() { + var array = [].concat(evaluator()) //强制转换为数组 + element.checked = array.indexOf(data.pipe(element.value, data, "get")) > -1 + } + bound("change", updateVModel) + } else { + var events = element.getAttribute("data-duplex-event") || element.getAttribute("data-event") || "input" + if (element.attributes["data-event"]) { + log("data-event指令已经废弃,请改用data-duplex-event") + } + events.replace(rword, function(name) { + switch (name) { + case "input": + bound("input", updateVModel) + bound("DOMAutoComplete", updateVModel) + if (!IEVersion) { + bound("compositionstart", compositionStart) + bound("compositionend", compositionEnd) + } + break + default: + bound(name, updateVModel) + break + } + }) + } + + if (/text|password/.test(element.type)) { + watchValueInTimer(function() { + if (root.contains(element)) { + if (element.value !== element.oldValue) { + updateVModel() + } + } else if (!element.msRetain) { + return false + } + }) + } + + element.avalonSetter = updateVModel + element.oldValue = element.value + registerSubscriber(data) + callback.call(element, element.value) +} +duplexBinding.TEXTAREA = duplexBinding.INPUT +duplexBinding.SELECT = function(element, evaluator, data) { + var $elem = avalon(element) + function updateVModel() { + if ($elem.data("duplex-observe") !== false) { + var val = $elem.val() //字符串或字符串数组 + if (Array.isArray(val)) { + val = val.map(function(v) { + return data.pipe(v, data, "get") + }) + } else { + val = data.pipe(val, data, "get") + } + if (val + "" !== element.oldValue) { + evaluator(val) + } + data.changed.call(element, val, data) + } + } + data.handler = function() { + var val = evaluator() + val = val && val.$model || val + if (Array.isArray(val)) { + if (!element.multiple) { + log("ms-duplex在不能对应一个数组") + } + } + //必须变成字符串后才能比较 + val = Array.isArray(val) ? val.map(String) : val + "" + if (val + "" !== element.oldValue) { + $elem.val(val) + element.oldValue = val + "" + } + } + data.bound("change", updateVModel) + checkScan(element, function() { + registerSubscriber(data) + data.changed.call(element, evaluator(), data) + }, NaN) +} + + +bindingHandlers.repeat = function(data, vmodels) { + var type = data.type + parseExprProxy(data.value, vmodels, data, 0, 1) + data.proxies = [] + var freturn = false + try { + var $repeat = data.$repeat = data.evaluator.apply(0, data.args || []) + var xtype = avalon.type($repeat) + if (xtype !== "object" && xtype !== "array") { + freturn = true + avalon.log("warning:" + data.value + "对应类型不正确") + } + } catch (e) { + freturn = true + avalon.log("warning:" + data.value + "编译出错") + } + + var arr = data.value.split(".") || [] + if (arr.length > 1) { + arr.pop() + var n = arr[0] + for (var i = 0, v; v = vmodels[i++]; ) { + if (v && v.hasOwnProperty(n)) { + var events = v[n].$events || {} + events[subscribers] = events[subscribers] || [] + events[subscribers].push(data) + break + } + } + } + var elem = data.element + elem.removeAttribute(data.name) + + data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels) + data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels) + var signature = generateID(type) + var comment = data.element = DOC.createComment(signature + ":end") + data.clone = DOC.createComment(signature) + hyperspace.appendChild(comment) + + if (type === "each" || type === "with") { + data.template = elem.innerHTML.trim() + avalon.clearHTML(elem).appendChild(comment) + } else { + data.template = elem.outerHTML.trim() + elem.parentNode.replaceChild(comment, elem) + } + data.template = avalon.parseHTML(data.template) + data.rollback = function() { + var elem = data.element + if (!elem) + return + bindingExecutors.repeat.call(data, "clear") + var parentNode = elem.parentNode + var content = data.template + var target = content.firstChild + parentNode.replaceChild(content, elem) + var start = data.$stamp + start && start.parentNode && start.parentNode.removeChild(start) + target = data.element = data.type === "repeat" ? target : parentNode + } + if (freturn) { + return + } + data.handler = bindingExecutors.repeat + data.$outer = {} + var check0 = "$key" + var check1 = "$val" + if (Array.isArray($repeat)) { + check0 = "$first" + check1 = "$last" + } + for (var i = 0, p; p = vmodels[i++]; ) { + if (p.hasOwnProperty(check0) && p.hasOwnProperty(check1)) { + data.$outer = p + break + } + } + var $events = $repeat.$events + var $list = ($events || {})[subscribers] + if ($list && avalon.Array.ensure($list, data)) { + addSubscribers(data, $list) + } + if (xtype === "object") { + data.$with = true + var pool = !$events ? {} : $events.$withProxyPool || ($events.$withProxyPool = {}) + data.handler("append", $repeat, pool) + } else if ($repeat.length) { + data.handler("add", 0, $repeat.length) + } +} + +bindingExecutors.repeat = function(method, pos, el) { + if (method) { + var data = this + var end = data.element + var parent = end.parentNode + var proxies = data.proxies + var transation = hyperspace.cloneNode(false) + switch (method) { + case "add": //在pos位置后添加el数组(pos为数字,el为数组) + var n = pos + el + var array = data.$repeat + var last = array.length - 1 + var fragments = [] + var start = locateNode(data, pos) + for (var i = pos; i < n; i++) { + var proxy = eachProxyAgent(i, data) + proxies.splice(i, 0, proxy) + shimController(data, transation, proxy, fragments) + } + parent.insertBefore(transation, start) + for (var i = 0, fragment; fragment = fragments[i++]; ) { + scanNodeArray(fragment.nodes, fragment.vmodels) + fragment.nodes = fragment.vmodels = null + } + break + case "del": //将pos后的el个元素删掉(pos, el都是数字) + start = proxies[pos].$stamp + end = locateNode(data, pos + el) + sweepNodes(start, end) + var removed = proxies.splice(pos, el) + recycleProxies(removed, "each") + break + case "clear": + var check = data.$stamp || proxies[0] + if (check) { + start = check.$stamp || check + sweepNodes(start, end) + } + recycleProxies(proxies, "each") + break + case "move": + start = proxies[0].$stamp + var signature = start.nodeValue + var rooms = [] + var room = [], node + sweepNodes(start, end, function() { + room.unshift(this) + if (this.nodeValue === signature) { + rooms.unshift(room) + room = [] + } + }) + sortByIndex(proxies, pos) + sortByIndex(rooms, pos) + while (room = rooms.shift()) { + while (node = room.shift()) { + transation.appendChild(node) + } + } + parent.insertBefore(transation, end) + break + case "index": //将proxies中的第pos个起的所有元素重新索引 + var last = proxies.length - 1 + for (; el = proxies[pos]; pos++) { + el.$index = pos + el.$first = pos === 0 + el.$last = pos === last + } + return + case "set": //将proxies中的第pos个元素的VM设置为el(pos为数字,el任意) + var proxy = proxies[pos] + if (proxy) { + notifySubscribers(proxy.$events.$index) + } + return + case "append": //将pos的键值对从el中取出(pos为一个普通对象,el为预先生成好的代理VM对象池) + var pool = el + var keys = [] + var fragments = [] + for (var key in pos) { //得到所有键名 + if (pos.hasOwnProperty(key) && key !== "hasOwnProperty") { + keys.push(key) + } + } + if (data.sortedCallback) { //如果有回调,则让它们排序 + var keys2 = data.sortedCallback.call(parent, keys) + if (keys2 && Array.isArray(keys2) && keys2.length) { + keys = keys2 + } + } + for (var i = 0, key; key = keys[i++]; ) { + if (key !== "hasOwnProperty") { + if (!pool[key]) { + pool[key] = withProxyAgent(key, data) + } + shimController(data, transation, pool[key], fragments) + } + } + var comment = data.$stamp = data.clone + parent.insertBefore(comment, end) + parent.insertBefore(transation, end) + for (var i = 0, fragment; fragment = fragments[i++]; ) { + scanNodeArray(fragment.nodes, fragment.vmodels) + fragment.nodes = fragment.vmodels = null + } + break + } + if (method === "clear") + method = "del" + var callback = data.renderedCallback || noop, + args = arguments + checkScan(parent, function() { + callback.apply(parent, args) + if (parent.oldValue && parent.tagName === "SELECT") { //fix #503 + avalon(parent).val(parent.oldValue.split(",")) + } + }, NaN) + } +} + +"with,each".replace(rword, function(name) { + bindingHandlers[name] = bindingHandlers.repeat +}) + +function shimController(data, transation, proxy, fragments) { + var content = data.template.cloneNode(true) + var nodes = avalon.slice(content.childNodes) + if (proxy.$stamp) { + content.insertBefore(proxy.$stamp, content.firstChild) + } + transation.appendChild(content) + var nv = [proxy].concat(data.vmodels) + var fragment = { + nodes: nodes, + vmodels: nv + } + fragments.push(fragment) +} + +function locateNode(data, pos) { + var proxy = data.proxies[pos] + return proxy ? proxy.$stamp : data.element +} + +function sweepNodes(start, end, callback) { + while (true) { + var node = end.previousSibling + if (!node) + break + node.parentNode.removeChild(node) + callback && callback.call(node) + if (node === start) { + break + } + } +} + +// 为ms-each,ms-with, ms-repeat会创建一个代理VM, +// 通过它们保持一个下上文,让用户能调用$index,$first,$last,$remove,$key,$val,$outer等属性与方法 +// 所有代理VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现 +var eachProxyPool = [] +var withProxyPool = [] +function eachProxyFactory(name) { + var source = { + $host: [], + $outer: {}, + $stamp: 1, + $index: 0, + $first: false, + $last: false, + $remove: avalon.noop + } + source[name] = { + get: function() { + return this.$host[this.$index] + }, + set: function(val) { + this.$host.set(this.$index, val) + } + } + var second = { + $last: 1, + $first: 1, + $index: 1 + } + var proxy = modelFactory(source, second) + var e = proxy.$events + e[name] = e.$first = e.$last = e.$index + proxy.$id = generateID("$proxy$each") + return proxy +} + +function eachProxyAgent(index, data) { + var param = data.param || "el", proxy + for (var i = 0, n = eachProxyPool.length; i < n; i++) { + var candidate = eachProxyPool[i] + if (candidate && candidate.hasOwnProperty(param)) { + proxy = candidate + eachProxyPool.splice(i, 1) + } + } + if (!proxy) { + proxy = eachProxyFactory(param) + } + var host = data.$repeat + var last = host.length - 1 + proxy.$index = index + proxy.$first = index === 0 + proxy.$last = index === last + proxy.$host = host + proxy.$outer = data.$outer + proxy.$stamp = data.clone.cloneNode(false) + proxy.$remove = function() { + return host.removeAt(proxy.$index) + } + return proxy +} + +function withProxyFactory() { + var proxy = modelFactory({ + $key: "", + $outer: {}, + $host: {}, + $val: { + get: function() { + return this.$host[this.$key] + }, + set: function(val) { + this.$host[this.$key] = val + } + } + }, { + $val: 1 + }) + proxy.$id = generateID("$proxy$with") + return proxy +} + +function withProxyAgent(key, data) { + var proxy = withProxyPool.pop() + if (!proxy) { + proxy = withProxyFactory() + } + var host = data.$repeat + proxy.$key = key + proxy.$host = host + proxy.$outer = data.$outer + if (host.$events) { + proxy.$events.$val = host.$events[key] + } else { + proxy.$events = {} + } + return proxy +} + +function recycleProxies(proxies, type) { + var proxyPool = type === "each" ? eachProxyPool : withProxyPool + avalon.each(proxies, function(key, proxy) { + if (proxy.$events) { + for (var i in proxy.$events) { + if (Array.isArray(proxy.$events[i])) { + proxy.$events[i].forEach(function(data) { + if (typeof data === "object") + disposeData(data) + }) + proxy.$events[i].length = 0 + } + } + proxy.$host = proxy.$outer = {} + if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) { + proxyPool.pop() + } + } + }) + if (type === "each") + proxies.length = 0 +} + + + + +/********************************************************************* + * 自带过滤器 * + **********************************************************************/ +var rscripts = /]*>([\S\s]*?)<\/script\s*>/gim +var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g +var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig +var rsanitize = { + a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig, + img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig, + form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig +} +var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g +var rnoalphanumeric = /([^\#-~| |!])/g; + +function numberFormat(number, decimals, dec_point, thousands_sep) { + //form http://phpjs.org/functions/number_format/ + //number 必需,要格式化的数字 + //decimals 可选,规定多少个小数位。 + //dec_point 可选,规定用作小数点的字符串(默认为 . )。 + //thousands_sep 可选,规定用作千位分隔符的字符串(默认为 , ),如果设置了该参数,那么所有其他参数都是必需的。 + number = (number + '') + .replace(/[^0-9+\-Ee.]/g, '') + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, + dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec) + return '' + (Math.round(n * k) / k) + .toFixed(prec) + } + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) + .split('.') + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep) + } + if ((s[1] || '') + .length < prec) { + s[1] = s[1] || '' + s[1] += new Array(prec - s[1].length + 1) + .join('0') + } + return s.join(dec) +} + + +var filters = avalon.filters = { + uppercase: function(str) { + return str.toUpperCase() + }, + lowercase: function(str) { + return str.toLowerCase() + }, + truncate: function(str, length, truncation) { + //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串 + length = length || 30 + truncation = truncation === void(0) ? "..." : truncation + return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str) + }, + $filter: function(val) { + for (var i = 1, n = arguments.length; i < n; i++) { + var array = arguments[i] + var fn = avalon.filters[array.shift()] + if (typeof fn === "function") { + var arr = [val].concat(array) + val = fn.apply(null, arr) + } + } + return val + }, + camelize: camelize, + //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet + // chrome + // chrome + // IE67chrome + // IE67chrome + // IE67chrome + sanitize: function(str) { + return str.replace(rscripts, "").replace(ropen, function(a, b) { + var match = a.toLowerCase().match(/<(\w+)\s/) + if (match) { //处理a标签的href属性,img标签的src属性,form标签的action属性 + var reg = rsanitize[match[1]] + if (reg) { + a = a.replace(reg, function(s, name, value) { + var quote = value.charAt(0) + return name + "=" + quote + "javascript:void(0)" + quote + }) + } + } + return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件 + }) + }, + escape: function(str) { + //将字符串经过 str 转义得到适合在页面中显示的内容, 例如替换 < 为 < + return String(str). + replace(/&/g, '&'). + replace(rsurrogate, function(value) { + var hi = value.charCodeAt(0) + var low = value.charCodeAt(1) + return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' + }). + replace(rnoalphanumeric, function(value) { + return '&#' + value.charCodeAt(0) + ';' + }). + replace(//g, '>') + }, + currency: function(amount, symbol, fractionSize) { + return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize: 2) + }, + number: function(number, fractionSize) { + return numberFormat(number, isFinite(fractionSize) ? fractionSize: 3 ) + } +} +/* + 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) + 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) + 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) + 'MMMM': Month in year (January-December) + 'MMM': Month in year (Jan-Dec) + 'MM': Month in year, padded (01-12) + 'M': Month in year (1-12) + 'dd': Day in month, padded (01-31) + 'd': Day in month (1-31) + 'EEEE': Day in Week,(Sunday-Saturday) + 'EEE': Day in Week, (Sun-Sat) + 'HH': Hour in day, padded (00-23) + 'H': Hour in day (0-23) + 'hh': Hour in am/pm, padded (01-12) + 'h': Hour in am/pm, (1-12) + 'mm': Minute in hour, padded (00-59) + 'm': Minute in hour (0-59) + 'ss': Second in minute, padded (00-59) + 's': Second in minute (0-59) + 'a': am/pm marker + 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200) + format string can also be one of the following predefined localizable formats: + + 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm) + 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm) + 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010) + 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010 + 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010) + 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10) + 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm) + 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm) + */ +new function() { + function toInt(str) { + return parseInt(str, 10) + } + + function padNumber(num, digits, trim) { + var neg = "" + if (num < 0) { + neg = '-' + num = -num + } + num = "" + num + while (num.length < digits) + num = "0" + num + if (trim) + num = num.substr(num.length - digits) + return neg + num + } + + function dateGetter(name, size, offset, trim) { + return function(date) { + var value = date["get" + name]() + if (offset > 0 || value > -offset) + value += offset + if (value === 0 && offset === -12) { + value = 12 + } + return padNumber(value, size, trim) + } + } + + function dateStrGetter(name, shortForm) { + return function(date, formats) { + var value = date["get" + name]() + var get = (shortForm ? ("SHORT" + name) : name).toUpperCase() + return formats[get][value] + } + } + + function timeZoneGetter(date) { + var zone = -1 * date.getTimezoneOffset() + var paddedZone = (zone >= 0) ? "+" : "" + paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2) + return paddedZone + } + //取得上午下午 + + function ampmGetter(date, formats) { + return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1] + } + var DATE_FORMATS = { + yyyy: dateGetter("FullYear", 4), + yy: dateGetter("FullYear", 2, 0, true), + y: dateGetter("FullYear", 1), + MMMM: dateStrGetter("Month"), + MMM: dateStrGetter("Month", true), + MM: dateGetter("Month", 2, 1), + M: dateGetter("Month", 1, 1), + dd: dateGetter("Date", 2), + d: dateGetter("Date", 1), + HH: dateGetter("Hours", 2), + H: dateGetter("Hours", 1), + hh: dateGetter("Hours", 2, -12), + h: dateGetter("Hours", 1, -12), + mm: dateGetter("Minutes", 2), + m: dateGetter("Minutes", 1), + ss: dateGetter("Seconds", 2), + s: dateGetter("Seconds", 1), + sss: dateGetter("Milliseconds", 3), + EEEE: dateStrGetter("Day"), + EEE: dateStrGetter("Day", true), + a: ampmGetter, + Z: timeZoneGetter + } + var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/, + NUMBER_STRING = /^\d+$/ + var riso8601 = /^(\d{4})-?(\d+)-?(\d+)(?:T(\d+)(?::?(\d+)(?::?(\d+)(?:\.(\d+))?)?)?(Z|([+-])(\d+):?(\d+))?)?$/ + // 1 2 3 4 5 6 7 8 9 10 11 + + function jsonStringToDate(string) { + var match + if (match = string.match(riso8601)) { + var date = new Date(0), + tzHour = 0, + tzMin = 0, + dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear, + timeSetter = match[8] ? date.setUTCHours : date.setHours + if (match[9]) { + tzHour = toInt(match[9] + match[10]) + tzMin = toInt(match[9] + match[11]) + } + dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3])) + var h = toInt(match[4] || 0) - tzHour + var m = toInt(match[5] || 0) - tzMin + var s = toInt(match[6] || 0) + var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000) + timeSetter.call(date, h, m, s, ms) + return date + } + return string + } + var rfixYMD = /^(\d+)\D(\d+)\D(\d+)/ + filters.date = function(date, format) { + var locate = filters.date.locate, + text = "", + parts = [], + fn, match + format = format || "mediumDate" + format = locate[format] || format + if (typeof date === "string") { + if (NUMBER_STRING.test(date)) { + date = toInt(date) + } else { + var trimDate = date.trim() + date = trimDate.replace(rfixYMD, function(a, b, c, d) { + var array = d.length === 4 ? [d, b, c] : [b, c, d] + return array.join("-") + }) + date = jsonStringToDate(date) + } + date = new Date(date) + } + if (typeof date === "number") { + date = new Date(date) + } + if (avalon.type(date) !== "date") { + return + } + while (format) { + match = DATE_FORMATS_SPLIT.exec(format) + if (match) { + parts = parts.concat(match.slice(1)) + format = parts.pop() + } else { + parts.push(format) + format = null + } + } + parts.forEach(function(value) { + fn = DATE_FORMATS[value] + text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'") + }) + return text + } + var locate = { + AMPMS: { + 0: "上午", + 1: "下午" + }, + DAY: { + 0: "星期日", + 1: "星期一", + 2: "星期二", + 3: "星期三", + 4: "星期四", + 5: "星期五", + 6: "星期六" + }, + MONTH: { + 0: "1月", + 1: "2月", + 2: "3月", + 3: "4月", + 4: "5月", + 5: "6月", + 6: "7月", + 7: "8月", + 8: "9月", + 9: "10月", + 10: "11月", + 11: "12月" + }, + SHORTDAY: { + "0": "周日", + "1": "周一", + "2": "周二", + "3": "周三", + "4": "周四", + "5": "周五", + "6": "周六" + }, + fullDate: "y年M月d日EEEE", + longDate: "y年M月d日", + medium: "yyyy-M-d H:mm:ss", + mediumDate: "yyyy-M-d", + mediumTime: "H:mm:ss", + "short": "yy-M-d ah:mm", + shortDate: "yy-M-d", + shortTime: "ah:mm" + } + locate.SHORTMONTH = locate.MONTH + filters.date.locate = locate +} +/********************************************************************* + * AMD加载器 * + **********************************************************************/ +var modules = avalon.modules = { + "ready!": { + exports: avalon + }, + "avalon": { + exports: avalon, + state: 2 + } +} + +new function() { + var loadings = [] //正在加载中的模块列表 + var factorys = [] //储存需要绑定ID与factory对应关系的模块(标准浏览器下,先parse的script节点会先onload) + var basepath + + function trimHashAndQuery(url) { + return (url || "").replace(/[?#].*/, "") + } + + var cur = getCurrentScript(true) //求得当前avalon.js 所在的JS文件的路径 + if (!cur) { //处理window safari的Error没有stack的问题 + cur = avalon.slice(DOC.scripts).pop().src + } + var url = trimHashAndQuery(cur) + basepath = kernel.base = url.slice(0, url.lastIndexOf("/") + 1) + + function getCurrentScript(base) { + // 参考 https://github.com/samyk/jiagra/blob/master/jiagra.js + var stack + try { + a.b.c() //强制报错,以便捕获e.stack + } catch (e) { //safari的错误对象只有line,sourceId,sourceURL + stack = e.stack + if (!stack && window.opera) { + //opera 9没有e.stack,但有e.Backtrace,但不能直接取得,需要对e对象转字符串进行抽取 + stack = (String(e).match(/of linked script \S+/g) || []).join(" ") + } + } + if (stack) { + /**e.stack最后一行在所有支持的浏览器大致如下: + *chrome23: + * at http://113.93.50.63/data.js:4:1 + *firefox17: + *@http://113.93.50.63/query.js:4 + *opera12:http://www.oldapps.com/opera.php?system=Windows_XP + *@http://113.93.50.63/data.js:4 + *IE10: + * at Global code (http://113.93.50.63/data.js:4:1) + * //firefox4+ 可以用document.currentScript + */ + stack = stack.split(/[@ ]/g).pop() //取得最后一行,最后一个空格或@之后的部分 + stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉换行符 + return stack.replace(/(:\d+)?:\d+$/i, "") //去掉行号与或许存在的出错字符起始位置 + } + var nodes = (base ? DOC : head).getElementsByTagName("script") //只在head标签中寻找 + for (var i = nodes.length, node; node = nodes[--i]; ) { + if ((base || node.className === subscribers) && node.readyState === "interactive") { + return node.className = node.src + } + } + } + + innerRequire = avalon.require = function(array, factory, parent) { + if (!Array.isArray(array)) { + avalon.error("require的第一个参数必须是依赖列数,类型为数组 " + array) + } + var args = [] // 放置所有依赖项的完整路径 + var deps = {} // args的另一种表现形式,为的是方便去重 + var dn = 0 //需要安装的模块数 + var cn = 0 // 已安装完的模块数 + var id = parent || "callback" + setTimeout("1") + parent = parent || basepath + + array.forEach(function(el) { + var url = loadResources(el, parent) //加载资源,并返回能加载资源的完整路径 + if (url) { + dn++ + if (modules[url] && modules[url].state === 2) { + cn++ + } + if (!deps[url]) { + args.push(url) + deps[url] = "司徒正美" //去重 + } + } + }) + modules[id] = {//保存此模块的相关信息 + id: id, + factory: factory, + deps: deps, + args: args, + state: 1 + } + if (dn === cn) { //如果需要安装的等于已安装好的 + fireFactory(id, args, factory) //安装到框架中 + } else { + //放到检测列队中,等待checkDeps处理 + loadings.unshift(id) + } + checkDeps() + } + + innerRequire.define = function(urlOrId, deps, factory) { //模块名,依赖列表,模块本身 + var args = aslice.call(arguments) + if (typeof urlOrId === "string") { + var id = args.shift() + } + if (typeof args[0] === "function") { + args.unshift([]) + } + //上线合并后能直接得到模块ID,否则寻找当前正在解析中的script节点的src作为模块ID + //现在除了safari5,1-外,我们都能直接通过getCurrentScript一步到位得到当前执行的script节点, + //safari可通过onload+delay闭包组合解决 + var url = modules[id] && modules[id].state >= 1 ? id : trimHashAndQuery(getCurrentScript()) + if (!modules[url] && id) { + modules[url] = { + id: url, + factory: factory, + state: 1 + } + } + factory = args[1] + factory.id = id //用于调试 + factory.delay = function(d) { + args.push(d) + var isCycle = true + try { + isCycle = checkCycle(modules[d].deps, d) + } catch (e) { + } + if (isCycle) { + avalon.error(d + "模块与之前的模块存在循环依赖,请不要直接用script标签引入" + d + "模块") + } + delete factory.delay //释放内存 + innerRequire.apply(null, args) //0,1,2 --> 1,2,0 + } + if (url) { + factory.delay(url) + } else { //先进先出 + factorys.push(factory) + } + } + innerRequire.define.amd = modules + + function checkCycle(deps, nick) { + //检测是否存在循环依赖 + for (var id in deps) { + if (deps[id] === "司徒正美" && modules[id].state !== 2 && (id === nick || checkCycle(modules[id].deps, nick))) { + return true + } + } + } + + function checkDeps() { + //检测此JS模块的依赖是否都已安装完毕,是则安装自身 + loop: for (var i = loadings.length, id; id = loadings[--i]; ) { + + var obj = modules[id], + deps = obj.deps + for (var key in deps) { + if (ohasOwn.call(deps, key) && modules[key].state !== 2) { + continue loop + } + } + //如果deps是空对象或者其依赖的模块的状态都是2 + if (obj.state !== 2) { + loadings.splice(i, 1) //必须先移除再安装,防止在IE下DOM树建完后手动刷新页面,会多次执行它 + fireFactory(obj.id, obj.args, obj.factory) + checkDeps() //如果成功,则再执行一次,以防有些模块就差本模块没有安装好 + } + } + } + + function checkFail(node, onError, fuckIE) { + var id = trimHashAndQuery(node.src) //检测是否死链 + node.onload = node.onreadystatechange = node.onerror = null + if (onError || (fuckIE && !modules[id].state)) { + setTimeout(function() { + head.removeChild(node) + node = null // 处理旧式IE下的循环引用问题 + }) + log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state)) + } else { + return true + } + } + var rdeuce = /\/\w+\/\.\./ + + function loadResources(url, parent, ret, shim) { + //1. 特别处理mass|ready标识符 + if (url === "ready!" || (modules[url] && modules[url].state === 2)) { + return url + } + //2. 处理text! css! 等资源 + var plugin + url = url.replace(/^\w+!/, function(a) { + plugin = a.slice(0, -1) + return "" + }) + plugin = plugin || "js" + plugin = plugins[plugin] || noop + //3. 转化为完整路径 + if (typeof kernel.shim[url] === "object") { + shim = kernel.shim[url] + } + url = url.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (var i = url.length, parentModule, parentPath; i > 0; i -= 1) { + parentModule = url.slice(0, i).join('/'); + + parentPath = kernel.paths[parentModule]; + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (Array.isArray(parentPath)) { + parentPath = parentPath[0]; + } + url.splice(0, i, parentPath); + break; + } + } + //Join the path parts together, then figure out if baseUrl is needed. + url = url.join('/'); + + //4. 补全路径 + if (/^(\w+)(\d)?:.*/.test(url)) { + ret = url + } else { + parent = parent.substr(0, parent.lastIndexOf("/")) + var tmp = url.charAt(0) + if (tmp !== "." && tmp !== "/") { //相对于根路径 + ret = basepath + url + } else if (url.slice(0, 2) === "./") { //相对于兄弟路径 + ret = parent + url.slice(1) + } else if (url.slice(0, 2) === "..") { //相对于父路径 + ret = parent + "/" + url + while (rdeuce.test(ret)) { + ret = ret.replace(rdeuce, "") + } + } else if (tmp === "/") { + ret = url //相对于根路径 + } else { + avalon.error("不符合模块标识规则: " + url) + } + } + //5. 补全扩展名 + url = trimHashAndQuery(ret) + var ext = plugin.ext + if (ext) { + if (url.slice(0 - ext.length) !== ext) { + ret += ext + } + } + //6. 缓存处理 + if (kernel.nocache) { + ret += (ret.indexOf("?") === -1 ? "?" : "&") + (new Date - 0) + } + return plugin(ret, shim) + } + + function loadJS(url, id, callback) { + //通过script节点加载目标模块 + var node = DOC.createElement("script") + node.className = subscribers //让getCurrentScript只处理类名为subscribers的script节点 + node[W3C ? "onload" : "onreadystatechange"] = function() { + if (W3C || /loaded|complete/i.test(node.readyState)) { + //mass Framework会在_checkFail把它上面的回调清掉,尽可能释放回存,尽管DOM0事件写法在IE6下GC无望 + var factory = factorys.pop() + factory && factory.delay(id) + if (callback) { + callback() + } + if (checkFail(node, false, !W3C)) { + log("debug: 已成功加载 " + url) + } + } + } + node.onerror = function() { + checkFail(node, true) + } + node.src = url //插入到head的第一个节点前,防止IE6下head标签没闭合前使用appendChild抛错 + head.insertBefore(node, head.firstChild) //chrome下第二个参数不能为null + log("debug: 正准备加载 " + url) //更重要的是IE6下可以收窄getCurrentScript的寻找范围 + } + + function fireFactory(id, deps, factory) { + for (var i = 0, array = [], d; d = deps[i++]; ) { + array.push(modules[d].exports) + } + var module = Object(modules[id]), + ret = factory.apply(window, array) + module.state = 2 + if (ret !== void 0) { + modules[id].exports = ret + } + return ret + } + + plugins.js = function(url, shim) { + var id = trimHashAndQuery(url) + if (!modules[id]) { //如果之前没有加载过 + modules[id] = { + id: id, + exports: {} + } + if (shim) { //shim机制 + innerRequire(shim.deps || "", function() { + loadJS(url, id, function() { + modules[id].state = 2 + var s = shim.exports + if (s && modules[id].exports === void 0) { + modules[id].exports = typeof s === "function" ? + s() : window[s] + } + innerRequire.checkDeps() + }) + }) + } else { + loadJS(url, id) + } + } + return id + } + plugins.css = function(url) { + var id = trimHashAndQuery(url).replace(/\W/g, "_") ////用于处理掉href中的hash与所有特殊符号 + if (!DOC.getElementById(id)) { + var node = DOC.createElement("link") + node.rel = "stylesheet" + node.href = url + node.id = id + head.insertBefore(node, head.firstChild) + } + } + plugins.css.ext = ".css" + plugins.js.ext = ".js" + + plugins.text = function(url) { + var xhr = getXHR() + var id = trimHashAndQuery(url) + modules[id] = {} + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + var status = xhr.status; + if (status > 399 && status < 600) { + avalon.error(url + " 对应资源不存在或没有开启 CORS") + } else { + modules[id].state = 2 + modules[id].exports = xhr.responseText + innerRequire.checkDeps() + } + } + } + xhr.open("GET", url, true) + if ("withCredentials" in xhr) { + xhr.withCredentials = true + } + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") + xhr.send() + return id + } + + innerRequire.config = kernel + innerRequire.checkDeps = checkDeps +} + +/********************************************************************* + * DOMReady * + **********************************************************************/ +var readyList = [] +function fireReady() { + if (innerRequire) { + modules["ready!"].state = 2 + innerRequire.checkDeps()//隋性函数,防止IE9二次调用_checkDeps + } else { + readyList.forEach(function(a) { + a(avalon) + }) + } + fireReady = noop //隋性函数,防止IE9二次调用_checkDeps +} + +if (DOC.readyState === "complete") { + setTimeout(fireReady) //如果在domReady之外加载 +} else { + DOC.addEventListener("DOMContentLoaded", fireReady) + window.addEventListener("load", fireReady) +} +avalon.ready = function(fn) { + if (innerRequire) { + innerRequire(["ready!"], fn) + } else if (fireReady === noop) { + fn(avalon) + } else { + readyList.push(fn) + } +} +avalon.config({ + loader: true +}) +avalon.ready(function() { + avalon.scan(DOC.body) +}) + +// Register as a named AMD module, since avalon can be concatenated with other +// files that may use define, but not via a proper concatenation script that +// understands anonymous AMD modules. A named AMD is safest and most robust +// way to register. Lowercase avalon is used because AMD module names are +// derived from file names, and Avalon is normally delivered in a lowercase +// file name. Do this after creating the global so that if an AMD module wants +// to call noConflict to hide this version of avalon, it will work. + +// Note that for maximum portability, libraries that are not avalon should +// declare themselves as anonymous modules, and avoid setting a global if an +// AMD loader is present. avalon is a special case. For more information, see +// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon + if (typeof define === "function" && define.amd) { + define("avalon", [], function() { + return avalon + }) + } +// Map over avalon in case of overwrite + var _avalon = window.avalon + avalon.noConflict = function(deep) { + if (deep && window.avalon === avalon) { + window.avalon = avalon + } + return avalon + } +// Expose avalon and $ identifiers, even in AMD +// and CommonJS for browser emulators + if (noGlobal === void 0) { + window.avalon = avalon + } + return avalon + +})); diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css new file mode 100644 index 00000000..8df7b075 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css @@ -0,0 +1,319 @@ +/*! + * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x + * + * Copyright 2013-2015 Dan Grossman ( http://www.dangrossman.info ) + * Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php + * + * Built for http://www.improvely.com + */ + + .daterangepicker.dropdown-menu { + max-width: none; + z-index: 3000; +} + +.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { + float: left; + margin: 4px; +} + +.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar, +.daterangepicker.openscenter .ranges, .daterangepicker.openscenter .calendar { + float: right; + margin: 4px; +} + +.daterangepicker.single .ranges, .daterangepicker.single .calendar { + float: none; +} + +.daterangepicker .ranges { + width: 165px; + text-align: left; +} + +.daterangepicker .ranges .range_inputs>div { + float: left; +} + +.daterangepicker .ranges .range_inputs>div:nth-child(2) { + padding-left: 11px; +} + +.daterangepicker .calendar { + display: none; + max-width: 270px; +} + +.daterangepicker.show-calendar .calendar { + display: block; +} + +.daterangepicker .calendar.single .calendar-date { + border: none; +} + +.daterangepicker .calendar th, .daterangepicker .calendar td { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + white-space: nowrap; + text-align: center; + min-width: 32px; +} + +.daterangepicker .daterangepicker_start_input label, +.daterangepicker .daterangepicker_end_input label { + color: #333; + display: block; + font-size: 11px; + font-weight: normal; + height: 20px; + line-height: 20px; + margin-bottom: 2px; + text-shadow: #fff 1px 1px 0px; + text-transform: uppercase; + width: 74px; +} + +.daterangepicker .ranges input { + font-size: 11px; +} + +.daterangepicker .ranges .input-mini { + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + display: block; + font-size: 11px; + height: 30px; + line-height: 30px; + vertical-align: middle; + margin: 0 0 10px 0; + padding: 0 6px; + width: 77px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0; + padding: 0; +} + +.daterangepicker .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; +} + +.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; +} + +.daterangepicker .calendar-date { + border: 1px solid #ddd; + padding: 4px; + border-radius: 4px; + background: #fff; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 8px auto 0 auto; + line-height: 30px; +} + +.daterangepicker { + position: absolute; + background: #fff; + top: 100px; + left: 20px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker.opensleft:before { + position: absolute; + top: -7px; + right: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensleft:after { + position: absolute; + top: -6px; + right: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.openscenter:before { + position: absolute; + top: -7px; + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.openscenter:after { + position: absolute; + top: -6px; + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.opensright:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensright:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker table { + width: 100%; + margin: 0; +} + +.daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + white-space: nowrap; +} + +.daterangepicker td.off { + color: #999; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background: #eee; +} + +.daterangepicker td.in-range { + background: #ebf4f8; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.daterangepicker td.start-date { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.end-date { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: #3071a9; + color: #fff; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; +} + +.daterangepicker_start_input { + float: left; +} + +.daterangepicker_end_input { + float: left; + padding-left: 11px +} + +.daterangepicker th.month { + width: auto; +} diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js new file mode 100644 index 00000000..e2bc86d7 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/daterangepicker.js @@ -0,0 +1,1257 @@ +/** +* @version: 1.3.17 +* @author: Dan Grossman http://www.dangrossman.info/ +* @date: 2014-11-25 +* @copyright: Copyright (c) 2012-2014 Dan Grossman. All rights reserved. +* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php +* @website: http://www.improvely.com/ +*/ + +(function(root, factory) { + + if (typeof define === 'function' && define.amd) { + define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) { + root.daterangepicker = factory(root, exports, momentjs, $); + }); + + } else if (typeof exports !== 'undefined') { + var momentjs = require('moment'); + var jQuery; + try { + jQuery = require('jquery'); + } catch (err) { + jQuery = window.jQuery; + if (!jQuery) throw new Error('jQuery dependency not found'); + } + + factory(root, exports, momentjs, jQuery); + + // Finally, as a browser global. + } else { + root.daterangepicker = factory(root, {}, root.moment, (root.jQuery || root.Zepto || root.ender || root.$)); + } + +}(this, function(root, daterangepicker, moment, $) { + + var DateRangePicker = function (element, options, cb) { + + // by default, the daterangepicker element is placed at the bottom of HTML body + this.parentEl = 'body'; + + //element that triggered the date range picker + this.element = $(element); + + //tracks visible state + this.isShowing = false; + + //create the picker HTML object + var DRPTemplate = ''; + + //custom options + if (typeof options !== 'object' || options === null) + options = {}; + + this.parentEl = (typeof options === 'object' && options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); + this.container = $(DRPTemplate).appendTo(this.parentEl); + + this.setOptions(options, cb); + + //apply CSS classes and labels to buttons + var c = this.container; + $.each(this.buttonClasses, function (idx, val) { + c.find('button').addClass(val); + }); + this.container.find('.daterangepicker_start_input label').html(this.locale.fromLabel); + this.container.find('.daterangepicker_end_input label').html(this.locale.toLabel); + if (this.applyClass.length) + this.container.find('.applyBtn').addClass(this.applyClass); + if (this.cancelClass.length) + this.container.find('.cancelBtn').addClass(this.cancelClass); + this.container.find('.applyBtn').html(this.locale.applyLabel); + this.container.find('.cancelBtn').html(this.locale.cancelLabel); + + //event listeners + + this.container.find('.calendar') + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) + .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) + .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.updateMonthYear, this)) + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.updateMonthYear, this)) + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.updateTime, this)); + + this.container.find('.ranges') + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) + .on('click.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.showCalendars, this)) + .on('change.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.inputsChanged, this)) + .on('keydown.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.inputsKeydown, this)) + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) + .on('mouseenter.daterangepicker', 'li', $.proxy(this.enterRange, this)) + .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); + + if (this.element.is('input')) { + this.element.on({ + 'click.daterangepicker': $.proxy(this.show, this), + 'focus.daterangepicker': $.proxy(this.show, this), + 'keyup.daterangepicker': $.proxy(this.updateFromControl, this) + }); + } else { + this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); + } + + }; + + DateRangePicker.prototype = { + + constructor: DateRangePicker, + + setOptions: function(options, callback) { + + this.startDate = moment().startOf('day'); + this.endDate = moment().endOf('day'); + this.timeZone = moment().zone(); + this.minDate = false; + this.maxDate = false; + this.dateLimit = false; + + this.showDropdowns = false; + this.showWeekNumbers = false; + this.timePicker = false; + this.timePickerSeconds = false; + this.timePickerIncrement = 30; + this.timePicker12Hour = true; + this.singleDatePicker = false; + this.ranges = {}; + + this.opens = 'right'; + if (this.element.hasClass('pull-right')) + this.opens = 'left'; + + this.buttonClasses = ['btn', 'btn-small btn-sm']; + this.applyClass = 'btn-success'; + this.cancelClass = 'btn-default'; + + this.format = 'MM/DD/YYYY'; + this.separator = ' - '; + + this.locale = { + applyLabel: 'Apply', + cancelLabel: 'Cancel', + fromLabel: 'From', + toLabel: 'To', + weekLabel: 'W', + customRangeLabel: 'Custom Range', + daysOfWeek: moment.weekdaysMin(), + monthNames: moment.monthsShort(), + firstDay: moment.localeData()._week.dow + }; + + this.cb = function () { }; + + if (typeof options.format === 'string') + this.format = options.format; + + if (typeof options.separator === 'string') + this.separator = options.separator; + + if (typeof options.startDate === 'string') + this.startDate = moment(options.startDate, this.format); + + if (typeof options.endDate === 'string') + this.endDate = moment(options.endDate, this.format); + + if (typeof options.minDate === 'string') + this.minDate = moment(options.minDate, this.format); + + if (typeof options.maxDate === 'string') + this.maxDate = moment(options.maxDate, this.format); + + if (typeof options.startDate === 'object') + this.startDate = moment(options.startDate); + + if (typeof options.endDate === 'object') + this.endDate = moment(options.endDate); + + if (typeof options.minDate === 'object') + this.minDate = moment(options.minDate); + + if (typeof options.maxDate === 'object') + this.maxDate = moment(options.maxDate); + + if (typeof options.applyClass === 'string') + this.applyClass = options.applyClass; + + if (typeof options.cancelClass === 'string') + this.cancelClass = options.cancelClass; + + if (typeof options.dateLimit === 'object') + this.dateLimit = options.dateLimit; + + if (typeof options.locale === 'object') { + + if (typeof options.locale.daysOfWeek === 'object') { + // Create a copy of daysOfWeek to avoid modification of original + // options object for reusability in multiple daterangepicker instances + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); + } + + if (typeof options.locale.monthNames === 'object') { + this.locale.monthNames = options.locale.monthNames.slice(); + } + + if (typeof options.locale.firstDay === 'number') { + this.locale.firstDay = options.locale.firstDay; + } + + if (typeof options.locale.applyLabel === 'string') { + this.locale.applyLabel = options.locale.applyLabel; + } + + if (typeof options.locale.cancelLabel === 'string') { + this.locale.cancelLabel = options.locale.cancelLabel; + } + + if (typeof options.locale.fromLabel === 'string') { + this.locale.fromLabel = options.locale.fromLabel; + } + + if (typeof options.locale.toLabel === 'string') { + this.locale.toLabel = options.locale.toLabel; + } + + if (typeof options.locale.weekLabel === 'string') { + this.locale.weekLabel = options.locale.weekLabel; + } + + if (typeof options.locale.customRangeLabel === 'string') { + this.locale.customRangeLabel = options.locale.customRangeLabel; + } + } + + if (typeof options.opens === 'string') + this.opens = options.opens; + + if (typeof options.showWeekNumbers === 'boolean') { + this.showWeekNumbers = options.showWeekNumbers; + } + + if (typeof options.buttonClasses === 'string') { + this.buttonClasses = [options.buttonClasses]; + } + + if (typeof options.buttonClasses === 'object') { + this.buttonClasses = options.buttonClasses; + } + + if (typeof options.showDropdowns === 'boolean') { + this.showDropdowns = options.showDropdowns; + } + + if (typeof options.singleDatePicker === 'boolean') { + this.singleDatePicker = options.singleDatePicker; + if (this.singleDatePicker) { + this.endDate = this.startDate.clone(); + } + } + + if (typeof options.timePicker === 'boolean') { + this.timePicker = options.timePicker; + } + + if (typeof options.timePickerSeconds === 'boolean') { + this.timePickerSeconds = options.timePickerSeconds; + } + + if (typeof options.timePickerIncrement === 'number') { + this.timePickerIncrement = options.timePickerIncrement; + } + + if (typeof options.timePicker12Hour === 'boolean') { + this.timePicker12Hour = options.timePicker12Hour; + } + + // update day names order to firstDay + if (this.locale.firstDay != 0) { + var iterator = this.locale.firstDay; + while (iterator > 0) { + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); + iterator--; + } + } + + var start, end, range; + + //if no start/end dates set, check if an input element contains initial values + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { + if ($(this.element).is('input[type=text]')) { + var val = $(this.element).val(), + split = val.split(this.separator); + + start = end = null; + + if (split.length == 2) { + start = moment(split[0], this.format); + end = moment(split[1], this.format); + } else if (this.singleDatePicker && val !== "") { + start = moment(val, this.format); + end = moment(val, this.format); + } + if (start !== null && end !== null) { + this.startDate = start; + this.endDate = end; + } + } + } + + // bind the time zone used to build the calendar to either the timeZone passed in through the options or the zone of the startDate (which will be the local time zone by default) + if (typeof options.timeZone === 'string' || typeof options.timeZone === 'number') { + this.timeZone = options.timeZone; + this.startDate.zone(this.timeZone); + this.endDate.zone(this.timeZone); + } else { + this.timeZone = moment(this.startDate).zone(); + } + + if (typeof options.ranges === 'object') { + for (range in options.ranges) { + + if (typeof options.ranges[range][0] === 'string') + start = moment(options.ranges[range][0], this.format); + else + start = moment(options.ranges[range][0]); + + if (typeof options.ranges[range][1] === 'string') + end = moment(options.ranges[range][1], this.format); + else + end = moment(options.ranges[range][1]); + + // If we have a min/max date set, bound this range + // to it, but only if it would otherwise fall + // outside of the min/max. + if (this.minDate && start.isBefore(this.minDate)) + start = moment(this.minDate); + + if (this.maxDate && end.isAfter(this.maxDate)) + end = moment(this.maxDate); + + // If the end of the range is before the minimum (if min is set) OR + // the start of the range is after the max (also if set) don't display this + // range option. + if ((this.minDate && end.isBefore(this.minDate)) || (this.maxDate && start.isAfter(this.maxDate))) { + continue; + } + + this.ranges[range] = [start, end]; + } + + var list = '
      '; + for (range in this.ranges) { + list += '
    • ' + range + '
    • '; + } + list += '
    • ' + this.locale.customRangeLabel + '
    • '; + list += '
    '; + this.container.find('.ranges ul').remove(); + this.container.find('.ranges').prepend(list); + } + + if (typeof callback === 'function') { + this.cb = callback; + } + + if (!this.timePicker) { + this.startDate = this.startDate.startOf('day'); + this.endDate = this.endDate.endOf('day'); + } + + if (this.singleDatePicker) { + this.opens = 'right'; + this.container.addClass('single'); + this.container.find('.calendar.right').show(); + this.container.find('.calendar.left').hide(); + if (!this.timePicker) { + this.container.find('.ranges').hide(); + } else { + this.container.find('.ranges .daterangepicker_start_input, .ranges .daterangepicker_end_input').hide(); + } + if (!this.container.find('.calendar.right').hasClass('single')) + this.container.find('.calendar.right').addClass('single'); + } else { + this.container.removeClass('single'); + this.container.find('.calendar.right').removeClass('single'); + this.container.find('.ranges').show(); + } + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + this.oldChosenLabel = this.chosenLabel; + + this.leftCalendar = { + month: moment([this.startDate.year(), this.startDate.month(), 1, this.startDate.hour(), this.startDate.minute(), this.startDate.second()]), + calendar: [] + }; + + this.rightCalendar = { + month: moment([this.endDate.year(), this.endDate.month(), 1, this.endDate.hour(), this.endDate.minute(), this.endDate.second()]), + calendar: [] + }; + + if (this.opens == 'right' || this.opens == 'center') { + //swap calendar positions + var first = this.container.find('.calendar.first'); + var second = this.container.find('.calendar.second'); + + if (second.hasClass('single')) { + second.removeClass('single'); + first.addClass('single'); + } + + first.removeClass('left').addClass('right'); + second.removeClass('right').addClass('left'); + + if (this.singleDatePicker) { + first.show(); + second.hide(); + } + } + + if (typeof options.ranges === 'undefined' && !this.singleDatePicker) { + this.container.addClass('show-calendar'); + } + + this.container.addClass('opens' + this.opens); + + this.updateView(); + this.updateCalendars(); + + }, + + setStartDate: function(startDate) { + if (typeof startDate === 'string') + this.startDate = moment(startDate, this.format).zone(this.timeZone); + + if (typeof startDate === 'object') + this.startDate = moment(startDate); + + if (!this.timePicker) + this.startDate = this.startDate.startOf('day'); + + this.oldStartDate = this.startDate.clone(); + + this.updateView(); + this.updateCalendars(); + this.updateInputText(); + }, + + setEndDate: function(endDate) { + if (typeof endDate === 'string') + this.endDate = moment(endDate, this.format).zone(this.timeZone); + + if (typeof endDate === 'object') + this.endDate = moment(endDate); + + if (!this.timePicker) + this.endDate = this.endDate.endOf('day'); + + this.oldEndDate = this.endDate.clone(); + + this.updateView(); + this.updateCalendars(); + this.updateInputText(); + }, + + updateView: function () { + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute()); + this.updateFormInputs(); + }, + + updateFormInputs: function () { + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.format)); + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.format)); + + if (this.startDate.isSame(this.endDate) || this.startDate.isBefore(this.endDate)) { + this.container.find('button.applyBtn').removeAttr('disabled'); + } else { + this.container.find('button.applyBtn').attr('disabled', 'disabled'); + } + }, + + updateFromControl: function () { + if (!this.element.is('input')) return; + if (!this.element.val().length) return; + + var dateString = this.element.val().split(this.separator), + start = null, + end = null; + + if(dateString.length === 2) { + start = moment(dateString[0], this.format).zone(this.timeZone); + end = moment(dateString[1], this.format).zone(this.timeZone); + } + + if (this.singleDatePicker || start === null || end === null) { + start = moment(this.element.val(), this.format).zone(this.timeZone); + end = start; + } + + if (end.isBefore(start)) return; + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + this.startDate = start; + this.endDate = end; + + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.notify(); + + this.updateCalendars(); + }, + + notify: function () { + this.updateView(); + this.cb(this.startDate, this.endDate, this.chosenLabel); + }, + + move: function () { + var parentOffset = { top: 0, left: 0 }; + var parentRightEdge = $(window).width(); + if (!this.parentEl.is('body')) { + parentOffset = { + top: this.parentEl.offset().top - this.parentEl.scrollTop(), + left: this.parentEl.offset().left - this.parentEl.scrollLeft() + }; + parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; + } + + if (this.opens == 'left') { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), + left: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else if (this.opens == 'center') { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 + - this.container.outerWidth() / 2, + right: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + left: this.element.offset().left - parentOffset.left, + right: 'auto' + }); + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { + this.container.css({ + left: 'auto', + right: 0 + }); + } + } + }, + + toggle: function (e) { + if (this.element.hasClass('active')) { + this.hide(); + } else { + this.show(); + } + }, + + show: function (e) { + if (this.isShowing) return; + + this.element.addClass('active'); + this.container.show(); + this.move(); + + // Create a click proxy that is private to this instance of datepicker, for unbinding + this._outsideClickProxy = $.proxy(function (e) { this.outsideClick(e); }, this); + // Bind global datepicker mousedown for hiding and + $(document) + .on('mousedown.daterangepicker', this._outsideClickProxy) + // also support mobile devices + .on('touchend.daterangepicker', this._outsideClickProxy) + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) + // and also close when focus changes to outside the picker (eg. tabbing between controls) + .on('focusin.daterangepicker', this._outsideClickProxy); + + this.isShowing = true; + this.element.trigger('show.daterangepicker', this); + }, + + outsideClick: function (e) { + var target = $(e.target); + // if the page is clicked anywhere except within the daterangerpicker/button + // itself then call this.hide() + if ( + // ie modal dialog fix + e.type == "focusin" || + target.closest(this.element).length || + target.closest(this.container).length || + target.closest('.calendar-date').length + ) return; + this.hide(); + }, + + hide: function (e) { + if (!this.isShowing) return; + + $(document) + .off('.daterangepicker'); + + this.element.removeClass('active'); + this.container.hide(); + + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.notify(); + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + this.isShowing = false; + this.element.trigger('hide.daterangepicker', this); + }, + + enterRange: function (e) { + // mouse pointer has entered a range label + var label = e.target.innerHTML; + if (label == this.locale.customRangeLabel) { + this.updateView(); + } else { + var dates = this.ranges[label]; + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.format)); + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.format)); + } + }, + + showCalendars: function() { + this.container.addClass('show-calendar'); + this.move(); + this.element.trigger('showCalendar.daterangepicker', this); + }, + + hideCalendars: function() { + this.container.removeClass('show-calendar'); + this.element.trigger('hideCalendar.daterangepicker', this); + }, + + // when a date is typed into the start to end date textboxes + inputsChanged: function (e) { + var el = $(e.target); + var date = moment(el.val(), this.format); + if (!date.isValid()) return; + + var startDate, endDate; + if (el.attr('name') === 'daterangepicker_start') { + startDate = date; + endDate = this.endDate; + } else { + startDate = this.startDate; + endDate = date; + } + this.setCustomDates(startDate, endDate); + }, + + inputsKeydown: function(e) { + if (e.keyCode === 13) { + this.inputsChanged(e); + this.notify(); + } + }, + + updateInputText: function() { + if (this.element.is('input') && !this.singleDatePicker) { + this.element.val(this.startDate.format(this.format) + this.separator + this.endDate.format(this.format)); + } else if (this.element.is('input')) { + this.element.val(this.endDate.format(this.format)); + } + }, + + clickRange: function (e) { + var label = e.target.innerHTML; + this.chosenLabel = label; + if (label == this.locale.customRangeLabel) { + this.showCalendars(); + } else { + var dates = this.ranges[label]; + + this.startDate = dates[0]; + this.endDate = dates[1]; + + if (!this.timePicker) { + this.startDate.startOf('day'); + this.endDate.endOf('day'); + } + + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute()); + this.updateCalendars(); + + this.updateInputText(); + + this.hideCalendars(); + this.hide(); + this.element.trigger('apply.daterangepicker', this); + } + }, + + clickPrev: function (e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.subtract(1, 'month'); + } else { + this.rightCalendar.month.subtract(1, 'month'); + } + this.updateCalendars(); + }, + + clickNext: function (e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.add(1, 'month'); + } else { + this.rightCalendar.month.add(1, 'month'); + } + this.updateCalendars(); + }, + + hoverDate: function (e) { + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + + if (cal.hasClass('left')) { + this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].format(this.format)); + } else { + this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].format(this.format)); + } + }, + + setCustomDates: function(startDate, endDate) { + this.chosenLabel = this.locale.customRangeLabel; + if (startDate.isAfter(endDate)) { + var difference = this.endDate.diff(this.startDate); + endDate = moment(startDate).add(difference, 'ms'); + if (this.maxDate && endDate.isAfter(this.maxDate)) { + endDate = this.maxDate; + } + } + this.startDate = startDate; + this.endDate = endDate; + + this.updateView(); + this.updateCalendars(); + }, + + clickDate: function (e) { + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + + var startDate, endDate; + if (cal.hasClass('left')) { + startDate = this.leftCalendar.calendar[row][col]; + endDate = this.endDate; + if (typeof this.dateLimit === 'object') { + var maxDate = moment(startDate).add(this.dateLimit).startOf('day'); + if (endDate.isAfter(maxDate)) { + endDate = maxDate; + } + } + } else { + startDate = this.startDate; + endDate = this.rightCalendar.calendar[row][col]; + if (typeof this.dateLimit === 'object') { + var minDate = moment(endDate).subtract(this.dateLimit).startOf('day'); + if (startDate.isBefore(minDate)) { + startDate = minDate; + } + } + } + + if (this.singleDatePicker && cal.hasClass('left')) { + endDate = startDate.clone(); + } else if (this.singleDatePicker && cal.hasClass('right')) { + startDate = endDate.clone(); + } + + cal.find('td').removeClass('active'); + + $(e.target).addClass('active'); + + this.setCustomDates(startDate, endDate); + + if (!this.timePicker) + endDate.endOf('day'); + + if (this.singleDatePicker && !this.timePicker) + this.clickApply(); + }, + + clickApply: function (e) { + this.updateInputText(); + this.hide(); + this.element.trigger('apply.daterangepicker', this); + }, + + clickCancel: function (e) { + this.startDate = this.oldStartDate; + this.endDate = this.oldEndDate; + this.chosenLabel = this.oldChosenLabel; + this.updateView(); + this.updateCalendars(); + this.hide(); + this.element.trigger('cancel.daterangepicker', this); + }, + + updateMonthYear: function (e) { + var isLeft = $(e.target).closest('.calendar').hasClass('left'), + leftOrRight = isLeft ? 'left' : 'right', + cal = this.container.find('.calendar.'+leftOrRight); + + // Month must be Number for new moment versions + var month = parseInt(cal.find('.monthselect').val(), 10); + var year = cal.find('.yearselect').val(); + + this[leftOrRight+'Calendar'].month.month(month).year(year); + this.updateCalendars(); + }, + + updateTime: function(e) { + + var cal = $(e.target).closest('.calendar'), + isLeft = cal.hasClass('left'); + + var hour = parseInt(cal.find('.hourselect').val(), 10); + var minute = parseInt(cal.find('.minuteselect').val(), 10); + var second = 0; + + if (this.timePickerSeconds) { + second = parseInt(cal.find('.secondselect').val(), 10); + } + + if (this.timePicker12Hour) { + var ampm = cal.find('.ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + + if (isLeft) { + var start = this.startDate.clone(); + start.hour(hour); + start.minute(minute); + start.second(second); + this.startDate = start; + this.leftCalendar.month.hour(hour).minute(minute).second(second); + if (this.singleDatePicker) + this.endDate = start.clone(); + } else { + var end = this.endDate.clone(); + end.hour(hour); + end.minute(minute); + end.second(second); + this.endDate = end; + if (this.singleDatePicker) + this.startDate = end.clone(); + this.rightCalendar.month.hour(hour).minute(minute).second(second); + } + + this.updateView(); + this.updateCalendars(); + }, + + updateCalendars: function () { + this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.month(), this.leftCalendar.month.year(), this.leftCalendar.month.hour(), this.leftCalendar.month.minute(), this.leftCalendar.month.second(), 'left'); + this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.month(), this.rightCalendar.month.year(), this.rightCalendar.month.hour(), this.rightCalendar.month.minute(), this.rightCalendar.month.second(), 'right'); + this.container.find('.calendar.left').empty().html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.maxDate, 'left')); + this.container.find('.calendar.right').empty().html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.singleDatePicker ? this.minDate : this.startDate, this.maxDate, 'right')); + + this.container.find('.ranges li').removeClass('active'); + var customRange = true; + var i = 0; + for (var range in this.ranges) { + if (this.timePicker) { + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')') + .addClass('active').html(); + } + } else { + //ignore times when comparing dates if time picker is not enabled + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')') + .addClass('active').html(); + } + } + i++; + } + if (customRange) { + this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); + this.showCalendars(); + } + }, + + buildCalendar: function (month, year, hour, minute, second, side) { + var daysInMonth = moment([year, month]).daysInMonth(); + var firstDay = moment([year, month, 1]); + var lastDay = moment([year, month, daysInMonth]); + var lastMonth = moment(firstDay).subtract(1, 'month').month(); + var lastYear = moment(firstDay).subtract(1, 'month').year(); + + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); + + var dayOfWeek = firstDay.day(); + + var i; + + //initialize a 6 rows x 7 columns array for the calendar + var calendar = []; + calendar.firstDay = firstDay; + calendar.lastDay = lastDay; + + for (i = 0; i < 6; i++) { + calendar[i] = []; + } + + //populate the calendar with date objects + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; + if (startDay > daysInLastMonth) + startDay -= 7; + + if (dayOfWeek == this.locale.firstDay) + startDay = daysInLastMonth - 6; + + var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]).zone(this.timeZone); + + var col, row; + for (i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { + if (i > 0 && col % 7 === 0) { + col = 0; + row++; + } + calendar[row][col] = curDate.clone().hour(hour); + curDate.hour(12); + + if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { + calendar[row][col] = this.minDate.clone(); + } + + if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { + calendar[row][col] = this.maxDate.clone(); + } + + } + + return calendar; + }, + + renderDropdowns: function (selected, minDate, maxDate) { + var currentMonth = selected.month(); + var currentYear = selected.year(); + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); + var minYear = (minDate && minDate.year()) || (currentYear - 50); + + var monthHtml = '"; + + var yearHtml = ''; + + return monthHtml + yearHtml; + }, + + renderCalendar: function (calendar, selected, minDate, maxDate, side) { + + var html = '
    '; + html += ''; + html += ''; + html += ''; + + // add empty cell for week number + if (this.showWeekNumbers) + html += ''; + + if (!minDate || minDate.isBefore(calendar.firstDay)) { + html += ''; + } else { + html += ''; + } + + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + + if (this.showDropdowns) { + dateHtml = this.renderDropdowns(calendar[1][1], minDate, maxDate); + } + + html += ''; + if (!maxDate || maxDate.isAfter(calendar.lastDay)) { + html += ''; + } else { + html += ''; + } + + html += ''; + html += ''; + + // add week number label + if (this.showWeekNumbers) + html += ''; + + $.each(this.locale.daysOfWeek, function (index, dayOfWeek) { + html += ''; + }); + + html += ''; + html += ''; + html += ''; + + for (var row = 0; row < 6; row++) { + html += ''; + + // add week number + if (this.showWeekNumbers) + html += ''; + + for (var col = 0; col < 7; col++) { + var cname = 'available '; + cname += (calendar[row][col].month() == calendar[1][1].month()) ? '' : 'off'; + + if ((minDate && calendar[row][col].isBefore(minDate, 'day')) || (maxDate && calendar[row][col].isAfter(maxDate, 'day'))) { + cname = ' off disabled '; + } else if (calendar[row][col].format('YYYY-MM-DD') == selected.format('YYYY-MM-DD')) { + cname += ' active '; + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) { + cname += ' start-date '; + } + if (calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) { + cname += ' end-date '; + } + } else if (calendar[row][col] >= this.startDate && calendar[row][col] <= this.endDate) { + cname += ' in-range '; + if (calendar[row][col].isSame(this.startDate)) { cname += ' start-date '; } + if (calendar[row][col].isSame(this.endDate)) { cname += ' end-date '; } + } + + var title = 'r' + row + 'c' + col; + html += ''; + } + html += ''; + } + + html += ''; + html += '
    ' + dateHtml + '
    ' + this.locale.weekLabel + '' + dayOfWeek + '
    ' + calendar[row][0].week() + '' + calendar[row][col].date() + '
    '; + html += '
    '; + + var i; + if (this.timePicker) { + + html += '
    '; + html += ' : '; + + html += ' '; + + if (this.timePickerSeconds) { + html += ': '; + } + + if (this.timePicker12Hour) { + html += ''; + } + + html += '
    '; + + } + + return html; + + }, + + remove: function() { + + this.container.remove(); + this.element.off('.daterangepicker'); + this.element.removeData('daterangepicker'); + + } + + }; + + $.fn.daterangepicker = function (options, cb) { + this.each(function () { + var el = $(this); + if (el.data('daterangepicker')) + el.data('daterangepicker').remove(); + el.data('daterangepicker', new DateRangePicker(el, options, cb)); + }); + return this; + }; + +})); diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js new file mode 100644 index 00000000..6d94b173 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.js @@ -0,0 +1,2808 @@ +//! moment.js +//! version : 2.8.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +(function (undefined) { + /************************************ + Constants + ************************************/ + + var moment, + VERSION = '2.8.1', + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + i, + + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + + // internal storage for locale config files + locales = {}, + + // extra moment internal properties (plugins register props here) + momentProperties = [], + + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), + + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + parseTokenOrdinal = /\d{1,2}/, + + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], + + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + + // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, + + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, + + // format function strings + formatFunctions = {}, + + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, + + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, + + deprecations = {}, + + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } + + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } + + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn("Deprecation warning: " + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } + + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } + + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + + + /************************************ + Constructors + ************************************/ + + function Locale() { + } + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + } + + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = moment.localeData(); + + this._bubble(); + } + + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (b.hasOwnProperty(i)) { + a[i] = b[i]; + } + } + + if (b.hasOwnProperty('toString')) { + a.toString = b.toString; + } + + if (b.hasOwnProperty('valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; + } + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period)."); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } + + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } + + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (inputObject.hasOwnProperty(prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeList(field) { + var count, setter; + + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } + + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } + + return value; + } + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } + } + + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; + } + } + return m._isValid; + } + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } + + /************************************ + Locale + ************************************/ + + + extend(Locale.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, + + _months : '1_2_3_4_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, + + _monthsShort : '1_2_3_4_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, + + monthsParse : function (monthName) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment.utc([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; + } + } + }, + + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, + + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, + + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + + weekdaysParse : function (weekdayName) { + var i, mom, regex; + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, + + _longDateFormat : { + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, + + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, + + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, + + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, + + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + + preparse : function (string) { + return string; + }, + + postformat : function (string) { + return string; + }, + + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, + + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); + + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return parseTokenOrdinal; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } + + function timezoneMinutesFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? -minutes : minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt(input, 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } + + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = config._locale.isPM(input); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + case 'h' : // fall through to hh + case 'hh' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = timezoneMinutesFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual zone can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); + } + } + + function dateFromObject(config) { + var normalizedInput; + + if (config._d) { + return; + } + + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; + + dateFromConfig(config); + } + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } + + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } + + config._a = []; + config._pf.empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + + // handle am pm + if (config._isPm && config._a[HOUR] < 12) { + config._a[HOUR] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[HOUR] === 12) { + config._a[HOUR] = 0; + } + + dateFromConfig(config); + checkOverflow(config); + } + + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be "T" or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } + + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = input.slice(0); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } + + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } + + /************************************ + Relative Time + ************************************/ + + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } + + + /************************************ + Week of Year + ************************************/ + + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } + + /************************************ + Top Level Functions + ************************************/ + + function makeMoment(config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || moment.localeData(config._l); + + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } + + return new Moment(config); + } + + moment = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === "boolean") { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); + + return makeMoment(c); + }; + + moment.suppressDeprecationWarnings = false; + + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i); + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + moment.min = function () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + }; + + moment.max = function () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + }; + + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === "boolean") { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return makeMoment(c).utc(); + }; + + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; + + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (moment.isDuration(input) && input.hasOwnProperty('_locale')) { + ret._locale = input._locale; + } + + return ret; + }; + + // version number + moment.version = VERSION; + + // default format + moment.defaultFormat = isoFormat; + + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; + + moment.lang = deprecate( + "moment.lang is deprecated. Use moment.locale instead.", + function (key, value) { + return moment.locale(key, value); + } + ); + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== "undefined") { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } + } + + return moment._locale._abbr; + }; + + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + + // backwards compat for now: also set the locale + moment.locale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; + + moment.langData = deprecate( + "moment.langData is deprecated. Use moment.localeData instead.", + function (key) { + return moment.localeData(key); + } + ); + + // returns locale data + moment.localeData = function (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return moment._locale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && obj.hasOwnProperty('_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } + + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; + + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + }; + + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; + + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + /************************************ + Moment Prototype + ************************************/ + + + extend(moment.fn = Moment.prototype, { + + clone : function () { + return moment(this); + }, + + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, + + unix : function () { + return Math.floor(+this / 1000); + }, + + toString : function () { + return this.clone().locale('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + }, + + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, + + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, + + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + + isValid : function () { + return isValid(this); + }, + + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + + return false; + }, + + parsingFlags : function () { + return extend({}, this._pf); + }, + + invalidAt: function () { + return this._pf.overflow; + }, + + utc : function (keepLocalTime) { + return this.zone(0, keepLocalTime); + }, + + local : function (keepLocalTime) { + if (this._isUTC) { + this.zone(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.add(this._d.getTimezoneOffset(), 'm'); + } + } + return this; + }, + + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, + + add : createAdder(1, 'add'), + + subtract : createAdder(-1, 'subtract'), + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + output += ((this - moment(this).startOf('month')) - + (that - moment(that).startOf('month'))) / diff; + // same as above but with zones, to negate all dst + output -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this)); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, + + month : makeAccessor('Month', true), + + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, + + isAfter: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) > +moment(input).startOf(units); + }, + + isBefore: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) < +moment(input).startOf(units); + }, + + isSame: function (input, units) { + units = units || 'ms'; + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + }, + + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._d.getTimezoneOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.subtract(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(offset - input, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + } else { + return this._isUTC ? offset : this._d.getTimezoneOffset(); + } + return this; + }, + + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, + + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, + + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } + + return (this.zone() - input) % 60 === 0; + }, + + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, + + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, + + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, + + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, + + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, + + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + if (key === undefined) { + return this._locale._abbr; + } else { + this._locale = moment.localeData(key); + return this; + } + }, + + lang : deprecate( + "moment().lang() is deprecated. Use moment().localeData() instead.", + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + this._locale = moment.localeData(key); + return this; + } + } + ), + + localeData : function () { + return this._locale; + } + }); + + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } + + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + /************************************ + Duration Prototype + ************************************/ + + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; + + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + }, + + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + + return this; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + + this._bubble(); + + return this; + }, + + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; + + this._bubble(); + + return this; + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, + + as : function (units) { + var days, months; + units = normalizeUnits(units); + + days = this._days + this._milliseconds / 864e5; + if (units === 'month' || units === 'year') { + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + days += yearsToDays(this._months / 12); + switch (units) { + case 'week': return days / 7; + case 'day': return days; + case 'hour': return days * 24; + case 'minute': return days * 24 * 60; + case 'second': return days * 24 * 60 * 60; + case 'millisecond': return days * 24 * 60 * 60 * 1000; + default: throw new Error('Unknown unit ' + units); + } + } + }, + + lang : moment.fn.lang, + locale : moment.fn.locale, + + toIsoString : deprecate( + "toIsoString() is deprecated. Please use toISOString() instead " + + "(notice the capitals)", + function () { + return this.toISOString(); + } + ), + + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; + } + }); + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (unitMillisecondFactors.hasOwnProperty(i)) { + makeDurationGetter(i.toLowerCase()); + } + } + + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; + + /************************************ + Default Locale + ************************************/ + + + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (typeof define === 'function' && define.amd) { + define('moment', function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }); + makeGlobal(true); + } else { + makeGlobal(); + } +}).call(this); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js new file mode 100644 index 00000000..197b5488 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-daterangepicker/moment.min.js @@ -0,0 +1,6 @@ +//! moment.js +//! version : 2.8.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(a){rb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function e(a,b){var c=!0;return l(function(){return c&&(d(a),c=!1),b.apply(this,arguments)},b)}function f(a,b){nc[a]||(d(b),nc[a]=!0)}function g(a,b){return function(c){return o(a.call(this,c),b)}}function h(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function i(){}function j(a,b){b!==!1&&E(a),m(this,a),this._d=new Date(+a._d)}function k(a){var b=x(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=rb.localeData(),this._bubble()}function l(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Fb.length>0)for(c in Fb)d=Fb[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(a){return 0>a?Math.ceil(a):Math.floor(a)}function o(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.lengthd;d++)(c&&a[d]!==b[d]||!c&&z(a[d])!==z(b[d]))&&g++;return g+f}function w(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=gc[a]||hc[b]||b}return a}function x(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=w(c),b&&(d[b]=a[c]));return d}function y(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}rb[b]=function(e,f){var g,h,i=rb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=rb().utc().set(d,a);return i.call(rb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function z(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function A(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function B(a,b,c){return fb(rb([a,11,31+b-c]),b,c).week}function C(a){return D(a)?366:365}function D(a){return a%4===0&&a%100!==0||a%400===0}function E(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[yb]<0||a._a[yb]>11?yb:a._a[zb]<1||a._a[zb]>A(a._a[xb],a._a[yb])?zb:a._a[Ab]<0||a._a[Ab]>23?Ab:a._a[Bb]<0||a._a[Bb]>59?Bb:a._a[Cb]<0||a._a[Cb]>59?Cb:a._a[Db]<0||a._a[Db]>999?Db:-1,a._pf._overflowDayOfYear&&(xb>b||b>zb)&&(b=zb),a._pf.overflow=b)}function F(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function G(a){return a?a.toLowerCase().replace("_","-"):a}function H(a){for(var b,c,d,e,f=0;f0;){if(d=I(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function I(a){var b=null;if(!Eb[a]&&Gb)try{b=rb.locale(),require("./locale/"+a),rb.locale(b)}catch(c){}return Eb[a]}function J(a,b){return b._isUTC?rb(a).zone(b._offset||0):rb(a).local()}function K(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function L(a){var b,c,d=a.match(Kb);for(b=0,c=d.length;c>b;b++)d[b]=mc[d[b]]?mc[d[b]]:K(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function M(a,b){return a.isValid()?(b=N(b,a.localeData()),ic[b]||(ic[b]=L(b)),ic[b](a)):a.localeData().invalidDate()}function N(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Lb.lastIndex=0;d>=0&&Lb.test(a);)a=a.replace(Lb,c),Lb.lastIndex=0,d-=1;return a}function O(a,b){var c,d=b._strict;switch(a){case"Q":return Wb;case"DDDD":return Yb;case"YYYY":case"GGGG":case"gggg":return d?Zb:Ob;case"Y":case"G":case"g":return _b;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?$b:Pb;case"S":if(d)return Wb;case"SS":if(d)return Xb;case"SSS":if(d)return Yb;case"DDD":return Nb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Rb;case"a":case"A":return b._locale._meridiemParse;case"X":return Ub;case"Z":case"ZZ":return Sb;case"T":return Tb;case"SSSS":return Qb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Xb:Mb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Mb;case"Do":return Vb;default:return c=new RegExp(X(W(a.replace("\\","")),"i"))}}function P(a){a=a||"";var b=a.match(Sb)||[],c=b[b.length-1]||[],d=(c+"").match(ec)||["-",0,0],e=+(60*d[1])+z(d[2]);return"+"===d[0]?-e:e}function Q(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[yb]=3*(z(b)-1));break;case"M":case"MM":null!=b&&(e[yb]=z(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b),null!=d?e[yb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[zb]=z(b));break;case"Do":null!=b&&(e[zb]=z(parseInt(b,10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=z(b));break;case"YY":e[xb]=rb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[xb]=z(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"H":case"HH":case"h":case"hh":e[Ab]=z(b);break;case"m":case"mm":e[Bb]=z(b);break;case"s":case"ss":e[Cb]=z(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Db]=z(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=P(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=z(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=rb.parseTwoDigitYear(b)}}function R(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[xb],fb(rb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[xb],fb(rb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=gb(d,e,f,h,g),a._a[xb]=i.year,a._dayOfYear=i.dayOfYear}function S(a){var c,d,e,f,g=[];if(!a._d){for(e=U(a),a._w&&null==a._a[zb]&&null==a._a[yb]&&R(a),a._dayOfYear&&(f=b(a._a[xb],e[xb]),a._dayOfYear>C(f)&&(a._pf._overflowDayOfYear=!0),d=bb(f,0,a._dayOfYear),a._a[yb]=d.getUTCMonth(),a._a[zb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];a._d=(a._useUTC?bb:ab).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm)}}function T(a){var b;a._d||(b=x(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],S(a))}function U(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function V(a){if(a._f===rb.ISO_8601)return void Z(a);a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=""+a._i,h=g.length,i=0;for(d=N(a._f,a._locale).match(Kb)||[],b=0;b0&&a._pf.unusedInput.push(f),g=g.slice(g.indexOf(c)+c.length),i+=c.length),mc[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),Q(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=h-i,g.length>0&&a._pf.unusedInput.push(g),a._isPm&&a._a[Ab]<12&&(a._a[Ab]+=12),a._isPm===!1&&12===a._a[Ab]&&(a._a[Ab]=0),S(a),E(a)}function W(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function X(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Y(a){var b,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;fg)&&(e=g,d=b));l(a,d||b)}function Z(a){var b,c,d=a._i,e=ac.exec(d);if(e){for(a._pf.iso=!0,b=0,c=cc.length;c>b;b++)if(cc[b][1].exec(d)){a._f=cc[b][0]+(e[6]||" ");break}for(b=0,c=dc.length;c>b;b++)if(dc[b][1].exec(d)){a._f+=dc[b][0];break}d.match(Sb)&&(a._f+="Z"),V(a)}else a._isValid=!1}function $(a){Z(a),a._isValid===!1&&(delete a._isValid,rb.createFromInputFallback(a))}function _(b){var c,d=b._i;d===a?b._d=new Date:u(d)?b._d=new Date(+d):null!==(c=Hb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?$(b):t(d)?(b._a=d.slice(0),S(b)):"object"==typeof d?T(b):"number"==typeof d?b._d=new Date(d):rb.createFromInputFallback(b)}function ab(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function bb(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function cb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function db(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function eb(a,b,c){var d=rb.duration(a).abs(),e=wb(d.as("s")),f=wb(d.as("m")),g=wb(d.as("h")),h=wb(d.as("d")),i=wb(d.as("M")),j=wb(d.as("y")),k=e0,k[4]=c,db.apply({},k)}function fb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=rb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function gb(a,b,c,d,e){var f,g,h=bb(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:C(a-1)+g}}function hb(b){var c=b._i,d=b._f;return b._locale=b._locale||rb.localeData(b._l),null===c||d===a&&""===c?rb.invalid({nullInput:!0}):("string"==typeof c&&(b._i=c=b._locale.preparse(c)),rb.isMoment(c)?new j(c,!0):(d?t(d)?Y(b):V(b):_(b),new j(b)))}function ib(a,b){var c,d;if(1===b.length&&t(b[0])&&(b=b[0]),!b.length)return rb();for(c=b[0],d=1;d=0?"+":"-";return b+o(Math.abs(a),6)},gg:function(){return o(this.weekYear()%100,2)},gggg:function(){return o(this.weekYear(),4)},ggggg:function(){return o(this.weekYear(),5)},GG:function(){return o(this.isoWeekYear()%100,2)},GGGG:function(){return o(this.isoWeekYear(),4)},GGGGG:function(){return o(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return z(this.milliseconds()/100)},SS:function(){return o(z(this.milliseconds()/10),2)},SSS:function(){return o(this.milliseconds(),3)},SSSS:function(){return o(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+":"+o(z(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+o(z(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},nc={},oc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];kc.length;)tb=kc.pop(),mc[tb+"o"]=h(mc[tb],tb);for(;lc.length;)tb=lc.pop(),mc[tb+tb]=g(mc[tb],2);mc.DDDD=g(mc.DDD,3),l(i.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=rb.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=rb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return fb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),rb=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=c(),hb(g)},rb.suppressDeprecationWarnings=!1,rb.createFromInputFallback=e("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i)}),rb.min=function(){var a=[].slice.call(arguments,0);return ib("isBefore",a)},rb.max=function(){var a=[].slice.call(arguments,0);return ib("isAfter",a)},rb.utc=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=d,g._strict=f,g._pf=c(),hb(g).utc()},rb.unix=function(a){return rb(1e3*a)},rb.duration=function(a,b){var c,d,e,f,g=a,h=null;return rb.isDuration(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=Ib.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:z(h[zb])*c,h:z(h[Ab])*c,m:z(h[Bb])*c,s:z(h[Cb])*c,ms:z(h[Db])*c}):(h=Jb.exec(a))?(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},g={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}):"object"==typeof g&&("from"in g||"to"in g)&&(f=q(rb(g.from),rb(g.to)),g={},g.ms=f.milliseconds,g.M=f.months),d=new k(g),rb.isDuration(a)&&a.hasOwnProperty("_locale")&&(d._locale=a._locale),d},rb.version=ub,rb.defaultFormat=bc,rb.ISO_8601=function(){},rb.momentProperties=Fb,rb.updateOffset=function(){},rb.relativeTimeThreshold=function(b,c){return jc[b]===a?!1:c===a?jc[b]:(jc[b]=c,!0)},rb.lang=e("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return rb.locale(a,b)}),rb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?rb.defineLocale(a,b):rb.localeData(a),c&&(rb.duration._locale=rb._locale=c)),rb._locale._abbr},rb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Eb[a]||(Eb[a]=new i),Eb[a].set(b),rb.locale(a),Eb[a]):(delete Eb[a],null)},rb.langData=e("moment.langData is deprecated. Use moment.localeData instead.",function(a){return rb.localeData(a)}),rb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return rb._locale;if(!t(a)){if(b=I(a))return b;a=[a]}return H(a)},rb.isMoment=function(a){return a instanceof j||null!=a&&a.hasOwnProperty("_isAMomentObject")},rb.isDuration=function(a){return a instanceof k};for(tb=oc.length-1;tb>=0;--tb)y(oc[tb]);rb.normalizeUnits=function(a){return w(a)},rb.invalid=function(a){var b=rb.utc(0/0);return null!=a?l(b._pf,a):b._pf.userInvalidated=!0,b},rb.parseZone=function(){return rb.apply(null,arguments).parseZone()},rb.parseTwoDigitYear=function(a){return z(a)+(z(a)>68?1900:2e3)},l(rb.fn=j.prototype,{clone:function(){return rb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=rb(this).utc();return 00:!1},parsingFlags:function(){return l({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._d.getTimezoneOffset(),"m")),this},format:function(a){var b=M(this,a||rb.defaultFormat);return this.localeData().postformat(b)},add:r(1,"add"),subtract:r(-1,"subtract"),diff:function(a,b,c){var d,e,f=J(a,this),g=6e4*(this.zone()-f.zone());return b=w(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-rb(this).startOf("month")-(f-rb(f).startOf("month")))/d,e-=6e4*(this.zone()-rb(this).startOf("month").zone()-(f.zone()-rb(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:n(e)},from:function(a,b){return rb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(rb(),a)},calendar:function(a){var b=a||rb(),c=J(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this))},isLeapYear:function(){return D(this.year())},isDST:function(){return this.zone()+rb(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+rb(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+J(a,this).startOf(b)},min:e("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),this>a?this:a}),max:e("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._d.getTimezoneOffset():("string"==typeof a&&(a=P(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._d.getTimezoneOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?s(this,rb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,rb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?rb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return A(this.year(),this.month())},dayOfYear:function(a){var b=wb((rb(this).startOf("day")-rb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=fb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=fb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=fb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return B(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return B(this.year(),a.dow,a.doy)},get:function(a){return a=w(a),this[a]()},set:function(a,b){return a=w(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){return b===a?this._locale._abbr:(this._locale=rb.localeData(b),this)},lang:e("moment().lang() is deprecated. Use moment().localeData() instead.",function(b){return b===a?this.localeData():(this._locale=rb.localeData(b),this)}),localeData:function(){return this._locale}}),rb.fn.millisecond=rb.fn.milliseconds=mb("Milliseconds",!1),rb.fn.second=rb.fn.seconds=mb("Seconds",!1),rb.fn.minute=rb.fn.minutes=mb("Minutes",!1),rb.fn.hour=rb.fn.hours=mb("Hours",!0),rb.fn.date=mb("Date",!0),rb.fn.dates=e("dates accessor is deprecated. Use date instead.",mb("Date",!0)),rb.fn.year=mb("FullYear",!0),rb.fn.years=e("years accessor is deprecated. Use year instead.",mb("FullYear",!0)),rb.fn.days=rb.fn.day,rb.fn.months=rb.fn.month,rb.fn.weeks=rb.fn.week,rb.fn.isoWeeks=rb.fn.isoWeek,rb.fn.quarters=rb.fn.quarter,rb.fn.toJSON=rb.fn.toISOString,l(rb.duration.fn=k.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=n(d/1e3),g.seconds=a%60,b=n(a/60),g.minutes=b%60,c=n(b/60),g.hours=c%24,e+=n(c/24),h=n(nb(e)),e-=n(ob(h)),f+=n(e/30),e%=30,h+=n(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return n(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*z(this._months/12)},humanize:function(a){var b=eb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=rb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=rb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=w(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=w(a),b=this._days+this._milliseconds/864e5,"month"===a||"year"===a)return c=this._months+12*nb(b),"month"===a?c:c/12;switch(b+=ob(this._months/12),a){case"week":return b/7;case"day":return b;case"hour":return 24*b;case"minute":return 24*b*60;case"second":return 24*b*60*60;case"millisecond":return 24*b*60*60*1e3;default:throw new Error("Unknown unit "+a)}},lang:rb.fn.lang,locale:rb.fn.locale,toIsoString:e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}});for(tb in fc)fc.hasOwnProperty(tb)&&pb(tb.toLowerCase());rb.duration.fn.asMilliseconds=function(){return this.as("ms")},rb.duration.fn.asSeconds=function(){return this.as("s")},rb.duration.fn.asMinutes=function(){return this.as("m")},rb.duration.fn.asHours=function(){return this.as("h")},rb.duration.fn.asDays=function(){return this.as("d")},rb.duration.fn.asWeeks=function(){return this.as("weeks")},rb.duration.fn.asMonths=function(){return this.as("M")},rb.duration.fn.asYears=function(){return this.as("y")},rb.locale("en",{ordinal:function(a){var b=a%10,c=1===z(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Gb?module.exports=rb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(vb.moment=sb),rb}),qb(!0)):qb()}).call(this); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css new file mode 100644 index 00000000..58c9f455 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/css/fileinput.min.css @@ -0,0 +1,11 @@ +/*! + * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015 + * @package bootstrap-fileinput + * @version 4.2.3 + * + * File input styling for Bootstrap 3.0 + * Built for Yii Framework 2.0 + * Author: Kartik Visweswaran + * Year: 2015 + * For more Yii related demos visit http://demos.krajee.com + */.file-input{overflow-x:auto}.file-loading{top:0;right:0;width:25px;height:25px;font-size:999px;text-align:right;color:#fff;background:transparent url(../img/loading.gif) top left no-repeat;border:none}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;filter:alpha(opacity=0);opacity:0;background:none repeat scroll 0 0 transparent;cursor:inherit;display:block}.file-caption .glyphicon{display:inline-block;min-width:18px;margin-top:2px}.file-caption-name{display:inline-block;overflow:hidden;max-height:20px;padding-right:10px;word-break:break-all}.file-caption-ellipsis{position:absolute;right:10px;margin-top:-6px;font-size:1.2em;display:none;font-weight:700;cursor:default}.kv-has-ellipsis .file-caption-ellipsis{display:inline}.kv-has-ellipsis{padding-right:17px}.kv-search-container .kv-search-clear{position:absolute;padding:10px;right:0}.file-error-message{background-color:#f2dede;color:#a94442;text-align:center;border-radius:5px;padding:5px}.file-error-message pre,.file-error-message ul{margin:5px 0;text-align:left}.file-caption-disabled{background-color:#EEE;cursor:not-allowed;opacity:1}.file-input .btn .disabled,.file-input .btn[disabled]{cursor:not-allowed}.file-preview{border-radius:5px;border:1px solid #ddd;padding:5px;width:100%;margin-bottom:5px}.file-preview-frame{display:table;margin:8px;height:100px;border:1px solid #ddd;box-shadow:1px 1px 5px 0 #a2958a;padding:6px;float:left;text-align:center;vertical-align:middle}.file-preview-frame:hover{box-shadow:3px 3px 5px 0 #333}.file-preview-image{height:160px;vertical-align:text-center}.file-preview-text{width:160px;color:#428bca;font-size:11px;text-align:center}.file-preview-other{padding-top:20px;text-align:center}.file-preview-other i{font-size:2.4em}.file-other-error{width:100%;padding-top:30px;text-align:right}.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-new .close,.file-input-new .file-preview,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .glyphicon-file{display:none}.loading{background:transparent url(../img/loading.gif) no-repeat scroll center center content-box!important}.wrap-indicator{font-weight:700;color:#245269;cursor:pointer}.file-actions{text-align:left}.file-footer-buttons{float:right}.file-thumbnail-footer .file-caption-name{padding-top:4px;font-size:11px;color:#777}.file-upload-indicator{padding-top:2px;cursor:default}.file-upload-indicator:hover{font-size:1.2em;font-weight:700;padding-top:0}.file-drop-zone{border:1px dashed #aaa;border-radius:4px;height:100%;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone-title{color:#aaa;font-size:30px;padding:20px 10px}.highlighted{border:2px dashed #999!important;background-color:#f0f0f0}.file-uploading{background-image:url(../img/loading-sm.gif);background-position:center bottom 10px;background-repeat:no-repeat;opacity:.6}.file-icon-large{font-size:1.2em} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif new file mode 100644 index 00000000..44e3b7a0 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading-sm.gif differ diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading.gif b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading.gif new file mode 100644 index 00000000..0ea146c0 Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/img/loading.gif differ diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput.min.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput.min.js new file mode 100644 index 00000000..efe8633c --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput.min.js @@ -0,0 +1,19 @@ +/*! + * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015 + * @version 4.2.3 + * + * File input styled for Bootstrap 3.0 that utilizes HTML5 File Input's advanced + * features including the FileReader API. + * + * The plugin drastically enhances the HTML file input to preview multiple files on the client before + * upload. In addition it provides the ability to preview content of images, text, videos, audio, html, + * flash and other objects. It also offers the ability to upload and delete files using AJAX, and add + * files in batches (i.e. preview, append, or remove before upload). + * + * Author: Kartik Visweswaran + * Copyright: 2015, Kartik Visweswaran, Krajee.com + * For more JQuery plugins visit http://plugins.krajee.com + * For more Yii related demos visit http://demos.krajee.com + */!function(e){"use strict";e.fn.fileinputLocales={},String.prototype.repl=function(e,i){return this.split(e).join(i)};var i=function(e){var i,t=document.createElement("div");return t.innerHTML="",i=1===t.getElementsByTagName("i").length,document.body.appendChild(t),t.parentNode.removeChild(t),i},t={data:{},init:function(e){var i=e.initialPreview,a=e.id;i.length>0&&!z(i)&&(i=i.split(e.initialPreviewDelimiter)),t.data[a]={content:i,config:e.initialPreviewConfig,tags:e.initialPreviewThumbTags,delimiter:e.initialPreviewDelimiter,template:e.previewGenericTemplate,msg:function(i){return e.getMsgSelected(i)},initId:e.previewInitId,footer:e.getLayoutTemplate("footer"),isDelete:e.initialPreviewShowDelete,caption:e.initialCaption,actions:function(i,t,a,n,r){return e.renderFileActions(i,t,a,n,r)}}},fetch:function(e){return t.data[e].content.filter(function(e){return null!==e})},count:function(e,i){return t.data[e]&&t.data[e].content?i?t.data[e].content.length:t.fetch(e).length:0},get:function(i,a,n){var r,l,o="init_"+a,s=t.data[i],d=s.config[a],c=s.initId+"-"+o,p=" file-preview-initial";return n=void 0===n?!0:n,null===s.content[a]?"":(R(d)||R(d.frameClass)||(p+=" "+d.frameClass),r=s.template.repl("{previewId}",c).repl("{frameClass}",p).repl("{fileindex}",o).repl("{content}",s.content[a]).repl("{footer}",t.footer(i,a,n)),s.tags.length&&s.tags[a]&&(r=H(r,s.tags[a])),R(d)||R(d.frameAttr)||(l=e(document.createElement("div")).html(r),l.find(".file-preview-initial").attr(d.frameAttr),r=l.html(),l.remove()),r)},add:function(i,a,n,r,l){var o,s=e.extend(!0,{},t.data[i]);return z(a)||(a=a.split(s.delimiter)),l?(o=s.content.push(a)-1,s.config[o]=n,s.tags[o]=r):(o=a.length,s.content=a,s.config=n,s.tags=r),t.data[i]=s,o},set:function(i,a,n,r,l){var o,s=e.extend(!0,{},t.data[i]);if(z(a)||(a=a.split(s.delimiter)),l){for(o=0;ol;l++)a+=t.get(e,l);return i=n.msg(t.count(e)),{content:a,caption:i}},footer:function(e,i,a){var n=t.data[e];if(a=void 0===a?!0:a,0===n.config.length||R(n.config[i]))return"";var r=n.config[i],l=M("caption",r)?r.caption:"",o=M("width",r)?r.width:"auto",s=M("url",r)?r.url:!1,d=M("key",r)?r.key:null,c=s===!1&&a,p=n.isDelete?n.actions(!1,!0,c,s,d):"",u=n.footer.repl("{actions}",p);return u.repl("{caption}",l).repl("{width}",o).repl("{indicator}","").repl("{indicatorTitle}","")}},a=function(e,i){return i=i||0,"number"==typeof e?e:("string"==typeof e&&(e=parseFloat(e)),isNaN(e)?i:e)},n=function(){return window.File&&window.FileReader},r=function(){var e=document.createElement("div");return!i(9)&&(void 0!==e.draggable||void 0!==e.ondragstart&&void 0!==e.ondrop)},l=function(){return n()&&window.FormData},o=function(e,i){e.removeClass(i).addClass(i)},s='style="width:{width};height:{height};"',d=' \n \n \n \n \n \n',c='
    \n {previewFileIcon}\n
    ',p={removeIcon:'',removeClass:"btn btn-xs btn-default",removeTitle:"Remove file",uploadIcon:'',uploadClass:"btn btn-xs btn-default",uploadTitle:"Upload file",indicatorNew:'',indicatorSuccess:'',indicatorError:'',indicatorLoading:'',indicatorNewTitle:"Not uploaded yet",indicatorSuccessTitle:"Uploaded",indicatorErrorTitle:"Upload Error",indicatorLoadingTitle:"Uploading ..."},u='{preview}\n
    \n
    \n {caption}\n
    \n {remove}\n {cancel}\n {upload}\n {browse}\n
    \n
    ',f='{preview}\n
    \n{remove}\n{cancel}\n{upload}\n{browse}\n',v='
    \n
    ×
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    ',h='',m='
    \n \n
    \n
    ',g='',w='
    \n
    \n {percent}%\n
    \n
    ',b='',x='
    \n \n
    {indicator}
    \n
    \n
    ',C='\n',y='\n',T='
    \n {content}\n {footer}\n
    \n',E='
    \n \n '+c+"\n \n {footer}\n
    ",k='
    \n {caption}\n {footer}\n
    \n",F='
    \n
    \n {data}\n
    \n {footer}\n
    ",$='
    \n \n {footer}\n
    \n",I='
    \n \n {footer}\n
    ",D='
    \n \n'+d+" "+c+"\n \n {footer}\n
    \n",P='
    \n \n \n'+d+" "+c+"\n \n {footer}\n
    ",S='
    \n "+c+"\n {footer}\n
    ",U={main1:u,main2:f,preview:v,icon:h,caption:m,modal:g,progress:w,footer:b,actions:x,actionDelete:C,actionUpload:y},j={generic:T,html:E,image:k,text:F,video:$,audio:I,flash:D,object:P,other:S},A=["image","html","text","video","audio","flash","object"],L={image:{width:"auto",height:"160px"},html:{width:"213px",height:"160px"},text:{width:"160px",height:"160px"},video:{width:"213px",height:"160px"},audio:{width:"213px",height:"80px"},flash:{width:"213px",height:"160px"},object:{width:"160px",height:"160px"},other:{width:"160px",height:"160px"}},O={image:function(e,i){return void 0!==e?e.match("image.*"):i.match(/\.(gif|png|jpe?g)$/i)},html:function(e,i){return void 0!==e?"text/html"===e:i.match(/\.(htm|html)$/i)},text:function(e,i){return void 0!==e&&e.match("text.*")||i.match(/\.(txt|md|csv|nfo|php|ini)$/i)},video:function(e,i){return void 0!==e&&e.match(/\.video\/(ogg|mp4|webm)$/i)||i.match(/\.(og?|mp4|webm)$/i)},audio:function(e,i){return void 0!==e&&e.match(/\.audio\/(ogg|mp3|wav)$/i)||i.match(/\.(ogg|mp3|wav)$/i)},flash:function(e,i){return void 0!==e&&"application/x-shockwave-flash"===e||i.match(/\.(swf)$/i)},object:function(){return!0},other:function(){return!0}},R=function(i,t){return null===i||void 0===i||0===i.length||t&&""===e.trim(i)},z=function(e){return Array.isArray(e)||"[object Array]"===Object.prototype.toString.call(e)},M=function(e,i){return"object"==typeof i&&e in i},N=function(i,t,a){return R(i)||R(i[t])?a:e(i[t])},B=function(){return Math.round((new Date).getTime()+100*Math.random())},Z=function(e){return String(e).repl("&","&").repl('"',""").repl("'","'").repl("<","<").repl(">",">")},H=function(i,t){var a=i;return t=t||{},e.each(t,function(e,i){"function"==typeof i&&(i=i()),a=a.repl(e,i)}),a},W=window.URL||window.webkitURL,_=function(t,a){var r=this;r.$element=e(t),r.validate()&&(r.isPreviewable=n(),r.isIE9=i(9),r.isIE10=i(10),r.isPreviewable||r.isIE9?(r.init(a),r.listen()):r.$element.removeClass("file-loading"))};_.prototype={constructor:_,validate:function(){var e,i=this;return"file"===i.$element.attr("type")?!0:(e='

    Invalid Input Type

    You must set an input type = file for bootstrap-fileinput plugin to initialize.
    ',i.$element.after(e),!1)},init:function(i){var n,s=this,d=s.$element;e.each(i,function(e,i){s[e]="maxFileCount"===e||"maxFileSize"===e?a(i):i}),s.fileInputCleared=!1,s.fileBatchCompleted=!0,R(s.allowedPreviewTypes)&&(s.allowedPreviewTypes=A),s.isPreviewable||(s.showPreview=!1),s.uploadFileAttr=R(d.attr("name"))?"file_data":d.attr("name"),s.reader=null,s.formdata={},s.filestack=[],s.ajaxRequests=[],s.isError=!1,s.ajaxAborted=!1,s.dropZoneEnabled=r()&&s.dropZoneEnabled,s.isDisabled=s.$element.attr("disabled")||s.$element.attr("readonly"),s.isUploadable=l()&&!R(s.uploadUrl),s.slug="function"==typeof i.slugCallback?i.slugCallback:s.slugDefault,s.mainTemplate=s.getLayoutTemplate(s.showCaption?"main1":"main2"),s.captionTemplate=s.getLayoutTemplate("caption"),s.previewGenericTemplate=s.getPreviewTemplate("generic"),R(s.$element.attr("id"))&&s.$element.attr("id",B()),void 0===s.$container?s.$container=s.createContainer():s.refreshContainer(),s.$progress=s.$container.find(".kv-upload-progress"),s.$btnUpload=s.$container.find(".kv-fileinput-upload"),s.$captionContainer=N(i,"elCaptionContainer",s.$container.find(".file-caption")),s.$caption=N(i,"elCaptionText",s.$container.find(".file-caption-name")),s.$previewContainer=N(i,"elPreviewContainer",s.$container.find(".file-preview")),s.$preview=N(i,"elPreviewImage",s.$container.find(".file-preview-thumbnails")),s.$previewStatus=N(i,"elPreviewStatus",s.$container.find(".file-preview-status")),s.$errorContainer=N(i,"elErrorContainer",s.$previewContainer.find(".kv-fileinput-error")),R(s.msgErrorClass)||o(s.$errorContainer,s.msgErrorClass),s.$errorContainer.hide(),s.fileActionSettings=e.extend(p,i.fileActionSettings),s.previewInitId="preview-"+B(),s.id=s.$element.attr("id"),t.init(s),s.initPreview(!0),s.initPreviewDeletes(),s.options=i,s.setFileDropZoneTitle(),s.uploadCount=0,s.uploadPercent=0,s.$element.removeClass("file-loading"),n=s.getLayoutTemplate("progress"),s.progressTemplate=n.replace("{class}",s.progressClass),s.progressCompleteTemplate=n.replace("{class}",s.progressCompleteClass),s.setEllipsis()},parseError:function(i,t,a){var n=this,r=e.trim(t+""),l="."===r.slice(-1)?"":".",o=void 0!==i.responseJSON&&void 0!==i.responseJSON.error?i.responseJSON.error:i.responseText;return n.showAjaxErrorDetails?(o=e.trim(o.replace(/\n\s*\n/g,"\n")),o=o.length>0?"
    "+o+"
    ":"",r+=l+o):r+=l,a?""+a+": "+i:r},raise:function(i,t){var a=this,n=e.Event(i);if(void 0!==t?a.$element.trigger(n,t):a.$element.trigger(n),!n.result)return n.result;switch(i){case"filebatchuploadcomplete":case"filebatchuploadsuccess":case"fileuploaded":case"fileclear":case"filecleared":case"filereset":case"fileerror":case"filefoldererror":case"fileuploaderror":case"filebatchuploaderror":case"filedeleteerror":case"filecustomerror":case"filesuccessremove":break;default:a.ajaxAborted=n.result}return!0},getLayoutTemplate:function(e){var i=this,t=M(e,i.layoutTemplates)?i.layoutTemplates[e]:U[e];return R(i.customLayoutTags)?t:H(t,i.customLayoutTags)},getPreviewTemplate:function(e){var i=this,t=M(e,i.previewTemplates)?i.previewTemplates[e]:j[e];return t=t.repl("{previewFileIcon}",i.previewFileIcon),R(i.customPreviewTags)?t:H(t,i.customPreviewTags)},getOutData:function(e,i,t){var a=this;return e=e||{},i=i||{},t=t||a.filestack.slice(0)||{},{form:a.formdata,files:t,extra:a.getExtraData(),response:i,reader:a.reader,jqXHR:e}},setEllipsis:function(){var e=this,i=e.$captionContainer,t=e.$caption,a=t.clone().css("height","auto").hide();i.parent().before(a),i.removeClass("kv-has-ellipsis"),a.outerWidth()>t.outerWidth()&&i.addClass("kv-has-ellipsis"),a.remove()},listen:function(){var i=this,t=i.$element,a=i.$captionContainer,n=i.$btnFile,r=t.closest("form");t.on("change",e.proxy(i.change,i)),e(window).on("resize",function(){i.setEllipsis()}),n.off("click").on("click",function(){i.raise("filebrowse"),i.isError&&!i.isUploadable&&i.clear(),a.focus()}),r.off("reset").on("reset",e.proxy(i.reset,i)),i.$container.off("click").on("click",".fileinput-remove:not([disabled])",e.proxy(i.clear,i)).on("click",".fileinput-cancel",e.proxy(i.cancel,i)),i.isUploadable&&i.dropZoneEnabled&&i.showPreview&&i.initDragDrop(),i.isUploadable||r.on("submit",e.proxy(i.submitForm,i)),i.$container.find(".kv-fileinput-upload").off("click").on("click",function(t){var a,n=e(this),r=!n.hasClass("disabled")&&R(n.attr("disabled"));return i.isUploadable?(t.preventDefault(),void(r&&i.upload())):void(r&&"submit"!==n.attr("type")&&(a=n.closest("form"),a.length&&a.trigger("submit"),t.preventDefault()))})},submitForm:function(){var e=this,i=e.$element,t=i.get(0).files;return t&&t.length0?(e.noFilesError({}),!1):!e.abort({})},abort:function(i){var t,a=this;return a.ajaxAborted&&"object"==typeof a.ajaxAborted&&void 0!==a.ajaxAborted.message?(t=e.extend(a.getOutData(),i),t.abortData=a.ajaxAborted.data||{},t.abortMessage=a.ajaxAborted.message,a.showUploadError(a.ajaxAborted.message,t,"filecustomerror"),!0):!1},noFilesError:function(e){var i=this,t=i.minFileCount>1?i.filePlural:i.fileSingle,a=i.msgFilesTooLess.replace("{n}",i.minFileCount).replace("{files}",t),n=i.$errorContainer;n.html(a),i.isError=!0,i.updateFileDetails(0),n.fadeIn(800),i.raise("fileerror",[e]),i.clearFileInput(),o(i.$container,"has-error")},setProgress:function(e){var i=this,t=Math.min(e,100),a=100>t?i.progressTemplate:i.progressCompleteTemplate;R(a)||i.$progress.html(a.repl("{percent}",t))},upload:function(){var i,t,a,n=this,r=n.getFileStack().length,l={},o=!e.isEmptyObject(n.getExtraData());if(r0)return void n.noFilesError(l);if(n.isUploadable&&!n.isDisabled&&(0!==r||o)){if(n.resetUpload(),n.$progress.removeClass("hide"),n.uploadCount=0,n.uploadPercent=0,n.lock(),n.setProgress(0),0===r&&o)return void n.uploadExtraOnly();if(a=n.filestack.length,n.hasInitData=!1,n.uploadAsync&&n.showPreview)for(t=n.getOutData(),n.raise("filebatchpreupload",[t]),n.fileBatchCompleted=!1,n.uploadCache={content:[],config:[],tags:[],append:!0},i=0;a>i;i+=1)void 0!==n.filestack[i]&&n.uploadSingle(i,n.filestack,!0);else n.uploadBatch()}},lock:function(){var e=this;e.resetErrors(),e.disable(),e.showRemove&&o(e.$container.find(".fileinput-remove"),"hide"),e.showCancel&&e.$container.find(".fileinput-cancel").removeClass("hide"),e.raise("filelock",[e.filestack,e.getExtraData()])},unlock:function(e){var i=this;void 0===e&&(e=!0),i.enable(),i.showCancel&&o(i.$container.find(".fileinput-cancel"),"hide"),i.showRemove&&i.$container.find(".fileinput-remove").removeClass("hide"),e&&i.resetFileStack(),i.raise("fileunlock",[i.filestack,i.getExtraData()])},resetFileStack:function(){var i=this,t=0,a=[];i.getThumbs().each(function(){var n=e(this),r=n.attr("data-fileindex"),l=i.filestack[r];-1!==r&&(void 0!==l?(a[t]=l,n.attr({id:i.previewInitId+"-"+t,"data-fileindex":t}),t+=1):n.attr({id:"uploaded-"+B(),"data-fileindex":"-1"}))}),i.filestack=a},refresh:function(i){var t,a=this,n=a.$element,r=arguments.length?e.extend(a.options,i):a.options;n.off(),a.init(r),t=a.$container.find(".file-drop-zone"),t.off("dragenter dragover dragleave drop"),e(document).off("dragenter dragover drop"),a.listen(),a.setFileDropZoneTitle()},initDragDrop:function(){var i=this,t=i.$container.find(".file-drop-zone");t.off("dragenter dragover dragleave drop"),e(document).off("dragenter dragover drop"),t.on("dragenter dragover",function(t){var a=e.inArray("Files",t.originalEvent.dataTransfer.types)>-1;return t.stopPropagation(),t.preventDefault(),i.isDisabled||!a?(t.originalEvent.dataTransfer.effectAllowed="none",void(t.originalEvent.dataTransfer.dropEffect="none")):void o(e(this),"highlighted")}),t.on("dragleave",function(t){t.stopPropagation(),t.preventDefault(),i.isDisabled||e(this).removeClass("highlighted")}),t.on("drop",function(t){t.preventDefault(),i.isDisabled||R(t.originalEvent.dataTransfer.files)||(i.change(t,"dragdrop"),e(this).removeClass("highlighted"))}),e(document).on("dragenter dragover drop",function(e){e.stopPropagation(),e.preventDefault()})},setFileDropZoneTitle:function(){var e=this,i=e.$container.find(".file-drop-zone");i.find("."+e.dropZoneTitleClass).remove(),e.isUploadable&&e.showPreview&&0!==i.length&&!(e.getFileStack().length>0)&&e.dropZoneEnabled&&(0===i.find(".file-preview-frame").length&&i.prepend('
    '+e.dropZoneTitle+"
    "),e.$container.removeClass("file-input-new"),o(e.$container,"file-input-ajax-new"))},initFileActions:function(){var i=this;i.$preview.find(".kv-file-remove").each(function(){var a,n,r=e(this),l=r.closest(".file-preview-frame"),o=l.attr("data-fileindex");r.off("click").on("click",function(){i.cleanMemory(l),l.fadeOut("slow",function(){i.filestack[o]=void 0,i.clearObjects(l),l.remove();var e=i.getFileStack(!0),r=e.length,s=t.count(i.id);i.clearFileInput(),0===r&&0===s?i.reset():(a=s+r,n=a>1?i.getMsgSelected(a):e[0]?e[0].name:"",i.setCaption(n))})})}),i.$preview.find(".kv-file-upload").each(function(){var t=e(this);t.off("click").on("click",function(){var e=t.closest(".file-preview-frame"),a=e.attr("data-fileindex");i.uploadSingle(a,i.filestack,!1)})})},getMsgSelected:function(e){var i=this,t=1===e?i.fileSingle:i.filePlural;return i.msgSelected.replace("{n}",e).replace("{files}",t)},renderFileFooter:function(e,i){var t,a,n=this,r=n.fileActionSettings,l=n.getLayoutTemplate("footer");return n.isUploadable?(t=l.repl("{actions}",n.renderFileActions(!0,!0,!1,!1,!1)),a=t.repl("{caption}",e).repl("{width}",i).repl("{indicator}",r.indicatorNew).repl("{indicatorTitle}",r.indicatorNewTitle)):a=l.repl("{actions}","").repl("{caption}",e).repl("{width}",i).repl("{indicator}","").repl("{indicatorTitle}",""),a=H(a,n.previewThumbTags)},renderFileActions:function(e,i,t,a,n){if(!e&&!i)return"";var r=this,l=a===!1?"":' data-url="'+a+'"',o=n===!1?"":' data-key="'+n+'"',s=r.getLayoutTemplate("actionDelete"),d="",c=r.getLayoutTemplate("actions"),p=r.otherActionButtons.repl("{dataKey}",o),u=r.fileActionSettings,f=t?u.removeClass+" disabled":u.removeClass;return s=s.repl("{removeClass}",f).repl("{removeIcon}",u.removeIcon).repl("{removeTitle}",u.removeTitle).repl("{dataUrl}",l).repl("{dataKey}",o),e&&(d=r.getLayoutTemplate("actionUpload").repl("{uploadClass}",u.uploadClass).repl("{uploadIcon}",u.uploadIcon).repl("{uploadTitle}",u.uploadTitle)),c.repl("{delete}",s).repl("{upload}",d).repl("{other}",p)},setThumbStatus:function(e,i){var t=this,a="indicator"+i,n=a+"Title",r="file-preview-"+i.toLowerCase(),l=e.find(".file-upload-indicator"),o=t.fileActionSettings;e.removeClass("file-preview-success file-preview-error file-preview-loading"),l.html(o[a]),l.attr("title",o[n]),e.addClass(r)},clearPreview:function(){var e=this,i=e.$preview.find(e.showUploadedThumbs?".file-preview-frame:not(.file-preview-success)":".file-preview-frame");i.remove(),e.$preview.find(".file-preview-frame").length&&e.showPreview||e.resetUpload()},initPreview:function(e){var i,a=this,n=a.initialCaption||"";return t.count(a.id)?(i=t.out(a.id),n=e&&a.initialCaption?a.initialCaption:i.caption,a.$preview.html(i.content),a.setCaption(n),void(R(i.content)||a.$container.removeClass("file-input-new"))):(a.clearPreview(),void(e?a.setCaption(n):a.initCaption()))},initPreviewDeletes:function(){var i=this,a=i.deleteExtraData||{},n=function(){0===i.$preview.find(".kv-file-remove").length&&(i.reset(),i.initialCaption="")};i.$preview.find(".kv-file-remove").each(function(){var r=e(this),l=r.data("url")||i.deleteUrl,s=r.data("key");if(!R(l)&&void 0!==s){var d,c,p,u,f=r.closest(".file-preview-frame"),v=t.data[i.id],h=f.data("fileindex");h=parseInt(h.replace("init_","")),p=R(v.config)&&R(v.config[h])?null:v.config[h],u=R(p)||R(p.extra)?a:p.extra,"function"==typeof u&&(u=u()),c={id:r.attr("id"),key:s,extra:u},d=e.extend({url:l,type:"DELETE",dataType:"json",data:e.extend({key:s},u),beforeSend:function(e){i.ajaxAborted=!1,i.raise("filepredelete",[s,e,u]),i.ajaxAborted?e.abort():(o(f,"file-uploading"),o(r,"disabled"))},success:function(e,a,l){var o,d;return R(e)||R(e.error)?(t.unset(i.id,h),o=t.count(i.id),d=o>0?i.getMsgSelected(o):"",i.raise("filedeleted",[s,l,u]),i.setCaption(d),f.removeClass("file-uploading").addClass("file-deleted"),void f.fadeOut("slow",function(){i.clearObjects(f),f.remove(),n(),o||0!==i.getFileStack().length||(i.setCaption(""),i.reset())})):(c.jqXHR=l,c.response=e,i.showError(e.error,c,"filedeleteerror"),f.removeClass("file-uploading"),r.removeClass("disabled"),void n())},error:function(e,t,a){var r=i.parseError(e,a);c.jqXHR=e,c.response={},i.showError(r,c,"filedeleteerror"),f.removeClass("file-uploading"),n()}},i.ajaxDeleteSettings),r.off("click").on("click",function(){e.ajax(d)})}})},clearObjects:function(i){i.find("video audio").each(function(){this.pause(),e(this).remove()}),i.find("img object div").each(function(){e(this).remove()})},clearFileInput:function(){var i,t,a,n=this,r=n.$element;R(r.val())||(n.isIE9||n.isIE10?(i=r.closest("form"),t=e(document.createElement("form")),a=e(document.createElement("div")),r.before(a),i.length?i.after(t):a.after(t),t.append(r).trigger("reset"),a.before(r).remove(),t.remove()):r.val(""),n.fileInputCleared=!0)},resetUpload:function(){var e=this;e.uploadCache={content:[],config:[],tags:[],append:!0},e.uploadCount=0,e.uploadPercent=0,e.$btnUpload.removeAttr("disabled"),e.setProgress(0),o(e.$progress,"hide"),e.resetErrors(!1),e.ajaxAborted=!1,e.ajaxRequests=[]},cancel:function(){var i,t=this,a=t.ajaxRequests,n=a.length;if(n>0)for(i=0;n>i;i+=1)a[i].abort();t.getThumbs().each(function(){var i=e(this),a=i.attr("data-fileindex");i.removeClass("file-uploading"),void 0!==t.filestack[a]&&(i.find(".kv-file-upload").removeClass("disabled").removeAttr("disabled"),i.find(".kv-file-remove").removeClass("disabled").removeAttr("disabled")),t.unlock()})},cleanMemory:function(e){var i=e.is("img")?e.attr("src"):e.find("source").attr("src");W.revokeObjectURL(i)},hasInitialPreview:function(){var e=this;return!e.overwriteInitial&&t.count(e.id)},clear:function(){var i,t=this;t.$btnUpload.removeAttr("disabled"),t.getThumbs().find("video,audio,img").each(function(){t.cleanMemory(e(this))}),t.resetUpload(),t.filestack=[],t.clearFileInput(),t.resetErrors(!0),t.raise("fileclear"),t.hasInitialPreview()?(t.showFileIcon(),t.resetPreview(),t.setEllipsis(),t.initPreviewDeletes(),t.$container.removeClass("file-input-new")):(t.getThumbs().each(function(){t.clearObjects(e(this))}),t.$preview.html(""),i=!t.overwriteInitial&&t.initialCaption.length>0?t.initialCaption:"",t.setCaption(i),t.setEllipsis(),t.$caption.attr("title",""),o(t.$container,"file-input-new")),0===t.$container.find(".file-preview-frame").length&&(t.initCaption()||t.$captionContainer.find(".kv-caption-icon").hide(),t.setEllipsis()),t.hideFileIcon(),t.raise("filecleared"),t.$captionContainer.focus(),t.setFileDropZoneTitle()},resetPreview:function(){var e,i=this;t.count(i.id)?(e=t.out(i.id),i.$preview.html(e.content),i.setCaption(e.caption)):(i.clearPreview(),i.initCaption())},reset:function(){var e=this;e.resetPreview(),e.setEllipsis(),e.$container.find(".fileinput-filename").text(""),e.raise("filereset"),e.initialPreview.length>0&&e.$container.removeClass("file-input-new"),e.setFileDropZoneTitle(),e.filestack=[],e.formdata={}},disable:function(){var e=this;e.isDisabled=!0,e.raise("filedisabled"),e.$element.attr("disabled","disabled"),e.$container.find(".kv-fileinput-caption").addClass("file-caption-disabled"),e.$container.find(".btn-file, .fileinput-remove, .kv-fileinput-upload").attr("disabled",!0),e.initDragDrop()},enable:function(){var e=this;e.isDisabled=!1,e.raise("fileenabled"),e.$element.removeAttr("disabled"),e.$container.find(".kv-fileinput-caption").removeClass("file-caption-disabled"),e.$container.find(".btn-file, .fileinput-remove, .kv-fileinput-upload").removeAttr("disabled"),e.initDragDrop()},getThumbs:function(e){return e=e||"",this.$preview.find(".file-preview-frame:not(.file-preview-initial)"+e)},getExtraData:function(){var e=this,i=e.uploadExtraData;return"function"==typeof e.uploadExtraData&&(i=e.uploadExtraData()),i},uploadExtra:function(){var i=this,t=i.getExtraData();0!==t.length&&e.each(t,function(e,t){i.formdata.append(e,t)})},initXhr:function(e,i){var t=this;return e.upload&&e.upload.addEventListener("progress",function(e){var a=0,n=e.loaded||e.position,r=e.total;e.lengthComputable&&(a=Math.ceil(n/r*i)),t.uploadPercent=Math.max(a,t.uploadPercent),t.setProgress(t.uploadPercent)},!1),e},ajaxSubmit:function(i,t,a,n){var r,l=this;l.uploadExtra(),r=e.extend({xhr:function(){var i=e.ajaxSettings.xhr();return l.initXhr(i,98)},url:l.uploadUrl,type:"POST",dataType:"json",data:l.formdata,cache:!1,processData:!1,contentType:!1,beforeSend:i,success:t,complete:a,error:n},l.ajaxSettings),l.ajaxRequests.push(e.ajax(r))},initUploadSuccess:function(i,a,n){var r,l,o,s,d,c,p,u=this;"object"!=typeof i||e.isEmptyObject(i)||void 0!==i.initialPreview&&i.initialPreview.length>0&&(u.hasInitData=!0,d=i.initialPreview||[],c=i.initialPreviewConfig||[],p=i.initialPreviewThumbTags||[],r=void 0===i.append||i.append?!0:!1,u.overwriteInitial=!1,void 0===a||n?n?(u.uploadCache.content.push(d[0]),u.uploadCache.config.push(c[0]),u.uploadCache.tags.push(p[0]),u.uploadCache.append=r):(t.set(u.id,d,c,p,r),u.initPreview(),u.initPreviewDeletes()):(o=t.add(u.id,d,c[0],p[0],r),l=t.get(u.id,o,!1),s=e(l).hide(),a.after(s).fadeOut("slow",function(){s.fadeIn("slow").css("display:inline-block"),u.initPreviewDeletes(),u.clearFileInput(),a.remove()})))},initSuccessThumbs:function(){var i=this;i.getThumbs(".file-preview-success").each(function(){var t=e(this),a=t.find(".kv-file-remove");a.removeAttr("disabled").off("click").on("click",function(){var e=i.raise("filesuccessremove",[t.attr("id"),t.data("fileindex")]);i.cleanMemory(t),e!==!1&&t.fadeOut("slow",function(){t.remove(),i.$preview.find(".file-preview-frame").length||i.reset()})})})},uploadSingle:function(i,a,n){var r,l,s,d,c,p,u,f,v,h=this,m=h.getFileStack().length,g=new FormData,w=h.previewInitId+"-"+i,b=e("#"+w+":not(.file-preview-initial)"),x=b.find(".kv-file-upload"),C=b.find(".kv-file-remove"),y=h.filestack.length>0||!e.isEmptyObject(h.uploadExtraData),T={id:w,index:i};h.formdata=g,0===m||!y||x.hasClass("disabled")||h.abort(T)||(s=function(){var e=h.getThumbs(".file-uploading");e.length>0||h.fileBatchCompleted||(h.fileBatchCompleted=!0,setTimeout(function(){t.set(h.id,h.uploadCache.content,h.uploadCache.config,h.uploadCache.tags,h.uploadCache.append),h.hasInitData&&(h.initPreview(),h.initPreviewDeletes()),h.setProgress(100),h.unlock(),h.clearFileInput(),h.raise("filebatchuploadcomplete",[h.filestack,h.getExtraData()])},100))},d=function(){!n||0===m||h.uploadPercent>=100||(h.uploadCount+=1,l=80+Math.ceil(20*h.uploadCount/m),h.uploadPercent=Math.max(l,h.uploadPercent),h.setProgress(h.uploadPercent),h.initPreviewDeletes())},c=function(){x.removeAttr("disabled"),C.removeAttr("disabled"),b.removeClass("file-uploading")},p=function(t){r=h.getOutData(t),b.hasClass("file-preview-success")||(h.setThumbStatus(b,"Loading"),o(b,"file-uploading")),x.attr("disabled",!0),C.attr("disabled",!0),n||h.lock(),h.raise("filepreupload",[r,w,i]),T=e.extend(T,r),h.abort(T)&&(t.abort(),h.setProgress(100))},u=function(t,a,l){r=h.getOutData(l,t),T=e.extend(T,r),setTimeout(function(){R(t)||R(t.error)?(h.setThumbStatus(b,"Success"),x.hide(),h.filestack[i]=void 0,h.raise("fileuploaded",[r,w,i]),h.initUploadSuccess(t,b,n),n||h.resetFileStack()):(h.setThumbStatus(b,"Error"),h.showUploadError(t.error,T))},100)},f=function(){setTimeout(function(){d(),c(),n?s():h.unlock(!1),h.initSuccessThumbs()},100)},v=function(t,r,l){var o=h.parseError(t,l,n?a[i].name:null);h.setThumbStatus(b,"Error"),T=e.extend(T,h.getOutData(t)),h.showUploadError(o,T)},g.append(h.uploadFileAttr,a[i]),g.append("file_id",i),h.ajaxSubmit(p,u,f,v))},uploadBatch:function(){var i,t,a,n,r,l=this,s=l.filestack,d=s.length,c=l.filestack.length>0||!e.isEmptyObject(l.uploadExtraData),p={};l.formdata=new FormData,0!==d&&c&&!l.abort(p)&&(i=function(){e.each(s,function(e){l.filestack[e]=void 0}),l.clearFileInput()},t=function(i){l.lock();var t=l.getOutData(i);l.showPreview&&l.getThumbs().each(function(){var i=e(this),t=i.find(".kv-file-upload"),a=i.find(".kv-file-remove");i.hasClass("file-preview-success")||(l.setThumbStatus(i,"Loading"),o(i,"file-uploading")),t.attr("disabled",!0),a.attr("disabled",!0)}),l.raise("filebatchpreupload",[t]),l.abort(t)&&i.abort()},a=function(t,a,n){var r=l.getOutData(n,t),o=l.getThumbs(),s=R(t.errorkeys)?[]:t.errorkeys;R(t)||R(t.error)?(l.raise("filebatchuploadsuccess",[r]),i(),l.showPreview?(o.each(function(){var i=e(this),t=i.find(".kv-file-upload");i.find(".kv-file-upload").hide(),l.setThumbStatus(i,"Success"),i.removeClass("file-uploading"),t.removeAttr("disabled")}),l.initUploadSuccess(t)):l.reset()):(l.showPreview&&(o.each(function(){var i=e(this),t=i.find(".kv-file-remove"),a=i.find(".kv-file-upload");return i.removeClass("file-uploading"),a.removeAttr("disabled"),t.removeAttr("disabled"),0===s.length?void l.setThumbStatus(i,"Error"):void(-1!==e.inArray(key,s)?l.setThumbStatus(i,"Error"):(i.find(".kv-file-upload").hide(),l.setThumbStatus(i,"Success"),l.filestack[key]=void 0)); + +}),l.initUploadSuccess(t)),l.showUploadError(t.error,r,"filebatchuploaderror"))},n=function(){l.setProgress(100),l.unlock(),l.initSuccessThumbs(),l.raise("filebatchuploadcomplete",[l.filestack,l.getExtraData()]),l.clearFileInput()},r=function(i,t,a){var n=l.getOutData(i),r=l.parseError(i,a);l.showUploadError(r,n,"filebatchuploaderror"),l.uploadFileCount=d-1,l.showPreview&&(l.getThumbs().each(function(){var i=e(this),t=i.attr("data-fileindex");i.removeClass("file-uploading"),void 0!==l.filestack[t]&&l.setThumbStatus(i,"Error")}),l.getThumbs().removeClass("file-uploading"),l.getThumbs(" .kv-file-upload").removeAttr("disabled"),l.getThumbs(" .kv-file-delete").removeAttr("disabled"))},e.each(s,function(e,i){R(s[e])||l.formdata.append(l.uploadFileAttr,i)}),l.ajaxSubmit(t,a,n,r))},uploadExtraOnly:function(){var e,i,t,a,n=this,r={};n.formdata=new FormData,n.abort(r)||(e=function(e){n.lock();var i=n.getOutData(e);n.raise("filebatchpreupload",[i]),n.setProgress(50),r.data=i,r.xhr=e,n.abort(r)&&(e.abort(),n.setProgress(100))},i=function(e,i,t){var a=n.getOutData(t,e);R(e)||R(e.error)?(n.raise("filebatchuploadsuccess",[a]),n.clearFileInput(),n.initUploadSuccess(e)):n.showUploadError(e.error,a,"filebatchuploaderror")},t=function(){n.setProgress(100),n.unlock(),n.raise("filebatchuploadcomplete",[n.filestack,n.getExtraData()]),n.clearFileInput()},a=function(e,i,t){var a=n.getOutData(e),l=n.parseError(e,t);r.data=a,n.showUploadError(l,a,"filebatchuploaderror")},n.ajaxSubmit(e,i,t,a))},hideFileIcon:function(){this.overwriteInitial&&this.$captionContainer.find(".kv-caption-icon").hide()},showFileIcon:function(){this.$captionContainer.find(".kv-caption-icon").show()},resetErrors:function(e){var i=this,t=i.$errorContainer;i.isError=!1,i.$container.removeClass("has-error"),t.html(""),e?t.fadeOut("slow"):t.hide()},showFolderError:function(e){var i=this,t=i.$errorContainer;e&&(t.html(i.msgFoldersNotAllowed.repl("{n}",e)),t.fadeIn(800),o(i.$container,"has-error"),i.raise("filefoldererror",[e]))},showUploadError:function(e,i,t){var a=this,n=a.$errorContainer,r=t||"fileuploaderror";return 0===n.find("ul").length?n.html("
    • "+e+"
    "):n.find("ul").append("
  • "+e+"
  • "),n.fadeIn(800),a.raise(r,[i]),o(a.$container,"has-error"),!0},showError:function(e,i,t){var a=this,n=a.$errorContainer,r=t||"fileerror";return i=i||{},i.reader=a.reader,n.html(e),n.fadeIn(800),a.raise(r,[i]),a.isUploadable||a.clearFileInput(),o(a.$container,"has-error"),a.$btnUpload.attr("disabled",!0),!0},errorHandler:function(e,i){var t=this,a=e.target.error;switch(a.code){case a.NOT_FOUND_ERR:t.showError(t.msgFileNotFound.replace("{name}",i));break;case a.SECURITY_ERR:t.showError(t.msgFileSecured.replace("{name}",i));break;case a.NOT_READABLE_ERR:t.showError(t.msgFileNotReadable.replace("{name}",i));break;case a.ABORT_ERR:t.showError(t.msgFilePreviewAborted.replace("{name}",i));break;default:t.showError(t.msgFilePreviewError.replace("{name}",i))}},parseFileType:function(e){var i,t,a,n,r=this;for(n=0;n=0,b=R(f)||!R(f)&&-1!==f.indexOf(i.type),x=d.renderFileFooter(p,h.width),C="",y=a.slice(a.lastIndexOf("-")+1);w&&b?("text"===c?(l=Z(t.target.result),l.length>m&&(o="text-"+B(),s=.75*window.innerHeight,C=d.getLayoutTemplate("modal").repl("{id}",o).repl("{title}",p).repl("{height}",s).repl("{body}",l),g=g.repl("{title}",p).repl("{dialog}","$('#"+o+"').modal('show')"),l=l.substring(0,m-1)+g),r=v.repl("{previewId}",a).repl("{caption}",p).repl("{frameClass}","").repl("{type}",i.type).repl("{width}",h.width).repl("{height}",h.height).repl("{data}",l).repl("{footer}",x).repl("{fileindex}",y)+C):r=v.repl("{previewId}",a).repl("{caption}",p).repl("{frameClass}","").repl("{type}",i.type).repl("{data}",n).repl("{width}",h.width).repl("{height}",h.height).repl("{footer}",x).repl("{fileindex}",y),d.$preview.append("\n"+r),d.validateImage(e,a)):d.previewDefault(i,a)}},slugDefault:function(e){return R(e)?"":e.split(/(\\|\/)/g).pop().replace(/[^\w\u00C0-\u017F\-.\\\/ ]+/g,"")},getFileStack:function(e){var i=this;return i.filestack.filter(function(i){return e?void 0!==i:void 0!==i&&null!==i})},readFiles:function(i){function t(e){if(R(n.attr("multiple"))&&(u=1),e>=u)return a.isUploadable&&a.filestack.length>0?a.raise("filebatchselected",[a.getFileStack()]):a.raise("filebatchselected",[i]),o.removeClass("loading"),void s.html("");var m,g,w,b,x,C,y=v+e,T=p+"-"+y,E=i[e],k=a.slug(E.name),F=(E.size||0)/1e3,$="",I=W.createObjectURL(E),D=0,P=a.allowedFileTypes,S=R(P)?"":P.join(", "),U=a.allowedFileExtensions,j=R(U)?"":U.join(", ");if(R(U)||($=new RegExp("\\.("+U.join("|")+")$","i")),F=F.toFixed(2),a.maxFileSize>0&&F>a.maxFileSize)return b=a.msgSizeTooLarge.replace("{name}",k).replace("{size}",F).replace("{maxSize}",a.maxFileSize),void(a.isError=h(b,E,T,e));if(!R(P)&&z(P)){for(w=0;w0&&void 0!==FileReader?(s.html(d.replace("{index}",e+1).replace("{files}",u)),o.addClass("loading"),l.onerror=function(e){a.errorHandler(e,k)},l.onload=function(i){a.previewFile(e,E,i,T,I),a.initFileActions()},l.onloadend=function(){b=c.replace("{index}",e+1).replace("{files}",u).replace("{percent}",50).replace("{name}",k),setTimeout(function(){s.html(b),t(e+1),a.updateFileDetails(u)},100),a.raise("fileloaded",[E,T,e,l])},l.onprogress=function(i){if(i.lengthComputable){var t=i.loaded/i.total*100,a=Math.ceil(t);b=c.replace("{index}",e+1).replace("{files}",u).replace("{percent}",a).replace("{name}",k),setTimeout(function(){s.html(b)},100)}},m=M("text",f)?f.text:O.text,m(E.type,k)?l.readAsText(E,a.textEncoding):l.readAsArrayBuffer(E)):(a.previewDefault(E,T),setTimeout(function(){t(e+1),a.updateFileDetails(u)},100),a.raise("fileloaded",[E,T,e,l])),void a.filestack.push(E)):(a.filestack.push(E),setTimeout(t(e+1),100),void a.raise("fileloaded",[E,T,e,l])):(b=a.msgInvalidFileExtension.replace("{name}",k).replace("{extensions}",j),void(a.isError=h(b,E,T,e)))}this.reader=new FileReader;var a=this,n=a.$element,r=a.$preview,l=a.reader,o=a.$previewContainer,s=a.$previewStatus,d=a.msgLoading,c=a.msgProgress,p=a.previewInitId,u=i.length,f=a.fileTypeSettings,v=a.filestack.length,h=function(t,n,r,l){var o=e.extend(a.getOutData({},{},i),{id:r,index:l}),s={id:r,index:l,file:n,files:i};return a.previewDefault(n,r,!0),a.isUploadable?a.showUploadError(t,o):a.showError(t,s)};t(0),a.updateFileDetails(u,!1)},updateFileDetails:function(e){var i=this,a=i.$element,n=i.getFileStack(),r=a.val()||n.length&&n[0].name||"",l=i.slug(r),o=i.isUploadable?n.length:e,s=t.count(i.id)+o,d=o>1?i.getMsgSelected(s):l;i.isError?(i.$previewContainer.removeClass("loading"),i.$previewStatus.html(""),i.$captionContainer.find(".kv-caption-icon").hide()):i.showFileIcon(),i.setCaption(d,i.isError),i.$container.removeClass("file-input-new file-input-ajax-new"),1===arguments.length&&i.raise("fileselect",[e,l]),t.count(i.id)&&i.initPreviewDeletes()},change:function(i){var a=this,n=a.$element;if(!a.isUploadable&&R(n.val())&&a.fileInputCleared)return void(a.fileInputCleared=!1);a.fileInputCleared=!1;var r,l,o,s,d=a.$preview,c=arguments.length>1,p=c?i.originalEvent.dataTransfer.files:n.get(0).files,u=R(n.attr("multiple")),f=0,v=0,h=a.filestack.length,m=a.isUploadable,g=function(i,t,n,r){var l=e.extend(a.getOutData({},{},p),{id:n,index:r}),o={id:n,index:r,file:t,files:p};return a.isUploadable?a.showUploadError(i,l):a.showError(i,o)};if(a.reader=null,a.resetUpload(),a.hideFileIcon(),a.isUploadable&&a.$container.find(".file-drop-zone ."+a.dropZoneTitleClass).remove(),c)for(r=[];p[f];)s=p[f],s.type||s.size%4096!==0?r.push(s):v++,f++;else r=void 0===i.target.files?i.target&&i.target.value?[{name:i.target.value.replace(/^.+\\/,"")}]:[]:i.target.files;if(R(r)||0===r.length)return m||a.clear(),a.showFolderError(v),void a.raise("fileselectnone");if(a.resetErrors(),o=a.isUploadable?a.getFileStack().length+r.length:r.length,a.maxFileCount>0&&o>a.maxFileCount)return l=a.msgFilesTooMany.replace("{m}",a.maxFileCount).replace("{n}",o),a.isError=g(l,null,null,null),a.$captionContainer.find(".kv-caption-icon").hide(),a.setCaption("",!0),a.setEllipsis(),void a.$container.removeClass("file-input-new file-input-ajax-new");if(!m||u&&h>0){if(a.hasInitialPreview()){var w=t.out(a.id);d.html(w.content),a.setCaption(w.caption),a.initPreviewDeletes()}else a.clearPreview();u&&h>0&&(a.filestack=[])}else!m||0!==h||t.count(a.id)&&!a.overwriteInitial||(a.clearPreview(),a.filestack=[]);a.isPreviewable?a.readFiles(r):a.updateFileDetails(1),a.showFolderError(v)},validateImage:function(e,i){var t,a,n,r,l=this,o=l.$preview,s=o.find("#"+i),d="Untitled",c=s.find("img");c.length&&c.on("load",function(){a=s.width(),n=o.width(),a>n&&(c.css("width","100%"),s.css("width","97%")),r=c.closest(".file-preview-frame").find(".file-caption-name"),r.length&&(r.width(c.width()),d=r.text(),r.attr("title",d)),t={ind:e,id:i},l.checkDimensions(e,"Small",c,s,d,"Width",t),l.checkDimensions(e,"Small",c,s,d,"Height",t),l.checkDimensions(e,"Large",c,s,d,"Width",t),l.checkDimensions(e,"Large",c,s,d,"Height",t),l.raise("fileimageloaded",[i]),W.revokeObjectURL(c.attr("src"))})},checkDimensions:function(e,i,t,a,n,r,l){var o,s,d,c,p=this,u="Small"===i?"min":"max",f=p[u+"Image"+r];!R(f)&&t.length&&(d=t[0],s="Width"===r?d.naturalWidth||d.width:d.naturalHeight||d.height,c="Small"===i?s>=f:f>=s,c||(o=p["msgImage"+r+i].replace("{name}",n).replace("{size}",f),p.showUploadError(o,l),p.setThumbStatus(a,"Error"),p.filestack[e]=null))},initCaption:function(){var e=this,i=e.initialCaption||"";return e.overwriteInitial||R(i)?(e.$caption.html(""),!1):(e.setCaption(i),!0)},setCaption:function(i,t){var a,n,r=this;if(t)a=e("
    "+r.msgValidationError+"
    ").text(),n=''+r.msgValidationErrorIcon+a+"";else{if(R(i)||0===r.$caption.length)return;a=e("
    "+i+"
    ").text(),n=r.getLayoutTemplate("icon")+a}r.$caption.html(n),r.$caption.attr("title",a),r.$captionContainer.find(".file-caption-ellipsis").attr("title",a),r.setEllipsis()},initBrowse:function(e){var i=this;i.$btnFile=e.find(".btn-file"),i.$btnFile.append(i.$element)},createContainer:function(){var i=this,t=e(document.createElement("span")).attr({"class":"file-input file-input-new"}).html(i.renderMain());return i.$element.before(t),i.initBrowse(t),t},refreshContainer:function(){var e=this,i=e.$container;i.before(e.$element),i.html(e.renderMain()),e.initBrowse(i)},renderMain:function(){var e=this,i=e.isUploadable&&e.dropZoneEnabled?" file-drop-zone":"",t=e.showPreview?e.getLayoutTemplate("preview").repl("{class}",e.previewClass).repl("{dropClass}",i):"",a=e.isDisabled?e.captionClass+" file-caption-disabled":e.captionClass,n=e.captionTemplate.repl("{class}",a+" kv-fileinput-caption");return e.mainTemplate.repl("{class}",e.mainClass).repl("{preview}",t).repl("{caption}",n).repl("{upload}",e.renderUpload()).repl("{remove}",e.renderRemove()).repl("{cancel}",e.renderCancel()).repl("{browse}",e.renderBrowse())},renderBrowse:function(){var e=this,i=e.browseClass+" btn-file",t="";return e.isDisabled&&(t=" disabled "),'
    "+e.browseIcon+e.browseLabel+"
    "},renderRemove:function(){var e=this,i=e.removeClass+" fileinput-remove fileinput-remove-button",t="";return e.showRemove?(e.isDisabled&&(t=" disabled "),'"):""},renderCancel:function(){var e=this,i=e.cancelClass+" fileinput-cancel fileinput-cancel-button";return e.showCancel?'":""},renderUpload:function(){var e=this,i=e.uploadClass+" kv-fileinput-upload fileinput-upload-button",t="",a="";return e.showUpload?(e.isDisabled&&(a=" disabled "),t=!e.isUploadable||e.isDisabled?'":'"+e.uploadIcon+e.uploadLabel+""):""}},e.fn.fileinput=function(t){if(n()||i(9)){var a=Array.apply(null,arguments);return a.shift(),this.each(function(){var i,n=e(this),r=n.data("fileinput"),l="object"==typeof t&&t,o=l.language||n.data("language")||"en";r||(i=e.extend({},e.fn.fileinput.defaults),"en"===o||R(e.fn.fileinputLocales[o])||(i=e.extend(i,e.fn.fileinputLocales[o])),r=new _(this,e.extend(i,l,n.data())),n.data("fileinput",r)),"string"==typeof t&&r[t].apply(r,a)})}},e.fn.fileinput.defaults={language:"en",showCaption:!0,showPreview:!0,showRemove:!0,showUpload:!0,showCancel:!0,showUploadedThumbs:!0,mainClass:"",previewClass:"",captionClass:"",mainTemplate:null,initialCaption:"",initialPreview:[],initialPreviewDelimiter:"*$$*",initialPreviewConfig:[],initialPreviewThumbTags:[],previewThumbTags:{},initialPreviewShowDelete:!0,deleteUrl:"",deleteExtraData:{},overwriteInitial:!0,layoutTemplates:U,previewTemplates:j,allowedPreviewTypes:A,allowedPreviewMimeTypes:null,allowedFileTypes:null,allowedFileExtensions:null,customLayoutTags:{},customPreviewTags:{},previewSettings:L,fileTypeSettings:O,previewFileIcon:'',browseIcon:'  ',browseClass:"btn btn-primary",removeIcon:' ',removeClass:"btn btn-default",cancelIcon:' ',cancelClass:"btn btn-default",uploadIcon:' ',uploadClass:"btn btn-default",uploadUrl:null,uploadAsync:!0,uploadExtraData:{},minImageWidth:null,minImageHeight:null,maxImageWidth:null,maxImageHeight:null,maxFileSize:0,minFileCount:0,maxFileCount:0,msgValidationErrorClass:"text-danger",msgValidationErrorIcon:' ',msgErrorClass:"file-error-message",progressClass:"progress-bar progress-bar-success progress-bar-striped active",progressCompleteClass:"progress-bar progress-bar-success",previewFileType:"image",wrapTextLength:250,wrapIndicator:' […]',elCaptionContainer:null,elCaptionText:null,elPreviewContainer:null,elPreviewImage:null,elPreviewStatus:null,elErrorContainer:null,slugCallback:null,dropZoneEnabled:!0,dropZoneTitleClass:"file-drop-zone-title",fileActionSettings:{},otherActionButtons:"",textEncoding:"UTF-8",ajaxSettings:{},ajaxDeleteSettings:{},showAjaxErrorDetails:!0},e.fn.fileinputLocales.en={fileSingle:"file",filePlural:"files",browseLabel:"Browse …",removeLabel:"Remove",removeTitle:"Clear selected files",cancelLabel:"Cancel",cancelTitle:"Abort ongoing upload",uploadLabel:"Upload",uploadTitle:"Upload selected files",msgSizeTooLarge:'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB. Please retry your upload!',msgFilesTooLess:"You must select at least {n} {files} to upload. Please retry your upload!",msgFilesTooMany:"Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}. Please retry your upload!",msgFileNotFound:'File "{name}" not found!',msgFileSecured:'Security restrictions prevent reading the file "{name}".',msgFileNotReadable:'File "{name}" is not readable.',msgFilePreviewAborted:'File preview aborted for "{name}".',msgFilePreviewError:'An error occurred while reading the file "{name}".',msgInvalidFileType:'Invalid type for file "{name}". Only "{types}" files are supported.',msgInvalidFileExtension:'Invalid extension for file "{name}". Only "{extensions}" files are supported.',msgValidationError:"File Upload Error",msgLoading:"Loading file {index} of {files} …",msgProgress:"Loading file {index} of {files} - {name} - {percent}% completed.",msgSelected:"{n} {files} selected",msgFoldersNotAllowed:"Drag & drop files only! {n} folder(s) dropped were skipped.",msgImageWidthSmall:'Width of image file "{name}" must be at least {size} px.',msgImageHeightSmall:'Height of image file "{name}" must be at least {size} px.',msgImageWidthLarge:'Width of image file "{name}" cannot exceed {size} px.',msgImageHeightLarge:'Height of image file "{name}" cannot exceed {size} px.',dropZoneTitle:"Drag & drop files here …"},e.extend(e.fn.fileinput.defaults,e.fn.fileinputLocales.en),e.fn.fileinput.Constructor=_,e(document).ready(function(){var i=e("input.file[type=file]");i.length&&i.fileinput()})}(window.jQuery); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js new file mode 100644 index 00000000..492d8c4d --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_LANG.js @@ -0,0 +1,45 @@ +/*! + * FileInput <_LANG_> Translations + * + * This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or + * any HTML markup tags in the messages must not be converted or translated. + * + * @see http://github.com/kartik-v/bootstrap-fileinput + * + * NOTE: this file must be saved in UTF-8 encoding. + */ +(function ($) { + "use strict"; + + $.fn.fileinputLocales['_LANG_'] = { + fileSingle: 'file', + filePlural: 'files', + browseLabel: 'Browse …', + removeLabel: 'Remove', + removeTitle: 'Clear selected files', + cancelLabel: 'Cancel', + cancelTitle: 'Abort ongoing upload', + uploadLabel: 'Upload', + uploadTitle: 'Upload selected files', + msgSizeTooLarge: 'File "{name}" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB. Please retry your upload!', + msgFilesTooLess: 'You must select at least {n} {files} to upload. Please retry your upload!', + msgFilesTooMany: 'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}. Please retry your upload!', + msgFileNotFound: 'File "{name}" not found!', + msgFileSecured: 'Security restrictions prevent reading the file "{name}".', + msgFileNotReadable: 'File "{name}" is not readable.', + msgFilePreviewAborted: 'File preview aborted for "{name}".', + msgFilePreviewError: 'An error occurred while reading the file "{name}".', + msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.', + msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.', + msgValidationError: 'File Upload Error', + msgLoading: 'Loading file {index} of {files} …', + msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.', + msgSelected: '{n} {files} selected', + msgFoldersNotAllowed: 'Drag & drop files only! Skipped {n} dropped folder(s).', + msgImageWidthSmall: 'Width of image file "{name}" must be at least {size} px.', + msgImageHeightSmall: 'Height of image file "{name}" must be at least {size} px.', + msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.', + msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.', + dropZoneTitle: 'Drag & drop files here …' + }; +})(window.jQuery); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js new file mode 100644 index 00000000..12d83710 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-fileinput/js/fileinput_locale_zh.js @@ -0,0 +1,49 @@ +/*! + * FileInput Chinese Translations + * + * This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or + * any HTML markup tags in the messages must not be converted or translated. + * + * @see http://github.com/kartik-v/bootstrap-fileinput + * @author kangqf + * + * NOTE: this file must be saved in UTF-8 encoding. + */ +(function ($) { + "use strict"; + + $.fn.fileinputLocales['zh'] = { + fileSingle: '文件', + filePlural: '多个文件', + browseLabel: '选择 …', + removeLabel: '移除', + removeTitle: '清除选中文件', + cancelLabel: '取消', + cancelTitle: '取消进行中的上传', + uploadLabel: '上传', + uploadTitle: '上传选中文件', + msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB. 请重新上传!', + msgFilesTooLess: '你必须选择最少 {n} {files} 来上传. 请重新上传!', + msgFilesTooMany: '选择的上传文件个数 ({n}) 超出最大文件的限制个数 {m}. 请重新上传!', + msgFileNotFound: '文件 "{name}" 未找到!', + msgFileSecured: '安全限制,为了防止读取文件 "{name}".', + msgFileNotReadable: '文件 "{name}" 不可读.', + msgFilePreviewAborted: '取消 "{name}" 的预览.', + msgFilePreviewError: '读取 "{name}" 时出现了一个错误.', + msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.', + msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.', + msgValidationError: '文件上传错误', + msgLoading: '加载第 {index} 文件 共 {files} …', + msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.', + msgSelected: '{n} {files} 选中', + msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.', + msgImageWidthSmall: '宽度的图像文件的"{name}"的必须是至少{size}像素.', + msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.', + msgImageWidthLarge: '宽度的图像文件"{name}"不能超过{size}像素.', + msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.', + dropZoneTitle: '拖拽文件到这里 …', + slugCallback: function(text) { + return text ? text.split(/(\\|\/)/g).pop().replace(/[^\w\u4e00-\u9fa5\-.\\\/ ]+/g, '') : ''; + } + }; +})(window.jQuery); \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js new file mode 100644 index 00000000..40642941 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-growl/bootstrap-growl.min.js @@ -0,0 +1,2 @@ +/* Project: Bootstrap Growl - v2.0.0 | Author: Mouse0270 aka Robert McIntosh | License: MIT License | Website: https://github.com/mouse0270/bootstrap-growl */ +(function(e,t,n,r){var i="growl",s="plugin_"+i,o={element:"body",type:"info",allow_dismiss:true,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:false,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},icon_type:"class",template:''};var u=function(t,n){o=e.extend(true,{},o,n)},a=function(t,n,r){var n={content:{message:typeof n=="object"?n.message:n,title:n.title?n.title:null,icon:n.icon?n.icon:null,url:n.url?n.url:null}};r=e.extend(true,{},n,r);this.settings=e.extend(true,{},o,r);plugin=this;f(r,this.settings,plugin);this.$template=$template},f=function(t,n,r){var i={settings:n,$element:e(n.element),template:n.template};$template=l(i);c($template,i.settings);h($template,i.settings);p($template,i.settings,r)},l=function(t){var n=e(t.settings.template);n.addClass("alert-"+t.settings.type);n.attr("data-growl-position",t.settings.placement.from+"-"+t.settings.placement.align);n.find('[data-growl="dismiss"]').css("display","none");if(t.settings.allow_dismiss){n.find('[data-growl="dismiss"]').css("display","inline-block")}return n},c=function(e,t){e.find('[data-growl="dismiss"]').css({position:"absolute",top:"5px",right:"10px","z-index":t.z_index-1>=1?t.z_index-1:1});if(t.content.icon){if(t.icon_type.toLowerCase()=="class"){e.find('[data-growl="icon"]').addClass(t.content.icon)}else{if(e.find('[data-growl="icon"]').is("img")){e.find('[data-growl="icon"]').attr("src",t.content.icon)}else{e.find('[data-growl="icon"]').append('')}}}if(t.content.title){e.find('[data-growl="title"]').html(t.content.title)}if(t.content.message){e.find('[data-growl="message"]').html(t.content.message)}if(t.content.url){e.find('[data-growl="url"]').attr("href",t.content.url).attr("target",t.url_target);e.find('[data-growl="url"]').css({position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%","z-index":t.z_index-2>=1?t.z_index-2:1})}},h=function(t,n){var r=n.offset,i={position:n.element==="body"?"fixed":"absolute",margin:0,"z-index":n.z_index,display:"inline-block"};e('[data-growl-position="'+n.placement.from+"-"+n.placement.align+'"]').each(function(){return r=Math.max(r,parseInt(e(this).css(n.placement.from))+e(this).outerHeight()+n.spacing)});i[n.placement.from]=r+"px";t.css(i);e(n.element).append(t);switch(n.placement.align){case"center":t.css({left:"50%",marginLeft:-(t.outerWidth()/2)+"px"});break;case"left":t.css("left",n.offset+"px");break;case"right":t.css("right",n.offset+"px");break}t.addClass("growl-animated")},p=function(e,t,n){e.addClass(t.animate.enter);e.find('[data-growl="dismiss"]').on("click",function(){n.close()});e.on("mouseover",function(t){e.addClass("hovering")}).on("mouseout",function(){e.removeClass("hovering")});if(t.delay>=1){e.data("growl-delay",t.delay);var r=setInterval(function(){var i=parseInt(e.data("growl-delay"))-t.timer;console.log();if(!e.hasClass("hovering")&&t.mouse_over=="pause"||t.mouse_over!="pause"){e.data("growl-delay",i)}if(i<=0){clearInterval(r);n.close()}},t.timer)}};a.prototype={update:function(e,t){switch(e){case"icon":if(this.settings.icon_type.toLowerCase()=="class"){this.$template.find('[data-growl="icon"]').removeClass(this.settings.content.icon);this.$template.find('[data-growl="icon"]').addClass(t)}else{if(this.$template.find('[data-growl="icon"]').is("img")){this.$template.find('[data-growl="icon"]')}else{this.$template.find('[data-growl="icon"]').find("img").attr().attr("src",t)}}break;case"url":this.$template.find('[data-growl="url"]').attr("href",t);break;case"type":this.$template.removeClass("alert-"+this.settings.type);this.$template.addClass("alert-"+t);break;default:this.$template.find('[data-growl="'+e+'"]').html(t)}return this},close:function(){var t=this.$template,n=this.settings,r=t.css(n.placement.from),i=false;t.addClass(this.settings.animate.exit);t.nextAll('[data-growl-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]').each(function(){e(this).css(n.placement.from,r);r=parseInt(r)+n.spacing+e(this).outerHeight()});t.one("webkitAnimationStart oanimationstart MSAnimationStart animationstart",function(e){i=true});t.one("webkitAnimationEnd oanimationend MSAnimationEnd animationend",function(t){e(this).remove()});setTimeout(function(){console.log(i);if(!i){t.remove()}},100);return this}};e.growl=function(e,t){if(e==false){u(this,t);return false}var n=new a(this,e,t);return n}})(jQuery,window,document) \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css new file mode 100644 index 00000000..9939f3ce --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal-bs3patch.css @@ -0,0 +1,51 @@ +/*! + * Bootstrap Modal + * + * Copyright Jordan Schroter + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Boostrap 3 patch for for bootstrap-modal. Include BEFORE bootstrap-modal.css! + */ + +body.modal-open, +.modal-open .navbar-fixed-top, +.modal-open .navbar-fixed-bottom { + margin-right: 0; +} + +.modal { + left: 50%; + bottom: auto; + right: auto; + z-index: 1050; + padding: 0; + width: 600px; + margin-left: -300px; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal.container { + max-width: none; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; +} + +.modal.bootbox { + border: none; + background: none; + box-shadow: none; +} \ No newline at end of file diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css new file mode 100644 index 00000000..bc62761a --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/css/bootstrap-modal.css @@ -0,0 +1,214 @@ +/*! + * Bootstrap Modal + * + * Copyright Jordan Schroter + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + +.modal-open { + overflow: hidden; +} + + +/* add a scroll bar to stop page from jerking around */ +.modal-open.page-overflow .page-container, +.modal-open.page-overflow .page-container .navbar-fixed-top, +.modal-open.page-overflow .page-container .navbar-fixed-bottom, +.modal-open.page-overflow .modal-scrollable { + overflow-y: scroll; +} + +@media (max-width: 979px) { + .modal-open.page-overflow .page-container .navbar-fixed-top, + .modal-open.page-overflow .page-container .navbar-fixed-bottom { + overflow-y: visible; + } +} + + +.modal-scrollable { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + overflow: auto; +} + +.modal { + outline: none; + position: absolute; + margin-top: 0; + top: 50%; + overflow: visible; /* allow content to popup out (i.e tooltips) */ +} + +.modal.fade { + top: -100%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out; +} + +.modal.fade.in { + top: 50%; +} + +.modal-body { + max-height: none; + overflow: visible; +} + +.modal.modal-absolute { + position: absolute; + z-index: 950; +} + +.modal .loading-mask { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: #fff; + border-radius: 6px; +} + +.modal-backdrop.modal-absolute{ + position: absolute; + z-index: 940; +} + +.modal-backdrop, +.modal-backdrop.fade.in{ + opacity: 0.7; + filter: alpha(opacity=70); + background: #fff; +} + +.modal.container { + width: 940px; + margin-left: -470px; +} + +/* Modal Overflow */ + +.modal-overflow.modal { + top: 5%; +} + +.modal-overflow.modal.fade { + top: -100%; +} + +.modal-overflow.modal.fade.in { + top: 5%; +} + +.modal-overflow .modal-body { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +/* Responsive */ + +@media (min-width: 1200px) { + .modal.container { + width: 1170px; + margin-left: -585px; + } +} + +@media (max-width: 979px) { + .modal, + .modal.container, + .modal.modal-overflow { + top: 1%; + right: 1%; + left: 1%; + bottom: auto; + width: auto !important; + height: auto !important; + margin: 0 !important; + padding: 0 !important; + } + + .modal.fade.in, + .modal.container.fade.in, + .modal.modal-overflow.fade.in { + top: 1%; + bottom: auto; + } + + .modal-body, + .modal-overflow .modal-body { + position: static; + margin: 0; + height: auto !important; + max-height: none !important; + overflow: visible !important; + } + + .modal-footer, + .modal-overflow .modal-footer { + position: static; + } +} + +.loading-spinner { + position: absolute; + top: 50%; + left: 50%; + margin: -12px 0 0 -12px; +} + +/* +Animate.css - http://daneden.me/animate +Licensed under the ☺ license (http://licence.visualidiot.com/) + +Copyright (c) 2012 Dan Eden*/ + +.animated { + -webkit-animation-duration: 1s; + -moz-animation-duration: 1s; + -o-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + -moz-animation-fill-mode: both; + -o-animation-fill-mode: both; + animation-fill-mode: both; +} + +@-webkit-keyframes shake { + 0%, 100% {-webkit-transform: translateX(0);} + 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);} + 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);} +} + +@-moz-keyframes shake { + 0%, 100% {-moz-transform: translateX(0);} + 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);} + 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);} +} + +@-o-keyframes shake { + 0%, 100% {-o-transform: translateX(0);} + 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);} + 20%, 40%, 60%, 80% {-o-transform: translateX(10px);} +} + +@keyframes shake { + 0%, 100% {transform: translateX(0);} + 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);} + 20%, 40%, 60%, 80% {transform: translateX(10px);} +} + +.shake { + -webkit-animation-name: shake; + -moz-animation-name: shake; + -o-animation-name: shake; + animation-name: shake; +} diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif new file mode 100644 index 00000000..4e651edc Binary files /dev/null and b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/img/ajax-loader.gif differ diff --git a/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modal.js b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modal.js new file mode 100644 index 00000000..20bb29c8 --- /dev/null +++ b/uiframe-iui/src/main/resources/webroot/vendor/bootstrap-modal/js/bootstrap-modal.js @@ -0,0 +1,378 @@ +/* =========================================================== + * bootstrap-modal.js v2.2.5 + * =========================================================== + * Copyright 2012 Jordan Schroter + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.init(element, options); + }; + + Modal.prototype = { + + constructor: Modal, + + init: function (element, options) { + var that = this; + + this.options = options; + + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)); + + this.options.remote && this.$element.find('.modal-body').load(this.options.remote, function () { + var e = $.Event('loaded'); + that.$element.trigger(e); + }); + + var manager = typeof this.options.manager === 'function' ? + this.options.manager.call(this) : this.options.manager; + + manager = manager.appendModal ? + manager : $(manager).modalmanager().data('modalmanager'); + + manager.appendModal(this); + }, + + toggle: function () { + return this[!this.isShown ? 'show' : 'hide'](); + }, + + show: function () { + var e = $.Event('show'); + + if (this.isShown) return; + + this.$element.trigger(e); + + if (e.isDefaultPrevented()) return; + + this.escape(); + + this.tab(); + + this.options.loading && this.loading(); + }, + + hide: function (e) { + e && e.preventDefault(); + + e = $.Event('hide'); + + this.$element.trigger(e); + + if (!this.isShown || e.isDefaultPrevented()) return; + + this.isShown = false; + + this.escape(); + + this.tab(); + + this.isLoading && this.loading(); + + $(document).off('focusin.modal'); + + this.$element + .removeClass('in') + .removeClass('animated') + .removeClass(this.options.attentionAnimation) + .removeClass('modal-overflow') + .attr('aria-hidden', true); + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal(); + }, + + layout: function () { + var prop = this.options.height ? 'height' : 'max-height', + value = this.options.height || this.options.maxHeight; + + if (this.options.width){ + this.$element.css('width', this.options.width); + + var that = this; + this.$element.css('margin-left', function () { + if (/%/ig.test(that.options.width)){ + return -(parseInt(that.options.width) / 2) + '%'; + } else { + return -($(this).width() / 2) + 'px'; + } + }); + } else { + this.$element.css('width', ''); + this.$element.css('margin-left', ''); + } + + this.$element.find('.modal-body') + .css('overflow', '') + .css(prop, ''); + + if (value){ + this.$element.find('.modal-body') + .css('overflow', 'auto') + .css(prop, value); + } + + var modalOverflow = $(window).height() - 10 < this.$element.height(); + + if (modalOverflow || this.options.modalOverflow) { + this.$element + .css('margin-top', 0) + .addClass('modal-overflow'); + } else { + this.$element + .css('margin-top', 0 - this.$element.height() / 2) + .removeClass('modal-overflow'); + } + }, + + tab: function () { + var that = this; + + if (this.isShown && this.options.consumeTab) { + this.$element.on('keydown.tabindex.modal', '[data-tabindex]', function (e) { + if (e.keyCode && e.keyCode == 9){ + var elements = [], + tabindex = Number($(this).data('tabindex')); + + that.$element.find('[data-tabindex]:enabled:visible:not([readonly])').each(function (ev) { + elements.push(Number($(this).data('tabindex'))); + }); + elements.sort(function(a,b){return a-b}); + + var arrayPos = $.inArray(tabindex, elements); + if (!e.shiftKey){ + arrayPos < elements.length-1 ? + that.$element.find('[data-tabindex='+elements[arrayPos+1]+']').focus() : + that.$element.find('[data-tabindex='+elements[0]+']').focus(); + } else { + arrayPos == 0 ? + that.$element.find('[data-tabindex='+elements[elements.length-1]+']').focus() : + that.$element.find('[data-tabindex='+elements[arrayPos-1]+']').focus(); + } + + e.preventDefault(); + } + }); + } else if (!this.isShown) { + this.$element.off('keydown.tabindex.modal'); + } + }, + + escape: function () { + var that = this; + if (this.isShown && this.options.keyboard) { + if (!this.$element.attr('tabindex')) this.$element.attr('tabindex', -1); + + this.$element.on('keyup.dismiss.modal', function (e) { + e.which == 27 && that.hide(); + }); + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + }, + + hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end); + that.hideModal(); + }, 500); + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout); + that.hideModal(); + }); + }, + + hideModal: function () { + var prop = this.options.height ? 'height' : 'max-height'; + var value = this.options.height || this.options.maxHeight; + + if (value){ + this.$element.find('.modal-body') + .css('overflow', '') + .css(prop, ''); + } + + this.$element + .hide() + .trigger('hidden'); + }, + + removeLoading: function () { + this.$loading.remove(); + this.$loading = null; + this.isLoading = false; + }, + + loading: function (callback) { + callback = callback || function () {}; + + var animate = this.$element.hasClass('fade') ? 'fade' : ''; + + if (!this.isLoading) { + var doAnimate = $.support.transition && animate; + + this.$loading = $('
    ') + .append(this.options.spinner) + .appendTo(this.$element); + + if (doAnimate) this.$loading[0].offsetWidth; // force reflow + + this.$loading.addClass('in'); + + this.isLoading = true; + + doAnimate ? + this.$loading.one($.support.transition.end, callback) : + callback(); + + } else if (this.isLoading && this.$loading) { + this.$loading.removeClass('in'); + + var that = this; + $.support.transition && this.$element.hasClass('fade')? + this.$loading.one($.support.transition.end, function () { that.removeLoading() }) : + that.removeLoading(); + + } else if (callback) { + callback(this.isLoading); + } + }, + + focus: function () { + var $focusElem = this.$element.find(this.options.focusOn); + + $focusElem = $focusElem.length ? $focusElem : this.$element; + + $focusElem.focus(); + }, + + attention: function (){ + // NOTE: transitionEnd with keyframes causes odd behaviour + + if (this.options.attentionAnimation){ + this.$element + .removeClass('animated') + .removeClass(this.options.attentionAnimation); + + var that = this; + + setTimeout(function () { + that.$element + .addClass('animated') + .addClass(that.options.attentionAnimation); + }, 0); + } + + + this.focus(); + }, + + + destroy: function () { + var e = $.Event('destroy'); + + this.$element.trigger(e); + + if (e.isDefaultPrevented()) return; + + this.$element + .off('.modal') + .removeData('modal') + .removeClass('in') + .attr('aria-hidden', true); + + if (this.$parent !== this.$element.parent()) { + this.$element.appendTo(this.$parent); + } else if (!this.$parent.length) { + // modal is not part of the DOM so remove it. + this.$element.remove(); + this.$element = null; + } + + this.$element.trigger('destroyed'); + } + }; + + + /* MODAL PLUGIN DEFINITION + * ======================= */ + + $.fn.modal = function (option, args) { + return this.each(function () { + var $this = $(this), + data = $this.data('modal'), + options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option); + + if (!data) $this.data('modal', (data = new Modal(this, options))); + if (typeof option == 'string') data[option].apply(data, [].concat(args)); + else if (options.show) data.show() + }) + }; + + $.fn.modal.defaults = { + keyboard: true, + backdrop: true, + loading: false, + show: true, + width: null, + height: null, + maxHeight: null, + modalOverflow: false, + consumeTab: true, + focusOn: null, + replace: false, + resize: false, + attentionAnimation: 'shake', + manager: 'body', + spinner: '
    ', + backdropTemplate: '