Commit e48ef997c03b49c8090970f5fbb29ce80b0ac6df

Authored by 64850858
1 parent e1fcc1f2

更换播放器, 修正和优化sql脚本,

Too many changes to show.

To preserve performance only 23 of 25 files are displayed.

sql/mysql.sql
@@ -5,10 +5,10 @@ create table device @@ -5,10 +5,10 @@ create table device
5 ( 5 (
6 deviceId varchar(50) not null 6 deviceId varchar(50) not null
7 primary key, 7 primary key,
8 - name varchar(50) null,  
9 - manufacturer varchar(50) null,  
10 - model varchar(50) null,  
11 - firmware varchar(50) null, 8 + name varchar(255) null,
  9 + manufacturer varchar(255) null,
  10 + model varchar(255) null,
  11 + firmware varchar(255) null,
12 transport varchar(50) null, 12 transport varchar(50) null,
13 streamMode varchar(50) null, 13 streamMode varchar(50) null,
14 online varchar(50) null, 14 online varchar(50) null,
@@ -25,7 +25,7 @@ create table device @@ -25,7 +25,7 @@ create table device
25 create table device_channel 25 create table device_channel
26 ( 26 (
27 channelId varchar(50) not null, 27 channelId varchar(50) not null,
28 - name varchar(50) null, 28 + name varchar(255) null,
29 manufacture varchar(50) null, 29 manufacture varchar(50) null,
30 model varchar(50) null, 30 model varchar(50) null,
31 owner varchar(50) null, 31 owner varchar(50) null,
@@ -42,7 +42,7 @@ create table device_channel @@ -42,7 +42,7 @@ create table device_channel
42 secrecy varchar(50) null, 42 secrecy varchar(50) null,
43 ipAddress varchar(50) null, 43 ipAddress varchar(50) null,
44 port int null, 44 port int null,
45 - password varchar(50) null, 45 + password varchar(255) null,
46 PTZType int null, 46 PTZType int null,
47 status int null, 47 status int null,
48 longitude double null, 48 longitude double null,
@@ -59,7 +59,7 @@ create table device_channel @@ -59,7 +59,7 @@ create table device_channel
59 create table device_mobile_position 59 create table device_mobile_position
60 ( 60 (
61 deviceId varchar(50) not null, 61 deviceId varchar(50) not null,
62 - deviceName varchar(50) null, 62 + deviceName varchar(255) null,
63 time varchar(50) not null, 63 time varchar(50) not null,
64 longitude double not null, 64 longitude double not null,
65 latitude double not null, 65 latitude double not null,
@@ -75,10 +75,10 @@ create table device_mobile_position @@ -75,10 +75,10 @@ create table device_mobile_position
75 75
76 create table gb_stream 76 create table gb_stream
77 ( 77 (
78 - app varchar(50) not null,  
79 - stream varchar(50) not null, 78 + app varchar(255) not null,
  79 + stream varchar(255) not null,
80 gbId varchar(50) not null, 80 gbId varchar(50) not null,
81 - name varchar(50) null, 81 + name varchar(255) null,
82 longitude double null, 82 longitude double null,
83 latitude double null, 83 latitude double null,
84 streamType varchar(50) null, 84 streamType varchar(50) null,
@@ -90,7 +90,7 @@ create table parent_platform @@ -90,7 +90,7 @@ create table parent_platform
90 ( 90 (
91 id int auto_increment, 91 id int auto_increment,
92 enable int null, 92 enable int null,
93 - name varchar(50) null, 93 + name varchar(255) null,
94 serverGBId varchar(50) not null, 94 serverGBId varchar(50) not null,
95 serverGBDomain varchar(50) null, 95 serverGBDomain varchar(50) null,
96 serverIP varchar(50) null, 96 serverIP varchar(50) null,
@@ -98,7 +98,7 @@ create table parent_platform @@ -98,7 +98,7 @@ create table parent_platform
98 deviceGBId varchar(50) not null, 98 deviceGBId varchar(50) not null,
99 deviceIp varchar(50) null, 99 deviceIp varchar(50) null,
100 devicePort varchar(50) null, 100 devicePort varchar(50) null,
101 - username varchar(50) null, 101 + username varchar(255) null,
102 password varchar(50) null, 102 password varchar(50) null,
103 expires varchar(50) null, 103 expires varchar(50) null,
104 keepTimeout varchar(50) null, 104 keepTimeout varchar(50) null,
@@ -122,21 +122,21 @@ create table platform_gb_channel @@ -122,21 +122,21 @@ create table platform_gb_channel
122 create table platform_gb_stream 122 create table platform_gb_stream
123 ( 123 (
124 platformId varchar(50) not null, 124 platformId varchar(50) not null,
125 - app varchar(50) not null,  
126 - stream varchar(50) not null, 125 + app varchar(255) not null,
  126 + stream varchar(255) not null,
127 primary key (platformId, app, stream) 127 primary key (platformId, app, stream)
128 ); 128 );
129 129
130 create table stream_proxy 130 create table stream_proxy
131 ( 131 (
132 type varchar(50) not null, 132 type varchar(50) not null,
133 - app varchar(50) not null,  
134 - stream varchar(50) not null,  
135 - url varchar(50) null,  
136 - src_url varchar(50) null,  
137 - dst_url blob null, 133 + app varchar(255) not null,
  134 + stream varchar(255) not null,
  135 + url varchar(255) null,
  136 + src_url varchar(255) null,
  137 + dst_url varchar(255) null,
138 timeout_ms int null, 138 timeout_ms int null,
139 - ffmpeg_cmd_key varchar(50) null, 139 + ffmpeg_cmd_key varchar(255) null,
140 rtp_type varchar(50) null, 140 rtp_type varchar(50) null,
141 enable_hls bit(1) null, 141 enable_hls bit(1) null,
142 enable_mp4 bit(1) null, 142 enable_mp4 bit(1) null,
@@ -146,8 +146,8 @@ create table stream_proxy @@ -146,8 +146,8 @@ create table stream_proxy
146 146
147 create table stream_push 147 create table stream_push
148 ( 148 (
149 - app varchar(50) not null,  
150 - stream varchar(50) not null, 149 + app varchar(255) not null,
  150 + stream varchar(255) not null,
151 totalReaderCount varchar(50) null, 151 totalReaderCount varchar(50) null,
152 originType int null, 152 originType int null,
153 originTypeStr varchar(50) null, 153 originTypeStr varchar(50) null,
@@ -160,8 +160,8 @@ create table user @@ -160,8 +160,8 @@ create table user
160 ( 160 (
161 id int auto_increment 161 id int auto_increment
162 primary key, 162 primary key,
163 - username varchar(50) not null,  
164 - password varchar(50) not null, 163 + username varchar(255) not null,
  164 + password varchar(255) not null,
165 roleId int not null, 165 roleId int not null,
166 create_time varchar(50) not null 166 create_time varchar(50) not null
167 ); 167 );
src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -5,9 +5,11 @@ import java.util.logging.LogManager; @@ -5,9 +5,11 @@ import java.util.logging.LogManager;
5 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.SpringApplication;
6 import org.springframework.boot.autoconfigure.SpringBootApplication; 6 import org.springframework.boot.autoconfigure.SpringBootApplication;
7 import org.springframework.context.ConfigurableApplicationContext; 7 import org.springframework.context.ConfigurableApplicationContext;
  8 +import org.springframework.scheduling.annotation.EnableScheduling;
8 import springfox.documentation.oas.annotations.EnableOpenApi; 9 import springfox.documentation.oas.annotations.EnableOpenApi;
9 10
10 @SpringBootApplication 11 @SpringBootApplication
  12 +@EnableScheduling
11 @EnableOpenApi 13 @EnableOpenApi
12 public class VManageBootstrap extends LogManager { 14 public class VManageBootstrap extends LogManager {
13 private static String[] args; 15 private static String[] args;
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -8,6 +8,8 @@ package com.genersoft.iot.vmp.common; @@ -8,6 +8,8 @@ package com.genersoft.iot.vmp.common;
8 */ 8 */
9 public class VideoManagerConstants { 9 public class VideoManagerConstants {
10 10
  11 + public static final String WVP_SERVER_PREFIX = "VMP_wvp_server";
  12 +
11 public static final String MEDIA_SERVER_PREFIX = "VMP_media_server"; 13 public static final String MEDIA_SERVER_PREFIX = "VMP_media_server";
12 14
13 public static final String MEDIA_STREAM_PREFIX = "VMP_media_stream"; 15 public static final String MEDIA_STREAM_PREFIX = "VMP_media_stream";
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
@@ -58,7 +58,7 @@ public class MediaConfig { @@ -58,7 +58,7 @@ public class MediaConfig {
58 @Value("${media.rtp.port-range}") 58 @Value("${media.rtp.port-range}")
59 private String rtpPortRange; 59 private String rtpPortRange;
60 60
61 - @Value("${media.record-assist-port}") 61 + @Value("${media.record-assist-port:0}")
62 private Integer recordAssistPort; 62 private Integer recordAssistPort;
63 63
64 public String getIp() { 64 public String getIp() {
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -48,4 +48,16 @@ public class VideoStreamSessionManager { @@ -48,4 +48,16 @@ public class VideoStreamSessionManager {
48 ssrcMap.remove(deviceId + "_" + channelId); 48 ssrcMap.remove(deviceId + "_" + channelId);
49 streamIdMap.remove(deviceId + "_" + channelId); 49 streamIdMap.remove(deviceId + "_" + channelId);
50 } 50 }
  51 +
  52 + public ConcurrentHashMap<String, ClientTransaction> getSessionMap() {
  53 + return sessionMap;
  54 + }
  55 +
  56 + public ConcurrentHashMap<String, String> getSsrcMap() {
  57 + return ssrcMap;
  58 + }
  59 +
  60 + public ConcurrentHashMap<String, String> getStreamIdMap() {
  61 + return streamIdMap;
  62 + }
51 } 63 }
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -34,11 +34,13 @@ public class ZLMRTPServerFactory { @@ -34,11 +34,13 @@ public class ZLMRTPServerFactory {
34 if (currentStreams == null) { 34 if (currentStreams == null) {
35 currentStreams = new HashMap<>(); 35 currentStreams = new HashMap<>();
36 JSONObject jsonObject = zlmresTfulUtils.listRtpServer(); 36 JSONObject jsonObject = zlmresTfulUtils.listRtpServer();
37 - JSONArray data = jsonObject.getJSONArray("data");  
38 - if (data != null) {  
39 - for (int i = 0; i < data.size(); i++) {  
40 - JSONObject dataItem = data.getJSONObject(i);  
41 - currentStreams.put(dataItem.getString("stream_id"), dataItem.getInteger("port")); 37 + if (jsonObject != null) {
  38 + JSONArray data = jsonObject.getJSONArray("data");
  39 + if (data != null) {
  40 + for (int i = 0; i < data.size(); i++) {
  41 + JSONObject dataItem = data.getJSONObject(i);
  42 + currentStreams.put(dataItem.getString("stream_id"), dataItem.getInteger("port"));
  43 + }
42 } 44 }
43 } 45 }
44 } 46 }
@@ -73,12 +75,12 @@ public class ZLMRTPServerFactory { @@ -73,12 +75,12 @@ public class ZLMRTPServerFactory {
73 result= createRTPServer(streamId); 75 result= createRTPServer(streamId);
74 break; 76 break;
75 default: 77 default:
76 - logger.error("创建RTP Server 失败: " + jsonObject.getString("msg")); 78 + logger.error("创建RTP Server 失败 {}: " + jsonObject.getString("msg"), newPort);
77 break; 79 break;
78 } 80 }
79 }else { 81 }else {
80 // 检查ZLM状态 82 // 检查ZLM状态
81 - logger.error("创建RTP Server 失败: 请检查ZLM服务"); 83 + logger.error("创建RTP Server 失败 {}: 请检查ZLM服务", newPort);
82 } 84 }
83 return result; 85 return result;
84 } 86 }
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -127,7 +127,7 @@ public class ZLMRunner implements CommandLineRunner { @@ -127,7 +127,7 @@ public class ZLMRunner implements CommandLineRunner {
127 if (responseJSON != null && responseJSON.getInteger("code") == 0) { 127 if (responseJSON != null && responseJSON.getInteger("code") == 0) {
128 logger.info("设置zlm成功"); 128 logger.info("设置zlm成功");
129 }else { 129 }else {
130 - logger.info("设置zlm失败: " + responseJSON.getString("msg")); 130 + logger.info("设置zlm失败");
131 } 131 }
132 } 132 }
133 133
@@ -155,6 +155,9 @@ public class ZLMRunner implements CommandLineRunner { @@ -155,6 +155,9 @@ public class ZLMRunner implements CommandLineRunner {
155 // 设置为未启用 155 // 设置为未启用
156 logger.info("恢复流代理失败,请检查流地址后重新启用" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream()); 156 logger.info("恢复流代理失败,请检查流地址后重新启用" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream());
157 streamProxyService.stop(streamProxyDto.getApp(), streamProxyDto.getStream()); 157 streamProxyService.stop(streamProxyDto.getApp(), streamProxyDto.getStream());
  158 + }else if (jsonObject.getInteger("code") != 0){ // TODO 将错误信息存入数据库, 前端展示
  159 + logger.info("恢复流代理失败:" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream() + "[ " + JSONObject.toJSONString(jsonObject) + " ]");
  160 + streamProxyService.stop(streamProxyDto.getApp(), streamProxyDto.getStream());
158 } 161 }
159 } 162 }
160 } 163 }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -120,7 +120,6 @@ public class PlayServiceImpl implements IPlayService { @@ -120,7 +120,6 @@ public class PlayServiceImpl implements IPlayService {
120 zlmresTfulUtils.getSnap(streamUrl, 15, 1, path, fileName); 120 zlmresTfulUtils.getSnap(streamUrl, 15, 1, path, fileName);
121 } 121 }
122 } 122 }
123 - System.out.println(path);  
124 } catch (FileNotFoundException e) { 123 } catch (FileNotFoundException e) {
125 e.printStackTrace(); 124 e.printStackTrace();
126 } 125 }
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
1 package com.genersoft.iot.vmp.vmanager.gb28181.play; 1 package com.genersoft.iot.vmp.vmanager.gb28181.play;
2 2
  3 +import com.alibaba.fastjson.JSONArray;
3 import com.genersoft.iot.vmp.common.StreamInfo; 4 import com.genersoft.iot.vmp.common.StreamInfo;
  5 +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
4 import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; 6 import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
5 import com.genersoft.iot.vmp.gb28181.bean.Device; 7 import com.genersoft.iot.vmp.gb28181.bean.Device;
6 import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; 8 import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
7 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; 9 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
8 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; 10 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
9 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 11 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
  12 +import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
10 import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult; 13 import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
11 import com.genersoft.iot.vmp.service.IMediaService; 14 import com.genersoft.iot.vmp.service.IMediaService;
12 import com.genersoft.iot.vmp.service.IPlayService; 15 import com.genersoft.iot.vmp.service.IPlayService;
@@ -31,6 +34,8 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; @@ -31,6 +34,8 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
31 import com.genersoft.iot.vmp.storager.IVideoManagerStorager; 34 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
32 import org.springframework.web.context.request.async.DeferredResult; 35 import org.springframework.web.context.request.async.DeferredResult;
33 36
  37 +import java.util.Enumeration;
  38 +import java.util.Map;
34 import java.util.UUID; 39 import java.util.UUID;
35 40
36 import javax.sip.message.Response; 41 import javax.sip.message.Response;
@@ -47,6 +52,9 @@ public class PlayController { @@ -47,6 +52,9 @@ public class PlayController {
47 private SIPCommander cmder; 52 private SIPCommander cmder;
48 53
49 @Autowired 54 @Autowired
  55 + private VideoStreamSessionManager streamSession;
  56 +
  57 + @Autowired
50 private IVideoManagerStorager storager; 58 private IVideoManagerStorager storager;
51 59
52 @Autowired 60 @Autowired
@@ -227,6 +235,20 @@ public class PlayController { @@ -227,6 +235,20 @@ public class PlayController {
227 logger.debug("语音广播API调用"); 235 logger.debug("语音广播API调用");
228 } 236 }
229 Device device = storager.queryVideoDevice(deviceId); 237 Device device = storager.queryVideoDevice(deviceId);
  238 + DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
  239 + if (device == null) {
  240 + resultHolder.put(DeferredResultHolder.CALLBACK_CMD_BROADCAST + deviceId, result);
  241 + RequestMessage msg = new RequestMessage();
  242 + msg.setId(DeferredResultHolder.CALLBACK_CMD_BROADCAST + deviceId);
  243 + JSONObject json = new JSONObject();
  244 + json.put("DeviceID", deviceId);
  245 + json.put("CmdType", "Broadcast");
  246 + json.put("Result", "Failed");
  247 + json.put("Description", "Device 不存在");
  248 + msg.setData(json);
  249 + resultHolder.invokeResult(msg);
  250 + return result;
  251 + }
230 cmder.audioBroadcastCmd(device, event -> { 252 cmder.audioBroadcastCmd(device, event -> {
231 Response response = event.getResponse(); 253 Response response = event.getResponse();
232 RequestMessage msg = new RequestMessage(); 254 RequestMessage msg = new RequestMessage();
@@ -239,7 +261,7 @@ public class PlayController { @@ -239,7 +261,7 @@ public class PlayController {
239 msg.setData(json); 261 msg.setData(json);
240 resultHolder.invokeResult(msg); 262 resultHolder.invokeResult(msg);
241 }); 263 });
242 - DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L); 264 +
243 result.onTimeout(() -> { 265 result.onTimeout(() -> {
244 logger.warn(String.format("语音广播操作超时, 设备未返回应答指令")); 266 logger.warn(String.format("语音广播操作超时, 设备未返回应答指令"));
245 RequestMessage msg = new RequestMessage(); 267 RequestMessage msg = new RequestMessage();
@@ -256,5 +278,32 @@ public class PlayController { @@ -256,5 +278,32 @@ public class PlayController {
256 return result; 278 return result;
257 } 279 }
258 280
  281 + @ApiOperation("获取所有的ssrc")
  282 + @GetMapping("/ssrc")
  283 + public WVPResult<JSONObject> getSSRC() {
  284 + if (logger.isDebugEnabled()) {
  285 + logger.debug("获取所有的ssrc");
  286 + }
  287 + JSONArray objects = new JSONArray();
  288 + for(Map.Entry<String, String> entry: streamSession.getSsrcMap().entrySet()) {
  289 + System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
  290 + JSONObject jsonObject = new JSONObject();
  291 + String[] keyArray = entry.getKey().split("_");
  292 + jsonObject.put("deviceId", keyArray[0]);
  293 + jsonObject.put("channelId", keyArray[1]);
  294 + jsonObject.put("ssrc", entry.getValue());
  295 + jsonObject.put("streamId", streamSession.getStreamIdMap().get(entry.getKey()));
  296 + objects.add(jsonObject);
  297 + }
  298 + WVPResult<JSONObject> result = new WVPResult<>();
  299 + result.setCode(0);
  300 + result.setMsg("success");
  301 + JSONObject jsonObject = new JSONObject();
  302 + jsonObject.put("data", objects);
  303 + jsonObject.put("count", objects.size());
  304 + result.setData(jsonObject);
  305 + return result;
  306 + }
  307 +
259 } 308 }
260 309
web_src/index.html
@@ -4,10 +4,11 @@ @@ -4,10 +4,11 @@
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 5 <meta name="viewport" content="width=device-width,initial-scale=1.0">
6 <title>国标28181</title> 6 <title>国标28181</title>
7 - <link rel="stylesheet" type="text/css" href="./static/css/font-awesome.min.css"> 7 + <link rel="stylesheet" type="text/css" href="./static/css/iconfont.css">
8 <link rel="stylesheet" type="text/css" href="./static/css/login.css"> 8 <link rel="stylesheet" type="text/css" href="./static/css/login.css">
9 </head> 9 </head>
10 <body> 10 <body>
  11 + <script type="text/javascript" src="./static/js/jessibuca/index.js"></script>
11 <script type="text/javascript" src="./static/js/EasyWasmPlayer.js"></script> 12 <script type="text/javascript" src="./static/js/EasyWasmPlayer.js"></script>
12 <script type="text/javascript" src="./static/js/ZLMRTCClient.js"></script> 13 <script type="text/javascript" src="./static/js/ZLMRTCClient.js"></script>
13 <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rk73w8dv1rkE4UdZsataG68VarhYQzrx&s=1"></script> 14 <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rk73w8dv1rkE4UdZsataG68VarhYQzrx&s=1"></script>
web_src/package-lock.json
@@ -1633,7 +1633,7 @@ @@ -1633,7 +1633,7 @@
1633 "dev": true, 1633 "dev": true,
1634 "requires": { 1634 "requires": {
1635 "browserslist": "1.7.7", 1635 "browserslist": "1.7.7",
1636 - "caniuse-db": "1.0.30001146", 1636 + "caniuse-db": "1.0.30001244",
1637 "lodash.memoize": "4.1.2", 1637 "lodash.memoize": "4.1.2",
1638 "lodash.uniq": "4.5.0" 1638 "lodash.uniq": "4.5.0"
1639 }, 1639 },
@@ -1644,16 +1644,16 @@ @@ -1644,16 +1644,16 @@
1644 "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", 1644 "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
1645 "dev": true, 1645 "dev": true,
1646 "requires": { 1646 "requires": {
1647 - "caniuse-db": "1.0.30001146", 1647 + "caniuse-db": "1.0.30001244",
1648 "electron-to-chromium": "1.3.742" 1648 "electron-to-chromium": "1.3.742"
1649 } 1649 }
1650 } 1650 }
1651 } 1651 }
1652 }, 1652 },
1653 "caniuse-db": { 1653 "caniuse-db": {
1654 - "version": "1.0.30001146",  
1655 - "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",  
1656 - "integrity": "sha1-poOLhbXEFSLrDXsetgeHFsBQ1q4=", 1654 + "version": "1.0.30001244",
  1655 + "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",
  1656 + "integrity": "sha1-pt/zJHNkjfCwrg+Z2YeXrft89Fk=",
1657 "dev": true 1657 "dev": true
1658 }, 1658 },
1659 "caniuse-lite": { 1659 "caniuse-lite": {
@@ -2241,7 +2241,7 @@ @@ -2241,7 +2241,7 @@
2241 }, 2241 },
2242 "css-loader": { 2242 "css-loader": {
2243 "version": "0.28.11", 2243 "version": "0.28.11",
2244 - "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-0.28.11.tgz", 2244 + "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",
2245 "integrity": "sha1-w/mGSnAL4nEbtaJGKyOJsaOS2rc=", 2245 "integrity": "sha1-w/mGSnAL4nEbtaJGKyOJsaOS2rc=",
2246 "dev": true, 2246 "dev": true,
2247 "requires": { 2247 "requires": {
@@ -2426,7 +2426,7 @@ @@ -2426,7 +2426,7 @@
2426 "dev": true, 2426 "dev": true,
2427 "requires": { 2427 "requires": {
2428 "browserslist": "1.7.7", 2428 "browserslist": "1.7.7",
2429 - "caniuse-db": "1.0.30001146", 2429 + "caniuse-db": "1.0.30001244",
2430 "normalize-range": "0.1.2", 2430 "normalize-range": "0.1.2",
2431 "num2fraction": "1.2.2", 2431 "num2fraction": "1.2.2",
2432 "postcss": "5.2.18", 2432 "postcss": "5.2.18",
@@ -2439,7 +2439,7 @@ @@ -2439,7 +2439,7 @@
2439 "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", 2439 "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
2440 "dev": true, 2440 "dev": true,
2441 "requires": { 2441 "requires": {
2442 - "caniuse-db": "1.0.30001146", 2442 + "caniuse-db": "1.0.30001244",
2443 "electron-to-chromium": "1.3.742" 2443 "electron-to-chromium": "1.3.742"
2444 } 2444 }
2445 }, 2445 },
@@ -3548,6 +3548,7 @@ @@ -3548,6 +3548,7 @@
3548 "is-string": "1.0.6", 3548 "is-string": "1.0.6",
3549 "object-inspect": "1.10.3", 3549 "object-inspect": "1.10.3",
3550 "object-keys": "1.1.1", 3550 "object-keys": "1.1.1",
  3551 + "object.assign": "4.1.2",
3551 "string.prototype.trimend": "1.0.4", 3552 "string.prototype.trimend": "1.0.4",
3552 "string.prototype.trimstart": "1.0.4", 3553 "string.prototype.trimstart": "1.0.4",
3553 "unbox-primitive": "1.0.1" 3554 "unbox-primitive": "1.0.1"
@@ -5463,9 +5464,9 @@ @@ -5463,9 +5464,9 @@
5463 } 5464 }
5464 }, 5465 },
5465 "math-expression-evaluator": { 5466 "math-expression-evaluator": {
5466 - "version": "1.2.22",  
5467 - "resolved": "https://registry.npm.taobao.org/math-expression-evaluator/download/math-expression-evaluator-1.2.22.tgz",  
5468 - "integrity": "sha1-wU3LPYtNFQ5dzqnGjI2tgDCbDV4=", 5467 + "version": "1.3.8",
  5468 + "resolved": "https://registry.nlark.com/math-expression-evaluator/download/math-expression-evaluator-1.3.8.tgz",
  5469 + "integrity": "sha1-Mg2jsrwVEvT1D8MCCysc1cjp1Xc=",
5469 "dev": true 5470 "dev": true
5470 }, 5471 },
5471 "md5.js": { 5472 "md5.js": {
@@ -6161,6 +6162,18 @@ @@ -6161,6 +6162,18 @@
6161 "isobject": "3.0.1" 6162 "isobject": "3.0.1"
6162 } 6163 }
6163 }, 6164 },
  6165 + "object.assign": {
  6166 + "version": "4.1.2",
  6167 + "resolved": "https://registry.nlark.com/object.assign/download/object.assign-4.1.2.tgz",
  6168 + "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=",
  6169 + "dev": true,
  6170 + "requires": {
  6171 + "call-bind": "1.0.2",
  6172 + "define-properties": "1.1.3",
  6173 + "has-symbols": "1.0.2",
  6174 + "object-keys": "1.1.1"
  6175 + }
  6176 + },
6164 "object.getownpropertydescriptors": { 6177 "object.getownpropertydescriptors": {
6165 "version": "2.1.2", 6178 "version": "2.1.2",
6166 "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", 6179 "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
@@ -7544,7 +7557,7 @@ @@ -7544,7 +7557,7 @@
7544 "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", 7557 "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
7545 "dev": true, 7558 "dev": true,
7546 "requires": { 7559 "requires": {
7547 - "caniuse-db": "1.0.30001146", 7560 + "caniuse-db": "1.0.30001244",
7548 "electron-to-chromium": "1.3.742" 7561 "electron-to-chromium": "1.3.742"
7549 } 7562 }
7550 }, 7563 },
@@ -9198,7 +9211,7 @@ @@ -9198,7 +9211,7 @@
9198 "dev": true, 9211 "dev": true,
9199 "requires": { 9212 "requires": {
9200 "balanced-match": "0.4.2", 9213 "balanced-match": "0.4.2",
9201 - "math-expression-evaluator": "1.2.22", 9214 + "math-expression-evaluator": "1.3.8",
9202 "reduce-function-call": "1.0.3" 9215 "reduce-function-call": "1.0.3"
9203 }, 9216 },
9204 "dependencies": { 9217 "dependencies": {
web_src/package.json
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
36 "babel-preset-stage-2": "^6.22.0", 36 "babel-preset-stage-2": "^6.22.0",
37 "chalk": "^2.0.1", 37 "chalk": "^2.0.1",
38 "copy-webpack-plugin": "^4.6.0", 38 "copy-webpack-plugin": "^4.6.0",
39 - "css-loader": "^0.28.0", 39 + "css-loader": "^0.28.11",
40 "extract-text-webpack-plugin": "^3.0.0", 40 "extract-text-webpack-plugin": "^3.0.0",
41 "file-loader": "^1.1.4", 41 "file-loader": "^1.1.4",
42 "friendly-errors-webpack-plugin": "^1.6.1", 42 "friendly-errors-webpack-plugin": "^1.6.1",
web_src/src/components/channelList.vue
@@ -154,7 +154,6 @@ export default { @@ -154,7 +154,6 @@ export default {
154 }, 154 },
155 currentChange: function (val) { 155 currentChange: function (val) {
156 var url = `/${this.$router.currentRoute.name}/${this.deviceId}/${this.parentChannelId}/${this.count}/${val}` 156 var url = `/${this.$router.currentRoute.name}/${this.deviceId}/${this.parentChannelId}/${this.count}/${val}`
157 - console.log(url)  
158 this.$router.push(url).then(() => { 157 this.$router.push(url).then(() => {
159 this.initParam(); 158 this.initParam();
160 this.initData(); 159 this.initData();
@@ -182,7 +181,6 @@ export default { @@ -182,7 +181,6 @@ export default {
182 channelType: that.channelType 181 channelType: that.channelType
183 } 182 }
184 }).then(function (res) { 183 }).then(function (res) {
185 - console.log(res);  
186 that.total = res.data.total; 184 that.total = res.data.total;
187 that.deviceChannelList = res.data.list; 185 that.deviceChannelList = res.data.list;
188 // 防止出现表格错位 186 // 防止出现表格错位
@@ -196,7 +194,6 @@ export default { @@ -196,7 +194,6 @@ export default {
196 194
197 //通知设备上传媒体流 195 //通知设备上传媒体流
198 sendDevicePush: function (itemData) { 196 sendDevicePush: function (itemData) {
199 - console.log(itemData);  
200 let deviceId = this.deviceId; 197 let deviceId = this.deviceId;
201 this.isLoging = true; 198 this.isLoging = true;
202 let channelId = itemData.channelId; 199 let channelId = itemData.channelId;
@@ -232,13 +229,11 @@ export default { @@ -232,13 +229,11 @@ export default {
232 this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date: format}) 229 this.$refs.devicePlayer.openDialog("record", deviceId, channelId, {date: format})
233 }, 230 },
234 stopDevicePush: function (itemData) { 231 stopDevicePush: function (itemData) {
235 - console.log(itemData)  
236 var that = this; 232 var that = this;
237 this.$axios({ 233 this.$axios({
238 method: 'get', 234 method: 'get',
239 url: '/api/play/stop/' + this.deviceId + "/" + itemData.channelId 235 url: '/api/play/stop/' + this.deviceId + "/" + itemData.channelId
240 }).then(function (res) { 236 }).then(function (res) {
241 - console.log(JSON.stringify(res));  
242 that.initData(); 237 that.initData();
243 }).catch(function (error) { 238 }).catch(function (error) {
244 if (error.response.status === 402) { // 已经停止过 239 if (error.response.status === 402) { // 已经停止过
@@ -273,7 +268,6 @@ export default { @@ -273,7 +268,6 @@ export default {
273 }) 268 })
274 }, 269 },
275 changeSubchannel(itemData) { 270 changeSubchannel(itemData) {
276 - console.log(this.$router.currentRoute)  
277 this.beforeUrl = this.$router.currentRoute.path; 271 this.beforeUrl = this.$router.currentRoute.path;
278 272
279 var url = `/${this.$router.currentRoute.name}/${this.$router.currentRoute.params.deviceId}/${itemData.channelId}/${this.$router.currentRoute.params.count}/1` 273 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 { @@ -310,13 +304,11 @@ export default {
310 }); 304 });
311 }, 305 },
312 search: function () { 306 search: function () {
313 - console.log(this.searchSrt)  
314 this.currentPage = 1; 307 this.currentPage = 1;
315 this.total = 0; 308 this.total = 0;
316 this.initData(); 309 this.initData();
317 }, 310 },
318 updateChannel: function (row) { 311 updateChannel: function (row) {
319 - console.log(row)  
320 this.$axios({ 312 this.$axios({
321 method: 'post', 313 method: 'post',
322 url: `/api/device/query/channel/update/${this.deviceId}`, 314 url: `/api/device/query/channel/update/${this.deviceId}`,
web_src/src/components/dialog/devicePlayer.vue
@@ -151,7 +151,8 @@ @@ -151,7 +151,8 @@
151 <script> 151 <script>
152 // import player from '../dialog/rtcPlayer.vue' 152 // import player from '../dialog/rtcPlayer.vue'
153 // import LivePlayer from '@liveqing/liveplayer' 153 // import LivePlayer from '@liveqing/liveplayer'
154 -import player from '../dialog/easyPlayer.vue' 154 +// import player from '../dialog/easyPlayer.vue'
  155 +import player from '../dialog/jessibuca.vue'
155 export default { 156 export default {
156 name: 'devicePlayer', 157 name: 'devicePlayer',
157 props: {}, 158 props: {},
@@ -280,7 +281,8 @@ export default { @@ -280,7 +281,8 @@ export default {
280 console.log(12121212) 281 console.log(12121212)
281 console.log(baseZlmApi) 282 console.log(baseZlmApi)
282 // return `${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`; 283 // return `${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`;
283 - return `http://${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`; 284 + // return `http://${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`;
  285 + return streamInfo.ws_flv;
284 }, 286 },
285 coverPlay: function () { 287 coverPlay: function () {
286 var that = this; 288 var that = this;
web_src/src/components/dialog/jessibuca.vue 0 → 100644
  1 +<template>
  2 + <div id="jessibuca" style="width: auto; height: auto">
  3 + <div id="container" ref="container" style="width: 100%; height: 10rem; background-color: #000" @dblclick="fullscreenSwich">
  4 + <div class="buttons-box" id="buttonsBox">
  5 + <div class="buttons-box-left">
  6 + <i v-if="!playing" class="iconfont icon-play jessibuca-btn" @click="playBtnClick"></i>
  7 + <i v-if="playing" class="iconfont icon-pause jessibuca-btn" @click="pause"></i>
  8 + <i class="iconfont icon-stop jessibuca-btn" @click="destroy"></i>
  9 + <i v-if="isNotMute" class="iconfont icon-audio-high jessibuca-btn" @click="jessibuca.mute()"></i>
  10 + <i v-if="!isNotMute" class="iconfont icon-audio-mute jessibuca-btn" @click="jessibuca.cancelMute()"></i>
  11 + </div>
  12 + <div class="buttons-box-right">
  13 + <span class="jessibuca-btn">{{kBps}} kb/s</span>
  14 +<!-- <i class="iconfont icon-file-record1 jessibuca-btn"></i>-->
  15 +<!-- <i class="iconfont icon-xiangqing2 jessibuca-btn" ></i>-->
  16 + <i class="iconfont icon-crop2 jessibuca-btn" @click="jessibuca.screenshot('截图','png',0.5)"></i>
  17 + <i class="iconfont icon-shuaxin11 jessibuca-btn" @click="playBtnClick"></i>
  18 + <i v-if="!fullscreen" class="iconfont icon-weibiaoti10 jessibuca-btn" @click="fullscreenSwich"></i>
  19 + <i v-if="fullscreen" class="iconfont icon-weibiaoti11 jessibuca-btn" @click="fullscreenSwich"></i>
  20 + </div>
  21 + </div>
  22 +
  23 + </div>
  24 + </div>
  25 +</template>
  26 +
  27 +<script>
  28 +export default {
  29 + name: 'jessibuca',
  30 + data() {
  31 + return {
  32 + jessibuca: null,
  33 + playing: false,
  34 + isNotMute: false,
  35 + quieting: false,
  36 + fullscreen: false,
  37 + loaded: false, // mute
  38 + speed: 0,
  39 + performance: "", // 工作情况
  40 + kBps: 0,
  41 + btnDom: null,
  42 + videoInfo: null,
  43 + volume: 1,
  44 + rotate: 0,
  45 + vod: true, // 点播
  46 + forceNoOffscreen: false,
  47 + };
  48 + },
  49 + props: ['videoUrl', 'error', 'hasaudio', 'height'],
  50 + mounted () {
  51 + window.onerror = (msg) => {
  52 + // console.error(msg)
  53 + };
  54 + let paramUrl = decodeURIComponent(this.$route.params.url)
  55 + this.$nextTick(() =>{
  56 + let dom = document.getElementById("container");
  57 + dom.style.height = (9/16 ) * dom.clientWidth + "px"
  58 + if (typeof (this.videoUrl) == "undefined") {
  59 + this.videoUrl = paramUrl;
  60 + }
  61 + this.btnDom = document.getElementById("buttonsBox");
  62 + console.log("初始化时的地址为: " + this.videoUrl)
  63 + this.play(this.videoUrl)
  64 + })
  65 + },
  66 + watch:{
  67 + videoUrl(newData, oldData){
  68 + this.play(newData)
  69 + },
  70 + immediate:true
  71 + },
  72 + methods: {
  73 + create(){
  74 + let options = {};
  75 + console.log(this.$refs.container)
  76 +
  77 + this.jessibuca = new window.Jessibuca(Object.assign(
  78 + {
  79 + container: this.$refs.container,
  80 + videoBuffer: 0.5, // 最大缓冲时长,单位秒
  81 + isResize: true,
  82 + decoder: "./static/js/jessibuca/index.js",
  83 + // text: "WVP-PRO",
  84 + // background: "bg.jpg",
  85 + loadingText: "加载中",
  86 + hasAudio: this.hasAudio,
  87 + debug: false,
  88 + supportDblclickFullscreen: false, // 是否支持屏幕的双击事件,触发全屏,取消全屏事件。
  89 + operateBtns: {
  90 + fullscreen: false,
  91 + screenshot: false,
  92 + play: false,
  93 + audio: false,
  94 + },
  95 + record: "record",
  96 + vod: this.vod,
  97 + forceNoOffscreen: this.forceNoOffscreen,
  98 + isNotMute: this.isNotMute,
  99 + },
  100 + options
  101 + ));
  102 +
  103 + let _this = this;
  104 + this.jessibuca.on("load", function () {
  105 + console.log("on load init");
  106 + });
  107 +
  108 + this.jessibuca.on("log", function (msg) {
  109 + console.log("on log", msg);
  110 + });
  111 + this.jessibuca.on("record", function (msg) {
  112 + console.log("on record:", msg);
  113 + });
  114 + this.jessibuca.on("pause", function () {
  115 + _this.playing = false;
  116 + });
  117 + this.jessibuca.on("play", function () {
  118 + _this.playing = true;
  119 + });
  120 + this.jessibuca.on("fullscreen", function (msg) {
  121 + console.log("on fullscreen", msg);
  122 + _this.fullscreen = msg
  123 + });
  124 +
  125 + this.jessibuca.on("mute", function (msg) {
  126 + console.log("on mute", msg);
  127 + _this.isNotMute = !msg;
  128 + });
  129 + this.jessibuca.on("audioInfo", function (msg) {
  130 + // console.log("audioInfo", msg);
  131 + });
  132 +
  133 + this.jessibuca.on("videoInfo", function (msg) {
  134 + this.videoInfo = msg;
  135 + // console.log("videoInfo", msg);
  136 +
  137 + });
  138 +
  139 + this.jessibuca.on("bps", function (bps) {
  140 + // console.log('bps', bps);
  141 +
  142 + });
  143 + let _ts = 0;
  144 + this.jessibuca.on("timeUpdate", function (ts) {
  145 + // console.log('timeUpdate,old,new,timestamp', _ts, ts, ts - _ts);
  146 + _ts = ts;
  147 + });
  148 +
  149 + this.jessibuca.on("videoInfo", function (info) {
  150 + console.log("videoInfo", info);
  151 + });
  152 +
  153 + this.jessibuca.on("error", function (error) {
  154 + console.log("error", error);
  155 + });
  156 +
  157 + this.jessibuca.on("timeout", function () {
  158 + console.log("timeout");
  159 + });
  160 +
  161 + this.jessibuca.on('start', function () {
  162 + console.log('start');
  163 + })
  164 +
  165 + this.jessibuca.on("performance", function (performance) {
  166 + let show = "卡顿";
  167 + if (performance === 2) {
  168 + show = "非常流畅";
  169 + } else if (performance === 1) {
  170 + show = "流畅";
  171 + }
  172 + _this.performance = show;
  173 + });
  174 + this.jessibuca.on('buffer', function (buffer) {
  175 + // console.log('buffer', buffer);
  176 + })
  177 +
  178 + this.jessibuca.on('stats', function (stats) {
  179 + // console.log('stats', stats);
  180 + })
  181 +
  182 + this.jessibuca.on('kBps', function (kBps) {
  183 + _this.kBps = Math.round(kBps);
  184 + });
  185 +
  186 + // 显示时间戳 PTS
  187 + this.jessibuca.on('videoFrame', function () {
  188 +
  189 + })
  190 +
  191 + //
  192 + this.jessibuca.on('metadata', function () {
  193 +
  194 + });
  195 + },
  196 + playBtnClick: function (event){
  197 + this.play(this.videoUrl)
  198 + },
  199 + play: function (url) {
  200 + console.log(url)
  201 + if (this.jessibuca) {
  202 + this.destroy();
  203 + }
  204 + this.create();
  205 + this.jessibuca.on("play", () => {
  206 + this.playing = true;
  207 + this.loaded = true;
  208 + this.quieting = this.jessibuca.quieting;
  209 + });
  210 + if (this.jessibuca.hasLoaded()) {
  211 + this.jessibuca.play(url);
  212 + } else {
  213 + this.jessibuca.on("load", () => {
  214 + console.log("load 播放")
  215 + this.jessibuca.play(url);
  216 + });
  217 + }
  218 + },
  219 + pause: function () {
  220 + if (this.jessibuca) {
  221 + this.jessibuca.pause();
  222 + }
  223 + this.playing = false;
  224 + this.err = "";
  225 + this.performance = "";
  226 + },
  227 + destroy: function () {
  228 + if (this.jessibuca) {
  229 + this.jessibuca.destroy();
  230 + }
  231 + if (document.getElementById("buttonsBox") == null) {
  232 + document.getElementById("container").appendChild(this.btnDom)
  233 + }
  234 + this.jessibuca = null;
  235 + this.playing = false;
  236 + this.err = "";
  237 + this.performance = "";
  238 +
  239 + },
  240 + eventcallbacK: function(type, message) {
  241 + // console.log("player 事件回调")
  242 + // console.log(type)
  243 + // console.log(message)
  244 + },
  245 + fullscreenSwich: function (){
  246 + let isFull = this.isFullscreen()
  247 + this.jessibuca.setFullscreen(!isFull)
  248 + this.fullscreen = !isFull;
  249 + },
  250 + isFullscreen: function (){
  251 + return document.fullscreenElement ||
  252 + document.msFullscreenElement ||
  253 + document.mozFullScreenElement ||
  254 + document.webkitFullscreenElement || false;
  255 + }
  256 + },
  257 + destroyed() {
  258 + if (this.jessibuca) {
  259 + this.jessibuca.destroy();
  260 + }
  261 + this.playing = false;
  262 + this.loaded = false;
  263 + this.performance = "";
  264 + },
  265 +}
  266 +</script>
  267 +
  268 +<style>
  269 + .buttons-box{
  270 + width: 100%;
  271 + height: 28px;
  272 + background-color: rgba(43, 51, 63, 0.7);
  273 + position: absolute;
  274 + display: -webkit-box;
  275 + display: -ms-flexbox;
  276 + display: flex;
  277 + left: 0;
  278 + bottom: 0;
  279 + user-select: none;
  280 + z-index: 10;
  281 + }
  282 + .jessibuca-btn{
  283 + width: 20px;
  284 + color: rgb(255, 255, 255);
  285 + line-height: 27px;
  286 + margin: 0px 10px;
  287 + padding: 0px 2px;
  288 + cursor: pointer;
  289 + text-align: center;
  290 + font-size: 0.8rem !important;
  291 + }
  292 + .buttons-box-right {
  293 + position: absolute;
  294 + right: 0;
  295 + }
  296 +</style>
web_src/src/router/index.js
@@ -15,7 +15,7 @@ import web from &#39;../components/setting/Web.vue&#39; @@ -15,7 +15,7 @@ import web from &#39;../components/setting/Web.vue&#39;
15 import sip from '../components/setting/Sip.vue' 15 import sip from '../components/setting/Sip.vue'
16 import media from '../components/setting/Media.vue' 16 import media from '../components/setting/Media.vue'
17 17
18 -import wasmPlayer from '../components/dialog/easyPlayer.vue' 18 +import wasmPlayer from '../components/dialog/jessibuca.vue'
19 import rtcPlayer from '../components/dialog/rtcPlayer.vue' 19 import rtcPlayer from '../components/dialog/rtcPlayer.vue'
20 20
21 const originalPush = VueRouter.prototype.push 21 const originalPush = VueRouter.prototype.push
web_src/static/css/font-awesome.min.css deleted 100644 → 0
1 -/*!  
2 - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome  
3 - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)  
4 - */@font-face{font-family:'FontAwesome';src:url('../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}  
web_src/static/css/iconfont.css 0 → 100644
  1 +@font-face {
  2 + font-family: "iconfont"; /* Project id 1291092 */
  3 + src: url('iconfont.woff2?t=1626163621710') format('woff2'),
  4 + url('iconfont.woff?t=1626163621710') format('woff'),
  5 + url('iconfont.ttf?t=1626163621710') format('truetype');
  6 +}
  7 +
  8 +.iconfont {
  9 + font-family: "iconfont" !important;
  10 + font-size: 16px;
  11 + font-style: normal;
  12 + -webkit-font-smoothing: antialiased;
  13 + -moz-osx-font-smoothing: grayscale;
  14 +}
  15 +
  16 +.icon-xiangqing2:before {
  17 + content: "\e798";
  18 +}
  19 +
  20 +.icon-record:before {
  21 + content: "\e7a6";
  22 +}
  23 +
  24 +.icon-audio-mute:before {
  25 + content: "\e792";
  26 +}
  27 +
  28 +.icon-audio-high:before {
  29 + content: "\e793";
  30 +}
  31 +
  32 +.icon-record1:before {
  33 + content: "\e7f8";
  34 +}
  35 +
  36 +.icon-audio-line:before {
  37 + content: "\e794";
  38 +}
  39 +
  40 +.icon-record2:before {
  41 + content: "\e795";
  42 +}
  43 +
  44 +.icon-audio-fill:before {
  45 + content: "\e796";
  46 +}
  47 +
  48 +.icon-PTZ:before {
  49 + content: "\e797";
  50 +}
  51 +
  52 +.icon-camera1196054easyiconnet:before {
  53 + content: "\e791";
  54 +}
  55 +
  56 +.icon-weibiaoti10:before {
  57 + content: "\e78f";
  58 +}
  59 +
  60 +.icon-weibiaoti11:before {
  61 + content: "\e790";
  62 +}
  63 +
  64 +.icon-page-next1:before {
  65 + content: "\e69c";
  66 +}
  67 +
  68 +.icon-page-last1:before {
  69 + content: "\e69d";
  70 +}
  71 +
  72 +.icon-ptz-down1:before {
  73 + content: "\e69e";
  74 +}
  75 +
  76 +.icon-file-search1:before {
  77 + content: "\e69f";
  78 +}
  79 +
  80 +.icon-page-first1:before {
  81 + content: "\e6a0";
  82 +}
  83 +
  84 +.icon-fork1:before {
  85 + content: "\e6a1";
  86 +}
  87 +
  88 +.icon-ptz-middle1:before {
  89 + content: "\e6a2";
  90 +}
  91 +
  92 +.icon-ptz-upright1:before {
  93 + content: "\e6a3";
  94 +}
  95 +
  96 +.icon-ptz-downleft1:before {
  97 + content: "\e6a4";
  98 +}
  99 +
  100 +.icon-window-restore1:before {
  101 + content: "\e6a5";
  102 +}
  103 +
  104 +.icon-plus1:before {
  105 + content: "\e6a6";
  106 +}
  107 +
  108 +.icon-ptz-right1:before {
  109 + content: "\e6a7";
  110 +}
  111 +
  112 +.icon-stop:before {
  113 + content: "\e6a8";
  114 +}
  115 +
  116 +.icon-refresh1:before {
  117 + content: "\e6a9";
  118 +}
  119 +
  120 +.icon-tool-polyline1:before {
  121 + content: "\e6aa";
  122 +}
  123 +
  124 +.icon-tool-point1:before {
  125 + content: "\e6ab";
  126 +}
  127 +
  128 +.icon-minus1:before {
  129 + content: "\e6ac";
  130 +}
  131 +
  132 +.icon-ptz-wiper1:before {
  133 + content: "\e6ad";
  134 +}
  135 +
  136 +.icon-tool-select1:before {
  137 + content: "\e6ae";
  138 +}
  139 +
  140 +.icon-tool-polygon1:before {
  141 + content: "\e6af";
  142 +}
  143 +
  144 +.icon-settings1:before {
  145 + content: "\e6b0";
  146 +}
  147 +
  148 +.icon-search1:before {
  149 + content: "\e6b1";
  150 +}
  151 +
  152 +.icon-ir-vis1:before {
  153 + content: "\e6b2";
  154 +}
  155 +
  156 +.icon-ptz-light1:before {
  157 + content: "\e6b3";
  158 +}
  159 +
  160 +.icon-ptz-up1:before {
  161 + content: "\e6b4";
  162 +}
  163 +
  164 +.icon-ptz-upleft1:before {
  165 + content: "\e6b5";
  166 +}
  167 +
  168 +.icon-temp-stream1:before {
  169 + content: "\e6b6";
  170 +}
  171 +
  172 +.icon-tool-mouse1:before {
  173 + content: "\e6b7";
  174 +}
  175 +
  176 +.icon-zhongyingwenyingwen-01:before {
  177 + content: "\e6b8";
  178 +}
  179 +
  180 +.icon-zhongyingwenyingwen02-01:before {
  181 + content: "\e6b9";
  182 +}
  183 +
  184 +.icon-crop2:before {
  185 + content: "\e6ba";
  186 +}
  187 +
  188 +.icon-expander-down2:before {
  189 + content: "\e6bb";
  190 +}
  191 +
  192 +.icon-window-restore2:before {
  193 + content: "\e6bc";
  194 +}
  195 +
  196 +.icon-file-jpg2:before {
  197 + content: "\e6bd";
  198 +}
  199 +
  200 +.icon-asterisk3:before {
  201 + content: "\e6be";
  202 +}
  203 +
  204 +.icon-ffc2:before {
  205 + content: "\e6bf";
  206 +}
  207 +
  208 +.icon-file-record2:before {
  209 + content: "\e6c0";
  210 +}
  211 +
  212 +.icon-file-stream2:before {
  213 + content: "\e6c1";
  214 +}
  215 +
  216 +.icon-fork2:before {
  217 + content: "\e6c2";
  218 +}
  219 +
  220 +.icon-file-mp42:before {
  221 + content: "\e6c3";
  222 +}
  223 +
  224 +.icon-ir-vis2:before {
  225 + content: "\e6c4";
  226 +}
  227 +
  228 +.icon-file-search2:before {
  229 + content: "\e6c5";
  230 +}
  231 +
  232 +.icon-pause:before {
  233 + content: "\e6c6";
  234 +}
  235 +
  236 +.icon-play1:before {
  237 + content: "\e6c7";
  238 +}
  239 +
  240 +.icon-page-previous2:before {
  241 + content: "\e6c8";
  242 +}
  243 +
  244 +.icon-page-next2:before {
  245 + content: "\e6c9";
  246 +}
  247 +
  248 +.icon-minus2:before {
  249 + content: "\e6ca";
  250 +}
  251 +
  252 +.icon-page-last2:before {
  253 + content: "\e6cb";
  254 +}
  255 +
  256 +.icon-page-first2:before {
  257 + content: "\e6cc";
  258 +}
  259 +
  260 +.icon-ptz-downleft2:before {
  261 + content: "\e6cd";
  262 +}
  263 +
  264 +.icon-ptz-downright2:before {
  265 + content: "\e6ce";
  266 +}
  267 +
  268 +.icon-ptz-middle2:before {
  269 + content: "\e6cf";
  270 +}
  271 +
  272 +.icon-ptz-down2:before {
  273 + content: "\e6d0";
  274 +}
  275 +
  276 +.icon-plus2:before {
  277 + content: "\e6d1";
  278 +}
  279 +
  280 +.icon-ptz-left2:before {
  281 + content: "\e6d2";
  282 +}
  283 +
  284 +.icon-ptz-up2:before {
  285 + content: "\e6d3";
  286 +}
  287 +
  288 +.icon-ptz-right2:before {
  289 + content: "\e6d4";
  290 +}
  291 +
  292 +.icon-ptz-light2:before {
  293 + content: "\e6d5";
  294 +}
  295 +
  296 +.icon-ptz-wiper2:before {
  297 + content: "\e6d6";
  298 +}
  299 +
  300 +.icon-ptz-upright2:before {
  301 + content: "\e6d7";
  302 +}
  303 +
  304 +.icon-search2:before {
  305 + content: "\e6d8";
  306 +}
  307 +
  308 +.icon-refresh2:before {
  309 + content: "\e6d9";
  310 +}
  311 +
  312 +.icon-ptz-upleft2:before {
  313 + content: "\e6da";
  314 +}
  315 +
  316 +.icon-stop1:before {
  317 + content: "\e6db";
  318 +}
  319 +
  320 +.icon-tool-mouse2:before {
  321 + content: "\e6dc";
  322 +}
  323 +
  324 +.icon-settings2:before {
  325 + content: "\e6dd";
  326 +}
  327 +
  328 +.icon-tool-polygon2:before {
  329 + content: "\e6de";
  330 +}
  331 +
  332 +.icon-tool-point2:before {
  333 + content: "\e6df";
  334 +}
  335 +
  336 +.icon-temp-stream2:before {
  337 + content: "\e6e0";
  338 +}
  339 +
  340 +.icon-tool-polyline2:before {
  341 + content: "\e6e1";
  342 +}
  343 +
  344 +.icon-window-maximize2:before {
  345 + content: "\e6e2";
  346 +}
  347 +
  348 +.icon-window-minimize2:before {
  349 + content: "\e6e3";
  350 +}
  351 +
  352 +.icon-tool-select2:before {
  353 + content: "\e6e4";
  354 +}
  355 +
  356 +.icon-video-stream2:before {
  357 + content: "\e6e5";
  358 +}
  359 +
  360 +.icon-bianji1:before {
  361 + content: "\e6e6";
  362 +}
  363 +
  364 +.icon-caidanzhankai1:before {
  365 + content: "\e6e7";
  366 +}
  367 +
  368 +.icon-cha11:before {
  369 + content: "\e6e8";
  370 +}
  371 +
  372 +.icon-caidanshouqi1:before {
  373 + content: "\e6e9";
  374 +}
  375 +
  376 +.icon-zhongyingwen2zhongwen1:before {
  377 + content: "\e6ea";
  378 +}
  379 +
  380 +.icon-bofang011:before {
  381 + content: "\e6eb";
  382 +}
  383 +
  384 +.icon-zuo:before {
  385 + content: "\e6ec";
  386 +}
  387 +
  388 +.icon-baojing1:before {
  389 + content: "\e6ed";
  390 +}
  391 +
  392 +.icon-fuxuankuang-true1:before {
  393 + content: "\e6ee";
  394 +}
  395 +
  396 +.icon-bofang2:before {
  397 + content: "\e6ef";
  398 +}
  399 +
  400 +.icon-baojingshezhi1:before {
  401 + content: "\e6f0";
  402 +}
  403 +
  404 +.icon-jiahao2:before {
  405 + content: "\e6f1";
  406 +}
  407 +
  408 +.icon-huifangxuanzhong1:before {
  409 + content: "\e6f2";
  410 +}
  411 +
  412 +.icon-cewen1:before {
  413 + content: "\e6f3";
  414 +}
  415 +
  416 +.icon-baojingjilu2:before {
  417 + content: "\e6f4";
  418 +}
  419 +
  420 +.icon-danxuan1:before {
  421 + content: "\e6f5";
  422 +}
  423 +
  424 +.icon-pingmufenge1:before {
  425 + content: "\e6f6";
  426 +}
  427 +
  428 +.icon-luxiangguanli1:before {
  429 + content: "\e6f7";
  430 +}
  431 +
  432 +.icon-goukuang:before {
  433 + content: "\e6f8";
  434 +}
  435 +
  436 +.icon-shanchu11:before {
  437 + content: "\e6f9";
  438 +}
  439 +
  440 +.icon-cha02:before {
  441 + content: "\e6fa";
  442 +}
  443 +
  444 +.icon-huifang1:before {
  445 + content: "\e6fb";
  446 +}
  447 +
  448 +.icon-rili1:before {
  449 + content: "\e6fc";
  450 +}
  451 +
  452 +.icon-quanping1:before {
  453 + content: "\e6fd";
  454 +}
  455 +
  456 +.icon-jianhao1:before {
  457 + content: "\e6fe";
  458 +}
  459 +
  460 +.icon-shijian1:before {
  461 + content: "\e6ff";
  462 +}
  463 +
  464 +.icon-shishiyulanxuanzhong1:before {
  465 + content: "\e700";
  466 +}
  467 +
  468 +.icon-shouji1:before {
  469 + content: "\e701";
  470 +}
  471 +
  472 +.icon-shouyexuanzhong1:before {
  473 + content: "\e702";
  474 +}
  475 +
  476 +.icon-luxiang01:before {
  477 + content: "\e703";
  478 +}
  479 +
  480 +.icon-shishiyulan:before {
  481 + content: "\e704";
  482 +}
  483 +
  484 +.icon-quxiao:before {
  485 + content: "\e601";
  486 +}
  487 +
  488 +.icon-sousuo1:before {
  489 + content: "\e705";
  490 +}
  491 +
  492 +.icon-file-record:before {
  493 + content: "\e602";
  494 +}
  495 +
  496 +.icon-shebeiguanli1:before {
  497 + content: "\e706";
  498 +}
  499 +
  500 +.icon-play:before {
  501 + content: "\e603";
  502 +}
  503 +
  504 +.icon-suo1:before {
  505 + content: "\e707";
  506 +}
  507 +
  508 +.icon-file-stream:before {
  509 + content: "\e604";
  510 +}
  511 +
  512 +.icon-tuichudenglu1:before {
  513 + content: "\e708";
  514 +}
  515 +
  516 +.icon-ptz-middle:before {
  517 + content: "\e606";
  518 +}
  519 +
  520 +.icon-wenhao1:before {
  521 + content: "\e709";
  522 +}
  523 +
  524 +.icon-minus:before {
  525 + content: "\e607";
  526 +}
  527 +
  528 +.icon-shezhixuanzhong:before {
  529 + content: "\e70a";
  530 +}
  531 +
  532 +.icon-fork:before {
  533 + content: "\e608";
  534 +}
  535 +
  536 +.icon-shezhiweixuanzhong1:before {
  537 + content: "\e70b";
  538 +}
  539 +
  540 +.icon-ptz-up:before {
  541 + content: "\e609";
  542 +}
  543 +
  544 +.icon-shuju2:before {
  545 + content: "\e70c";
  546 +}
  547 +
  548 +.icon-file-jpg:before {
  549 + content: "\e60a";
  550 +}
  551 +
  552 +.icon-xiazai011:before {
  553 + content: "\e70d";
  554 +}
  555 +
  556 +.icon-ptz-left:before {
  557 + content: "\e60b";
  558 +}
  559 +
  560 +.icon-xiala11:before {
  561 + content: "\e70e";
  562 +}
  563 +
  564 +.icon-ptz-down:before {
  565 + content: "\e60c";
  566 +}
  567 +
  568 +.icon-shuaxin:before {
  569 + content: "\e70f";
  570 +}
  571 +
  572 +.icon-file-search:before {
  573 + content: "\e60d";
  574 +}
  575 +
  576 +.icon-pingmufenge01:before {
  577 + content: "\e710";
  578 +}
  579 +
  580 +.icon-crop:before {
  581 + content: "\e60e";
  582 +}
  583 +
  584 +.icon-yonghu1:before {
  585 + content: "\e711";
  586 +}
  587 +
  588 +.icon-asterisk:before {
  589 + content: "\e60f";
  590 +}
  591 +
  592 +.icon-wenhao01:before {
  593 + content: "\e712";
  594 +}
  595 +
  596 +.icon-expander-down:before {
  597 + content: "\e610";
  598 +}
  599 +
  600 +.icon-you:before {
  601 + content: "\e713";
  602 +}
  603 +
  604 +.icon-ptz-right:before {
  605 + content: "\e611";
  606 +}
  607 +
  608 +.icon-shujuxuanzhong1:before {
  609 + content: "\e714";
  610 +}
  611 +
  612 +.icon-ptz-wiper:before {
  613 + content: "\e612";
  614 +}
  615 +
  616 +.icon-kuangxuan1:before {
  617 + content: "\e715";
  618 +}
  619 +
  620 +.icon-ir-vis:before {
  621 + content: "\e613";
  622 +}
  623 +
  624 +.icon-yonghuguanli1:before {
  625 + content: "\e716";
  626 +}
  627 +
  628 +.icon-ptz-upleft:before {
  629 + content: "\e614";
  630 +}
  631 +
  632 +.icon-zhongyingwenyingwen:before {
  633 + content: "\e717";
  634 +}
  635 +
  636 +.icon-ptz-downright:before {
  637 + content: "\e615";
  638 +}
  639 +
  640 +.icon-xiala2:before {
  641 + content: "\e718";
  642 +}
  643 +
  644 +.icon-search:before {
  645 + content: "\e616";
  646 +}
  647 +
  648 +.icon-luxiang:before {
  649 + content: "\e719";
  650 +}
  651 +
  652 +.icon-ptz-upright:before {
  653 + content: "\e617";
  654 +}
  655 +
  656 +.icon-zanting2:before {
  657 + content: "\e71a";
  658 +}
  659 +
  660 +.icon-ptz-downleft:before {
  661 + content: "\e618";
  662 +}
  663 +
  664 +.icon-kefu:before {
  665 + content: "\e71b";
  666 +}
  667 +
  668 +.icon-tool-point:before {
  669 + content: "\e619";
  670 +}
  671 +
  672 +.icon-jiqiren:before {
  673 + content: "\e71c";
  674 +}
  675 +
  676 +.icon-ptz-light:before {
  677 + content: "\e61a";
  678 +}
  679 +
  680 +.icon-huanliuzhan:before {
  681 + content: "\e71d";
  682 +}
  683 +
  684 +.icon-tool-polyline:before {
  685 + content: "\e61b";
  686 +}
  687 +
  688 +.icon-shouji2:before {
  689 + content: "\e71e";
  690 +}
  691 +
  692 +.icon-file-mp4:before {
  693 + content: "\e61c";
  694 +}
  695 +
  696 +.icon-cangku:before {
  697 + content: "\e71f";
  698 +}
  699 +
  700 +.icon-window-maximize:before {
  701 + content: "\e61d";
  702 +}
  703 +
  704 +.icon-shuaxin11:before {
  705 + content: "\e720";
  706 +}
  707 +
  708 +.icon-page-next:before {
  709 + content: "\e61e";
  710 +}
  711 +
  712 +.icon-weixiu:before {
  713 + content: "\e721";
  714 +}
  715 +
  716 +.icon-ffc:before {
  717 + content: "\e61f";
  718 +}
  719 +
  720 +.icon-biandianzhan:before {
  721 + content: "\e722";
  722 +}
  723 +
  724 +.icon-tool-mouse:before {
  725 + content: "\e620";
  726 +}
  727 +
  728 +.icon-youxiang:before {
  729 + content: "\e723";
  730 +}
  731 +
  732 +.icon-settings:before {
  733 + content: "\e621";
  734 +}
  735 +
  736 +.icon-qq:before {
  737 + content: "\e724";
  738 +}
  739 +
  740 +.icon-page-last:before {
  741 + content: "\e622";
  742 +}
  743 +
  744 +.icon-dianhua01:before {
  745 + content: "\e725";
  746 +}
  747 +
  748 +.icon-window-restore:before {
  749 + content: "\e624";
  750 +}
  751 +
  752 +.icon-fasongyoujian:before {
  753 + content: "\e726";
  754 +}
  755 +
  756 +.icon-tool-select:before {
  757 + content: "\e625";
  758 +}
  759 +
  760 +.icon-gaotieyunhangcopy:before {
  761 + content: "\e727";
  762 +}
  763 +
  764 +.icon-video-stream:before {
  765 + content: "\e627";
  766 +}
  767 +
  768 +.icon-dizhi:before {
  769 + content: "\e728";
  770 +}
  771 +
  772 +.icon-page-first:before {
  773 + content: "\e628";
  774 +}
  775 +
  776 +.icon-anfangbaojingmian:before {
  777 + content: "\e729";
  778 +}
  779 +
  780 +.icon-page-previous:before {
  781 + content: "\e629";
  782 +}
  783 +
  784 +.icon-piliangcaozuo1:before {
  785 + content: "\e72a";
  786 +}
  787 +
  788 +.icon-refresh:before {
  789 + content: "\e62a";
  790 +}
  791 +
  792 +.icon-qiyeguanli1:before {
  793 + content: "\e72b";
  794 +}
  795 +
  796 +.icon-temp-stream:before {
  797 + content: "\e62b";
  798 +}
  799 +
  800 +.icon-luxiangguanli2:before {
  801 + content: "\e72c";
  802 +}
  803 +
  804 +.icon-tool-polygon:before {
  805 + content: "\e62c";
  806 +}
  807 +
  808 +.icon-quanxianguanli1:before {
  809 + content: "\e72d";
  810 +}
  811 +
  812 +.icon-window-minimize:before {
  813 + content: "\e62d";
  814 +}
  815 +
  816 +.icon-shezhi1:before {
  817 + content: "\e72e";
  818 +}
  819 +
  820 +.icon-plus:before {
  821 + content: "\e62e";
  822 +}
  823 +
  824 +.icon-shishi1:before {
  825 + content: "\e72f";
  826 +}
  827 +
  828 +.icon-qiyeguanli:before {
  829 + content: "\e62f";
  830 +}
  831 +
  832 +.icon-shujuquanxian1:before {
  833 + content: "\e730";
  834 +}
  835 +
  836 +.icon-quanxianguanli:before {
  837 + content: "\e630";
  838 +}
  839 +
  840 +.icon-shishiyulanxuanzhong2:before {
  841 + content: "\e731";
  842 +}
  843 +
  844 +.icon-shujuquanxian:before {
  845 + content: "\e631";
  846 +}
  847 +
  848 +.icon-renzheng:before {
  849 + content: "\e732";
  850 +}
  851 +
  852 +.icon--_baojinglianxiren:before {
  853 + content: "\e632";
  854 +}
  855 +
  856 +.icon-shuju3:before {
  857 + content: "\e733";
  858 +}
  859 +
  860 +.icon-yuechi:before {
  861 + content: "\e633";
  862 +}
  863 +
  864 +.icon-shouye1:before {
  865 + content: "\e734";
  866 +}
  867 +
  868 +.icon-xitongguanli:before {
  869 + content: "\e634";
  870 +}
  871 +
  872 +.icon-zuzhi1:before {
  873 + content: "\e735";
  874 +}
  875 +
  876 +.icon-zuzhi:before {
  877 + content: "\e635";
  878 +}
  879 +
  880 +.icon-zuzhiguanli1:before {
  881 + content: "\e736";
  882 +}
  883 +
  884 +.icon-renzheng6:before {
  885 + content: "\e636";
  886 +}
  887 +
  888 +.icon-xitongguanli1:before {
  889 + content: "\e737";
  890 +}
  891 +
  892 +.icon-yonghuguanli01:before {
  893 + content: "\e637";
  894 +}
  895 +
  896 +.icon-yuechi1:before {
  897 + content: "\e738";
  898 +}
  899 +
  900 +.icon-baojingmoban:before {
  901 + content: "\e638";
  902 +}
  903 +
  904 +.icon-baojinglianxiren:before {
  905 + content: "\e739";
  906 +}
  907 +
  908 +.icon-zuzhiguanli:before {
  909 + content: "\e639";
  910 +}
  911 +
  912 +.icon-baojingjilu3:before {
  913 + content: "\e73a";
  914 +}
  915 +
  916 +.icon-yonghuguanli:before {
  917 + content: "\e63a";
  918 +}
  919 +
  920 +.icon-huifangxuanzhong2:before {
  921 + content: "\e73b";
  922 +}
  923 +
  924 +.icon-bumenguanli:before {
  925 + content: "\e63b";
  926 +}
  927 +
  928 +.icon-caiwu1:before {
  929 + content: "\e73c";
  930 +}
  931 +
  932 +.icon-shishi:before {
  933 + content: "\e63c";
  934 +}
  935 +
  936 +.icon-baojingguize1:before {
  937 + content: "\e73d";
  938 +}
  939 +
  940 +.icon-baojing:before {
  941 + content: "\e63d";
  942 +}
  943 +
  944 +.icon-bumenguanli1:before {
  945 + content: "\e73e";
  946 +}
  947 +
  948 +.icon-shezhi:before {
  949 + content: "\e63e";
  950 +}
  951 +
  952 +.icon-baojing2:before {
  953 + content: "\e73f";
  954 +}
  955 +
  956 +.icon-huifangxuanzhong:before {
  957 + content: "\e63f";
  958 +}
  959 +
  960 +.icon-yonghuguanli2:before {
  961 + content: "\e740";
  962 +}
  963 +
  964 +.icon-luxiangguanli:before {
  965 + content: "\e640";
  966 +}
  967 +
  968 +.icon-huifang2:before {
  969 + content: "\e741";
  970 +}
  971 +
  972 +.icon-huifang:before {
  973 + content: "\e642";
  974 +}
  975 +
  976 +.icon-baojingmoban1:before {
  977 + content: "\e742";
  978 +}
  979 +
  980 +.icon-shouye:before {
  981 + content: "\e643";
  982 +}
  983 +
  984 +.icon-dingdanxiangqing1:before {
  985 + content: "\e743";
  986 +}
  987 +
  988 +.icon-shishiyulanxuanzhong:before {
  989 + content: "\e644";
  990 +}
  991 +
  992 +.icon-fapiaoguanli1:before {
  993 + content: "\e744";
  994 +}
  995 +
  996 +.icon-caiwu:before {
  997 + content: "\e645";
  998 +}
  999 +
  1000 +.icon-shiyonggaikuang1:before {
  1001 + content: "\e745";
  1002 +}
  1003 +
  1004 +.icon-baojingjilu:before {
  1005 + content: "\e646";
  1006 +}
  1007 +
  1008 +.icon-zengzhifuwu1:before {
  1009 + content: "\e746";
  1010 +}
  1011 +
  1012 +.icon-baojingguize:before {
  1013 + content: "\e647";
  1014 +}
  1015 +
  1016 +.icon-yiguanzhu:before {
  1017 + content: "\e747";
  1018 +}
  1019 +
  1020 +.icon-shuju:before {
  1021 + content: "\e648";
  1022 +}
  1023 +
  1024 +.icon-baojingtuisongshezhi1:before {
  1025 + content: "\e748";
  1026 +}
  1027 +
  1028 +.icon-piliangcaozuo:before {
  1029 + content: "\e649";
  1030 +}
  1031 +
  1032 +.icon-quxiao1:before {
  1033 + content: "\e749";
  1034 +}
  1035 +
  1036 +.icon-suo:before {
  1037 + content: "\e64a";
  1038 +}
  1039 +
  1040 +.icon-xiangqing1:before {
  1041 + content: "\e74a";
  1042 +}
  1043 +
  1044 +.icon-yonghu:before {
  1045 + content: "\e64b";
  1046 +}
  1047 +
  1048 +.icon-xufei1:before {
  1049 + content: "\e74b";
  1050 +}
  1051 +
  1052 +.icon-shouji:before {
  1053 + content: "\e64c";
  1054 +}
  1055 +
  1056 +.icon-zhifu1:before {
  1057 + content: "\e74c";
  1058 +}
  1059 +
  1060 +.icon-tianjiadian:before {
  1061 + content: "\e64d";
  1062 +}
  1063 +
  1064 +.icon-kuang:before {
  1065 + content: "\e74d";
  1066 +}
  1067 +
  1068 +.icon-tianjiaxian:before {
  1069 + content: "\e64e";
  1070 +}
  1071 +
  1072 +.icon-shouzhimingxi:before {
  1073 + content: "\e74e";
  1074 +}
  1075 +
  1076 +.icon-tianjiaxuanqu:before {
  1077 + content: "\e64f";
  1078 +}
  1079 +
  1080 +.icon-shouzhimingxi1:before {
  1081 + content: "\e74f";
  1082 +}
  1083 +
  1084 +.icon-xuanzeduixiang:before {
  1085 + content: "\e650";
  1086 +}
  1087 +
  1088 +.icon-daochu:before {
  1089 + content: "\e750";
  1090 +}
  1091 +
  1092 +.icon-baojing01:before {
  1093 + content: "\e651";
  1094 +}
  1095 +
  1096 +.icon-daochu1:before {
  1097 + content: "\e751";
  1098 +}
  1099 +
  1100 +.icon-baojingjilu1:before {
  1101 + content: "\e652";
  1102 +}
  1103 +
  1104 +.icon-daping:before {
  1105 + content: "\e752";
  1106 +}
  1107 +
  1108 +.icon-baojingshezhi:before {
  1109 + content: "\e653";
  1110 +}
  1111 +
  1112 +.icon-shaixuan:before {
  1113 + content: "\e753";
  1114 +}
  1115 +
  1116 +.icon-cewen:before {
  1117 + content: "\e654";
  1118 +}
  1119 +
  1120 +.icon-zhifu2:before {
  1121 + content: "\e754";
  1122 +}
  1123 +
  1124 +.icon-tuichudenglu:before {
  1125 + content: "\e655";
  1126 +}
  1127 +
  1128 +.icon-shaixuan1:before {
  1129 + content: "\e755";
  1130 +}
  1131 +
  1132 +.icon-shezhiweixuanzhong:before {
  1133 + content: "\e656";
  1134 +}
  1135 +
  1136 +.icon-zhifu3:before {
  1137 + content: "\e756";
  1138 +}
  1139 +
  1140 +.icon-shezhixuanzhong1:before {
  1141 + content: "\e657";
  1142 +}
  1143 +
  1144 +.icon-xia:before {
  1145 + content: "\e757";
  1146 +}
  1147 +
  1148 +.icon-shouyexuanzhong:before {
  1149 + content: "\e658";
  1150 +}
  1151 +
  1152 +.icon-xia1:before {
  1153 + content: "\e758";
  1154 +}
  1155 +
  1156 +.icon-shujuxuanzhong:before {
  1157 + content: "\e659";
  1158 +}
  1159 +
  1160 +.icon-yanzhengma:before {
  1161 + content: "\e759";
  1162 +}
  1163 +
  1164 +.icon-shuju1:before {
  1165 + content: "\e65a";
  1166 +}
  1167 +
  1168 +.icon-tongxunlu:before {
  1169 + content: "\e75a";
  1170 +}
  1171 +
  1172 +.icon-bianji:before {
  1173 + content: "\e65b";
  1174 +}
  1175 +
  1176 +.icon-yanzhengma1:before {
  1177 + content: "\e75b";
  1178 +}
  1179 +
  1180 +.icon-rili:before {
  1181 + content: "\e65c";
  1182 +}
  1183 +
  1184 +.icon-tongxunlu1:before {
  1185 + content: "\e75c";
  1186 +}
  1187 +
  1188 +.icon-shanchu:before {
  1189 + content: "\e65d";
  1190 +}
  1191 +
  1192 +.icon-yingyongbangding:before {
  1193 + content: "\e75d";
  1194 +}
  1195 +
  1196 +.icon-jiahao:before {
  1197 + content: "\e65e";
  1198 +}
  1199 +
  1200 +.icon-yingyongbangding1:before {
  1201 + content: "\e75e";
  1202 +}
  1203 +
  1204 +.icon-wenhao:before {
  1205 + content: "\e65f";
  1206 +}
  1207 +
  1208 +.icon-yingyongbangding2:before {
  1209 + content: "\e75f";
  1210 +}
  1211 +
  1212 +.icon-zhongyingwen:before {
  1213 + content: "\e660";
  1214 +}
  1215 +
  1216 +.icon-dapingzhanshi:before {
  1217 + content: "\e760";
  1218 +}
  1219 +
  1220 +.icon-kuangxuan:before {
  1221 + content: "\e661";
  1222 +}
  1223 +
  1224 +.icon-jiankong:before {
  1225 + content: "\e761";
  1226 +}
  1227 +
  1228 +.icon-cha1:before {
  1229 + content: "\e662";
  1230 +}
  1231 +
  1232 +.icon-touxiang:before {
  1233 + content: "\e762";
  1234 +}
  1235 +
  1236 +.icon-bofang01:before {
  1237 + content: "\e663";
  1238 +}
  1239 +
  1240 +.icon-lou:before {
  1241 + content: "\e763";
  1242 +}
  1243 +
  1244 +.icon-caidanzhankai:before {
  1245 + content: "\e664";
  1246 +}
  1247 +
  1248 +.icon-jiankong1:before {
  1249 + content: "\e764";
  1250 +}
  1251 +
  1252 +.icon-caidanshouqi:before {
  1253 + content: "\e665";
  1254 +}
  1255 +
  1256 +.icon-lou1:before {
  1257 + content: "\e765";
  1258 +}
  1259 +
  1260 +.icon-danxuan:before {
  1261 + content: "\e666";
  1262 +}
  1263 +
  1264 +.icon-dapingzhanshi1:before {
  1265 + content: "\e766";
  1266 +}
  1267 +
  1268 +.icon-fuxuankuangxuanzhong:before {
  1269 + content: "\e667";
  1270 +}
  1271 +
  1272 +.icon-touxiang1:before {
  1273 + content: "\e767";
  1274 +}
  1275 +
  1276 +.icon-fuxuankuang-true:before {
  1277 + content: "\e668";
  1278 +}
  1279 +
  1280 +.icon-shebei:before {
  1281 + content: "\e768";
  1282 +}
  1283 +
  1284 +.icon-jianhao:before {
  1285 + content: "\e669";
  1286 +}
  1287 +
  1288 +.icon-shebeii:before {
  1289 + content: "\e769";
  1290 +}
  1291 +
  1292 +.icon-shanchu1:before {
  1293 + content: "\e66a";
  1294 +}
  1295 +
  1296 +.icon-bianji11:before {
  1297 + content: "\e76a";
  1298 +}
  1299 +
  1300 +.icon-shijian:before {
  1301 + content: "\e66b";
  1302 +}
  1303 +
  1304 +.icon-jilu:before {
  1305 + content: "\e76b";
  1306 +}
  1307 +
  1308 +.icon-jiahao1:before {
  1309 + content: "\e66c";
  1310 +}
  1311 +
  1312 +.icon-yun:before {
  1313 + content: "\e76c";
  1314 +}
  1315 +
  1316 +.icon-sousuo:before {
  1317 + content: "\e66d";
  1318 +}
  1319 +
  1320 +.icon-baojing3:before {
  1321 + content: "\e76d";
  1322 +}
  1323 +
  1324 +.icon-zhongyingwen2zhongwen:before {
  1325 + content: "\e66e";
  1326 +}
  1327 +
  1328 +.icon-zhinengyangan:before {
  1329 + content: "\e76e";
  1330 +}
  1331 +
  1332 +.icon-xiala:before {
  1333 + content: "\e66f";
  1334 +}
  1335 +
  1336 +.icon-yongdiananquan:before {
  1337 + content: "\e76f";
  1338 +}
  1339 +
  1340 +.icon-xiala1:before {
  1341 + content: "\e670";
  1342 +}
  1343 +
  1344 +.icon-zhinengmensuo:before {
  1345 + content: "\e770";
  1346 +}
  1347 +
  1348 +.icon-xiazai01:before {
  1349 + content: "\e671";
  1350 +}
  1351 +
  1352 +.icon-xiaokongyujing:before {
  1353 + content: "\e771";
  1354 +}
  1355 +
  1356 +.icon-pingmufenge02:before {
  1357 + content: "\e672";
  1358 +}
  1359 +
  1360 +.icon-zhinengdianbiao:before {
  1361 + content: "\e772";
  1362 +}
  1363 +
  1364 +.icon-shezhi01:before {
  1365 + content: "\e673";
  1366 +}
  1367 +
  1368 +.icon-zhinengshuibiao:before {
  1369 + content: "\e773";
  1370 +}
  1371 +
  1372 +.icon-zuixiaohuaxi:before {
  1373 + content: "\e674";
  1374 +}
  1375 +
  1376 +.icon-shuiyajiance01:before {
  1377 + content: "\e774";
  1378 +}
  1379 +
  1380 +.icon-zuidahuaxi:before {
  1381 + content: "\e675";
  1382 +}
  1383 +
  1384 +.icon-zhinengzhaoming:before {
  1385 + content: "\e775";
  1386 +}
  1387 +
  1388 +.icon-huifuxi:before {
  1389 + content: "\e676";
  1390 +}
  1391 +
  1392 +.icon-zhinengmenjin:before {
  1393 + content: "\e776";
  1394 +}
  1395 +
  1396 +.icon-guanbixi:before {
  1397 + content: "\e677";
  1398 +}
  1399 +
  1400 +.icon-tingchechang:before {
  1401 + content: "\e777";
  1402 +}
  1403 +
  1404 +.icon-baocunJPG:before {
  1405 + content: "\e678";
  1406 +}
  1407 +
  1408 +.icon-xiala3:before {
  1409 + content: "\e778";
  1410 +}
  1411 +
  1412 +.icon-quxian:before {
  1413 + content: "\e679";
  1414 +}
  1415 +
  1416 +.icon-zhinengkongtiao:before {
  1417 + content: "\e779";
  1418 +}
  1419 +
  1420 +.icon-tingzhiyulan:before {
  1421 + content: "\e67a";
  1422 +}
  1423 +
  1424 +.icon-sousuo2:before {
  1425 + content: "\e77a";
  1426 +}
  1427 +
  1428 +.icon-wenduliuluzhi:before {
  1429 + content: "\e67b";
  1430 +}
  1431 +
  1432 +.icon-shang1:before {
  1433 + content: "\e77b";
  1434 +}
  1435 +
  1436 +.icon-shuaxin1:before {
  1437 + content: "\e67c";
  1438 +}
  1439 +
  1440 +.icon-1_jingdianchuwuweixuanzhong:before {
  1441 + content: "\e77c";
  1442 +}
  1443 +
  1444 +.icon-shangjiantou:before {
  1445 + content: "\e67d";
  1446 +}
  1447 +
  1448 +.icon-dianti:before {
  1449 + content: "\e77d";
  1450 +}
  1451 +
  1452 +.icon-shang:before {
  1453 + content: "\e67e";
  1454 +}
  1455 +
  1456 +.icon-zhuangtai:before {
  1457 + content: "\e77e";
  1458 +}
  1459 +
  1460 +.icon-zixun:before {
  1461 + content: "\e67f";
  1462 +}
  1463 +
  1464 +.icon-keshi:before {
  1465 + content: "\e77f";
  1466 +}
  1467 +
  1468 +.icon-youxiang01:before {
  1469 + content: "\e680";
  1470 +}
  1471 +
  1472 +.icon-chongzhijilu:before {
  1473 + content: "\e780";
  1474 +}
  1475 +
  1476 +.icon-QQ:before {
  1477 + content: "\e681";
  1478 +}
  1479 +
  1480 +.icon-jingshi:before {
  1481 + content: "\e781";
  1482 +}
  1483 +
  1484 +.icon-dianhua:before {
  1485 + content: "\e682";
  1486 +}
  1487 +
  1488 +.icon-bianji2:before {
  1489 + content: "\e782";
  1490 +}
  1491 +
  1492 +.icon-pingmufenge:before {
  1493 + content: "\e683";
  1494 +}
  1495 +
  1496 +.icon-fuzhi:before {
  1497 + content: "\e783";
  1498 +}
  1499 +
  1500 +.icon-gou:before {
  1501 + content: "\e684";
  1502 +}
  1503 +
  1504 +.icon-guanyu:before {
  1505 + content: "\e784";
  1506 +}
  1507 +
  1508 +.icon-dingdanxiangqing:before {
  1509 + content: "\e685";
  1510 +}
  1511 +
  1512 +.icon-shishiyulan-01:before {
  1513 + content: "\e785";
  1514 +}
  1515 +
  1516 +.icon-shiyonggaikuang:before {
  1517 + content: "\e686";
  1518 +}
  1519 +
  1520 +.icon-shujuchakan:before {
  1521 + content: "\e786";
  1522 +}
  1523 +
  1524 +.icon-fapiaoguanli:before {
  1525 + content: "\e687";
  1526 +}
  1527 +
  1528 +.icon-shanchu2:before {
  1529 + content: "\e787";
  1530 +}
  1531 +
  1532 +.icon-xiangqing:before {
  1533 + content: "\e688";
  1534 +}
  1535 +
  1536 +.icon-xitongpeizhi:before {
  1537 + content: "\e788";
  1538 +}
  1539 +
  1540 +.icon-baojingtuisongshezhi:before {
  1541 + content: "\e689";
  1542 +}
  1543 +
  1544 +.icon-tezhengwendu:before {
  1545 + content: "\e789";
  1546 +}
  1547 +
  1548 +.icon-zhifu:before {
  1549 + content: "\e68a";
  1550 +}
  1551 +
  1552 +.icon-quanzhenwendu:before {
  1553 + content: "\e78a";
  1554 +}
  1555 +
  1556 +.icon-zengzhifuwu:before {
  1557 + content: "\e68b";
  1558 +}
  1559 +
  1560 +.icon-fenxiang:before {
  1561 + content: "\e78b";
  1562 +}
  1563 +
  1564 +.icon-xufei:before {
  1565 + content: "\e68c";
  1566 +}
  1567 +
  1568 +.icon-fenxiang01:before {
  1569 + content: "\e78c";
  1570 +}
  1571 +
  1572 +.icon-asterisk1:before {
  1573 + content: "\e68d";
  1574 +}
  1575 +
  1576 +.icon-wenhao2:before {
  1577 + content: "\e78d";
  1578 +}
  1579 +
  1580 +.icon-window-maximize1:before {
  1581 + content: "\e68e";
  1582 +}
  1583 +
  1584 +.icon-dian:before {
  1585 + content: "\e78e";
  1586 +}
  1587 +
  1588 +.icon-crop1:before {
  1589 + content: "\e68f";
  1590 +}
  1591 +
  1592 +.icon-asterisk2:before {
  1593 + content: "\e690";
  1594 +}
  1595 +
  1596 +.icon-file-record1:before {
  1597 + content: "\e691";
  1598 +}
  1599 +
  1600 +.icon-ffc1:before {
  1601 + content: "\e692";
  1602 +}
  1603 +
  1604 +.icon-file-mp41:before {
  1605 + content: "\e693";
  1606 +}
  1607 +
  1608 +.icon-window-minimize1:before {
  1609 + content: "\e694";
  1610 +}
  1611 +
  1612 +.icon-ptz-downright1:before {
  1613 + content: "\e695";
  1614 +}
  1615 +
  1616 +.icon-video-stream1:before {
  1617 + content: "\e696";
  1618 +}
  1619 +
  1620 +.icon-file-jpg1:before {
  1621 + content: "\e697";
  1622 +}
  1623 +
  1624 +.icon-file-stream1:before {
  1625 + content: "\e698";
  1626 +}
  1627 +
  1628 +.icon-page-previous1:before {
  1629 + content: "\e699";
  1630 +}
  1631 +
  1632 +.icon-expander-down1:before {
  1633 + content: "\e69a";
  1634 +}
  1635 +
  1636 +.icon-ptz-left1:before {
  1637 + content: "\e69b";
  1638 +}
  1639 +
  1640 +.icon-yinpinwenjian1:before {
  1641 + content: "\e623";
  1642 +}
  1643 +
  1644 +.icon-yinpinwenjian2:before {
  1645 + content: "\e626";
  1646 +}
  1647 +
  1648 +.icon-xiazaiyinpinwenjian:before {
  1649 + content: "\e605";
  1650 +}
  1651 +
  1652 +.icon-yinpinwenjian:before {
  1653 + content: "\e641";
  1654 +}
  1655 +
web_src/static/css/iconfont.woff2 0 → 100644
No preview for this file type
web_src/static/css/login.css deleted 100755 → 0
1 -  
2 -  
3 -  
4 -  
5 -/*//////////////////////////////////////////////////////////////////  
6 -[ FONT ]*/  
7 -  
8 -@font-face {  
9 - font-family: Poppins-Regular;  
10 - src: url('../fonts/poppins/Poppins-Regular.ttf');  
11 -}  
12 -  
13 -@font-face {  
14 - font-family: Poppins-Medium;  
15 - src: url('../fonts/poppins/Poppins-Medium.ttf');  
16 -}  
17 -  
18 -@font-face {  
19 - font-family: Poppins-Bold;  
20 - src: url('../fonts/poppins/Poppins-Bold.ttf');  
21 -}  
22 -  
23 -@font-face {  
24 - font-family: Poppins-SemiBold;  
25 - src: url('../fonts/poppins/Poppins-SemiBold.ttf');  
26 -}  
27 -  
28 -.limiter {  
29 - width: 100%;  
30 - margin: 0 auto;  
31 - font-family: Poppins-Regular, sans-serif;  
32 -  
33 -}  
34 -  
35 -.container-login100 {  
36 - width: 100%;  
37 - min-height: 100vh;  
38 - display: -webkit-box;  
39 - display: -webkit-flex;  
40 - display: -moz-box;  
41 - display: -ms-flexbox;  
42 - display: flex;  
43 - flex-wrap: wrap;  
44 - justify-content: center;  
45 - align-items: center;  
46 - background: #f2f2f2;  
47 -}  
48 -  
49 -.wrap-login100 {  
50 - background: #fff;  
51 - border-radius: 10px;  
52 - overflow: hidden;  
53 - padding: 77px 55px 33px 55px;  
54 -  
55 - box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);  
56 - -moz-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);  
57 - -webkit-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);  
58 - -o-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);  
59 - -ms-box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.1);  
60 -}  
61 -  
62 -  
63 -/*------------------------------------------------------------------  
64 -[ Form ]*/  
65 -  
66 -.login100-form {  
67 - width: 100%;  
68 -}  
69 -  
70 -.login100-form-title {  
71 - display: block;  
72 - font-family: Poppins-Bold;  
73 - font-size: 30px;  
74 - color: #333333;  
75 - line-height: 1.2;  
76 - text-align: center;  
77 -  
78 -}  
79 -.login100-form-title i {  
80 - font-size: 60px;  
81 -}  
82 -  
83 -/*------------------------------------------------------------------  
84 -[ Input ]*/  
85 -  
86 -.wrap-input100 {  
87 - width: 100%;  
88 - position: relative;  
89 - border-bottom: 2px solid #adadad;  
90 - margin-bottom: 37px;  
91 -}  
92 -  
93 -.input100 {  
94 - font-family: Poppins-Regular;  
95 - font-size: 15px;  
96 - color: #555555;  
97 - line-height: 1.2;  
98 -  
99 - display: block;  
100 - width: 100%;  
101 - height: 45px;  
102 - background: transparent;  
103 - padding: 0 5px;  
104 - outline: none;  
105 - border: none;  
106 -}  
107 -.input100::-webkit-input-placeholder { color: #adadad;}  
108 -.input100:-moz-placeholder { color: #adadad;}  
109 -.input100::-moz-placeholder { color: #adadad;}  
110 -.input100:-ms-input-placeholder { color: #adadad;}  
111 -  
112 -/*---------------------------------------------*/  
113 -.focus-input100 {  
114 - position: absolute;  
115 - display: block;  
116 - width: 100%;  
117 - height: 100%;  
118 - top: 0;  
119 - left: 0;  
120 - pointer-events: none;  
121 - color:transparent;  
122 -}  
123 -  
124 -.focus-input100::before {  
125 - content: "";  
126 - display: block;  
127 - position: absolute;  
128 - bottom: -2px;  
129 - left: 0;  
130 - width: 0;  
131 - height: 2px;  
132 -  
133 - -webkit-transition: all 0.4s;  
134 - -o-transition: all 0.4s;  
135 - -moz-transition: all 0.4s;  
136 - transition: all 0.4s;  
137 -  
138 - background: #6a7dfe;  
139 - background: -webkit-linear-gradient(left, #21d4fd, #b721ff);  
140 - background: -o-linear-gradient(left, #21d4fd, #b721ff);  
141 - background: -moz-linear-gradient(left, #21d4fd, #b721ff);  
142 - background: linear-gradient(left, #21d4fd, #b721ff);  
143 -}  
144 -  
145 -.focus-input100::after {  
146 - font-family: Poppins-Regular;  
147 - font-size: 15px;  
148 - color: #999999;  
149 - line-height: 1.2;  
150 -  
151 - content: attr(data-placeholder);  
152 - display: block;  
153 - width: 100%;  
154 - position: absolute;  
155 - top: 16px;  
156 - left: 0px;  
157 - padding-left: 5px;  
158 -  
159 - -webkit-transition: all 0.4s;  
160 - -o-transition: all 0.4s;  
161 - -moz-transition: all 0.4s;  
162 - transition: all 0.4s;  
163 -}  
164 -  
165 -.input100:focus + .focus-input100::after {  
166 - top: -15px;  
167 -}  
168 -  
169 -.input100:focus + .focus-input100::before {  
170 - width: 100%;  
171 -}  
172 -  
173 -.has-val.input100 + .focus-input100::after {  
174 - top: -15px;  
175 -}  
176 -  
177 -.has-val.input100 + .focus-input100::before {  
178 - width: 100%;  
179 -}  
180 -  
181 -/*---------------------------------------------*/  
182 -.btn-show-pass {  
183 - font-size: 15px;  
184 - color: #999999;  
185 -  
186 - display: -webkit-box;  
187 - display: -webkit-flex;  
188 - display: -moz-box;  
189 - display: -ms-flexbox;  
190 - display: flex;  
191 - align-items: center;  
192 - position: absolute;  
193 - height: 100%;  
194 - top: 0;  
195 - right: 0;  
196 - padding-right: 5px;  
197 - cursor: pointer;  
198 - -webkit-transition: all 0.4s;  
199 - -o-transition: all 0.4s;  
200 - -moz-transition: all 0.4s;  
201 - transition: all 0.4s;  
202 -}  
203 -  
204 -.btn-show-pass:hover {  
205 - color: #6a7dfe;  
206 - color: -webkit-linear-gradient(left, #21d4fd, #b721ff);  
207 - color: -o-linear-gradient(left, #21d4fd, #b721ff);  
208 - color: -moz-linear-gradient(left, #21d4fd, #b721ff);  
209 - color: linear-gradient(left, #21d4fd, #b721ff);  
210 -}  
211 -  
212 -.btn-show-pass.active {  
213 - color: #6a7dfe;  
214 - color: -webkit-linear-gradient(left, #21d4fd, #b721ff);  
215 - color: -o-linear-gradient(left, #21d4fd, #b721ff);  
216 - color: -moz-linear-gradient(left, #21d4fd, #b721ff);  
217 - color: linear-gradient(left, #21d4fd, #b721ff);  
218 -}  
219 -  
220 -  
221 -  
222 -/*------------------------------------------------------------------  
223 -[ Button ]*/  
224 -.container-login100-form-btn {  
225 - display: -webkit-box;  
226 - display: -webkit-flex;  
227 - display: -moz-box;  
228 - display: -ms-flexbox;  
229 - display: flex;  
230 - flex-wrap: wrap;  
231 - justify-content: center;  
232 - padding-top: 13px;  
233 -}  
234 -  
235 -.wrap-login100-form-btn {  
236 - width: 100%;  
237 - display: block;  
238 - position: relative;  
239 - z-index: 1;  
240 - border-radius: 25px;  
241 - overflow: hidden;  
242 - margin: 0 auto;  
243 -}  
244 -  
245 -.login100-form-bgbtn {  
246 - position: absolute;  
247 - z-index: -1;  
248 - width: 300%;  
249 - height: 100%;  
250 - background: #a64bf4;  
251 - background: -webkit-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);  
252 - background: -o-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);  
253 - background: -moz-linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);  
254 - background: linear-gradient(right, #21d4fd, #b721ff, #21d4fd, #b721ff);  
255 - top: 0;  
256 - left: -100%;  
257 -  
258 - -webkit-transition: all 0.4s;  
259 - -o-transition: all 0.4s;  
260 - -moz-transition: all 0.4s;  
261 - transition: all 0.4s;  
262 -}  
263 -  
264 -.login100-form-btn {  
265 - font-family: Poppins-Medium;  
266 - font-size: 15px;  
267 - color: #fff;  
268 - line-height: 1.2;  
269 - text-transform: uppercase;  
270 -  
271 - display: -webkit-box;  
272 - display: -webkit-flex;  
273 - display: -moz-box;  
274 - display: -ms-flexbox;  
275 - display: flex;  
276 - justify-content: center;  
277 - align-items: center;  
278 - padding: 0 20px;  
279 - width: 100%;  
280 - height: 50px;  
281 - outline: none !important;  
282 - border: none;  
283 - background: transparent;  
284 -}  
285 -  
286 -.login100-form-btn:hover {  
287 - cursor: pointer;  
288 -}  
289 -  
290 -.wrap-login100-form-btn:hover .login100-form-bgbtn {  
291 - left: 0;  
292 -}  
293 -  
294 -  
295 -/*------------------------------------------------------------------  
296 -[ Responsive ]*/  
297 -  
298 -@media (max-width: 576px) {  
299 - .wrap-login100 {  
300 - padding: 77px 15px 33px 15px;  
301 - }  
302 -}  
303 -  
304 -  
305 -  
306 -/*------------------------------------------------------------------  
307 -[ Alert validate ]*/  
308 -  
309 -.validate-input {  
310 - position: relative;  
311 -}  
312 -  
313 -.alert-validate::before {  
314 - content: attr(data-validate);  
315 - position: absolute;  
316 - max-width: 70%;  
317 - background-color: #fff;  
318 - border: 1px solid #c80000;  
319 - border-radius: 2px;  
320 - padding: 4px 25px 4px 10px;  
321 - top: 50%;  
322 - -webkit-transform: translateY(-50%);  
323 - -moz-transform: translateY(-50%);  
324 - -ms-transform: translateY(-50%);  
325 - -o-transform: translateY(-50%);  
326 - transform: translateY(-50%);  
327 - right: 0px;  
328 - pointer-events: none;  
329 -  
330 - font-family: Poppins-Regular;  
331 - color: #c80000;  
332 - font-size: 13px;  
333 - line-height: 1.4;  
334 - text-align: left;  
335 -  
336 - visibility: hidden;  
337 - opacity: 0;  
338 -  
339 - -webkit-transition: opacity 0.4s;  
340 - -o-transition: opacity 0.4s;  
341 - -moz-transition: opacity 0.4s;  
342 - transition: opacity 0.4s;  
343 -}  
344 -  
345 -.alert-validate::after {  
346 - content: "\f06a";  
347 - font-family: FontAwesome;  
348 - font-size: 16px;  
349 - color: #c80000;  
350 -  
351 - display: block;  
352 - position: absolute;  
353 - background-color: #fff;  
354 - top: 50%;  
355 - -webkit-transform: translateY(-50%);  
356 - -moz-transform: translateY(-50%);  
357 - -ms-transform: translateY(-50%);  
358 - -o-transform: translateY(-50%);  
359 - transform: translateY(-50%);  
360 - right: 5px;  
361 -}  
362 -  
363 -.alert-validate:hover:before {  
364 - visibility: visible;  
365 - opacity: 1;  
366 -}  
367 -  
368 -@media (max-width: 992px) {  
369 - .alert-validate::before {  
370 - visibility: visible;  
371 - opacity: 1;  
372 - }  
373 -}  
374 -  
375 -/** util **/  
376 -.p-b-26 {padding-bottom: 26px;}  
377 -.p-b-48 {padding-bottom: 48px;}  
378 -.p-t-115 {padding-top: 115px;}  
379 -  
380 -/**font**/  
381 -/* .zmdi {  
382 - display: inline-block;  
383 - font: normal normal normal 14px/1 'Material-Design-Iconic-Font';  
384 - font-size: 14px;  
385 - font-size: inherit;  
386 - text-rendering: auto;  
387 - -webkit-font-smoothing: antialiased;  
388 - -moz-osx-font-smoothing: grayscale;  
389 -}  
390 -.zmdi-font::before {  
391 - content: '\f16a';  
392 -}  
393 -.login100-form-title i {  
394 - font-size: 60px;  
395 -} */  
396 -  
web_src/static/js/jessibuca/ff.js 0 → 100644
  1 +var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}var _scriptDir=typeof document!=="undefined"&&document.currentScript?document.currentScript.src:undefined;if(ENVIRONMENT_IS_WORKER){_scriptDir=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var str="";while(!(idx>=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function UTF16ToString(ptr,maxBytesToRead){var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker");runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error("Pthread aborting at "+(new Error).stack);what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var wasmBinaryFile="ff.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["da"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){removeRunDependency("wasm-instantiate")}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiatedSource(output){receiveInstance(output["instance"],output["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={155132:function(){throw"Canceled!"},155395:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};function _emscripten_futex_wake(addr,count){if(addr<=0||addr>HEAP8.length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(HEAP32,__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(HEAP32,__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(HEAP32,addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module["_emscripten_futex_wake"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in killThread!";HEAP32[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in cancelThread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in cleanupThread!";HEAP32[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){},initRuntime:function(){var tb=_malloc(228);for(var i=0;i<228/4;++i)HEAPU32[tb/4+i]=0;HEAP32[tb+12>>2]=tb;var headPtr=tb+152;HEAP32[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)HEAPU32[tlsMemory/4+i]=0;Atomics.store(HEAPU32,tb+100>>2,tlsMemory);Atomics.store(HEAPU32,tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(HEAPU32,tb+4>>2,exitCode);Atomics.store(HEAPU32,tb+0>>2,1);Atomics.store(HEAPU32,tb+56>>2,1);Atomics.store(HEAPU32,tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"exit"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(HEAPU32,tb+4>>2,-1);Atomics.store(HEAPU32,tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({"cmd":"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i<PThread.unusedWorkers.length;++i){var worker=PThread.unusedWorkers[i];worker.terminate()}PThread.unusedWorkers=[];for(var i=0;i<PThread.runningWorkers.length;++i){var worker=PThread.runningWorkers[i];var pthread=worker.pthread;PThread.freeThreadData(pthread);worker.terminate()}PThread.runningWorkers=[]},freeThreadData:function(pthread){if(!pthread)return;if(pthread.threadInfoStruct){var tlsMemory=HEAP32[pthread.threadInfoStruct+100>>2];HEAP32[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){HEAP32[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{HEAP32[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e["data"];var cmd=d["cmd"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d["transferList"])}else{console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processQueuedMainThreadWork"){_emscripten_main_thread_process_queued_calls()}else if(cmd==="spawnThread"){spawnThread(e.data)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(HEAPU32,worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd==="exitProcess"){try{exit(d["returnCode"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd==="cancelDone"){PThread.returnWorkerToPool(worker)}else if(cmd==="objectTransfer"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target==="setimmediate"){worker.postMessage(e.data)}else{err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)};worker.postMessage({"cmd":"load","urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("ff.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()<t){}}};function establishStackSpace(stackTop,stackMax){_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function getNoExitRuntime(){return noExitRuntime}Module["getNoExitRuntime"]=getNoExitRuntime;function invokeEntryPoint(ptr,arg){return wasmTable.get(ptr)(arg)}Module["invokeEntryPoint"]=invokeEntryPoint;function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var _emscripten_get_now;if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=function(){return performance.now()-Module["__performance_now_clock_drift"]}}else _emscripten_get_now=function(){return performance.now()};function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,path,flags,varargs);SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;dependentTypes.forEach(function(dt,i){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(function(){typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options){options=options||{};if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(function(cb){cb()})}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&&registeredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.indexOf("j")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i<arguments.length;i++){argCache[i]=arguments[i]}return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.indexOf("j")!=-1){return getDynCaller(signature,rawFunction)}return wasmTable.get(rawFunction)}var fp=makeDynCaller();if(typeof fp!=="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i<count;i++){array.push(HEAP32[(firstElement>>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);var args=[rawConstructor];var destructors=[];whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}destructors.length=0;args.length=argCount;for(var i=1;i<argCount;++i){args[i]=argTypes[i]["toWireType"](destructors,arguments[i-1])}var ptr=invoker.apply(null,args);runDestructors(destructors);return argTypes[0]["fromWireType"](ptr)};return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){needsDestructorStack=true;break}}var returns=argTypes[0].name!=="void";var argsList="";var argsListWired="";for(var i=0;i<argCount-2;++i){argsList+=(i!==0?", ":"")+"arg"+i;argsListWired+=(i!==0?", ":"")+"arg"+i+"Wired"}var invokerFnBody="return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n"+"if (arguments.length !== "+(argCount-2)+") {\n"+"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount-2)+" args!');\n"+"}\n";if(needsDestructorStack){invokerFnBody+="var destructors = [];\n"}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["throwBindingError","invoker","fn","runDestructors","retType","classParam"];var args2=[throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,argTypes[0],argTypes[1]];if(isClassMethodFunc){invokerFnBody+="var thisWired = classParam.toWireType("+dtorStack+", this);\n"}for(var i=0;i<argCount-2;++i){invokerFnBody+="var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";args1.push("argType"+i);args2.push(argTypes[i+2])}if(isClassMethodFunc){argsListWired="thisWired"+(argsListWired.length>0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?"thisWired":"arg"+(i-2)+"Wired";if(argTypes[i].destructorFunction!==null){invokerFnBody+=paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";args1.push(paramName+"_dtor");args2.push(argTypes[i].destructorFunction)}}}if(returns){invokerFnBody+="var ret = retType.fromWireType(rv);\n"+"return ret;\n"}else{}invokerFnBody+="}\n";args1.push(invokerFnBody);var invokerFunction=new_(Function,args1).apply(null,args2);return invokerFunction}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}function validateThis(this_,classType,humanName){if(!(this_ instanceof Object)){throwBindingError(humanName+' with invalid "this": '+this_)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name)}if(!this_.$$.ptr){throwBindingError("cannot call emscripten binding method "+humanName+" on deleted object")}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}function __embind_register_class_property(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],function(classType){classType=classType[0];var humanName=classType.name+"."+fieldName;var desc={get:function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])}}else{desc.set=function(v){throwBindingError(humanName+" is a read-only property")}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){++count}}return count}function get_first_emval(){for(var i=5;i<emval_handle_array.length;++i){if(emval_handle_array[i]!==undefined){return emval_handle_array[i]}}return null}function init_emval(){Module["count_emval_handles"]=count_emval_handles;Module["get_first_emval"]=get_first_emval}function __emval_register(value){switch(value){case undefined:{return 1}case null:{return 2}case true:{return 3}case false:{return 4}default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<<bitshift>>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(value<minRange||value>maxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[value+4+i])}str=a.join("")}_free(value);return str},"toWireType":function(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var getLength;var valueIsOfTypeString=typeof value==="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){getLength=function(){return lengthBytesUTF8(value)}}else{getLength=function(){return value.length}}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i<length;++i){HEAPU8[ptr+4+i]=value[i]}}}if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=function(){return HEAPU16};shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=function(){return HEAPU32};shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({"cmd":"processQueuedMainThreadWork"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processThreadQueue"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({"cmd":"processThreadQueue"})}return 1}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(HEAP32[(argTypes>>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i<argCount-1;++i){argsList+=(i!==0?", ":"")+"arg"+i;params.push("argType"+i);args.push(types[1+i])}var functionName=makeLegalFunctionName("methodCaller_"+signatureName);var functionBody="return function "+functionName+"(handle, name, destructors, args) {\n";var offset=0;for(var i=0;i<argCount-1;++i){functionBody+=" var arg"+i+" = argType"+i+".readValueFromPointer(args"+(offset?"+"+offset:"")+");\n";offset+=types[i+1]["argPackAdvance"]}functionBody+=" var rv = handle[name]("+argsList+");\n";for(var i=0;i<argCount-1;++i){if(types[i+1]["deleteObject"]){functionBody+=" argType"+i+".deleteObject(arg"+i+");\n"}}if(!retType.isVoid){functionBody+=" return retType.toWireType(destructors, rv);\n"}functionBody+="};\n";params.push(functionBody);var invokerFunction=new_(Function,params).apply(null,args);return __emval_addMethodCaller(invokerFunction)}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v)}function _abort(){abort()}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_check_blocking_allowed(){if(ENVIRONMENT_IS_WORKER)return;warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>HEAP8.length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(HEAP32,addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{if(Atomics.load(HEAP32,addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(HEAP32,__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(HEAP32,__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(HEAP32,__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(HEAP32,addr>>2)!=val){return-6}lastAddr=Atomics.exchange(HEAP32,__emscripten_main_thread_futex>>2,addr)}return 0}}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function formatString(format,varargs){var textIndex=format;var argIndex=varargs;function prepVararg(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){ptr+=4}}else{}return ptr}function getNextArg(type){var ret;argIndex=prepVararg(argIndex,type);if(type==="double"){ret=HEAPF64[argIndex>>3];argIndex+=8}else if(type=="i64"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{type="i32";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg("i"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i<argText.length;i++){buffer.push((15-parseInt(argText[i],16)).toString(16))}argText=buffer.join("");while(argText.length<argSize*2)argText="f"+argText}else{argText=currAbsArg.toString(16)}if(next==88){prefix=prefix.toUpperCase();argText=argText.toUpperCase()}}else if(next==112){if(currAbsArg===0){argText="(nil)"}else{prefix="0x";argText=currAbsArg.toString(16)}}if(precisionSet){while(argText.length<precision){argText="0"+argText}}if(currArg>=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.length<width){if(flagLeftAlign){argText+=" "}else{if(flagZeroPad){argText="0"+argText}else{prefix=" "+prefix}}}argText=prefix+argText;argText.split("").forEach(function(chr){ret.push(chr.charCodeAt(0))});break}case"f":case"F":case"e":case"E":case"g":case"G":{currArg=getNextArg("double");var argText;if(isNaN(currArg)){argText="nan";flagZeroPad=false}else if(!isFinite(currArg)){argText=(currArg<0?"-":"")+"inf";flagZeroPad=false}else{var isGeneral=false;var effectivePrecision=Math.min(precision,20);if(next==103||next==71){isGeneral=true;precision=precision||1;var exponent=parseInt(currArg.toExponential(effectivePrecision).split("e")[1],10);if(precision>exponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length<width){if(flagLeftAlign){argText+=" "}else{if(flagZeroPad&&(argText[0]=="-"||argText[0]=="+")){argText=argText[0]+"0"+argText.slice(1)}else{argText=(flagZeroPad?"0":" ")+argText}}}if(next<97)argText=argText.toUpperCase();argText.split("").forEach(function(chr){ret.push(chr.charCodeAt(0))});break}case"s":{var arg=getNextArg("i8*");var argLength=arg?_strlen(arg):"(null)".length;if(precisionSet)argLength=Math.min(argLength,precision);if(!flagLeftAlign){while(argLength<width--){ret.push(32)}}if(arg){for(var i=0;i<argLength;i++){ret.push(HEAPU8[arg++>>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength<width--){ret.push(32)}}break}case"c":{if(flagLeftAlign)ret.push(getNextArg("i8"));while(--width>0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break}case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break}case"%":{ret.push(curr);break}default:{for(var i=startTextIndex;i<textIndex+2;i++){ret.push(HEAP8[i>>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,"",""]}var funstr=args.callee.toString();var funcname=args.callee.name;var str="(";var first=true;for(var i in args){var a=args[i];if(!first){str+=", "}first=false;if(typeof a==="number"||typeof a==="string"){str+=a}else{str+="("+typeof a+")"}}str+=")";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str="";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf("_emscripten_log");var iThisFunc2=callstack.lastIndexOf("_emscripten_get_callstack");var iNextLine=callstack.indexOf("\n",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce("EM_LOG_DEMANGLE is deprecated; ignoring")}if(flags&8&&typeof emscripten_source_map==="undefined"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].indexOf("_emscripten_")>=0)stack_args=traverseStack(stack_args[0])}var lines=callstack.split("\n");callstack="";var newFirefoxRe=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)");var firefoxRe=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?");var chromeRe=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var l in lines){var line=lines[l];var symbolName="";var file="";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+"\n";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\/g,"/").lastIndexOf("/")+1)}callstack+=" at "+symbolName+" ("+orig.source+":"+orig.line+":"+orig.column+")\n"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\/g,"/").lastIndexOf("/")+1)}callstack+=(haveSourceMap?" = "+symbolName:" at "+symbolName)+" ("+file+":"+lineno+":"+column+")\n"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\s+$/,"");callstack+=" with values: "+stack_args[1]+stack_args[2]+"\n"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\s+$/,"");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\s+$/,"");str+=(str.length>0?"\n":"")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i<numCallArgs;i++){var arg=arguments[2+i];HEAPF64[b+i]=arg}var ret=_emscripten_run_in_main_runtime_thread_js(index,serializedNumCallArgs,args,sync);stackRestore(stack);return ret}var _emscripten_receive_on_main_thread_js_callArgs=[];var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i<numCallArgs;i++){_emscripten_receive_on_main_thread_js_callArgs[i]=HEAPF64[b+i]}var isEmAsmConst=index<0;var func=!isEmAsmConst?proxiedFunctionTable[index]:ASM_CONSTS[-index-1];return func.apply(null,_emscripten_receive_on_main_thread_js_callArgs)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},queueEventHandlerOnThread_iiii:function(targetThread,eventHandlerFunc,eventTypeId,eventData,userData){var stackTop=stackSave();var varargs=stackAlloc(12);HEAP32[varargs>>2]=eventTypeId;HEAP32[varargs+4>>2]=eventData;HEAP32[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}HEAP32[varargs>>2]=targetCanvasPtr;HEAP32[varargs+4>>2]=width;HEAP32[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){HEAP32[canvas.canvasSharedPtr>>2]=width;HEAP32[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=HEAP32[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);HEAP32[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _emscripten_webgl_do_create_context(target,attributes){var a=attributes>>2;var powerPreference=HEAP32[a+(24>>2)];var contextAttributes={"alpha":!!HEAP32[a+(0>>2)],"depth":!!HEAP32[a+(4>>2)],"stencil":!!HEAP32[a+(8>>2)],"antialias":!!HEAP32[a+(12>>2)],"premultipliedAlpha":!!HEAP32[a+(16>>2)],"preserveDrawingBuffer":!!HEAP32[a+(20>>2)],"powerPreference":__emscripten_webgl_power_preferences[powerPreference],"failIfMajorPerformanceCaveat":!!HEAP32[a+(28>>2)],majorVersion:HEAP32[a+(32>>2)],minorVersion:HEAP32[a+(36>>2)],enableExtensionsByDefault:HEAP32[a+(40>>2)],explicitSwapControl:HEAP32[a+(44>>2)],proxyContextToMainThread:HEAP32[a+(48>>2)],renderViaOffscreenBackBuffer:HEAP32[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,__environ,environ_buf);try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,penviron_count,penviron_buf_size);try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_fdstat_get(fd,pbuf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,fd,pbuf);try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,fd,offset_low,offset_high,whence,newOffset);try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(10,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _tzset(){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1);if(_tzset.called)return;_tzset.called=true;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[__get_timezone()>>2]=stdTimezoneOffset*60;HEAP32[__get_daylight()>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset<winterOffset){HEAP32[__get_tzname()>>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){HEAP32[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(HEAPU32,tis+(64>>2),threadParams.detached);Atomics.store(HEAPU32,tis+(100>>2),tlsMemory);Atomics.store(HEAPU32,tis+(40>>2),pthread.threadInfoStruct);Atomics.store(HEAPU32,tis+(80>>2),threadParams.stackSize);Atomics.store(HEAPU32,tis+(76>>2),stackHigh);Atomics.store(HEAPU32,tis+(104>>2),threadParams.stackSize);Atomics.store(HEAPU32,tis+(104+8>>2),stackHigh);Atomics.store(HEAPU32,tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(HEAPU32,tis+(172>>2),global_locale);worker.pthread=pthread;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"threadInfoStruct":threadParams.pthread_ptr,"stackBase":threadParams.stackBase,"stackSize":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer==="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}if(!pthread_ptr){err("pthread_create called with a null thread pointer!");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=HEAP32[attr>>2];stackSize+=81920;stackBase=HEAP32[attr+8>>2];detached=HEAP32[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)HEAPU32[(threadInfoStruct>>2)+i]=0;HEAP32[pthread_ptr>>2]=threadInfoStruct;HEAP32[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;HEAP32[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function __pthread_testcancel_js(){if(!ENVIRONMENT_IS_PTHREAD)return;var tb=_pthread_self();if(!tb)return;var cancelDisabled=Atomics.load(HEAPU32,tb+56>>2);if(cancelDisabled)return;var canceled=Atomics.load(HEAPU32,tb+0>>2);if(canceled==2)throw"Canceled!"}function __emscripten_do_pthread_join(thread,status,block){if(!thread){err("pthread_join attempted on a null thread pointer!");return ERRNO_CODES.ESRCH}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self()==thread){err("PThread "+thread+" is attempting to join to itself!");return ERRNO_CODES.EDEADLK}else if(!ENVIRONMENT_IS_PTHREAD&&_emscripten_main_browser_thread_id()==thread){err("Main thread "+thread+" is attempting to join to itself!");return ERRNO_CODES.EDEADLK}var self=HEAP32[thread+12>>2];if(self!==thread){err("pthread_join attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!");return ERRNO_CODES.ESRCH}var detached=Atomics.load(HEAPU32,thread+64>>2);if(detached){err("Attempted to join thread "+thread+", which was already detached!");return ERRNO_CODES.EINVAL}if(block){_emscripten_check_blocking_allowed()}for(;;){var threadStatus=Atomics.load(HEAPU32,thread+0>>2);if(threadStatus==1){var threadExitCode=Atomics.load(HEAPU32,thread+4>>2);if(status)HEAP32[status>>2]=threadExitCode;Atomics.store(HEAPU32,thread+64>>2,1);if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread});return 0}if(!block){return ERRNO_CODES.EBUSY}__pthread_testcancel_js();if(!ENVIRONMENT_IS_PTHREAD)_emscripten_main_thread_process_queued_calls();_emscripten_futex_wait(thread+0,threadStatus,ENVIRONMENT_IS_PTHREAD?100:1)}}function _pthread_join(thread,status){return __emscripten_do_pthread_join(thread,status,true)}function _setTempRet0($i){setTempRet0($i|0)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=HEAPU8.length;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var GLctx;var proxiedFunctionTable=[null,___sys_fcntl64,___sys_open,_emscripten_set_canvas_element_size_main_thread,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_write,_tzset,_sysconf];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"e":___assert_fail,"Q":___sys_fcntl64,"P":___sys_open,"V":__embind_register_bool,"y":__embind_register_class,"q":__embind_register_class_constructor,"m":__embind_register_class_function,"$":__embind_register_class_property,"U":__embind_register_emval,"w":__embind_register_float,"d":__embind_register_integer,"c":__embind_register_memory_view,"x":__embind_register_std_string,"o":__embind_register_std_wstring,"W":__embind_register_void,"I":__emscripten_notify_thread_queue,"J":__emval_as,"i":__emval_call_void_method,"z":__emval_decref,"h":__emval_get_method_caller,"_":__emval_incref,"C":__emval_run_destructors,"R":__emval_take_value,"b":_abort,"Y":_clock,"s":_emscripten_asm_const_int,"M":_emscripten_check_blocking_allowed,"t":_emscripten_conditional_set_current_thread_status,"g":_emscripten_futex_wait,"f":_emscripten_futex_wake,"k":_emscripten_get_now,"j":_emscripten_log,"D":_emscripten_memcpy_big,"F":_emscripten_receive_on_main_thread_js,"E":_emscripten_resize_heap,"G":_emscripten_set_canvas_element_size,"r":_emscripten_set_current_thread_status,"H":_emscripten_webgl_create_context,"N":_environ_get,"O":_environ_sizes_get,"v":_fd_close,"S":_fd_fdstat_get,"T":_fd_read,"A":_fd_seek,"u":_fd_write,"X":_gettimeofday,"B":initPthreadsJS,"a":wasmMemory,"K":_pthread_cleanup_pop,"L":_pthread_cleanup_push,"l":_pthread_create,"p":_pthread_join,"n":_setTempRet0,"Z":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["aa"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ba"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ca"]).apply(null,arguments)};var _strlen=Module["_strlen"]=function(){return(_strlen=Module["_strlen"]=Module["asm"]["ea"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["fa"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ga"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["ha"]).apply(null,arguments)};var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=function(){return(_emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=Module["asm"]["ia"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["ja"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["ka"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["la"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["ma"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module["_emscripten_main_browser_thread_id"]=function(){return(_emscripten_main_browser_thread_id=Module["_emscripten_main_browser_thread_id"]=Module["asm"]["na"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module["___pthread_tsd_run_dtors"]=function(){return(___pthread_tsd_run_dtors=Module["___pthread_tsd_run_dtors"]=Module["asm"]["oa"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=function(){return(_emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=Module["asm"]["pa"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module["_emscripten_current_thread_process_queued_calls"]=function(){return(_emscripten_current_thread_process_queued_calls=Module["_emscripten_current_thread_process_queued_calls"]=Module["asm"]["qa"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module["_emscripten_register_main_browser_thread_id"]=function(){return(_emscripten_register_main_browser_thread_id=Module["_emscripten_register_main_browser_thread_id"]=Module["asm"]["ra"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module["__emscripten_do_dispatch_to_thread"]=function(){return(__emscripten_do_dispatch_to_thread=Module["__emscripten_do_dispatch_to_thread"]=Module["asm"]["sa"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module["_emscripten_sync_run_in_main_thread_4"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module["_emscripten_sync_run_in_main_thread_4"]=Module["asm"]["ta"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["ua"]).apply(null,arguments)};var __emscripten_call_on_thread=Module["__emscripten_call_on_thread"]=function(){return(__emscripten_call_on_thread=Module["__emscripten_call_on_thread"]=Module["asm"]["va"]).apply(null,arguments)};var _emscripten_tls_init=Module["_emscripten_tls_init"]=function(){return(_emscripten_tls_init=Module["_emscripten_tls_init"]=Module["asm"]["wa"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["xa"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ya"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["za"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Aa"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["Ba"]).apply(null,arguments)};var _memalign=Module["_memalign"]=function(){return(_memalign=Module["_memalign"]=Module["asm"]["Ca"]).apply(null,arguments)};var dynCall_ijiii=Module["dynCall_ijiii"]=function(){return(dynCall_ijiii=Module["dynCall_ijiii"]=Module["asm"]["Da"]).apply(null,arguments)};var dynCall_viiijj=Module["dynCall_viiijj"]=function(){return(dynCall_viiijj=Module["dynCall_viiijj"]=Module["asm"]["Ea"]).apply(null,arguments)};var dynCall_jij=Module["dynCall_jij"]=function(){return(dynCall_jij=Module["dynCall_jij"]=Module["asm"]["Fa"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["Ga"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ha"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=77706;var __emscripten_allow_main_runtime_queued_calls=Module["__emscripten_allow_main_runtime_queued_calls"]=241152;var __emscripten_main_thread_futex=Module["__emscripten_main_thread_futex"]=1178e3;Module["PThread"]=PThread;Module["PThread"]=PThread;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"exitProcess","returnCode":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();module.exports=Module;
web_src/static/js/jessibuca/ff.wasm 0 → 100755
No preview for this file type
web_src/static/js/jessibuca/ff.worker.js 0 → 100644
  1 +var initializedJS=false;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}moduleLoaded()}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);if(!initializedJS){Module["___embind_register_native_and_builtin_types"]();initializedJS=true}try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};