From e48ef997c03b49c8090970f5fbb29ce80b0ac6df Mon Sep 17 00:00:00 2001 From: 64850858 <648540858@qq.com> Date: Wed, 14 Jul 2021 15:57:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E6=92=AD=E6=94=BE=E5=99=A8?= =?UTF-8?q?=EF=BC=8C=20=E4=BF=AE=E6=AD=A3=E5=92=8C=E4=BC=98=E5=8C=96sql?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/mysql.sql | 48 +- .../genersoft/iot/vmp/VManageBootstrap.java | 2 + .../iot/vmp/common/VideoManagerConstants.java | 2 + .../genersoft/iot/vmp/conf/MediaConfig.java | 2 +- .../session/VideoStreamSessionManager.java | 12 + .../vmp/media/zlm/ZLMRTPServerFactory.java | 16 +- .../iot/vmp/media/zlm/ZLMRunner.java | 5 +- .../iot/vmp/service/impl/PlayServiceImpl.java | 1 - .../vmanager/gb28181/play/PlayController.java | 51 +- web_src/index.html | 3 +- web_src/package-lock.json | 39 +- web_src/package.json | 2 +- web_src/src/components/channelList.vue | 8 - .../src/components/dialog/devicePlayer.vue | 6 +- web_src/src/components/dialog/jessibuca.vue | 296 ++ web_src/src/router/index.js | 2 +- web_src/static/css/font-awesome.min.css | 4 - web_src/static/css/iconfont.css | 1655 ++++++ web_src/static/css/iconfont.woff2 | Bin 0 -> 46692 bytes web_src/static/css/login.css | 396 -- web_src/static/js/jessibuca/ff.js | 1 + web_src/static/js/jessibuca/ff.wasm | Bin 0 -> 1278094 bytes web_src/static/js/jessibuca/ff.worker.js | 1 + web_src/static/js/jessibuca/index.js | 4602 +++++++++++++++++ web_src/static/js/jessibuca/logo.png | Bin 0 -> 10620 bytes 25 files changed, 6693 insertions(+), 461 deletions(-) create mode 100644 web_src/src/components/dialog/jessibuca.vue delete mode 100644 web_src/static/css/font-awesome.min.css create mode 100644 web_src/static/css/iconfont.css create mode 100644 web_src/static/css/iconfont.woff2 delete mode 100755 web_src/static/css/login.css create mode 100644 web_src/static/js/jessibuca/ff.js create mode 100755 web_src/static/js/jessibuca/ff.wasm create mode 100644 web_src/static/js/jessibuca/ff.worker.js create mode 100644 web_src/static/js/jessibuca/index.js create mode 100644 web_src/static/js/jessibuca/logo.png diff --git a/sql/mysql.sql b/sql/mysql.sql index 7055edd3..21d7a52e 100644 --- a/sql/mysql.sql +++ b/sql/mysql.sql @@ -5,10 +5,10 @@ create table device ( deviceId varchar(50) not null primary key, - name varchar(50) null, - manufacturer varchar(50) null, - model varchar(50) null, - firmware varchar(50) null, + name varchar(255) null, + manufacturer varchar(255) null, + model varchar(255) null, + firmware varchar(255) null, transport varchar(50) null, streamMode varchar(50) null, online varchar(50) null, @@ -25,7 +25,7 @@ create table device create table device_channel ( channelId varchar(50) not null, - name varchar(50) null, + name varchar(255) null, manufacture varchar(50) null, model varchar(50) null, owner varchar(50) null, @@ -42,7 +42,7 @@ create table device_channel secrecy varchar(50) null, ipAddress varchar(50) null, port int null, - password varchar(50) null, + password varchar(255) null, PTZType int null, status int null, longitude double null, @@ -59,7 +59,7 @@ create table device_channel create table device_mobile_position ( deviceId varchar(50) not null, - deviceName varchar(50) null, + deviceName varchar(255) null, time varchar(50) not null, longitude double not null, latitude double not null, @@ -75,10 +75,10 @@ create table device_mobile_position create table gb_stream ( - app varchar(50) not null, - stream varchar(50) not null, + app varchar(255) not null, + stream varchar(255) not null, gbId varchar(50) not null, - name varchar(50) null, + name varchar(255) null, longitude double null, latitude double null, streamType varchar(50) null, @@ -90,7 +90,7 @@ create table parent_platform ( id int auto_increment, enable int null, - name varchar(50) null, + name varchar(255) null, serverGBId varchar(50) not null, serverGBDomain varchar(50) null, serverIP varchar(50) null, @@ -98,7 +98,7 @@ create table parent_platform deviceGBId varchar(50) not null, deviceIp varchar(50) null, devicePort varchar(50) null, - username varchar(50) null, + username varchar(255) null, password varchar(50) null, expires varchar(50) null, keepTimeout varchar(50) null, @@ -122,21 +122,21 @@ create table platform_gb_channel create table platform_gb_stream ( platformId varchar(50) not null, - app varchar(50) not null, - stream varchar(50) not null, + app varchar(255) not null, + stream varchar(255) not null, primary key (platformId, app, stream) ); create table stream_proxy ( type varchar(50) not null, - app varchar(50) not null, - stream varchar(50) not null, - url varchar(50) null, - src_url varchar(50) null, - dst_url blob null, + app varchar(255) not null, + stream varchar(255) not null, + url varchar(255) null, + src_url varchar(255) null, + dst_url varchar(255) null, timeout_ms int null, - ffmpeg_cmd_key varchar(50) null, + ffmpeg_cmd_key varchar(255) null, rtp_type varchar(50) null, enable_hls bit(1) null, enable_mp4 bit(1) null, @@ -146,8 +146,8 @@ create table stream_proxy create table stream_push ( - app varchar(50) not null, - stream varchar(50) not null, + app varchar(255) not null, + stream varchar(255) not null, totalReaderCount varchar(50) null, originType int null, originTypeStr varchar(50) null, @@ -160,8 +160,8 @@ create table user ( id int auto_increment primary key, - username varchar(50) not null, - password varchar(50) not null, + username varchar(255) not null, + password varchar(255) not null, roleId int not null, create_time varchar(50) not null ); diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java index f8b95fca..e5f13ecb 100644 --- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java +++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java @@ -5,9 +5,11 @@ import java.util.logging.LogManager; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.scheduling.annotation.EnableScheduling; import springfox.documentation.oas.annotations.EnableOpenApi; @SpringBootApplication +@EnableScheduling @EnableOpenApi public class VManageBootstrap extends LogManager { private static String[] args; diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java index 6d8f45d9..f4e895f0 100644 --- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java +++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java @@ -8,6 +8,8 @@ package com.genersoft.iot.vmp.common; */ public class VideoManagerConstants { + public static final String WVP_SERVER_PREFIX = "VMP_wvp_server"; + public static final String MEDIA_SERVER_PREFIX = "VMP_media_server"; public static final String MEDIA_STREAM_PREFIX = "VMP_media_stream"; diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java index c99c1cd8..52292a57 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java @@ -58,7 +58,7 @@ public class MediaConfig { @Value("${media.rtp.port-range}") private String rtpPortRange; - @Value("${media.record-assist-port}") + @Value("${media.record-assist-port:0}") private Integer recordAssistPort; public String getIp() { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java index 5ea57c15..9e402e1e 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java @@ -48,4 +48,16 @@ public class VideoStreamSessionManager { ssrcMap.remove(deviceId + "_" + channelId); streamIdMap.remove(deviceId + "_" + channelId); } + + public ConcurrentHashMap getSessionMap() { + return sessionMap; + } + + public ConcurrentHashMap getSsrcMap() { + return ssrcMap; + } + + public ConcurrentHashMap getStreamIdMap() { + return streamIdMap; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java index ab1d2dd9..ed069f88 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java @@ -34,11 +34,13 @@ public class ZLMRTPServerFactory { if (currentStreams == null) { currentStreams = new HashMap<>(); JSONObject jsonObject = zlmresTfulUtils.listRtpServer(); - JSONArray data = jsonObject.getJSONArray("data"); - if (data != null) { - for (int i = 0; i < data.size(); i++) { - JSONObject dataItem = data.getJSONObject(i); - currentStreams.put(dataItem.getString("stream_id"), dataItem.getInteger("port")); + if (jsonObject != null) { + JSONArray data = jsonObject.getJSONArray("data"); + if (data != null) { + for (int i = 0; i < data.size(); i++) { + JSONObject dataItem = data.getJSONObject(i); + currentStreams.put(dataItem.getString("stream_id"), dataItem.getInteger("port")); + } } } } @@ -73,12 +75,12 @@ public class ZLMRTPServerFactory { result= createRTPServer(streamId); break; default: - logger.error("创建RTP Server 失败: " + jsonObject.getString("msg")); + logger.error("创建RTP Server 失败 {}: " + jsonObject.getString("msg"), newPort); break; } }else { // 检查ZLM状态 - logger.error("创建RTP Server 失败: 请检查ZLM服务"); + logger.error("创建RTP Server 失败 {}: 请检查ZLM服务", newPort); } return result; } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java index f9171c3d..956db144 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java @@ -127,7 +127,7 @@ public class ZLMRunner implements CommandLineRunner { if (responseJSON != null && responseJSON.getInteger("code") == 0) { logger.info("设置zlm成功"); }else { - logger.info("设置zlm失败: " + responseJSON.getString("msg")); + logger.info("设置zlm失败"); } } @@ -155,6 +155,9 @@ public class ZLMRunner implements CommandLineRunner { // 设置为未启用 logger.info("恢复流代理失败,请检查流地址后重新启用" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream()); streamProxyService.stop(streamProxyDto.getApp(), streamProxyDto.getStream()); + }else if (jsonObject.getInteger("code") != 0){ // TODO 将错误信息存入数据库, 前端展示 + logger.info("恢复流代理失败:" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream() + "[ " + JSONObject.toJSONString(jsonObject) + " ]"); + streamProxyService.stop(streamProxyDto.getApp(), streamProxyDto.getStream()); } } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index 535c7900..172d9803 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -120,7 +120,6 @@ public class PlayServiceImpl implements IPlayService { zlmresTfulUtils.getSnap(streamUrl, 15, 1, path, fileName); } } - System.out.println(path); } catch (FileNotFoundException e) { e.printStackTrace(); } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java index 0f359458..4297bb2b 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java @@ -1,12 +1,15 @@ package com.genersoft.iot.vmp.vmanager.gb28181.play; +import com.alibaba.fastjson.JSONArray; import com.genersoft.iot.vmp.common.StreamInfo; +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; +import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult; import com.genersoft.iot.vmp.service.IMediaService; import com.genersoft.iot.vmp.service.IPlayService; @@ -31,6 +34,8 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import org.springframework.web.context.request.async.DeferredResult; +import java.util.Enumeration; +import java.util.Map; import java.util.UUID; import javax.sip.message.Response; @@ -46,6 +51,9 @@ public class PlayController { @Autowired private SIPCommander cmder; + @Autowired + private VideoStreamSessionManager streamSession; + @Autowired private IVideoManagerStorager storager; @@ -227,6 +235,20 @@ public class PlayController { logger.debug("语音广播API调用"); } Device device = storager.queryVideoDevice(deviceId); + DeferredResult> result = new DeferredResult>(3 * 1000L); + if (device == null) { + resultHolder.put(DeferredResultHolder.CALLBACK_CMD_BROADCAST + deviceId, result); + RequestMessage msg = new RequestMessage(); + msg.setId(DeferredResultHolder.CALLBACK_CMD_BROADCAST + deviceId); + JSONObject json = new JSONObject(); + json.put("DeviceID", deviceId); + json.put("CmdType", "Broadcast"); + json.put("Result", "Failed"); + json.put("Description", "Device 不存在"); + msg.setData(json); + resultHolder.invokeResult(msg); + return result; + } cmder.audioBroadcastCmd(device, event -> { Response response = event.getResponse(); RequestMessage msg = new RequestMessage(); @@ -239,7 +261,7 @@ public class PlayController { msg.setData(json); resultHolder.invokeResult(msg); }); - DeferredResult> result = new DeferredResult>(3 * 1000L); + result.onTimeout(() -> { logger.warn(String.format("语音广播操作超时, 设备未返回应答指令")); RequestMessage msg = new RequestMessage(); @@ -256,5 +278,32 @@ public class PlayController { return result; } + @ApiOperation("获取所有的ssrc") + @GetMapping("/ssrc") + public WVPResult getSSRC() { + if (logger.isDebugEnabled()) { + logger.debug("获取所有的ssrc"); + } + JSONArray objects = new JSONArray(); + for(Map.Entry entry: streamSession.getSsrcMap().entrySet()) { + System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); + JSONObject jsonObject = new JSONObject(); + String[] keyArray = entry.getKey().split("_"); + jsonObject.put("deviceId", keyArray[0]); + jsonObject.put("channelId", keyArray[1]); + jsonObject.put("ssrc", entry.getValue()); + jsonObject.put("streamId", streamSession.getStreamIdMap().get(entry.getKey())); + objects.add(jsonObject); + } + WVPResult result = new WVPResult<>(); + result.setCode(0); + result.setMsg("success"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data", objects); + jsonObject.put("count", objects.size()); + result.setData(jsonObject); + return result; + } + } diff --git a/web_src/index.html b/web_src/index.html index 88791758..697e987f 100644 --- a/web_src/index.html +++ b/web_src/index.html @@ -4,10 +4,11 @@ 国标28181 - + + diff --git a/web_src/package-lock.json b/web_src/package-lock.json index b71b322c..11c228f1 100644 --- a/web_src/package-lock.json +++ b/web_src/package-lock.json @@ -1633,7 +1633,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30001146", + "caniuse-db": "1.0.30001244", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -1644,16 +1644,16 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30001146", + "caniuse-db": "1.0.30001244", "electron-to-chromium": "1.3.742" } } } }, "caniuse-db": { - "version": "1.0.30001146", - "resolved": "https://registry.npm.taobao.org/caniuse-db/download/caniuse-db-1.0.30001146.tgz?cache=0&sync_timestamp=1602133173904&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-db%2Fdownload%2Fcaniuse-db-1.0.30001146.tgz", - "integrity": "sha1-poOLhbXEFSLrDXsetgeHFsBQ1q4=", + "version": "1.0.30001244", + "resolved": "https://registry.nlark.com/caniuse-db/download/caniuse-db-1.0.30001244.tgz?cache=0&sync_timestamp=1626154539434&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcaniuse-db%2Fdownload%2Fcaniuse-db-1.0.30001244.tgz", + "integrity": "sha1-pt/zJHNkjfCwrg+Z2YeXrft89Fk=", "dev": true }, "caniuse-lite": { @@ -2241,7 +2241,7 @@ }, "css-loader": { "version": "0.28.11", - "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-0.28.11.tgz", + "resolved": "https://registry.nlark.com/css-loader/download/css-loader-0.28.11.tgz?cache=0&sync_timestamp=1621865230592&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-loader%2Fdownload%2Fcss-loader-0.28.11.tgz", "integrity": "sha1-w/mGSnAL4nEbtaJGKyOJsaOS2rc=", "dev": true, "requires": { @@ -2426,7 +2426,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30001146", + "caniuse-db": "1.0.30001244", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -2439,7 +2439,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30001146", + "caniuse-db": "1.0.30001244", "electron-to-chromium": "1.3.742" } }, @@ -3548,6 +3548,7 @@ "is-string": "1.0.6", "object-inspect": "1.10.3", "object-keys": "1.1.1", + "object.assign": "4.1.2", "string.prototype.trimend": "1.0.4", "string.prototype.trimstart": "1.0.4", "unbox-primitive": "1.0.1" @@ -5463,9 +5464,9 @@ } }, "math-expression-evaluator": { - "version": "1.2.22", - "resolved": "https://registry.npm.taobao.org/math-expression-evaluator/download/math-expression-evaluator-1.2.22.tgz", - "integrity": "sha1-wU3LPYtNFQ5dzqnGjI2tgDCbDV4=", + "version": "1.3.8", + "resolved": "https://registry.nlark.com/math-expression-evaluator/download/math-expression-evaluator-1.3.8.tgz", + "integrity": "sha1-Mg2jsrwVEvT1D8MCCysc1cjp1Xc=", "dev": true }, "md5.js": { @@ -6161,6 +6162,18 @@ "isobject": "3.0.1" } }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.nlark.com/object.assign/download/object.assign-4.1.2.tgz", + "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=", + "dev": true, + "requires": { + "call-bind": "1.0.2", + "define-properties": "1.1.3", + "has-symbols": "1.0.2", + "object-keys": "1.1.1" + } + }, "object.getownpropertydescriptors": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", @@ -7544,7 +7557,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30001146", + "caniuse-db": "1.0.30001244", "electron-to-chromium": "1.3.742" } }, @@ -9198,7 +9211,7 @@ "dev": true, "requires": { "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.22", + "math-expression-evaluator": "1.3.8", "reduce-function-call": "1.0.3" }, "dependencies": { diff --git a/web_src/package.json b/web_src/package.json index 280edc71..69d8b6ab 100644 --- a/web_src/package.json +++ b/web_src/package.json @@ -36,7 +36,7 @@ "babel-preset-stage-2": "^6.22.0", "chalk": "^2.0.1", "copy-webpack-plugin": "^4.6.0", - "css-loader": "^0.28.0", + "css-loader": "^0.28.11", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^1.1.4", "friendly-errors-webpack-plugin": "^1.6.1", diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index 548bd2cc..3891ab53 100644 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -154,7 +154,6 @@ export default { }, currentChange: function (val) { var url = `/${this.$router.currentRoute.name}/${this.deviceId}/${this.parentChannelId}/${this.count}/${val}` - console.log(url) this.$router.push(url).then(() => { this.initParam(); this.initData(); @@ -182,7 +181,6 @@ export default { channelType: that.channelType } }).then(function (res) { - console.log(res); that.total = res.data.total; that.deviceChannelList = res.data.list; // 防止出现表格错位 @@ -196,7 +194,6 @@ export default { //通知设备上传媒体流 sendDevicePush: function (itemData) { - console.log(itemData); let deviceId = this.deviceId; this.isLoging = true; let channelId = itemData.channelId; @@ -232,13 +229,11 @@ export default { this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date: format}) }, stopDevicePush: function (itemData) { - console.log(itemData) var that = this; this.$axios({ method: 'get', url: '/api/play/stop/' + this.deviceId + "/" + itemData.channelId }).then(function (res) { - console.log(JSON.stringify(res)); that.initData(); }).catch(function (error) { if (error.response.status === 402) { // 已经停止过 @@ -273,7 +268,6 @@ export default { }) }, changeSubchannel(itemData) { - console.log(this.$router.currentRoute) this.beforeUrl = this.$router.currentRoute.path; var url = `/${this.$router.currentRoute.name}/${this.$router.currentRoute.params.deviceId}/${itemData.channelId}/${this.$router.currentRoute.params.count}/1` @@ -310,13 +304,11 @@ export default { }); }, search: function () { - console.log(this.searchSrt) this.currentPage = 1; this.total = 0; this.initData(); }, updateChannel: function (row) { - console.log(row) this.$axios({ method: 'post', url: `/api/device/query/channel/update/${this.deviceId}`, diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue index 1dfc4610..9653833f 100644 --- a/web_src/src/components/dialog/devicePlayer.vue +++ b/web_src/src/components/dialog/devicePlayer.vue @@ -151,7 +151,8 @@ + + diff --git a/web_src/src/router/index.js b/web_src/src/router/index.js index 05ccaf77..4b0810d3 100644 --- a/web_src/src/router/index.js +++ b/web_src/src/router/index.js @@ -15,7 +15,7 @@ import web from '../components/setting/Web.vue' import sip from '../components/setting/Sip.vue' import media from '../components/setting/Media.vue' -import wasmPlayer from '../components/dialog/easyPlayer.vue' +import wasmPlayer from '../components/dialog/jessibuca.vue' import rtcPlayer from '../components/dialog/rtcPlayer.vue' const originalPush = VueRouter.prototype.push diff --git a/web_src/static/css/font-awesome.min.css b/web_src/static/css/font-awesome.min.css deleted file mode 100644 index 540440ce..00000000 --- a/web_src/static/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.7.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.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/web_src/static/css/iconfont.css b/web_src/static/css/iconfont.css new file mode 100644 index 00000000..972cf6bc --- /dev/null +++ b/web_src/static/css/iconfont.css @@ -0,0 +1,1655 @@ +@font-face { + font-family: "iconfont"; /* Project id 1291092 */ + src: url('iconfont.woff2?t=1626163621710') format('woff2'), + url('iconfont.woff?t=1626163621710') format('woff'), + url('iconfont.ttf?t=1626163621710') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-xiangqing2:before { + content: "\e798"; +} + +.icon-record:before { + content: "\e7a6"; +} + +.icon-audio-mute:before { + content: "\e792"; +} + +.icon-audio-high:before { + content: "\e793"; +} + +.icon-record1:before { + content: "\e7f8"; +} + +.icon-audio-line:before { + content: "\e794"; +} + +.icon-record2:before { + content: "\e795"; +} + +.icon-audio-fill:before { + content: "\e796"; +} + +.icon-PTZ:before { + content: "\e797"; +} + +.icon-camera1196054easyiconnet:before { + content: "\e791"; +} + +.icon-weibiaoti10:before { + content: "\e78f"; +} + +.icon-weibiaoti11:before { + content: "\e790"; +} + +.icon-page-next1:before { + content: "\e69c"; +} + +.icon-page-last1:before { + content: "\e69d"; +} + +.icon-ptz-down1:before { + content: "\e69e"; +} + +.icon-file-search1:before { + content: "\e69f"; +} + +.icon-page-first1:before { + content: "\e6a0"; +} + +.icon-fork1:before { + content: "\e6a1"; +} + +.icon-ptz-middle1:before { + content: "\e6a2"; +} + +.icon-ptz-upright1:before { + content: "\e6a3"; +} + +.icon-ptz-downleft1:before { + content: "\e6a4"; +} + +.icon-window-restore1:before { + content: "\e6a5"; +} + +.icon-plus1:before { + content: "\e6a6"; +} + +.icon-ptz-right1:before { + content: "\e6a7"; +} + +.icon-stop:before { + content: "\e6a8"; +} + +.icon-refresh1:before { + content: "\e6a9"; +} + +.icon-tool-polyline1:before { + content: "\e6aa"; +} + +.icon-tool-point1:before { + content: "\e6ab"; +} + +.icon-minus1:before { + content: "\e6ac"; +} + +.icon-ptz-wiper1:before { + content: "\e6ad"; +} + +.icon-tool-select1:before { + content: "\e6ae"; +} + +.icon-tool-polygon1:before { + content: "\e6af"; +} + +.icon-settings1:before { + content: "\e6b0"; +} + +.icon-search1:before { + content: "\e6b1"; +} + +.icon-ir-vis1:before { + content: "\e6b2"; +} + +.icon-ptz-light1:before { + content: "\e6b3"; +} + +.icon-ptz-up1:before { + content: "\e6b4"; +} + +.icon-ptz-upleft1:before { + content: "\e6b5"; +} + +.icon-temp-stream1:before { + content: "\e6b6"; +} + +.icon-tool-mouse1:before { + content: "\e6b7"; +} + +.icon-zhongyingwenyingwen-01:before { + content: "\e6b8"; +} + +.icon-zhongyingwenyingwen02-01:before { + content: "\e6b9"; +} + +.icon-crop2:before { + content: "\e6ba"; +} + +.icon-expander-down2:before { + content: "\e6bb"; +} + +.icon-window-restore2:before { + content: "\e6bc"; +} + +.icon-file-jpg2:before { + content: "\e6bd"; +} + +.icon-asterisk3:before { + content: "\e6be"; +} + +.icon-ffc2:before { + content: "\e6bf"; +} + +.icon-file-record2:before { + content: "\e6c0"; +} + +.icon-file-stream2:before { + content: "\e6c1"; +} + +.icon-fork2:before { + content: "\e6c2"; +} + +.icon-file-mp42:before { + content: "\e6c3"; +} + +.icon-ir-vis2:before { + content: "\e6c4"; +} + +.icon-file-search2:before { + content: "\e6c5"; +} + +.icon-pause:before { + content: "\e6c6"; +} + +.icon-play1:before { + content: "\e6c7"; +} + +.icon-page-previous2:before { + content: "\e6c8"; +} + +.icon-page-next2:before { + content: "\e6c9"; +} + +.icon-minus2:before { + content: "\e6ca"; +} + +.icon-page-last2:before { + content: "\e6cb"; +} + +.icon-page-first2:before { + content: "\e6cc"; +} + +.icon-ptz-downleft2:before { + content: "\e6cd"; +} + +.icon-ptz-downright2:before { + content: "\e6ce"; +} + +.icon-ptz-middle2:before { + content: "\e6cf"; +} + +.icon-ptz-down2:before { + content: "\e6d0"; +} + +.icon-plus2:before { + content: "\e6d1"; +} + +.icon-ptz-left2:before { + content: "\e6d2"; +} + +.icon-ptz-up2:before { + content: "\e6d3"; +} + +.icon-ptz-right2:before { + content: "\e6d4"; +} + +.icon-ptz-light2:before { + content: "\e6d5"; +} + +.icon-ptz-wiper2:before { + content: "\e6d6"; +} + +.icon-ptz-upright2:before { + content: "\e6d7"; +} + +.icon-search2:before { + content: "\e6d8"; +} + +.icon-refresh2:before { + content: "\e6d9"; +} + +.icon-ptz-upleft2:before { + content: "\e6da"; +} + +.icon-stop1:before { + content: "\e6db"; +} + +.icon-tool-mouse2:before { + content: "\e6dc"; +} + +.icon-settings2:before { + content: "\e6dd"; +} + +.icon-tool-polygon2:before { + content: "\e6de"; +} + +.icon-tool-point2:before { + content: "\e6df"; +} + +.icon-temp-stream2:before { + content: "\e6e0"; +} + +.icon-tool-polyline2:before { + content: "\e6e1"; +} + +.icon-window-maximize2:before { + content: "\e6e2"; +} + +.icon-window-minimize2:before { + content: "\e6e3"; +} + +.icon-tool-select2:before { + content: "\e6e4"; +} + +.icon-video-stream2:before { + content: "\e6e5"; +} + +.icon-bianji1:before { + content: "\e6e6"; +} + +.icon-caidanzhankai1:before { + content: "\e6e7"; +} + +.icon-cha11:before { + content: "\e6e8"; +} + +.icon-caidanshouqi1:before { + content: "\e6e9"; +} + +.icon-zhongyingwen2zhongwen1:before { + content: "\e6ea"; +} + +.icon-bofang011:before { + content: "\e6eb"; +} + +.icon-zuo:before { + content: "\e6ec"; +} + +.icon-baojing1:before { + content: "\e6ed"; +} + +.icon-fuxuankuang-true1:before { + content: "\e6ee"; +} + +.icon-bofang2:before { + content: "\e6ef"; +} + +.icon-baojingshezhi1:before { + content: "\e6f0"; +} + +.icon-jiahao2:before { + content: "\e6f1"; +} + +.icon-huifangxuanzhong1:before { + content: "\e6f2"; +} + +.icon-cewen1:before { + content: "\e6f3"; +} + +.icon-baojingjilu2:before { + content: "\e6f4"; +} + +.icon-danxuan1:before { + content: "\e6f5"; +} + +.icon-pingmufenge1:before { + content: "\e6f6"; +} + +.icon-luxiangguanli1:before { + content: "\e6f7"; +} + +.icon-goukuang:before { + content: "\e6f8"; +} + +.icon-shanchu11:before { + content: "\e6f9"; +} + +.icon-cha02:before { + content: "\e6fa"; +} + +.icon-huifang1:before { + content: "\e6fb"; +} + +.icon-rili1:before { + content: "\e6fc"; +} + +.icon-quanping1:before { + content: "\e6fd"; +} + +.icon-jianhao1:before { + content: "\e6fe"; +} + +.icon-shijian1:before { + content: "\e6ff"; +} + +.icon-shishiyulanxuanzhong1:before { + content: "\e700"; +} + +.icon-shouji1:before { + content: "\e701"; +} + +.icon-shouyexuanzhong1:before { + content: "\e702"; +} + +.icon-luxiang01:before { + content: "\e703"; +} + +.icon-shishiyulan:before { + content: "\e704"; +} + +.icon-quxiao:before { + content: "\e601"; +} + +.icon-sousuo1:before { + content: "\e705"; +} + +.icon-file-record:before { + content: "\e602"; +} + +.icon-shebeiguanli1:before { + content: "\e706"; +} + +.icon-play:before { + content: "\e603"; +} + +.icon-suo1:before { + content: "\e707"; +} + +.icon-file-stream:before { + content: "\e604"; +} + +.icon-tuichudenglu1:before { + content: "\e708"; +} + +.icon-ptz-middle:before { + content: "\e606"; +} + +.icon-wenhao1:before { + content: "\e709"; +} + +.icon-minus:before { + content: "\e607"; +} + +.icon-shezhixuanzhong:before { + content: "\e70a"; +} + +.icon-fork:before { + content: "\e608"; +} + +.icon-shezhiweixuanzhong1:before { + content: "\e70b"; +} + +.icon-ptz-up:before { + content: "\e609"; +} + +.icon-shuju2:before { + content: "\e70c"; +} + +.icon-file-jpg:before { + content: "\e60a"; +} + +.icon-xiazai011:before { + content: "\e70d"; +} + +.icon-ptz-left:before { + content: "\e60b"; +} + +.icon-xiala11:before { + content: "\e70e"; +} + +.icon-ptz-down:before { + content: "\e60c"; +} + +.icon-shuaxin:before { + content: "\e70f"; +} + +.icon-file-search:before { + content: "\e60d"; +} + +.icon-pingmufenge01:before { + content: "\e710"; +} + +.icon-crop:before { + content: "\e60e"; +} + +.icon-yonghu1:before { + content: "\e711"; +} + +.icon-asterisk:before { + content: "\e60f"; +} + +.icon-wenhao01:before { + content: "\e712"; +} + +.icon-expander-down:before { + content: "\e610"; +} + +.icon-you:before { + content: "\e713"; +} + +.icon-ptz-right:before { + content: "\e611"; +} + +.icon-shujuxuanzhong1:before { + content: "\e714"; +} + +.icon-ptz-wiper:before { + content: "\e612"; +} + +.icon-kuangxuan1:before { + content: "\e715"; +} + +.icon-ir-vis:before { + content: "\e613"; +} + +.icon-yonghuguanli1:before { + content: "\e716"; +} + +.icon-ptz-upleft:before { + content: "\e614"; +} + +.icon-zhongyingwenyingwen:before { + content: "\e717"; +} + +.icon-ptz-downright:before { + content: "\e615"; +} + +.icon-xiala2:before { + content: "\e718"; +} + +.icon-search:before { + content: "\e616"; +} + +.icon-luxiang:before { + content: "\e719"; +} + +.icon-ptz-upright:before { + content: "\e617"; +} + +.icon-zanting2:before { + content: "\e71a"; +} + +.icon-ptz-downleft:before { + content: "\e618"; +} + +.icon-kefu:before { + content: "\e71b"; +} + +.icon-tool-point:before { + content: "\e619"; +} + +.icon-jiqiren:before { + content: "\e71c"; +} + +.icon-ptz-light:before { + content: "\e61a"; +} + +.icon-huanliuzhan:before { + content: "\e71d"; +} + +.icon-tool-polyline:before { + content: "\e61b"; +} + +.icon-shouji2:before { + content: "\e71e"; +} + +.icon-file-mp4:before { + content: "\e61c"; +} + +.icon-cangku:before { + content: "\e71f"; +} + +.icon-window-maximize:before { + content: "\e61d"; +} + +.icon-shuaxin11:before { + content: "\e720"; +} + +.icon-page-next:before { + content: "\e61e"; +} + +.icon-weixiu:before { + content: "\e721"; +} + +.icon-ffc:before { + content: "\e61f"; +} + +.icon-biandianzhan:before { + content: "\e722"; +} + +.icon-tool-mouse:before { + content: "\e620"; +} + +.icon-youxiang:before { + content: "\e723"; +} + +.icon-settings:before { + content: "\e621"; +} + +.icon-qq:before { + content: "\e724"; +} + +.icon-page-last:before { + content: "\e622"; +} + +.icon-dianhua01:before { + content: "\e725"; +} + +.icon-window-restore:before { + content: "\e624"; +} + +.icon-fasongyoujian:before { + content: "\e726"; +} + +.icon-tool-select:before { + content: "\e625"; +} + +.icon-gaotieyunhangcopy:before { + content: "\e727"; +} + +.icon-video-stream:before { + content: "\e627"; +} + +.icon-dizhi:before { + content: "\e728"; +} + +.icon-page-first:before { + content: "\e628"; +} + +.icon-anfangbaojingmian:before { + content: "\e729"; +} + +.icon-page-previous:before { + content: "\e629"; +} + +.icon-piliangcaozuo1:before { + content: "\e72a"; +} + +.icon-refresh:before { + content: "\e62a"; +} + +.icon-qiyeguanli1:before { + content: "\e72b"; +} + +.icon-temp-stream:before { + content: "\e62b"; +} + +.icon-luxiangguanli2:before { + content: "\e72c"; +} + +.icon-tool-polygon:before { + content: "\e62c"; +} + +.icon-quanxianguanli1:before { + content: "\e72d"; +} + +.icon-window-minimize:before { + content: "\e62d"; +} + +.icon-shezhi1:before { + content: "\e72e"; +} + +.icon-plus:before { + content: "\e62e"; +} + +.icon-shishi1:before { + content: "\e72f"; +} + +.icon-qiyeguanli:before { + content: "\e62f"; +} + +.icon-shujuquanxian1:before { + content: "\e730"; +} + +.icon-quanxianguanli:before { + content: "\e630"; +} + +.icon-shishiyulanxuanzhong2:before { + content: "\e731"; +} + +.icon-shujuquanxian:before { + content: "\e631"; +} + +.icon-renzheng:before { + content: "\e732"; +} + +.icon--_baojinglianxiren:before { + content: "\e632"; +} + +.icon-shuju3:before { + content: "\e733"; +} + +.icon-yuechi:before { + content: "\e633"; +} + +.icon-shouye1:before { + content: "\e734"; +} + +.icon-xitongguanli:before { + content: "\e634"; +} + +.icon-zuzhi1:before { + content: "\e735"; +} + +.icon-zuzhi:before { + content: "\e635"; +} + +.icon-zuzhiguanli1:before { + content: "\e736"; +} + +.icon-renzheng6:before { + content: "\e636"; +} + +.icon-xitongguanli1:before { + content: "\e737"; +} + +.icon-yonghuguanli01:before { + content: "\e637"; +} + +.icon-yuechi1:before { + content: "\e738"; +} + +.icon-baojingmoban:before { + content: "\e638"; +} + +.icon-baojinglianxiren:before { + content: "\e739"; +} + +.icon-zuzhiguanli:before { + content: "\e639"; +} + +.icon-baojingjilu3:before { + content: "\e73a"; +} + +.icon-yonghuguanli:before { + content: "\e63a"; +} + +.icon-huifangxuanzhong2:before { + content: "\e73b"; +} + +.icon-bumenguanli:before { + content: "\e63b"; +} + +.icon-caiwu1:before { + content: "\e73c"; +} + +.icon-shishi:before { + content: "\e63c"; +} + +.icon-baojingguize1:before { + content: "\e73d"; +} + +.icon-baojing:before { + content: "\e63d"; +} + +.icon-bumenguanli1:before { + content: "\e73e"; +} + +.icon-shezhi:before { + content: "\e63e"; +} + +.icon-baojing2:before { + content: "\e73f"; +} + +.icon-huifangxuanzhong:before { + content: "\e63f"; +} + +.icon-yonghuguanli2:before { + content: "\e740"; +} + +.icon-luxiangguanli:before { + content: "\e640"; +} + +.icon-huifang2:before { + content: "\e741"; +} + +.icon-huifang:before { + content: "\e642"; +} + +.icon-baojingmoban1:before { + content: "\e742"; +} + +.icon-shouye:before { + content: "\e643"; +} + +.icon-dingdanxiangqing1:before { + content: "\e743"; +} + +.icon-shishiyulanxuanzhong:before { + content: "\e644"; +} + +.icon-fapiaoguanli1:before { + content: "\e744"; +} + +.icon-caiwu:before { + content: "\e645"; +} + +.icon-shiyonggaikuang1:before { + content: "\e745"; +} + +.icon-baojingjilu:before { + content: "\e646"; +} + +.icon-zengzhifuwu1:before { + content: "\e746"; +} + +.icon-baojingguize:before { + content: "\e647"; +} + +.icon-yiguanzhu:before { + content: "\e747"; +} + +.icon-shuju:before { + content: "\e648"; +} + +.icon-baojingtuisongshezhi1:before { + content: "\e748"; +} + +.icon-piliangcaozuo:before { + content: "\e649"; +} + +.icon-quxiao1:before { + content: "\e749"; +} + +.icon-suo:before { + content: "\e64a"; +} + +.icon-xiangqing1:before { + content: "\e74a"; +} + +.icon-yonghu:before { + content: "\e64b"; +} + +.icon-xufei1:before { + content: "\e74b"; +} + +.icon-shouji:before { + content: "\e64c"; +} + +.icon-zhifu1:before { + content: "\e74c"; +} + +.icon-tianjiadian:before { + content: "\e64d"; +} + +.icon-kuang:before { + content: "\e74d"; +} + +.icon-tianjiaxian:before { + content: "\e64e"; +} + +.icon-shouzhimingxi:before { + content: "\e74e"; +} + +.icon-tianjiaxuanqu:before { + content: "\e64f"; +} + +.icon-shouzhimingxi1:before { + content: "\e74f"; +} + +.icon-xuanzeduixiang:before { + content: "\e650"; +} + +.icon-daochu:before { + content: "\e750"; +} + +.icon-baojing01:before { + content: "\e651"; +} + +.icon-daochu1:before { + content: "\e751"; +} + +.icon-baojingjilu1:before { + content: "\e652"; +} + +.icon-daping:before { + content: "\e752"; +} + +.icon-baojingshezhi:before { + content: "\e653"; +} + +.icon-shaixuan:before { + content: "\e753"; +} + +.icon-cewen:before { + content: "\e654"; +} + +.icon-zhifu2:before { + content: "\e754"; +} + +.icon-tuichudenglu:before { + content: "\e655"; +} + +.icon-shaixuan1:before { + content: "\e755"; +} + +.icon-shezhiweixuanzhong:before { + content: "\e656"; +} + +.icon-zhifu3:before { + content: "\e756"; +} + +.icon-shezhixuanzhong1:before { + content: "\e657"; +} + +.icon-xia:before { + content: "\e757"; +} + +.icon-shouyexuanzhong:before { + content: "\e658"; +} + +.icon-xia1:before { + content: "\e758"; +} + +.icon-shujuxuanzhong:before { + content: "\e659"; +} + +.icon-yanzhengma:before { + content: "\e759"; +} + +.icon-shuju1:before { + content: "\e65a"; +} + +.icon-tongxunlu:before { + content: "\e75a"; +} + +.icon-bianji:before { + content: "\e65b"; +} + +.icon-yanzhengma1:before { + content: "\e75b"; +} + +.icon-rili:before { + content: "\e65c"; +} + +.icon-tongxunlu1:before { + content: "\e75c"; +} + +.icon-shanchu:before { + content: "\e65d"; +} + +.icon-yingyongbangding:before { + content: "\e75d"; +} + +.icon-jiahao:before { + content: "\e65e"; +} + +.icon-yingyongbangding1:before { + content: "\e75e"; +} + +.icon-wenhao:before { + content: "\e65f"; +} + +.icon-yingyongbangding2:before { + content: "\e75f"; +} + +.icon-zhongyingwen:before { + content: "\e660"; +} + +.icon-dapingzhanshi:before { + content: "\e760"; +} + +.icon-kuangxuan:before { + content: "\e661"; +} + +.icon-jiankong:before { + content: "\e761"; +} + +.icon-cha1:before { + content: "\e662"; +} + +.icon-touxiang:before { + content: "\e762"; +} + +.icon-bofang01:before { + content: "\e663"; +} + +.icon-lou:before { + content: "\e763"; +} + +.icon-caidanzhankai:before { + content: "\e664"; +} + +.icon-jiankong1:before { + content: "\e764"; +} + +.icon-caidanshouqi:before { + content: "\e665"; +} + +.icon-lou1:before { + content: "\e765"; +} + +.icon-danxuan:before { + content: "\e666"; +} + +.icon-dapingzhanshi1:before { + content: "\e766"; +} + +.icon-fuxuankuangxuanzhong:before { + content: "\e667"; +} + +.icon-touxiang1:before { + content: "\e767"; +} + +.icon-fuxuankuang-true:before { + content: "\e668"; +} + +.icon-shebei:before { + content: "\e768"; +} + +.icon-jianhao:before { + content: "\e669"; +} + +.icon-shebeii:before { + content: "\e769"; +} + +.icon-shanchu1:before { + content: "\e66a"; +} + +.icon-bianji11:before { + content: "\e76a"; +} + +.icon-shijian:before { + content: "\e66b"; +} + +.icon-jilu:before { + content: "\e76b"; +} + +.icon-jiahao1:before { + content: "\e66c"; +} + +.icon-yun:before { + content: "\e76c"; +} + +.icon-sousuo:before { + content: "\e66d"; +} + +.icon-baojing3:before { + content: "\e76d"; +} + +.icon-zhongyingwen2zhongwen:before { + content: "\e66e"; +} + +.icon-zhinengyangan:before { + content: "\e76e"; +} + +.icon-xiala:before { + content: "\e66f"; +} + +.icon-yongdiananquan:before { + content: "\e76f"; +} + +.icon-xiala1:before { + content: "\e670"; +} + +.icon-zhinengmensuo:before { + content: "\e770"; +} + +.icon-xiazai01:before { + content: "\e671"; +} + +.icon-xiaokongyujing:before { + content: "\e771"; +} + +.icon-pingmufenge02:before { + content: "\e672"; +} + +.icon-zhinengdianbiao:before { + content: "\e772"; +} + +.icon-shezhi01:before { + content: "\e673"; +} + +.icon-zhinengshuibiao:before { + content: "\e773"; +} + +.icon-zuixiaohuaxi:before { + content: "\e674"; +} + +.icon-shuiyajiance01:before { + content: "\e774"; +} + +.icon-zuidahuaxi:before { + content: "\e675"; +} + +.icon-zhinengzhaoming:before { + content: "\e775"; +} + +.icon-huifuxi:before { + content: "\e676"; +} + +.icon-zhinengmenjin:before { + content: "\e776"; +} + +.icon-guanbixi:before { + content: "\e677"; +} + +.icon-tingchechang:before { + content: "\e777"; +} + +.icon-baocunJPG:before { + content: "\e678"; +} + +.icon-xiala3:before { + content: "\e778"; +} + +.icon-quxian:before { + content: "\e679"; +} + +.icon-zhinengkongtiao:before { + content: "\e779"; +} + +.icon-tingzhiyulan:before { + content: "\e67a"; +} + +.icon-sousuo2:before { + content: "\e77a"; +} + +.icon-wenduliuluzhi:before { + content: "\e67b"; +} + +.icon-shang1:before { + content: "\e77b"; +} + +.icon-shuaxin1:before { + content: "\e67c"; +} + +.icon-1_jingdianchuwuweixuanzhong:before { + content: "\e77c"; +} + +.icon-shangjiantou:before { + content: "\e67d"; +} + +.icon-dianti:before { + content: "\e77d"; +} + +.icon-shang:before { + content: "\e67e"; +} + +.icon-zhuangtai:before { + content: "\e77e"; +} + +.icon-zixun:before { + content: "\e67f"; +} + +.icon-keshi:before { + content: "\e77f"; +} + +.icon-youxiang01:before { + content: "\e680"; +} + +.icon-chongzhijilu:before { + content: "\e780"; +} + +.icon-QQ:before { + content: "\e681"; +} + +.icon-jingshi:before { + content: "\e781"; +} + +.icon-dianhua:before { + content: "\e682"; +} + +.icon-bianji2:before { + content: "\e782"; +} + +.icon-pingmufenge:before { + content: "\e683"; +} + +.icon-fuzhi:before { + content: "\e783"; +} + +.icon-gou:before { + content: "\e684"; +} + +.icon-guanyu:before { + content: "\e784"; +} + +.icon-dingdanxiangqing:before { + content: "\e685"; +} + +.icon-shishiyulan-01:before { + content: "\e785"; +} + +.icon-shiyonggaikuang:before { + content: "\e686"; +} + +.icon-shujuchakan:before { + content: "\e786"; +} + +.icon-fapiaoguanli:before { + content: "\e687"; +} + +.icon-shanchu2:before { + content: "\e787"; +} + +.icon-xiangqing:before { + content: "\e688"; +} + +.icon-xitongpeizhi:before { + content: "\e788"; +} + +.icon-baojingtuisongshezhi:before { + content: "\e689"; +} + +.icon-tezhengwendu:before { + content: "\e789"; +} + +.icon-zhifu:before { + content: "\e68a"; +} + +.icon-quanzhenwendu:before { + content: "\e78a"; +} + +.icon-zengzhifuwu:before { + content: "\e68b"; +} + +.icon-fenxiang:before { + content: "\e78b"; +} + +.icon-xufei:before { + content: "\e68c"; +} + +.icon-fenxiang01:before { + content: "\e78c"; +} + +.icon-asterisk1:before { + content: "\e68d"; +} + +.icon-wenhao2:before { + content: "\e78d"; +} + +.icon-window-maximize1:before { + content: "\e68e"; +} + +.icon-dian:before { + content: "\e78e"; +} + +.icon-crop1:before { + content: "\e68f"; +} + +.icon-asterisk2:before { + content: "\e690"; +} + +.icon-file-record1:before { + content: "\e691"; +} + +.icon-ffc1:before { + content: "\e692"; +} + +.icon-file-mp41:before { + content: "\e693"; +} + +.icon-window-minimize1:before { + content: "\e694"; +} + +.icon-ptz-downright1:before { + content: "\e695"; +} + +.icon-video-stream1:before { + content: "\e696"; +} + +.icon-file-jpg1:before { + content: "\e697"; +} + +.icon-file-stream1:before { + content: "\e698"; +} + +.icon-page-previous1:before { + content: "\e699"; +} + +.icon-expander-down1:before { + content: "\e69a"; +} + +.icon-ptz-left1:before { + content: "\e69b"; +} + +.icon-yinpinwenjian1:before { + content: "\e623"; +} + +.icon-yinpinwenjian2:before { + content: "\e626"; +} + +.icon-xiazaiyinpinwenjian:before { + content: "\e605"; +} + +.icon-yinpinwenjian:before { + content: "\e641"; +} + diff --git a/web_src/static/css/iconfont.woff2 b/web_src/static/css/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c8d7e3dd2ce5e346efd6a0c171d77e43904134db GIT binary patch literal 46692 zcmV(|K+(T3Z3m|#TMt2TMcMXA7Le`)NtLPF z^aW-j@;DR(pRO3k8pY!XDE9c-|NsBzCis^)H2Ka;+yN+U+ii1%&ta(1a49NcoZOta zv1Wpc#Ufc97IRb!X8fl1<9ygL*rt(`zb+eQe_nE+*sAG%-UsP(dOSl8VnQBGu2~G^ zOz~AyV3E_^+vf{=djiAn0fs}Mx1#d`0)^qgz=Huu5I77!h6_l)BEtw@)3BGd6zPI+ zxZ2Vp4I?}5@lo4rw6AYg6)ohuPvg(hE&I8brQ9T0_V47L*1F&2=n|<`{VV_Mzb9*q zT?0ZjJ!Hv|C(r-?ezbkxegBU&D@Bk*h-5-FZ7jNI5)TDJqEDhUs7y!lK>+5qOFrgD z%ny-JGVna?kN4b3X=x>{b_icN|LQWn_)iqZ<$Jr^pv zDqV&y`u|=2zE<_I-}-YE|1NcSer~;0{{NS(lIU$ztf<~dp$CE}C7~iHC}08xV55zN zQD9&s7gk22i055<^7HFzRqrCe<`AI}AQh^|J z$B7RJo}_Srz>B@wU6yv34yJP85Cp?i_y7jTLFV=cj7?NYqyQ|~+>iSWj@4{7rP=L- zS{!<(_RX~K9n5rlG+@|eQ|xP(p!kptX|j+s*=B*Wl=?^dm43;x0tGu31i?^P2%sa$ z_x;YV*OmQVjjXEf4>LAL2N(u|1!N`j((csO7&*V%AUlc;(0`1zy*K~F(cI1~5uu7L zp^K+RiR`=Oe~nQUic9YK&Hmf>NZK1n1FQ{!!FeI~oub9t`O)fO?*bRKCUIBk1AzCJ z!(o^Ohb2SgKau8oHPHQcN?xP1D}7mb59!LVUXm$uHW_4n*`SXB#lYX2YL#{a1f})T z8W#=gisx*QfS@^Rli(`HH{HZ_QHLc@5|(tpf(pBYPATvlsE{1PNlvkv0WR#43cH|W11AUI=m0n#9Ybsy zH?5n}MVBhOE!`K^A!;FLe@qazlK6aM-tT9b+13uXG;D}%P!t%@9TF<@&8 z;Pb2c_HJRy)&Ns7zrZFauvUFS&#r%&2#ldF2CrYg`}H()i^u?r2lg&qx{+DC`TL)* z?@;FTos{F*VCw-`01Y_SEIwDtbGus!=HcOQ*Q?^|B3Kc6=u2QvH^|sn>wu-;K_B-gXqmDc2w6hiMyo(j% zva7DU>9#xWdEk*Jo_g-3*WP;XqtCwj?uTFg_(u)ZmnJRRbm-Ef&wwE##tQi6PI=Vg zkM=>Q%kA;{{0I{!q_$oVMsboARnraAvK`m+0l`o>vSc$j0*OLnusA${NFr0HG&)16 zeS9J&v&CAv-`E{am)o*&kboS>D<~@2SE{voquFYAy1o8jI2uo;v-x7VT5qN&ICSLLiBo6JUAT1R z+KpRS@{9X;h{ss=hZlH-H+Y8+_=GR`hWY>ajlcMhx<)jk747Kk?(H8O9!)AD3$dBQ zOyV1?g|#7=ltZa9&VPW<|6lQ3nwNFkkMp{p_xpn&Fa!#X#S_U?I+M-i3&m2oQmxfn z;}>Jm6u6KI6NYL%;)fO9EdW6A-|=Jv65L=331JzDU%af2Bd&Z zNC{hz3br9N>_8gWg|x5->0lqy!vSP~L&yk6kO__u1Jb;q$ z5Ksyp0ZPN8KpA)(C<{*l<=|toJd(_OVqpPEWg$st5y@mRnZXj0!%~vRGE%^DQp5^U%t|toRiup7q?|Qm z4r@sz>pt1)Ve%S)RI`!Pu!+oNGpS_@oWfR8$2L;WcGAEOGLM~PKD)>Qc0)nH9w-FZ z3xxsupa}LuQ5=9`I0(gY2uk2El*ADzg`-d!$Dj<3Ls^`FaySX)aSAHnG*rYHsD!gn z8Rwu1&O=pPfNHo1)o}@G;4;+26{v-)P#f2v4z5F8+< zbm2wl%1h9Vm!UhaKo4Gpp1cOVcpZB42K3=g=*wHskGG*e@4x`wg@L>WgLoeX^8pOu zLm0|OFpQ63IG?}>K82Bd2BY{KM)L)X;Y%3HS1^vRVLac!1ipoddG9wzexOyNhE z%1ke!X`{I}|6v7@wuum}@Py&aP!VzU~OgWrT0jE^L8C7sjHC)gh zF6jVQbcAaZyn251Hvp%rL?cAyzL4TEmO zq1OoLHxdSof?=a!)EG#NB_PHTP~*o-0K(J6K}kTsOeTCx8Fm(!C@Ty~1tQS2@zQ~S zn?Zz_xn)@}Xa*4BW)qR-jF$^UjCsTi^NDy1hy)8KuLvf}2E(Wr)~pgB(ws?PEG2N3 z5d>!uM9T@1vk9_uh%74znw12@Dk9rzBG(!s-?;?aT7qjG!MC0e+CYe%M@XGd$Xq}u zY$Q}JBs4Y=TAK;Ii-;l@6UDX=Mq3H9O9-n=3A=4XneBwr4x-#;M5W7#YF7}ot|aPR zMKrn^rUN@+2CxgJ0lQ&5a1BfVu7yd!bubyY9;N_$U@EW|0=Q`VG0^Eix<3{~Jwgw( zesn(tuj<*l^YfaNKDJHlJOwYn&5;!Z5tC10M3^%KvJ4~x_*cy@TLsQrI6pb`Y;4O2 z$D<}y05bUtkYXNBNXpr%7@RSrrzSSti9ZXE(R64bbV)GeWz;qT@HoZqx63+U?cgq; zTsE?V@!6s3#3h&mAaQ6*Oj?(ba6_{Bkq_rvf6$mRk`O!a8!hNCP0nAyCS!IMlAD;(uSX9<9JYGBiLmi&dmz zej1$gWi)ML*hwi_P?-OcxWOC zpJ!#Bm!WM#Gal{V54y4AG`-0Z`mhf|L^!+%ZzF#?-dK@nkyH zni+Af*Fv|C)u;8?_b8(w^kM{9v)Ej1fz2LwxWu7Yx?Ho0RfR z!#bklKtBjIY!qfd3X!e9tooHwBl9!_Zzh8sQMx36lv5%VnQfbCAbMnafVDB|du-V; zvVx`Ts)nRWwZj;E^d3Fe+dP4`;UISKUlob|-_w}sw$5!Mob;NtZ(^5f+tDgKY&s8W z+QTOF!jRGy*Le7sO9pJT@)bo^wRiHXP@0hIK(F1z8wg0R%ffUgt;=$a0L`plCdu|o z{Cd{=+SSGZD-iDTQ2~H`Zj#q^97i{=D&$q+B4tw9+weEO^C#h)Cne`RIts#ZyLWy$D_kQ8@W6rki+iW zI;0IM(m+&w4U2A&0Ry~!$>TC(*f=_tTWU!Bv-dY)S9w*|Y_4K%G^q2ddq1$#<}AXS z^w%ood=;6#Be-}IZzewVGR4MNgPv)3)tEvIOhsm7e8#Dn>u3TnXA3>K+;bBQ5LDiC zB;|~dmXMYgshZ@X8*W5j42(=|n*~GwuyHsCS~J`~f}ERlO2V2MjzJ02E5+EQSvg#- z9?orSMR}Rv`ang+G4EYDdCM~$5OE98_anu)puI|rc@6=`<_s&Vyh${0roXYTsE1kP zl!vP~pTP^-Sjar3#l|`cFgtnamZPgmrBSL`<)5otv|eDlO}}%w6kdkgpRBxg|EGdXca~98qtwP6iqi zI)=*9Bhz@W4?orF0MWp*1N%mFT;9_hb`|p-=*Y(vJ(q+hJ7D{vTL{6+O4$uq;8g}D z9M&-D3ncxf%;z#!@DZQ22<1qgb{)wA(X`7ISKWtgl)oHByB&hypKKC`Ydt2JGRNt1is={e;&6@_R|^TCM*D)t_E zi$}VO^^RRMZY3G5eesU%0_e40!Gg!S2Up(wjAB)E**&Er9eB=?beua!pT zlwixeVBu|-r8Sl}k|oewQCdKXa#|o+M*(eYHC};=h4?so^335*;fg+8TOD^$Us|K# z)p~ig$N&jfr&S40*c%D6!)R_mOvO&2sFzzaFvpd%BQ{%QzYSw@$9N9jj0ug~$dgiS zSQS>36@nDWs$LqJI;xqzGA;yzc_Z>d+Cn(}qUiQA2GYtfr1LmOB3Y{gSpb0Kkj*C2 zV-_z?=paj|)j<2(+SFLr_U7_tv{;?l$QAwB@$`-0>ji}CtfS6j{9V95~uKd7=k@C)KS`n1^3rp+|pRGz>Tn%lUwb?criJYD9TAx z8&Q`jho9r7kdd%j1Af@7x*{{|DD4~H1YY@J`HMUu=t)Z)F!y0TW?V52MA<%~3 zCXZxR@@~*H<(uXc(czsX?f)#H4H}}~6beGKubc@wa-T6jIsVyLXC#)-RId%*|5R8j z&V;*ce>_g+Hj}aZ7$4_bmeb^L;s&5*7%iz$V}012O)j3V{qW;c^u#NrHEAPq=(X~# z`gfP69<5I^(GD$~^S}T8F?9Up>ZZINK6;^YxAo)2*(Vw^eXWFoog;7DnoWVSCY@`r zUooT^c<&0*MLIQG^V)I^(kSV_de!ed9IsP)n0WE~8_$Enn&~vj0QiJt@vW7YAl_QE8EgPhMW@#ErtXk&3wjwibQ2Kzw zR~iXq(66=FOQ6#-zlJtSZNNA@dG6sppCr3GiZ*|7uC%G8Z6b z5HvmJ69@=|i_HMEFvb}B(ks%B!{yvuUsPx`w}@7_Z4%i*B1XlG*r&-c)ovu_jyq=+ z&c;2kElP?^RwZg+jR~W>6i|@6EC#i{+FkM%A3id+&s!8R6aIj z(A9H?TVm7u<}?ag6%@Qx*eaIRF*)SI-eOTHQH4& zy{{o@c{Nh`IKq_%&UOY3yCh0? znB2?FIo!XM@1z|TG4;bq=ss9`i@~stxW*uUT7YB|(j0yUsNG3n~Tc zWsp(D# zehj9zCYjBE6yuK!hsf37p@oU=>S2wzc`=XK0IQ$esO2Al$#K z);>J#BPFPDcj5|BhV!xcjoH@DAr+){rU%4Anp#-}d3moG17fbeb>U27=f@Pxu-MwA z!M49o0!D4N%v#9TkBY(lq~GO?H4Bgc_ixif$)HvcSbH~;-bkY6K)AdSp|U);ywEnX z8oy5pbE&K%1le}H>88y}j8?NOO9>;6!HnXcRd*c3^_&%b97F-e6Ile7S)DQ6f^q_` z3g5;sRQ-zMgs%Ma(%Ba`Mp(q)NQBaM`j~yz8`^_NzxhEWg7P^1su9M3I}MH8W?>=U z;PKQGG#~Zsw}?h$LTL+O8mYsEqJ&~$xoirrMKRQY^x6ZVgkbC5--KPWZ5a*8%m|2@t ztr{@1r|UEoL*c~-YsS+)mBlEAkGu!cM!L1Im^mw7(xRJhNp+#Ym9?@ekYKF{=;|FP zh##f`Dcy=7$xL1q=g?iuoP5=~vP}%$^CZfkJJZy`POVP?CL+=)BdC!@ z^o3_~LmNocX?YF^1$jjbe{Q9b9W<51tYM@Mh219N#+aZ9q%bDY0t$@BZ6SAl&^O|+ zy}&cLFcf%jtHrbbb0|3;35RTK?Dt{+SOyY1=R72M7`4B3AFk7MwV&^ic5mfk{Xqd& zOWJ_fxGyGH!&uEH|8*=V?7bhF+T3wp)(ohMX7VA_gsmd01(H$(aCe^4YcxNU9Nv`} zP8LNSxl%W!MOVkQDglu=6WR%}BNvGn)xH4vV^Vb9(?F?jwny0LXpOcXNqpb%Mfuj6 zl*nfTsVQa(`PSW*9M2W}<&%FV=+84=}|rt-A0a}I|Fzut`niS(*%8ZDAz|79TM?Qw&6Bv`LN3>-zEl= z*-Xv~%FQ3ySs)4^Si}1olN-<%#2rcZWx0>GbOMBm@6aMe>NHflF8XGcA#^Zx{pzd| z%@L!JTn8Gg6PFxgSeY*2kXk!9rTJn)HpR{UJ(TN09iih0lAe|2cTseT1X5DOZtYK% zqjhd!cH3w~nz5AV50S18+;CEf$7H)NWzqa7ZpoI#a_A$mqSeU_m15o)=e1hqJS4ix z+s{@9XFhvt5W%q6LmO`bj%n5ziA-=kf%w~Mq5d_q1d_U}A{Y*VqK5-S6_m~Fe)qCj zqclv^-Ol^PX2;mX=_h$hb(|RF9C{nc)=~}3CyGu;S zMn|=V{hC7hU?;zn#bNqL@D9p&J{5SL4za9rz_Tw^jlivC|8gQEmuYuwo7XYqzFZ1g zJd_;Eohe*+Ep?jg5WPgJv)vir%1}er#(|O*3HZVE`F+8Q_YK&$_`}A%X`_TyVv^p$ zMA5KESQCv46Oph0(X!c~7MU+@<=n4qL>*acQiz|Ln;SubOP%{axneeu()r5x>}E1q zU7sHP`0mZZ*tGWu+Qe!;pg=2B{@{n*&euaeA@k2i9?feXuo4G);xhJ;PR)T@uv1BE zXk#?gT~z8RL!EASFW{3Eq72$qZ2qxwxdzs&4BmFePl9%@nIs*k%xG5Gi92z($hbcd zsjS3ExH=R16qrycAB$5`8x5}o?we*6m*U7MdUv1+OcU%?+{Yyed?^FTgWUdmz59LavdPON=hj24enj;|FZJgb zIb^b~%lCdG`7u#k{We=zObx??jFpTaD2~4`wT#6Y=Xy3={#s7m6^`=f81hA&Eu6r^ zb{kNw#h|~*F=z-y9*G(x$Wp`^_Euyt$24n*ba?M*%5O}ai@mHX=k|41fv4pLB)Q*! zkG^^|lWBGAGY|Dz?jilgc&w`&a(-W0*D!;8d*}#J`gWhC9i*?N6!L`$(T-jJSVNfb z>I9?AzEo*bzF>Lg^%C$nN>%V0;>JO&P1x~_US<85rVB*H?4JHvFOxm=DP=_002uI@T!<&SJloGdruhj*t>RhnM1 zeS9Im=2`B|b;v|3-)r{MAfdv>|Gu}xmK@F%s&Ye!6~%LZT&3DjCRr;FPyO~!$TgJd|H^2X7b#1R-Oh+Q9snA$YA^7ah(yV8xccyEvQ3LfrU`G z*o#eDeMCV1c_Z5h$e}-wyo^29zsdxuEuqJYh!s;7i)CQzpE~e}2Aati=8wFsQ|p6n z$0{6n{W!KxS?;ipJcbhz-w5KWZ1Zsb`_b~;OG*JCh{TD7L3R8-9&TL@Yh3Z&1YQw1r>s7V>pyed|k$nvGbh^2`5r zI)d){`lsKsN#5^HdY_RJ(&^~$K(-cAqtnaDzNpPc-DX0by*XK%3X=mBLzmcWRI-6O zT$4#IRVUY#*NYv99a?%J&xMF#l?{)sGiF-ME8u*DQ*(5Z^rEAN7Sm7SF(ak)go+Jz0*f1jO1Pqx&(v#I