Added web app minifiy support
Ylian Saint-Hilaire committed
Aug 23, 2018 at 16:55 UTC
1e7a39c6312ece002d1e7d0c87b0ae31b61e2a46
14 files changed
+1314
-37820
meshcentral.js
+1
-1
@@ -79,7 +79,7 @@ function CreateMeshCentralServer(config, args) {
79
try { require('./pass').hash('test', function () { }); } catch (e) { console.log('Old version of node, must upgrade.'); return; } // TODO: Not sure if this test works or not.
80
81
// Check for invalid arguments
82
- var validArguments = ['_', 'notls', 'user', 'port', 'aliasport', 'mpsport', 'mpsaliasport', 'redirport', 'cert', 'mpscert', 'deletedomain', 'deletedefaultdomain', 'showall', 'showusers', 'shownodes', 'showmeshes', 'showevents', 'showpower', 'clearpower', 'showiplocations', 'help', 'exactports', 'install', 'uninstall', 'start', 'stop', 'restart', 'debug', 'filespath', 'datapath', 'noagentupdate', 'launch', 'noserverbackup', 'mongodb', 'mongodbcol', 'wanonly', 'lanonly', 'nousers', 'mpsdebug', 'mpspass', 'ciralocalfqdn', 'dbexport', 'dbimport', 'selfupdate', 'tlsoffload', 'userallowedip', 'fastcert', 'swarmport', 'swarmdebug', 'logintoken', 'logintokenkey', 'logintokengen', 'logintokengen', 'mailtokengen', 'admin', 'unadmin', 'sessionkey', 'sessiontime'];
82
+ var validArguments = ['_', 'notls', 'user', 'port', 'aliasport', 'mpsport', 'mpsaliasport', 'redirport', 'cert', 'mpscert', 'deletedomain', 'deletedefaultdomain', 'showall', 'showusers', 'shownodes', 'showmeshes', 'showevents', 'showpower', 'clearpower', 'showiplocations', 'help', 'exactports', 'install', 'uninstall', 'start', 'stop', 'restart', 'debug', 'filespath', 'datapath', 'noagentupdate', 'launch', 'noserverbackup', 'mongodb', 'mongodbcol', 'wanonly', 'lanonly', 'nousers', 'mpsdebug', 'mpspass', 'ciralocalfqdn', 'dbexport', 'dbimport', 'selfupdate', 'tlsoffload', 'userallowedip', 'fastcert', 'swarmport', 'swarmdebug', 'logintoken', 'logintokenkey', 'logintokengen', 'logintokengen', 'mailtokengen', 'admin', 'unadmin', 'sessionkey', 'sessiontime', 'minify'];
83
for (var arg in obj.args) { obj.args[arg.toLocaleLowerCase()] = obj.args[arg]; if (validArguments.indexOf(arg.toLocaleLowerCase()) == -1) { console.log('Invalid argument "' + arg + '", use --help.'); return; } }
84
if (obj.args.mongodb == true) { console.log('Must specify: --mongodb [connectionstring] \r\nSee https://docs.mongodb.com/manual/reference/connection-string/ for MongoDB connection string.'); return; }
85
for (var i in obj.config.settings) { obj.args[i] = obj.config.settings[i]; } // Place all settings into arguments, arguments have already been placed into settings so arguments take precedence.
package.json
+1
-1
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.1.9-n",
3
+ "version": "0.1.9-p",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",
public/commander.htm
+1109
-37752
@@ -1,37752 +1,1109 @@
1
-<!DOCTYPE html>
2
-<html style="height:100%">
3
-<head>
4
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
- <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
6
- <meta name="format-detection" content="telephone=no">
7
- <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo="> <!-- Stop favicon.ico from loading -->
8
- <style>body {
9
- height: 100%;
10
- max-height: 100%;
11
- overflow: hidden;
12
- font-family: arial, helvetica, sans-serif;
13
- font-size: 9pt;
14
- color: black;
15
- background: white;
16
- margin-top: 0;
17
- margin-left: 0;
18
- margin-right: 0;
19
- -webkit-touch-callout: none;
20
- -webkit-user-select: none;
21
- -khtml-user-select: none;
22
- -moz-user-select: none;
23
- -ms-user-select: none;
24
- user-select: none;
25
-}
26
-
27
-li {
28
- margin: 0;
29
- padding: 0;
30
-}
31
-
32
-label {
33
- display: block;
34
- color: windowtext;
35
- background-color: window;
36
- margin: 0;
37
- padding: 0;
38
- width: 100%;
39
-}
40
-
41
- label:hover {
42
- background-color: highlight;
43
- color: highlighttext;
44
- }
45
-
46
-a:visited {
47
- text-decoration: none;
48
- color: #04f;
49
-}
50
-
51
-a:link {
52
- text-decoration: none;
53
- color: #04f;
54
-}
55
-
56
-a:hover {
57
- color: #a32;
58
-}
59
-
60
-h1 {
61
- font-size: 11pt;
62
- font-weight: bold;
63
- color: black;
64
- margin-left: 5px;
65
- margin-top: 10px;
66
- margin-bottom: 6px;
67
-}
68
-
69
-h2 {
70
- font-size: 9pt;
71
- font-weight: bold;
72
- color: black;
73
- margin-left: 6px;
74
- margin-top: 6px;
75
- margin-bottom: 0;
76
-}
77
-
78
-p {
79
- margin-left: 6px;
80
- margin-top: 4px;
81
- margin-bottom: 0;
82
- margin-right: 2px;
83
-}
84
-
85
-td {
86
- font-size: 9pt;
87
-}
88
-
89
-th {
90
- font-size: 9pt;
91
-}
92
-
93
- th:hover {
94
- cursor: pointer;
95
- background: #aaa;
96
- }
97
-
98
-.header {
99
- position: fixed;
100
- top: 0;
101
- left: 0;
102
- right: 0;
103
- height: 24px;
104
- background: #c0c0c0;
105
-}
106
-
107
-.progressbar {
108
- position: fixed;
109
- top: 24px;
110
- left: 0;
111
- right: 0;
112
- height: 2px;
113
- background: #ff9e30;
114
-}
115
-
116
-.in {
117
- margin-left: 40px;
118
-}
119
-
120
-.log {
121
- background: #bbbab5;
122
-}
123
-
124
-.log1 {
125
- background: #bbbab5;
126
-}
127
-
128
-.log tbody tr:nth-child(odd) {
129
- background: #e8eefe;
130
-}
131
-
132
-.fullcell {
133
- position: fixed;
134
- top: 26px;
135
- right: 0;
136
- bottom: 0;
137
- left: 0px;
138
- overflow: hidden;
139
-}
140
-
141
-.maincell {
142
- position: fixed;
143
- top: 26px;
144
- right: 0;
145
- bottom: 0;
146
- left: 156px;
147
- overflow: auto;
148
- padding-left: 2px;
149
- vertical-align: top;
150
-}
151
-
152
-.navbar {
153
- position: fixed;
154
- top: 26px;
155
- left: 0;
156
- bottom: 0;
157
- width: 156px;
158
- border-right: 2px solid #ff9e30;
159
- vertical-align: top;
160
- background: #72726f;
161
- background: linear-gradient(45deg, #72726f 0%,#a6a5a0 100%);
162
-}
163
-
164
-.nav1 {
165
- padding: 1px 0px 1px 8px;
166
- margin: 0px;
167
- font-weight: bold;
168
- color: black;
169
- white-space: nowrap;
170
- cursor: pointer;
171
-}
172
-
173
-.nav2 {
174
- margin-left: 32px;
175
- margin-top: 0;
176
- color: black;
177
- cursor: pointer;
178
-}
179
-
180
-.r {
181
- font-size: 11pt;
182
-}
183
-
184
-.r0 {
185
- background: white;
186
-}
187
-
188
-.r1 {
189
- border-bottom: 1px solid gray;
190
- text-align: left;
191
-}
192
-
193
-.r2 {
194
- text-align: left;
195
-}
196
-
197
-.r3 {
198
- border-bottom: 1px solid gray;
199
- text-align: left;
200
-}
201
-
202
- .r3:hover {
203
- background-color: #83827b;
204
- cursor: pointer;
205
- }
206
-
207
-.spread {
208
- height: 100%;
209
- width: 100%;
210
- background-color: white;
211
-}
212
-
213
-.timer {
214
- border: 1px solid #abcae1;
215
- background-color: #abcae1;
216
-}
217
-
218
-.tm {
219
- font-size: 7pt;
220
-}
221
-
222
-.top1 {
223
- font-size: 14pt;
224
- font-weight: bold;
225
- color: white;
226
- margin-top: 11px;
227
-}
228
-
229
-.top2 {
230
- color: white;
231
-}
232
-
233
-.warn {
234
- font-weight: bold;
235
- color: #c00000;
236
-}
237
-
238
-.icon1 {
239
- width: 14px;
240
- height: 15px;
241
- background-repeat: no-repeat;
242
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAMISURBVHjadJPPb9t0GMY//rbJaEKSxoPFQQ1WxhQ7RaGoIDEpTBMqgk7iBvwNKJdJXDnssEMl7pMGfwOH9YBYh0AglYiBBNKa0cSGNpiRxs7aJE2aH7aTmkPXqTvwXt7L8z56pef5SEEQcHYMwyjWarX3rLr1tu3YOQAlpZhqVv1J1/VvNU0rn9VLpwbtdlspb5ZLNdNcuZBKF1NKmuS8DECn28axm7ScZlnP5b4vXinelmXZfmrQbreVjbsbN3r9YSmTLbA/Ps92K8FgFAbAdYcsLXRRk10af/9BPBa5vXpt9aYsy7YAKG+WS73+sJS+eJmKneZe5QWEiHHreoJb1xNEInHu/Bzw3cM45zNv0usPS+XNcglAGIZRrJnmSiZbYOtRhF93ZvHcHoPRlN3GkL4Ho5HHeOxRqbv8sHVM+uVFaqa5YhhGUVpfXw+6hwP86DJ3fgkzK44hOGZuLkH7KIQIxuw9dkk812Hqu0wmPh9djZIKG8wnogirbpFS0jy0YOqPcMcurjvh3Vc7fPHpHF9//iLLyja75p/sNWxazj73t9qklDRW3ULYjk1yXmb3Xw/P9fA9n35/AMD0yAIgGQ8zOtxnMhFM/ClG/YjkvIzt2Mye5un5Lr4HY9el5RwA2tOsY9FzCCFBICCYOdlPRigphU63jZKEwWDAweMDJt7kmXINBhOkIEAQQiLMpczzJzcpBaFmVRy7iZ4RdA/7TKcBknTymOd5APT6PiAhghlmpHO8ocdw7CZqVkXour7Ycppriwsuy7koEgKQANDy+dPCIokQkhTiciFG4aJPy2mu6bq+OKtpWlXPmZWGtc2H77yOhOD+gxE7//T45sdHzEjQ7Y0IgmPeKszxwdUwTuM39Fyuomla9bTKyY27Gx/3+sMvlYU8lXqI36sef+1UkCS4pMZZyuu89oqL09gmHot8snpt9StZljtnYUqWN8vv10yzcCGV/ux/YFrTc7lK8UrxnizLnWdoPINzvlarLVl1K2879ktPcN5Ts2pV1/UHmqZVz+r/GwBWYYCoNUz0KwAAAABJRU5ErkJggg==");
243
-}
244
-
245
-.icon2 {
246
- width: 14px;
247
- height: 15px;
248
- background-repeat: no-repeat;
249
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAIuSURBVHjalJNBTBNBFIb/2S4tlliFdLBNW0mktibaeivBm9eejFeDZw81kROXHj2SyIEDB65wI3iBI5iYmEjSREtIpI1tQdOm20KBdkuX3ZnnYUVq2Cb6kklm3vxv3vdm3oCI4DTazZ3p3HpM5NZjot3cmR6kY0QEJ9vdnNJcaoMP3xyB3vI2EunP4046xcl5WttK99olHn4URSA2AaNT5qe1rbST1pFgd3NKU93H/P6TJADg8GthIMU1gqODtZlep8QjiegfXzBuUxwdrM1cy9Z/IVIYSn4jpe1vx8jsviAABIBM/Tl9/5Sg/EZKk8JQ+mP+ImiUVjJGp8xDDycB2b1KIgSC0RCMTpk3SisZxxKkpXvqhaXs7aAfnhtukBBXKmFCHVLgj4yjXljKSkv3XDugXlyeM/QKDz24CxIWSJhXBKYJMk2MT3AYeoXXi8tzl3sqAFgXLV+zvJrxhzkUqwdxQQARZl+FbbqeXY7CGHjEj2Z5NcMnXy6o7tEzRkT4mX/7Tisuvok/joBJC5ACl8/LmAIov0EVBZIYvn35gUD89UI4mZ1lRrca2N9+lh8bPeG3RgCyTEBKgAi+1CEAoJ27B6gqGGMAY2idCbRORhvxp++TanVvviaMQ/g8XshzAxACIIn+/pLGOWAqYIoLAODzuKB1K7y6N19j+Y0U3fG3MCw6IMsCyM4Oxvob1l4ze84YQ5u8OD7jUNWhMXz4uI//tx4Syfjg3/iv9msAKbs79bi84QcAAAAASUVORK5CYII=");
250
-}
251
-
252
-.icon3 {
253
- width: 14px;
254
- height: 15px;
255
- background-repeat: no-repeat;
256
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAANGSURBVHjadJNNTBwFAIW//UFWfrbsgDuzBTvu0s6OWhHwYMhCOEAbSESC4dpL07TFg9GkxIRDjT3YhEBNPUjC0SbaJjVNQyJQaxtDpzYmlDYUOjuUrhspO0N0gQVWl/0ZD5ZmPfiSd3t5l/c+h23bFCsajR7Rdf1GPBbHtEwAJFFCDsqoqno0HA7/WJx37BUkk8k6bUYb0g2jxy8G6kQpgK9KAGB9I4llJlizEiuqokxE2iJfCIKw8qIgmUzWTU1OfZXaSve9KQep3tzA9fQJhfhvZHd3yfl85OUg26F6os9W8FaWXevq7vpIEIQVJ4A2ow2lttJ9LTU1hH64Tt1qHHv8a0rnH/LS4iPsK9/iixnUXr1Ck3cfqa10nzajDQG4o9HoEd0wet493Ij/zm18n3yMJxQivbND7Px58thUD3xI+egoBcMgd+FLlO73mTUWe5Ro9Jqrs7Nz2eUu9YbSacriT8lms5Q3NlLR3s6uaVJQFISRC1SUuFm9dInJ6WlCfpGMFPBub6eOueOxOMobb+H4+Ta/f3cZz927FPJ5hOPHqRkZgT/+xFniIjY6yveDg0gOB9l6BbHpBMbiPE7TMvFVCWSXl3DU7secnWXu9GniFy+ymctRIfhYHxvj6pkzBG2bA0Du8SN8VQKmZeLc2zOXybA2P8+mbeNpbydTWUmJ203etvGIInV+PxVA9t/pXvzALYkS6xtJqoRq/rJtqoNB/KdO8Up/P+atWxSA8t5e3vN6mT55kgOrq5TUH2J9I4kkSjjloIxlJiiEDiK2tREYHkbq7yd57x6XOzr4paMD59IS+7q7+WB8nPtuNyVN72CZCeSgjFNV1dY1K6H9fbiBDWk/uwsL5G7e5JuWFhTgVUBrbmZX11memyMgv0a64W3WrISmqmqrw7ZtJq5PfP4sYZ0Nl5ayPjJM4fECKdtGAF5+bt3pxBt+HWXwU37NZKgNiOd6ens+27uyNDU5dTa1lR44JAXwPHiA/fA++ScGTsB1UMHV1MxOQyOGmcBbWTbW1d11ThAEsxgmSZvRBnTD6PCLgcj/wKSpivJTpC0yJgiC+R8ai3CO6Lp+NB6Lt5qWqTzH2ZCD8h1VVW+Ew2GtOP/PAFZGexs+cGPjAAAAAElFTkSuQmCC");
257
-}
258
-
259
-.itemBar {
260
- padding: 7px;
261
- min-height: 20px;
262
- margin-top: 4px;
263
- margin-right: 8px;
264
- width: auto;
265
- border-radius: 8px;
266
- background-color: #7e7d74;
267
- cursor: pointer;
268
-}
269
-
270
-.computeritem {
271
- cursor: pointer;
272
- width: auto;
273
- border-radius: 5px;
274
- background-color: #a6a5a0;
275
- height: 28px;
276
- margin: 4px;
277
- padding: 2px;
278
-}
279
-
280
- .computeritem:hover {
281
- background-color: #83827b;
282
- }
283
-
284
-.us {
285
- -webkit-touch-callout: initial;
286
- -webkit-user-select: auto;
287
- -khtml-user-select: text;
288
- -moz-user-select: text;
289
- -ms-user-select: text;
290
- user-select: text;
291
-}
292
-</style>
293
-
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-</head>
303
-<body onunload="cleanup()">
304
- <div id="id_topheader" class="header">
305
- <table id="id_KVMTable" cellpadding="0" cellspacing="0" style="width: 100%; padding: 0px; padding: 0px; margin-top: 0px">
306
- <tr>
307
- <td id="id_normalScreenToolbar" class="style6">
308
- <div>
309
- <input type="button" class="connectbutton" id="xconnectbutton1" value="Connect" onclick="connectButtonfunction(event, false)" onkeypress="return false" onkeydown="return false">
310
- <span id="constatus"></span>
311
- </div>
312
- </td>
313
- </tr>
314
- </table>
315
- <div class="progressbar">
316
- <div id="id_progressbar" style="height:2px;width:0%;background-color:red"></div>
317
- </div>
318
- </div>
319
- <div id="id_messageview" class="fullcell" style="text-align:center;padding-top:100px;font-size:20px">
320
- <span id="id_messageviewstr">Disconnected</span>
321
- </div>
322
- <div id="id_mainview" style="height:100%;display:none">
323
- <div id="id_leftbar" class="navbar">
324
- <br>
325
- <p id="go1" class="nav1" onclick="go(1)"><a>System Status</a></p>
326
- <p id="go2" class="nav1" onclick="go(2)"><a>Hardware Information</a></p>
327
- <p id="go6" class="nav1" onclick="go(6)"><a>Event Log</a></p>
328
- <p id="go15" class="nav1" onclick="go(15)"><a>Audit Log</a></p>
329
- <p id="go21" class="nav1" onclick="go(21)"><a>Storage</a></p>
330
- <p id="go8" class="nav1" onclick="go(8)"><a>Network Settings</a></p>
331
- <p id="go17" class="nav1" onclick="go(17)"><a>Internet Settings</a></p>
332
- <p id="go16" class="nav1" onclick="go(16)"><a>Security Settings</a></p>
333
- <p id="go19" class="nav1" onclick="go(19)"><a>Agent Presence</a></p>
334
- <p id="go18" class="nav1" onclick="go(18)"><a>System Defense</a></p>
335
- <p id="go11" class="nav1" onclick="go(11)"><a>User Accounts</a></p>
336
- <p id="go22" class="nav1" onclick="go(22)"><a>Subscriptions</a></p>
337
- <p id="go23" class="nav1" onclick="go(23)"><a>Wake Alarms</a></p>
338
- <p id="go20" class="nav1" onclick="go(20)"><a>Script Editor</a></p>
339
- <p id="go12" class="nav1" onclick="go(12)"><a>WSMAN Browser</a></p>
340
- <div id="storagelinks" style="margin-top:4px"></div>
341
- </div>
342
- <div id="id_mainarea" class="maincell">
343
- <div id="id_scriptstatus" style="height:21px;background:#8fac8d;padding:5px;margin-bottom:1px;display:none;overflow:hidden">
344
- <div style="float:right"><input type="button" value="Stop Script" onclick="script_Stop()"></div>
345
- <div style="font-size:16px;padding-top:2px;overflow:hidden"> <b>Running Script</b><span style="overflow:hidden" id="id_scriptstatusstr"></span></div>
346
- </div>
347
- <div id="id_versionWarning" style="height:21px;background:#8fac8d;padding:5px;margin-bottom:1px;display:none">
348
- <div style="font-size:16px;float:right;cursor:pointer;padding-right:5px;padding-left:5px;padding-top:2px" onclick="QV('id_versionWarning', false)"><b>X</b></div>
349
- <div style="font-size:14px;padding-top:2px"> <b>This computer's firmware should be updated, <a style="cursor:pointer" onclick="require('nw.gui').Shell.openExternal('https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&languageid=en-fr')"><u>please check here</u></a>.</b></div>
350
- </div>
351
- <div id="id_mainarea_frame" style="width:100%;height:100%">
352
- <iframe id="id_StorageIFrame" style="width:100%;height:100%;border:0"></iframe>
353
- </div>
354
- <div id="id_mainarea_pad" style="padding:8px;overflow-x:hidden">
355
- <div id="p0">
356
- <h1>Loading...</h1>
357
- </div>
358
- <div id="p1" style="display:none">
359
- <h1>System Status</h1>
360
- <span id="id_TableSysStatus"></span>
361
- </div>
362
- <div id="p2" style="display:none">
363
- <h1 style="margin-bottom:16px">Hardware Information</h1>
364
- <span id="id_TableSysInfo"></span>
365
- </div>
366
- <div id="p6" style="display:none">
367
- <h1>Event Log</h1>
368
- <span id="id_TableEventLog"></span>
369
- <span id="id_TableEventLog2"></span>
370
- </div>
371
- <div id="p8" style="display:none">
372
- <h1>Network Settings</h1>
373
- <span id="id_TableNetworkSettingsSpan"></span>
374
- <span id="id_TableWifi2"></span>
375
- </div>
376
- <div id="p11" style="display:none">
377
- <h1>User Accounts</h1>
378
- <span id="id_TableUserAccounts"></span>
379
- </div>
380
- <div id="p12" style="display:none">
381
- <h1>WSMAN Browser</h1>
382
- <div>
383
- <table class="log1" cellpadding="0" cellspacing="0" style='width:100%;border-radius:8px'>
384
- <tr>
385
- <td>
386
- <div style="padding:4px">
387
- <select id="id_QuerySelect" multiple="multiple" style="width:100%;height:120px"></select>
388
- </div>
389
- </td>
390
- </tr>
391
- <tr>
392
- <td>
393
- <input id="id_p12querybutton" type="button" value="Query" style='margin: 4px' onclick="wsmanQuery()">
394
- <input type="button" value="Clear" style='margin: 4px' onclick="QH('id_wsresults', '')">
395
- <input id="idx_browserFilter" placeholder="Filter" style='margin: 4px' onkeyup="wsmanFilter()">
396
- </td>
397
- </tr>
398
- </table>
399
- </div>
400
- <br>
401
- <div class="us" id="id_wsresults"></div>
402
- </div>
403
- <div id="p15" style="display:none">
404
- <span id="id_TableAuditLog1"></span>
405
- <h1>Audit Log</h1>
406
- <span id="id_TableAuditLog2"></span>
407
- </div>
408
- <div id="p16" style="display:none">
409
- <h1>Security Settings</h1>
410
- <span id="id_TableCerts"></span>
411
- </div>
412
- <div id="p17" style="display:none">
413
- <h1>Internet Settings</h1>
414
- <span id="id_TableRemoteAccess"></span>
415
- </div>
416
- <div id="p18" style="display:none">
417
- <h1>System Defense</h1>
418
- <span id="id_TableSystemDefense"></span>
419
- </div>
420
- <div id="p19" style="display:none">
421
- <h1>Agent Presence</h1>
422
- <span id="id_TableSystemAgentPresence"></span>
423
- </div>
424
- <div id="p20" style="display:none">
425
- <h1>Script Editor</h1>
426
- <div class="log1" style="padding:5px;border-radius:5px">
427
- <div id='EditScriptStatus' style="float:right;font-weight:bold;padding:5px">Stopped</div>
428
- <div>
429
- <input type="button" value="View Editor" title="Switch to script line editor view" id="viewEditorButton" onclick="scriptViewButton(0)">
430
- <input type="button" value="View Builder" title="Switch to block editor view" id="viewBuilderButton" onclick="scriptViewButton(1)">
431
- <input type="button" value="New..." title="Clear the script editor" onclick="script_newScriptDlg()">
432
- <input type="button" value="Load..." title="Load a script from file" onclick="script_runScriptDlg()">
433
- <input type="button" value="Save..." title="Save a script to file" onclick="script_saveScript(event)">
434
- <input type="button" value="Restart" title="Compile the script and get ready to run it from the start" onclick="resetScriptButton()">
435
- <input type="button" value="Continue" title="Run the script from the current execution point" onclick="runScriptButton()">
436
- <input type="button" value="Break" title="Pause the execution of the script" onclick="breakScriptButton()">
437
- <input type="button" value="Step" title="Execute one step of the script" onclick="stepScriptButton()">
438
- </div>
439
- </div>
440
- <div id="scriptbuilder" style="display:none">
441
- <h2>Script Builder</h2>
442
- <div style="padding:0;margin:0">
443
- <div style="width:250px;height:400px;float:left;padding:0;margin:0;padding-right:3px">
444
- <input id="blockfilter" style="width:inherit;height:24px;padding:0;margin:0;border:1px solid gray;margin-bottom:1px" placeholder="Filter blocks..." onkeyup="script_fonfilterchanged()">
445
- <div id="blocks" style="width:inherit;height:373px;border:1px solid gray;overflow-y:scroll;padding:0;margin:0"></div>
446
- </div>
447
- <div id="scriptblocks" style="width:auto;height:400px;padding:0;margin:0;border:1px solid gray;overflow-y:scroll" ondrop="script_fondrop(event, this)" onclick="script_fonclick(event)"></div>
448
- </div>
449
- </div>
450
- <div id="scripteditor">
451
- <h2>Script</h2>
452
- <textarea id="scriptarea" style="width:100%;height:176px;resize:vertical;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif" spellcheck="false"></textarea>
453
- <div style="display:none">
454
- <br><h2>Compiled Script</h2>
455
- <textarea id="compiledarea" style="width:100%;height:16px;resize:vertical;margin:0;padding:0" spellcheck="false"></textarea>
456
- <br>
457
- </div>
458
- <h2>Variables</h2>
459
- <div id="variables" style="width:100%;height:200px;resize:vertical;border:1px solid gray;overflow:scroll;margin:0;padding:0;user-select:text;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text"></div>
460
- </div>
461
- <h2>Console</h2>
462
- <textarea id="console" style="width:100%;height:80px;resize:vertical;margin:0;padding:0;user-select:text;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text" readonly=""></textarea>
463
- </div>
464
- <div id="p21" style="display:none">
465
- <h1>Storage</h1>
466
- <span id="id_TableSystemStorage"></span>
467
- </div>
468
- <div id="p22" style="display:none">
469
- <h1>Event Subscriptions</h1>
470
- <span id="id_TableEventSubscriptions"></span>
471
- </div>
472
- <div id="p23" style="display:none">
473
- <h1>Wake Alarms</h1>
474
- <span id="id_TableAlarm"></span>
475
- </div>
476
- </div>
477
- </div>
478
- </div>
479
- <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial, Helvetica, sans-serif;border-radius:5px;position:fixed;overflow:auto;top:75px;width:400px;max-height:550px;display:none">
480
- <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0">
481
- <div id='id_dialogclose' style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div>
482
- <div id='id_dialogtitle' style="padding:5px"></div>
483
- <div style="width:100%;margin:6px"></div>
484
- </div>
485
- <div style="margin-right:16px;margin-left:8px">
486
- <div id="dialog1" style="margin:auto;text-align:center;margin:3px">
487
- <div id="id_dialogMessage" style="padding:10px"></div>
488
- </div>
489
- <div id="dialog2" style="margin:auto;margin:3px">
490
- <br>
491
- <div style='height:26px'><input id="d2username" style="float:right;width:200px" onkeyup="updateAccountDialog()"><div>Username</div></div>
492
- <div style='height:26px'><input id="d2password1" type="password" autocomplete="off" style="float:right;width:200px" onkeyup="updateAccountDialog()"><div>Password*</div></div>
493
- <div style='height:26px'><input id="d2password2" type="password" autocomplete="off" style="float:right;width:200px" onkeyup="updateAccountDialog()"><div>Confirm Password</div></div>
494
- <div id="id_d2permissions">
495
- <div style='height:26px'><select id="d2permission" style="float:right;width:200px"><option value="0">Local<option value="1">Network<option value="2">Any</select><div>Permission</div></div>
496
- <div>Granted Permissions</div>
497
- <ul id="id_d2realms" style="list-style-type:none;height:100px;overflow:auto;width:100%;border: 1px solid #000;background-color:white;overflow-x:hidden;margin:0;padding:0"></ul>
498
- </div>
499
- <div style="font-size:10px"><br>*Minimum 8 characters with upper, lowercase, 0-9, and one of !@#$%^&*()+-</div>
500
- </div>
501
- <div id="dialog5" style="margin:auto;margin:3px">
502
- <br>
503
- <div style='height:26px'>
504
- <select id="d5actionSelect" style="float:right;width:200px"></select>
505
- <div>Power Action</div>
506
- </div>
507
- <div>
508
- <span style="color:red">Warning:</span> Some power actions may result in data loss and may disconnect the desktop, terminal or disk redirection sessions.
509
- </div>
510
- </div>
511
- <div id="dialog6" style="margin:auto;margin:3px">
512
- <br>
513
- <div style='height:26px'><input id="d6ConsentText" style="float:right;width:200px" maxlength="6" onkeyup="consentChanged()" onkeypress="return numbersOnly(event)"><div>Consent Code</div></div>
514
- <div style='height:26px'><select id="d6Display" onchange="changeConsentDisplay()" style="float:right;width:200px"><option value="0">Primary display<option value="1">Secondary display<option id="d6ThirdDisplay" value="2" style="display:none">Third display</select><div>Consent Display</div></div>
515
- </div>
516
- <div id="dialog8" style="display:table;margin:3px">
517
- <div style="margin:3px 0 3px 0;padding-top:5px">
518
- <input id="idx_d8username" value="admin" style="float:right;width:220px">
519
- <div style="height:20px">Username</div>
520
- </div>
521
- <div style="margin:3px 0 3px 0">
522
- <input id="idx_d8password" type="password" autocomplete="off" style="float:right;width:220px">
523
- <div style="height:20px">Password</div>
524
- </div>
525
- </div>
526
- <div id="dialog9" style="margin:auto;margin:3px">
527
- <input type="checkbox" id='idx_d9redir'>Redirection Port<br>
528
- <div id="idx_d9kvm_div"><input type="checkbox" id='idx_d9kvm'>KVM Remote Desktop<br></div>
529
- <input type="checkbox" id='idx_d9ider'>IDE-Redirection<br>
530
- <input type="checkbox" id='idx_d9sol'>Serial-over-LAN<br>
531
- </div>
532
- <div id="dialog10" style="margin:auto;margin:3px">
533
- <input type="radio" name="d10" id='idx_d10none' value="0">Not Required<br>
534
- <input type="radio" name="d10" id='idx_d10kvm' value="1">Required for KVM only<br>
535
- <input type="radio" name="d10" id='idx_d10all' value="4294967295">Always Required<br>
536
- </div>
537
- <div id="dialog11" style="margin:auto;margin:3px">
538
- <div id="id_dialogOptions"></div>
539
- </div>
540
- <div id="dialog12" style="margin:auto;margin:3px">
541
- <br>
542
- <div style='height:26px'><input id="idx_d12name" style="float:right;width:200px" maxlength="32" onkeyup="updateWifiDialog()" title="Maximum 32 characters"><div title="Maximum 32 characters">Profile Name</div></div>
543
- <div style='height:26px'><input id="idx_d12ssid" style="float:right;width:200px" maxlength="32" onkeyup="updateWifiDialog()" title="Maximum 32 characters"><div title="Maximum 32 characters">SSID</div></div>
544
- <div style='height:26px'>
545
- <select id="idx_d12pri" style="float:right;width:200px" onclick="updateWifiDialog()"></select>
546
- <div>Priority</div>
547
- </div>
548
- <div style='height:26px'>
549
- <select id="idx_d12auth" style="float:right;width:200px" onclick="updateWifiDialog()">
550
- <!--<option value="7">WPA2 IEEE 802.1x</option>-->
551
- <option value="6">WPA2 PSK
552
- <!--<option value="5">WPA IEEE 802.1x</option>-->
553
- <option value="4">WPA PSK
554
- <!--<option value="3">Shared Key</option>-->
555
- <!--<option value="2">Open</option>-->
556
- </select>
557
- <div>Authentication</div>
558
- </div>
559
- <div style='height:26px'>
560
- <select id="idx_d12enc" style="float:right;width:200px" onclick="updateWifiDialog()">
561
- <option id="id_d12e4" value="4">CCMP-AES
562
- <option id="id_d12e3" value="3">TKIP-RC4
563
- <option id="id_d12e2" value="2">WEP
564
- <option id="id_d12e5" value="5">None
565
- </select>
566
- <div>Encryption</div>
567
- </div>
568
- <div style='height:26px'><input id="idx_d12password1" type="password" style="float:right;width:200px" maxlength="63" onkeyup="updateWifiDialog()" title="Length between 8 and 63 characters"><div title="Length between 8 and 63 characters">Password*</div></div>
569
- <div style='height:26px'><input id="idx_d12password2" type="password" style="float:right;width:200px" maxlength="63" onkeyup="updateWifiDialog()" title="Length between 8 and 63 characters"><div title="Length between 8 and 63 characters">Confirm Password</div></div>
570
- </div>
571
- <div id="dialog19" style="margin:auto;margin:3px">
572
- This will save the entire state of Intel® AMT for this machine into file. Passwords will not be saved, but some sensitive data may be included.<br><br>
573
- <input id="idx_d19savestatefilename" style="width:100%" value="amtstate.json">
574
- </div>
575
- <div id="dialog20" style="margin:auto;margin:3px">
576
- <input type="radio" name="d20" id="d20a" value="0">Disabled<br>
577
- <input type="radio" name="d20" id="d20b" value="1">ICMP response<br>
578
- <input type="radio" name="d20" id="d20c" value="2">RMCP response<br>
579
- <input type="radio" name="d20" id="d20d" value="3">ICMP & RMCP response<br><br>
580
- </div>
581
- <div id="dialog21" style="margin:auto;margin:3px">
582
- <input type="radio" name="d21" id="d21o0" onclick="updateIPSetupDlg()"><span id="d21l0"></span><br>
583
- <input type="radio" name="d21" id="d21o1" onclick="updateIPSetupDlg()"><span id="d21l1"></span><br>
584
- <div id="id_d21manualdiv">
585
- <input type="radio" name="d21" id='d21o2' onclick="updateIPSetupDlg()"><span id="d21l2"></span><br><br>
586
- <div style="margin-left:20px">
587
- <div style="height:26px"><input id="idx_d21address" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>IP address</div></div>
588
- <div style="height:26px" id="id_d21subnetdiv"><input id="idx_d21subnet" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Subnet mark</div></div>
589
- <div style="height:26px"><input id="idx_d21gateway" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Gateway</div></div>
590
- <div style="height:26px"><input id="idx_d21dns1" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Primary DNS</div></div>
591
- <div style="height:26px"><input id="idx_d21dns2" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Alternate DNS</div></div>
592
- </div>
593
- </div>
594
- </div>
595
- <div id="dialog23" style="margin:auto;margin:3px">
596
- <br>
597
- <div style='height:26px'>
598
- <select id="idx_d23ddns" style="float:right;width:200px" onchange="showEditDnsDlgChange()">
599
- <option value="0">Disabled
600
- <option value="1">Disabled, DHCP update
601
- <option value="2">Enabled
602
- </select>
603
- <div>Dynamic DNS client</div>
604
- </div>
605
- <div style='height:26px'><input id="idx_d23interval" style="float:right;width:200px"><div>Update Interval (minutes)</div></div>
606
- <div style='height:26px'><input id="idx_d23ttl" style="float:right;width:200px"><div>TTL (seconds)</div></div>
607
- <div style="font-size:10px"><br>Defaut Interval is 1440 minutes, Default TTL is 900 seconds.</div>
608
- </div>
609
- <div id="dialog24" style="margin:auto;margin:3px">
610
- <br>
611
- <div style="height:26px">
612
- <select id="idx_d24Command" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
613
- <option value="2">Power up
614
- <option value="5">Power cycle
615
- <option value="8">Power down
616
- <option value="10">Reset
617
- <option value="999">Set boot options
618
- </select>
619
- <div>Remote Command</div>
620
- </div>
621
- <div style="height:80px">
622
- <div id="idx_d24bootoptions" style="float:right;border:1px solid #666;width:200px;height:72px;overflow-y:scroll;background-color:white">
623
- <div id="d24dBiosPause"><input type="checkbox" id="d24BiosPause" onchange="showAdvPowerDlgChange()">BIOS Pause<br></div>
624
- <div id="d24dBiosSetup"><input type="checkbox" id="d24BiosSetup" onchange="showAdvPowerDlgChange()">BIOS Setup<br></div>
625
- <div id="d24dConfigurationDataReset"><input type="checkbox" id="d24ConfigurationDataReset" onchange="showAdvPowerDlgChange()">Configuration data reset<br></div>
626
- <div id="d24dForceProgressEvents"><input type="checkbox" id="d24ForceProgressEvents" onchange="showAdvPowerDlgChange()">Force progress events<br></div>
627
- <div id="d24dLockPowerButton"><input type="checkbox" id="d24LockPowerButton" onchange="showAdvPowerDlgChange()">Lock power button<br></div>
628
- <div id="d24dLockResetButton"><input type="checkbox" id="d24LockResetButton" onchange="showAdvPowerDlgChange()">Lock reset button<br></div>
629
- <div id="d24dLockSleepButton"><input type="checkbox" id="d24LockSleepButton" onchange="showAdvPowerDlgChange()">Lock sleep button<br></div>
630
- <div id="d24dLockKeyboard"><input type="checkbox" id="d24LockKeyboard" onchange="showAdvPowerDlgChange()">Lock keyboard<br></div>
631
- <div id="d24dUserPasswordBypass"><input type="checkbox" id="d24UserPasswordBypass" onchange="showAdvPowerDlgChange()">BIOS password bypass<br></div>
632
- <div id="d24dReflashBios"><input type="checkbox" id="d24ReflashBios" onchange="showAdvPowerDlgChange()">Reflash BIOS<br></div>
633
- <div id="d24dSafeMode"><input type="checkbox" id="d24SafeMode" onchange="showAdvPowerDlgChange()">Safe mode<br></div>
634
- <div id="d24dUseIDER"><input type="checkbox" id="d24UseIDER" onchange="showAdvPowerDlgChange()">Use IDER<br></div>
635
- <div id="d24dSerialOverLan"><input type="checkbox" id="d24SerialOverLan" onchange="showAdvPowerDlgChange()">Serial-over-LAN<br></div>
636
- <div id="d24dSecureErase"><input type="checkbox" id="d24SecureErase" onchange="showAdvPowerDlgChange()">Intel® Remote Secure Erase<br></div>
637
- </div>
638
- <div>Boot Settings</div>
639
- </div>
640
- <div style="height:26px">
641
- <select id="idx_d24ForceBootDevice" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
642
- <option value="0">None
643
- <option value="1">Force CD/DVD Boot
644
- <option value="2">Force PXE Boot
645
- <option value="3">Force Hard Disk Boot
646
- <option value="4">Force Diagnostic Boot
647
- </select>
648
- <div>Boot Source</div>
649
- </div>
650
- <div style="height:26px">
651
- <select id="idx_d24BootMediaIndex" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
652
- <option value="0">None
653
- <option value="1">Index 1
654
- <option value="2">Index 2
655
- <option value="3">Index 3
656
- <option value="3">Index 4
657
- </select>
658
- <div>Boot Media Index</div>
659
- </div>
660
- <div style="height:26px" id="idd_d24IDERBootDevice">
661
- <select id="idx_d24IDERBootDevice" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
662
- <option value="0">Boot to floppy
663
- <option value="1">Boot to CDROM
664
- </select>
665
- <div>IDER Boot Device</div>
666
- </div>
667
- <div style="height:26px">
668
- <select id="idx_d24Verbocity" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
669
- <option value="0">System Default
670
- <option id="idx_d24Verbocity1" value="1">Quiet
671
- <option id="idx_d24Verbocity2" value="2">Verbose
672
- <option id="idx_d24Verbocity3" value="3">Blank Screen
673
- </select>
674
- <div>Verbocity</div>
675
- </div>
676
- </div>
677
- <div id="dialog25" style="margin:auto;margin:3px">
678
- <div style="text-align:left">
679
- <div style="height:26px;margin-top:4px"><input id="d25alarm_name" style="float:right;width:180px" maxlength="32" onkeyup="alertDialogUpdate()"><div style="padding-top:4px">Alarm name</div></div>
680
- <div style="height:26px;margin-top:4px">
681
- <div style="float:right">
682
- <input id="d25alarm_sdate" style="width:180px" maxlength="10" onkeyup="alertDialogUpdate()" onkeypress="return numbersOnly(event,45)">
683
- </div>
684
- <div style="padding-top:4px">Wake date (year-month-day)</div>
685
- </div>
686
- <div style="height:26px;margin-top:4px">
687
- <div style="float:right">
688
- <input id="d25alarm_stime" style="width:180px" maxlength="10" onkeyup="alertDialogUpdate()" onkeypress="return numbersOnly(event,58)">
689
- </div>
690
- <div style="padding-top:4px">Wake time (hour:min:sec)</div>
691
- </div>
692
- <div style="height:26px;margin-top:4px">
693
- <div style="float:right">
694
- <input id="d25alarm_interval" style="width:180px" maxlength="10" onkeyup="alertDialogUpdate()" onkeypress="return numbersOnly(event,45)">
695
- </div>
696
- <div style="padding-top:4px">Interval (days-hours-min)</div>
697
- </div>
698
- <div style="height:26px;margin-top:4px">
699
- <div style="float:right;width:180px">
700
- <select id="d25alarm_doc" style="width:100%" onchange="showAdvPowerDlgChange()">
701
- <option value="0">Keep alarm
702
- <option value="1">Delete on completion
703
- </select>
704
- </div>
705
- <div style="padding-top:4px">After wake</div>
706
- </div>
707
- </div>
708
- </div>
709
- </div>
710
- <div style="padding:10px;margin-bottom:4px">
711
- <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)">
712
- <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)">
713
- <div style="height:25px"><input id="idx_dlgDeleteButton" type="button" value="Delete" style="width:80px;display:none" onclick="dialogclose(2)"></div>
714
- </div>
715
- </div>
716
-
717
-</body>
718
-</html>
719
-<script>/**
720
-* @description Set of short commonly used methods for handling HTML elements
721
-* @author Ylian Saint-Hilaire
722
-* @version v0.0.1b
723
-*/
724
-
725
-// Add startsWith for IE browser
726
-if (!String.prototype.startsWith) { String.prototype.startsWith = function (str) { return this.lastIndexOf(str, 0) === 0; }; }
727
-if (!String.prototype.endsWith) { String.prototype.endsWith = function (str) { return this.indexOf(str, this.length - str.length) !== -1; }; }
728
-
729
-// Quick UI functions, a bit of a replacement for jQuery
730
-//function Q(x) { if (document.getElementById(x) == null) { console.log('Invalid element: ' + x); } return document.getElementById(x); } // "Q"
731
-function Q(x) { return document.getElementById(x); } // "Q"
732
-function QS(x) { try { return Q(x).style; } catch (x) { } } // "Q" style
733
-function QE(x, y) { try { Q(x).disabled = !y; } catch (x) { } } // "Q" enable
734
-function QV(x, y) { try { QS(x).display = (y ? '' : 'none'); } catch (x) { } } // "Q" visible
735
-function QA(x, y) { Q(x).innerHTML += y; } // "Q" append
736
-function QH(x, y) { Q(x).innerHTML = y; } // "Q" html
737
-
738
-// Move cursor to end of input box
739
-function inputBoxFocus(x) { Q(x).focus(); var v = Q(x).value; Q(x).value = ''; Q(x).value = v; }
740
-
741
-// Binary encoding and decoding functions
742
-function ReadShort(v, p) { return (v.charCodeAt(p) << 8) + v.charCodeAt(p + 1); }
743
-function ReadShortX(v, p) { return (v.charCodeAt(p + 1) << 8) + v.charCodeAt(p); }
744
-function ReadInt(v, p) { return (v.charCodeAt(p) * 0x1000000) + (v.charCodeAt(p + 1) << 16) + (v.charCodeAt(p + 2) << 8) + v.charCodeAt(p + 3); } // We use "*0x1000000" instead of "<<24" because the shift converts the number to signed int32.
745
-function ReadSInt(v, p) { return (v.charCodeAt(p) << 24) + (v.charCodeAt(p + 1) << 16) + (v.charCodeAt(p + 2) << 8) + v.charCodeAt(p + 3); }
746
-function ReadIntX(v, p) { return (v.charCodeAt(p + 3) * 0x1000000) + (v.charCodeAt(p + 2) << 16) + (v.charCodeAt(p + 1) << 8) + v.charCodeAt(p); }
747
-function ShortToStr(v) { return String.fromCharCode((v >> 8) & 0xFF, v & 0xFF); }
748
-function ShortToStrX(v) { return String.fromCharCode(v & 0xFF, (v >> 8) & 0xFF); }
749
-function IntToStr(v) { return String.fromCharCode((v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF); }
750
-function IntToStrX(v) { return String.fromCharCode(v & 0xFF, (v >> 8) & 0xFF, (v >> 16) & 0xFF, (v >> 24) & 0xFF); }
751
-function MakeToArray(v) { if (!v || v == null || typeof v == 'object') return v; return [v]; }
752
-function SplitArray(v) { return v.split(','); }
753
-function Clone(v) { return JSON.parse(JSON.stringify(v)); }
754
-function EscapeHtml(x) { if (typeof x == "string") return x.replace(/&/g, '&').replace(/>/g, '>').replace(/</g, '<').replace(/"/g, '"').replace(/'/g, '''); if (typeof x == "boolean") return x; if (typeof x == "number") return x; }
755
-
756
-// Move an element from one position in an array to a new position
757
-function ArrayElementMove(arr, from, to) { arr.splice(to, 0, arr.splice(from, 1)[0]); };
758
-
759
-// Print object for HTML
760
-function ObjectToStringEx(x, c) {
761
- var r = "";
762
- if (x != 0 && (!x || x == null)) return "(Null)";
763
- if (x instanceof Array) { for (var i in x) { r += '<br />' + gap(c) + "Item #" + i + ": " + ObjectToStringEx(x[i], c + 1); } }
764
- else if (x instanceof Object) { for (var i in x) { r += '<br />' + gap(c) + i + " = " + ObjectToStringEx(x[i], c + 1); } }
765
- else { r += EscapeHtml(x); }
766
- return r;
767
-}
768
-
769
-// Print object for console
770
-function ObjectToStringEx2(x, c) {
771
- var r = "";
772
- if (x != 0 && (!x || x == null)) return "(Null)";
773
- if (x instanceof Array) { for (var i in x) { r += '\r\n' + gap2(c) + "Item #" + i + ": " + ObjectToStringEx2(x[i], c + 1); } }
774
- else if (x instanceof Object) { for (var i in x) { r += '\r\n' + gap2(c) + i + " = " + ObjectToStringEx2(x[i], c + 1); } }
775
- else { r += EscapeHtml(x); }
776
- return r;
777
-}
778
-
779
-// Create an ident gap
780
-function gap(c) { var x = ''; for (var i = 0; i < (c * 4) ; i++) { x += ' '; } return x; }
781
-function gap2(c) { var x = ''; for (var i = 0; i < (c * 4) ; i++) { x += ' '; } return x; }
782
-
783
-// Print an object in html
784
-function ObjectToString(x) { return ObjectToStringEx(x, 0); }
785
-function ObjectToString2(x) { return ObjectToStringEx2(x, 0); }
786
-
787
-// Convert a hex string to a raw string
788
-function hex2rstr(d) {
789
- if (typeof d != "string" || d.length == 0) return '';
790
- var r = '', m = ('' + d).match(/../g), t;
791
- while (t = m.shift()) r += String.fromCharCode('0x' + t);
792
- return r
793
-}
794
-
795
-// Convert decimal to hex
796
-function char2hex(i) { return (i + 0x100).toString(16).substr(-2).toUpperCase(); }
797
-
798
-// Convert a raw string to a hex string
799
-function rstr2hex(input) {
800
- var r = '', i;
801
- for (i = 0; i < input.length; i++) { r += char2hex(input.charCodeAt(i)); }
802
- return r;
803
-}
804
-
805
-// UTF-8 encoding & decoding functions
806
-function encode_utf8(s) { return unescape(encodeURIComponent(s)); }
807
-function decode_utf8(s) { return decodeURIComponent(escape(s)); }
808
-
809
-// Convert a string into a blob
810
-function data2blob(data) {
811
- var bytes = new Array(data.length);
812
- for (var i = 0; i < data.length; i++) bytes[i] = data.charCodeAt(i);
813
- var blob = new Blob([new Uint8Array(bytes)]);
814
- return blob;
815
-}
816
-
817
-// Generate random numbers
818
-function random(max) { return Math.floor(Math.random() * max); }
819
-
820
-// Trademarks
821
-function trademarks(x) { return x.replace(/\(R\)/g, '®').replace(/\(TM\)/g, '™'); }
822
-
823
-
824
-/**
825
-* @description WSMAN communication using websocket
826
-* @author Ylian Saint-Hilaire
827
-* @version v0.2.0c
828
-*/
829
-
830
-// Construct a WSMAN communication object
831
-var CreateWsmanComm = function (host, port, user, pass, tls) {
832
- var obj = {};
833
- obj.PendingAjax = []; // List of pending AJAX calls. When one frees up, another will start.
834
- obj.ActiveAjaxCount = 0; // Number of currently active AJAX calls
835
- obj.MaxActiveAjaxCount = 1; // Maximum number of activate AJAX calls at the same time.
836
- obj.FailAllError = 0; // Set this to non-zero to fail all AJAX calls with that error status, 999 causes responses to be silent.
837
- obj.challengeParams = null;
838
- obj.noncecounter = 1;
839
- obj.authcounter = 0;
840
- obj.socket = null;
841
- obj.socketState = 0;
842
- obj.host = host;
843
- obj.port = port;
844
- obj.user = user;
845
- obj.pass = pass;
846
- obj.tls = tls;
847
- obj.tlsv1only = 0;
848
- obj.cnonce = Math.random().toString(36).substring(7); // Generate a random client nonce
849
- obj.inDataCount = 0;
850
-
851
- // Private method
852
- //obj.Debug = function (msg) { console.log(msg); }
853
-
854
- // Private method
855
- // pri = priority, if set to 1, the call is high priority and put on top of the stack.
856
- obj.PerformAjax = function (postdata, callback, tag, pri, url, action) {
857
- if (obj.ActiveAjaxCount < obj.MaxActiveAjaxCount && obj.PendingAjax.length == 0) {
858
- // There are no pending AJAX calls, perform the call now.
859
- obj.PerformAjaxEx(postdata, callback, tag, url, action);
860
- } else {
861
- // If this is a high priority call, put this call in front of the array, otherwise put it in the back.
862
- if (pri == 1) { obj.PendingAjax.unshift([postdata, callback, tag, url, action]); } else { obj.PendingAjax.push([postdata, callback, tag, url, action]); }
863
- }
864
- }
865
-
866
- // Private method
867
- obj.PerformNextAjax = function () {
868
- if (obj.ActiveAjaxCount >= obj.MaxActiveAjaxCount || obj.PendingAjax.length == 0) return;
869
- var x = obj.PendingAjax.shift();
870
- obj.PerformAjaxEx(x[0], x[1], x[2], x[3], x[4]);
871
- obj.PerformNextAjax();
872
- }
873
-
874
- // Private method
875
- obj.PerformAjaxEx = function (postdata, callback, tag, url, action) {
876
- if (obj.FailAllError != 0) { obj.gotNextMessagesError({ status: obj.FailAllError }, 'error', null, [postdata, callback, tag, url, action]); return; }
877
- if (!postdata) postdata = "";
878
- //console.log("SEND: " + postdata); // DEBUG
879
-
880
- // We are in a websocket relay environment
881
- obj.ActiveAjaxCount++;
882
- return obj.PerformAjaxExNodeJS(postdata, callback, tag, url, action);
883
- }
884
-
885
- // Websocket relay specific private method
886
- obj.pendingAjaxCall = [];
887
-
888
- // Websocket relay specific private method
889
- obj.PerformAjaxExNodeJS = function (postdata, callback, tag, url, action) { obj.PerformAjaxExNodeJS2(postdata, callback, tag, url, action, 3); }
890
-
891
- // Websocket relay specific private method
892
- obj.PerformAjaxExNodeJS2 = function (postdata, callback, tag, url, action, retry) {
893
- if (retry <= 0 || obj.FailAllError != 0) {
894
- // Too many retry, fail here.
895
- obj.ActiveAjaxCount--;
896
- if (obj.FailAllError != 999) obj.gotNextMessages(null, 'error', { status: ((obj.FailAllError == 0) ? 408 : obj.FailAllError) }, [postdata, callback, tag, url, action]); // 408 is timeout error
897
- obj.PerformNextAjax();
898
- return;
899
- }
900
- obj.pendingAjaxCall.push([postdata, callback, tag, url, action, retry]);
901
- if (obj.socketState == 0) { obj.xxConnectHttpSocket(); }
902
- else if (obj.socketState == 2) { obj.sendRequest(postdata, url, action); }
903
- }
904
-
905
- // Websocket relay specific private method (Content Length Encoding)
906
- obj.sendRequest = function (postdata, url, action) {
907
- url = url ? url : "/wsman";
908
- action = action ? action : "POST";
909
- var h = action + " " + url + " HTTP/1.1\r\n";
910
- if (obj.challengeParams != null) {
911
- var response = hex_md5(hex_md5(obj.user + ':' + obj.challengeParams["realm"] + ':' + obj.pass) + ':' + obj.challengeParams["nonce"] + ':' + obj.noncecounter + ':' + obj.cnonce + ':' + obj.challengeParams["qop"] + ':' + hex_md5(action + ':' + url));
912
- h += 'Authorization: ' + obj.renderDigest({ "username": obj.user, "realm": obj.challengeParams["realm"], "nonce": obj.challengeParams["nonce"], "uri": url, "qop": obj.challengeParams["qop"], "response": response, "nc": obj.noncecounter++, "cnonce": obj.cnonce }) + '\r\n';
913
- }
914
- h += 'Host: ' + obj.host + ':' + obj.port + '\r\nContent-Length: ' + postdata.length + '\r\n\r\n' + postdata; // Use Content-Length
915
- //h += 'Host: ' + obj.host + ':' + obj.port + '\r\nTransfer-Encoding: chunked\r\n\r\n' + postdata.length.toString(16).toUpperCase() + '\r\n' + postdata + '\r\n0\r\n\r\n'; // Use Chunked-Encoding
916
- _Send(h);
917
- }
918
-
919
- // Websocket relay specific private method
920
- obj.parseDigest = function (header) {
921
- var t = header.substring(7).split(',');
922
- for (i in t) t[i] = t[i].trim();
923
- return t.reduce(function (obj, s) { var parts = s.split('='); obj[parts[0]] = parts[1].replace(/"/g, ''); return obj; }, {})
924
- }
925
-
926
- // Websocket relay specific private method
927
- obj.renderDigest = function (params) {
928
- var paramsnames = [];
929
- for (i in params) { paramsnames.push(i); }
930
- return 'Digest ' + paramsnames.reduce(function (s1, ii) { return s1 + ',' + ii + '="' + params[ii] + '"' }, '').substring(1);
931
- }
932
-
933
- // Websocket relay specific private method
934
- obj.xxConnectHttpSocket = function () {
935
- //obj.Debug("xxConnectHttpSocket");
936
- obj.inDataCount = 0;
937
- obj.socketState = 1;
938
- obj.socket = new WebSocket(window.location.protocol.replace("http", "ws") + "//" + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + "/webrelay.ashx?p=1&host=" + obj.host + "&port=" + obj.port + "&tls=" + obj.tls + "&tls1only=" + obj.tlsv1only + ((user == '*') ? "&serverauth=1" : "") + ((typeof pass === "undefined") ? ("&serverauth=1&user=" + user) : "")); // The "p=1" indicates to the relay that this is a WSMAN session
939
- obj.socket.onopen = _OnSocketConnected;
940
- obj.socket.onmessage = _OnMessage;
941
- obj.socket.onclose = _OnSocketClosed;
942
- }
943
-
944
- // Websocket relay specific private method
945
- function _OnSocketConnected() {
946
- obj.socketState = 2;
947
- obj.socketParseState = 0;
948
- obj.socketAccumulator = '';
949
- obj.socketHeader = null;
950
- obj.socketData = '';
951
- //console.log("xxOnSocketConnected");
952
- for (i in obj.pendingAjaxCall) { obj.sendRequest(obj.pendingAjaxCall[i][0], obj.pendingAjaxCall[i][3], obj.pendingAjaxCall[i][4]); }
953
- }
954
-
955
- function _OnMessage(e) {
956
- obj.inDataCount++;
957
- if (typeof e.data == 'object') {
958
- var f = new FileReader();
959
- if (f.readAsBinaryString) {
960
- // Chrome & Firefox (Draft)
961
- f.onload = function (e) { _OnSocketData(e.target.result); }
962
- f.readAsBinaryString(new Blob([e.data]));
963
- } else if (f.readAsArrayBuffer) {
964
- // Chrome & Firefox (Spec)
965
- f.onloadend = function (e) { _OnSocketData(e.target.result); }
966
- f.readAsArrayBuffer(e.data);
967
- } else {
968
- // IE10, readAsBinaryString does not exist, use an alternative.
969
- var binary = "";
970
- var bytes = new Uint8Array(e.data);
971
- var length = bytes.byteLength;
972
- for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
973
- _OnSocketData(binary);
974
- }
975
- } else if (typeof e.data == 'string') {
976
- // We got a string object
977
- _OnSocketData(e.data);
978
- }
979
- };
980
-
981
- // Websocket relay specific private method
982
- function _OnSocketData(data) {
983
- //obj.Debug("_OnSocketData (" + data.length + "): " + data);
984
-
985
- if (typeof data === 'object') {
986
- // This is an ArrayBuffer, convert it to a string array (used in IE)
987
- var binary = "", bytes = new Uint8Array(data), length = bytes.byteLength;
988
- for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
989
- data = binary;
990
- }
991
- else if (typeof data !== 'string') return;
992
-
993
- //console.log("RECV(" + obj.socketParseState + "): " + data); // DEBUG
994
-
995
- obj.socketAccumulator += data;
996
- while (true) {
997
- if (obj.socketParseState == 0) {
998
- var headersize = obj.socketAccumulator.indexOf("\r\n\r\n");
999
- if (headersize < 0) return;
1000
- //obj.Debug(obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header
1001
- obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split("\r\n");
1002
- obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4);
1003
- obj.socketParseState = 1;
1004
- obj.socketData = '';
1005
- obj.socketXHeader = { Directive: obj.socketHeader[0].split(' ') };
1006
- //console.log("Header", obj.socketXHeader);
1007
- for (i in obj.socketHeader) {
1008
- if (i != 0) {
1009
- var x2 = obj.socketHeader[i].indexOf(':');
1010
- obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2);
1011
- }
1012
- }
1013
- }
1014
- if (obj.socketParseState == 1) {
1015
- var csize = -1;
1016
- if ((obj.socketXHeader["connection"] != undefined) && (obj.socketXHeader["connection"].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == undefined) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) {
1017
- // The body ends with a close, in this case, we will only process the header
1018
- csize = 0;
1019
- } else if (obj.socketXHeader["content-length"] != undefined) {
1020
- // The body length is specified by the content-length
1021
- csize = parseInt(obj.socketXHeader["content-length"]);
1022
- if (obj.socketAccumulator.length < csize) return;
1023
- var data = obj.socketAccumulator.substring(0, csize);
1024
- obj.socketAccumulator = obj.socketAccumulator.substring(csize);
1025
- obj.socketData = data;
1026
- csize = 0;
1027
- } else {
1028
- // The body is chunked
1029
- var clen = obj.socketAccumulator.indexOf("\r\n");
1030
- if (clen < 0) return; // Chunk length not found, exit now and get more data.
1031
- // Chunk length if found, lets see if we can get the data.
1032
- csize = parseInt(obj.socketAccumulator.substring(0, clen), 16);
1033
- if (isNaN(csize)) { if (obj.websocket) { obj.websocket.close(); } return; } // Critical error, close the socket and exit.
1034
- if (obj.socketAccumulator.length < clen + 2 + csize + 2) return;
1035
- // We got a chunk with all of the data, handle the chunck now.
1036
- var data = obj.socketAccumulator.substring(clen + 2, clen + 2 + csize);
1037
- obj.socketAccumulator = obj.socketAccumulator.substring(clen + 2 + csize + 2);
1038
- obj.socketData += data;
1039
- }
1040
- if (csize == 0) {
1041
- //obj.Debug("_OnSocketData DONE: (" + obj.socketData.length + "): " + obj.socketData);
1042
- _ProcessHttpResponse(obj.socketXHeader, obj.socketData);
1043
- obj.socketParseState = 0;
1044
- obj.socketHeader = null;
1045
- }
1046
- }
1047
- }
1048
- }
1049
-
1050
- // Websocket relay specific private method
1051
- function _ProcessHttpResponse(header, data) {
1052
- //obj.Debug("_ProcessHttpResponse: " + header.Directive[1]);
1053
-
1054
- var s = parseInt(header.Directive[1]);
1055
- if (isNaN(s)) {
1056
- s = 602;
1057
- }
1058
- if (s == 401 && ++(obj.authcounter) < 3) {
1059
- obj.challengeParams = obj.parseDigest(header['www-authenticate']); // Set the digest parameters, after this, the socket will close and we will auto-retry
1060
- } else {
1061
- var r = obj.pendingAjaxCall.shift();
1062
- // if (s != 200) { obj.Debug("Error, status=" + s + "\r\n\r\nreq=" + r[0] + "\r\n\r\nresp=" + data); } // Debug: Display the request & response if something did not work.
1063
- obj.authcounter = 0;
1064
- obj.ActiveAjaxCount--;
1065
- obj.gotNextMessages(data, 'success', { status: s }, r);
1066
- obj.PerformNextAjax();
1067
- }
1068
- }
1069
-
1070
- // Websocket relay specific private method
1071
- function _OnSocketClosed(data) {
1072
- //console.log("_OnSocketClosed");
1073
- if (obj.inDataCount == 0) { obj.tlsv1only = (1 - obj.tlsv1only); }
1074
- obj.socketState = 0;
1075
- if (obj.socket != null) { obj.socket.close(); obj.socket = null; }
1076
- if (obj.pendingAjaxCall.length > 0) {
1077
- var r = obj.pendingAjaxCall.shift();
1078
- var retry = r[5];
1079
- obj.PerformAjaxExNodeJS2(r[0], r[1], r[2], r[3], r[4], --retry);
1080
- }
1081
- }
1082
-
1083
- // Websocket relay specific private method
1084
- function _Send(x) {
1085
- //console.log("SEND: " + x); // DEBUG
1086
- if (obj.socketState == 2 && obj.socket != null && obj.socket.readyState == WebSocket.OPEN) {
1087
- var b = new Uint8Array(x.length);
1088
- for (var i = 0; i < x.length; ++i) { b[i] = x.charCodeAt(i); }
1089
- try { obj.socket.send(b.buffer); } catch (e) { }
1090
- }
1091
- }
1092
-
1093
- // Private method
1094
- obj.gotNextMessages = function (data, status, request, callArgs) {
1095
- if (obj.FailAllError == 999) return;
1096
- if (obj.FailAllError != 0) { callArgs[1](null, obj.FailAllError, callArgs[2]); return; }
1097
- if (request.status != 200) { callArgs[1](null, request.status, callArgs[2]); return; }
1098
- callArgs[1](data, 200, callArgs[2]);
1099
- }
1100
-
1101
- // Private method
1102
- obj.gotNextMessagesError = function (request, status, errorThrown, callArgs) {
1103
- if (obj.FailAllError == 999) return;
1104
- if (obj.FailAllError != 0) { callArgs[1](null, obj.FailAllError, callArgs[2]); return; }
1105
- callArgs[1](obj, null, { Header: { HttpError: request.status } }, request.status, callArgs[2]);
1106
- }
1107
-
1108
- // Cancel all pending queries with given status
1109
- obj.CancelAllQueries = function (s) {
1110
- while (obj.PendingAjax.length > 0) { var x = obj.PendingAjax.shift(); x[1](null, s, x[2]); }
1111
- if (obj.websocket != null) { obj.websocket.close(); obj.websocket = null; obj.socketState = 0; }
1112
- }
1113
-
1114
- return obj;
1115
-}
1116
-
1117
-/**
1118
-* @description Intel AMT Redirection Transport Module - using websocket relay
1119
-* @author Ylian Saint-Hilaire
1120
-* @version v0.0.1f
1121
-*/
1122
-
1123
-// Construct a MeshServer object
1124
-var CreateAmtRedirect = function (module) {
1125
- var obj = {};
1126
- obj.m = module; // This is the inner module (Terminal or Desktop)
1127
- module.parent = obj;
1128
- obj.State = 0;
1129
- obj.socket = null;
1130
-
1131
- obj.host = null;
1132
- obj.port = 0;
1133
- obj.user = null;
1134
- obj.pass = null;
1135
- obj.authuri = "/RedirectionService";
1136
- obj.tlsv1only = 0;
1137
- obj.connectstate = 0;
1138
- obj.protocol = module.protocol; // 1 = SOL, 2 = KVM, 3 = IDER
1139
-
1140
- obj.amtaccumulator = "";
1141
- obj.amtsequence = 1;
1142
- obj.amtkeepalivetimer = null;
1143
-
1144
- obj.onStateChanged = null;
1145
-
1146
- // Private method
1147
- //obj.Debug = function (msg) { console.log(msg); }
1148
-
1149
-
1150
- obj.Start = function (host, port, user, pass, tls) {
1151
- obj.host = host;
1152
- obj.port = port;
1153
- obj.user = user;
1154
- obj.pass = pass;
1155
- obj.connectstate = 0;
1156
- obj.socket = new WebSocket(window.location.protocol.replace("http", "ws") + "//" + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + "/webrelay.ashx?p=2&host=" + host + "&port=" + port + "&tls=" + tls + ((user == '*') ? "&serverauth=1" : "") + ((typeof pass === "undefined") ? ("&serverauth=1&user=" + user) : "") + "&tls1only=" + obj.tlsv1only); // The "p=2" indicates to the relay that this is a REDIRECTION session
1157
- obj.socket.onopen = obj.xxOnSocketConnected;
1158
- obj.socket.onmessage = obj.xxOnMessage;
1159
- obj.socket.onclose = obj.xxOnSocketClosed;
1160
- obj.xxStateChange(1);
1161
- }
1162
-
1163
-
1164
- obj.xxOnSocketConnected = function() {
1165
- //obj.Debug("Redir Socket Connected");
1166
- obj.xxStateChange(2);
1167
- if (obj.protocol == 1) obj.xxSend(obj.RedirectStartSol); // TODO: Put these strings in higher level module to tighten code
1168
- if (obj.protocol == 2) obj.xxSend(obj.RedirectStartKvm); // Don't need these is the feature is not compiled-in.
1169
- if (obj.protocol == 3) obj.xxSend(obj.RedirectStartIder);
1170
- }
1171
-
1172
- obj.xxOnMessage = function (e) {
1173
- if (typeof e.data == 'object') {
1174
- var f = new FileReader();
1175
- if (f.readAsBinaryString) {
1176
- // Chrome & Firefox (Draft)
1177
- f.onload = function (e) { obj.xxOnSocketData(e.target.result); }
1178
- f.readAsBinaryString(new Blob([e.data]));
1179
- } else if (f.readAsArrayBuffer) {
1180
- // Chrome & Firefox (Spec)
1181
- f.onloadend = function (e) { obj.xxOnSocketData(e.target.result); }
1182
- f.readAsArrayBuffer(e.data);
1183
- } else {
1184
- // IE10, readAsBinaryString does not exist, use an alternative.
1185
- var binary = "";
1186
- var bytes = new Uint8Array(e.data);
1187
- var length = bytes.byteLength;
1188
- for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
1189
- obj.xxOnSocketData(binary);
1190
- }
1191
- } else {
1192
- // If we get a string object, it maybe the WebRTC confirm. Ignore it.
1193
- // obj.debug("MeshDataChannel - OnData - " + typeof e.data + " - " + e.data.length);
1194
- obj.xxOnSocketData(e.data);
1195
- }
1196
- };
1197
-
1198
- obj.xxOnSocketData = function (data) {
1199
- if (!data || obj.connectstate == -1) return;
1200
-
1201
- if (typeof data === 'object') {
1202
- // This is an ArrayBuffer, convert it to a string array (used in IE)
1203
- var binary = "";
1204
- var bytes = new Uint8Array(data);
1205
- var length = bytes.byteLength;
1206
- for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
1207
- data = binary;
1208
- }
1209
- else if (typeof data !== 'string') { return; }
1210
-
1211
- if ((obj.protocol == 2 || obj.protocol == 3) && obj.connectstate == 1) { return obj.m.ProcessData(data); } // KVM traffic, forward it directly.
1212
- obj.amtaccumulator += data;
1213
- //obj.Debug("Redir Recv(" + obj.amtaccumulator.length + "): " + rstr2hex(obj.amtaccumulator));
1214
- while (obj.amtaccumulator.length >= 1) {
1215
- var cmdsize = 0;
1216
- switch (obj.amtaccumulator.charCodeAt(0)) {
1217
- case 0x11: // StartRedirectionSessionReply (17)
1218
- if (obj.amtaccumulator.length < 4) return;
1219
- var statuscode = obj.amtaccumulator.charCodeAt(1);
1220
- switch (statuscode) {
1221
- case 0: // STATUS_SUCCESS
1222
- if (obj.amtaccumulator.length < 13) return;
1223
- var oemlen = obj.amtaccumulator.charCodeAt(12);
1224
- if (obj.amtaccumulator.length < 13 + oemlen) return;
1225
-
1226
- // Query for available authentication
1227
- obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)); // Query authentication support
1228
- cmdsize = (13 + oemlen);
1229
- break;
1230
- default:
1231
- obj.Stop();
1232
- break;
1233
- }
1234
- break;
1235
- case 0x14: // AuthenticateSessionReply (20)
1236
- if (obj.amtaccumulator.length < 9) return;
1237
- var authDataLen = ReadIntX(obj.amtaccumulator, 5);
1238
- if (obj.amtaccumulator.length < 9 + authDataLen) return;
1239
- var status = obj.amtaccumulator.charCodeAt(1);
1240
- var authType = obj.amtaccumulator.charCodeAt(4);
1241
- var authData = [];
1242
- for (i = 0; i < authDataLen; i++) { authData.push(obj.amtaccumulator.charCodeAt(9 + i)); }
1243
- var authDataBuf = obj.amtaccumulator.substring(9, 9 + authDataLen);
1244
- cmdsize = 9 + authDataLen;
1245
-
1246
- if (authType == 0) {
1247
- // Query
1248
- if (authData.indexOf(4) >= 0) {
1249
- // Good Digest Auth (With cnonce and all)
1250
- obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x04) + IntToStrX(obj.user.length + obj.authuri.length + 8) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(0x00, 0x00) + String.fromCharCode(obj.authuri.length) + obj.authuri + String.fromCharCode(0x00, 0x00, 0x00, 0x00));
1251
- }
1252
- else if (authData.indexOf(3) >= 0) {
1253
- // Bad Digest Auth (Not sure why this is supported, cnonce is not used!)
1254
- obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x03) + IntToStrX(obj.user.length + obj.authuri.length + 7) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(0x00, 0x00) + String.fromCharCode(obj.authuri.length) + obj.authuri + String.fromCharCode(0x00, 0x00, 0x00));
1255
- }
1256
- else if (authData.indexOf(1) >= 0) {
1257
- // Basic Auth (Probably a good idea to not support this unless this is an old version of Intel AMT)
1258
- obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x01) + IntToStrX(obj.user.length + obj.pass.length + 2) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(obj.pass.length) + obj.pass);
1259
- }
1260
- else obj.Stop();
1261
- }
1262
- else if ((authType == 3 || authType == 4) && status == 1) {
1263
- var curptr = 0;
1264
-
1265
- // Realm
1266
- var realmlen = authDataBuf.charCodeAt(curptr);
1267
- var realm = authDataBuf.substring(curptr + 1, curptr + 1 + realmlen);
1268
- curptr += (realmlen + 1);
1269
-
1270
- // Nonce
1271
- var noncelen = authDataBuf.charCodeAt(curptr);
1272
- var nonce = authDataBuf.substring(curptr + 1, curptr + 1 + noncelen);
1273
- curptr += (noncelen + 1);
1274
-
1275
- // QOP
1276
- var qoplen = 0;
1277
- var qop = null;
1278
- var cnonce = obj.xxRandomNonce(32);
1279
- var snc = '00000002';
1280
- var extra = '';
1281
- if (authType == 4) {
1282
- qoplen = authDataBuf.charCodeAt(curptr);
1283
- qop = authDataBuf.substring(curptr + 1, curptr + 1 + qoplen);
1284
- curptr += (qoplen + 1);
1285
- extra = snc + ":" + cnonce + ":" + qop + ":";
1286
- }
1287
-
1288
- var digest = hex_md5(hex_md5(obj.user + ":" + realm + ":" + obj.pass) + ":" + nonce + ":" + extra + hex_md5("POST:" + obj.authuri));
1289
- var totallen = obj.user.length + realm.length + nonce.length + obj.authuri.length + cnonce.length + snc.length + digest.length + 7;
1290
- if (authType == 4) totallen += (qop.length + 1);
1291
- var buf = String.fromCharCode(0x13, 0x00, 0x00, 0x00, authType) + IntToStrX(totallen) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(realm.length) + realm + String.fromCharCode(nonce.length) + nonce + String.fromCharCode(obj.authuri.length) + obj.authuri + String.fromCharCode(cnonce.length) + cnonce + String.fromCharCode(snc.length) + snc + String.fromCharCode(digest.length) + digest;
1292
- if (authType == 4) buf += (String.fromCharCode(qop.length) + qop);
1293
- obj.xxSend(buf);
1294
- }
1295
- else
1296
- if (status == 0) { // Success
1297
- if (obj.protocol == 1) {
1298
- // Serial-over-LAN: Send Intel AMT serial settings...
1299
- var MaxTxBuffer = 10000;
1300
- var TxTimeout = 100;
1301
- var TxOverflowTimeout = 0;
1302
- var RxTimeout = 10000;
1303
- var RxFlushTimeout = 100;
1304
- var Heartbeat = 0;//5000;
1305
- obj.xxSend(String.fromCharCode(0x20, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + ShortToStrX(MaxTxBuffer) + ShortToStrX(TxTimeout) + ShortToStrX(TxOverflowTimeout) + ShortToStrX(RxTimeout) + ShortToStrX(RxFlushTimeout) + ShortToStrX(Heartbeat) + IntToStrX(0));
1306
- }
1307
- if (obj.protocol == 2) {
1308
- // Remote Desktop: Send traffic directly...
1309
- obj.xxSend(String.fromCharCode(0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00));
1310
- }
1311
- if (obj.protocol == 3) {
1312
- // Remote IDER: Send traffic directly...
1313
- obj.connectstate = 1;
1314
- obj.xxStateChange(3);
1315
- }
1316
- } else obj.Stop();
1317
- break;
1318
- case 0x21: // Response to settings (33)
1319
- if (obj.amtaccumulator.length < 23) break;
1320
- cmdsize = 23;
1321
- obj.xxSend(String.fromCharCode(0x27, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + String.fromCharCode(0x00, 0x00, 0x1B, 0x00, 0x00, 0x00));
1322
- if (obj.protocol == 1) { obj.amtkeepalivetimer = setInterval(obj.xxSendAmtKeepAlive, 2000); }
1323
- obj.connectstate = 1;
1324
- obj.xxStateChange(3);
1325
- break;
1326
- case 0x29: // Serial Settings (41)
1327
- if (obj.amtaccumulator.length < 10) break;
1328
- cmdsize = 10;
1329
- break;
1330
- case 0x2A: // Incoming display data (42)
1331
- if (obj.amtaccumulator.length < 10) break;
1332
- var cs = (10 + ((obj.amtaccumulator.charCodeAt(9) & 0xFF) << 8) + (obj.amtaccumulator.charCodeAt(8) & 0xFF));
1333
- if (obj.amtaccumulator.length < cs) break;
1334
- obj.m.ProcessData(obj.amtaccumulator.substring(10, cs));
1335
- cmdsize = cs;
1336
- break;
1337
- case 0x2B: // Keep alive message (43)
1338
- if (obj.amtaccumulator.length < 8) break;
1339
- cmdsize = 8;
1340
- break;
1341
- case 0x41:
1342
- if (obj.amtaccumulator.length < 8) break;
1343
- obj.connectstate = 1;
1344
- obj.m.Start();
1345
- // KVM traffic, forward rest of accumulator directly.
1346
- if (obj.amtaccumulator.length > 8) { obj.m.ProcessData(obj.amtaccumulator.substring(8)); }
1347
- cmdsize = obj.amtaccumulator.length;
1348
- break;
1349
- default:
1350
- console.log("Unknown Intel AMT command: " + obj.amtaccumulator.charCodeAt(0) + " acclen=" + obj.amtaccumulator.length);
1351
- obj.Stop();
1352
- return;
1353
- }
1354
- if (cmdsize == 0) return;
1355
- obj.amtaccumulator = obj.amtaccumulator.substring(cmdsize);
1356
- }
1357
- }
1358
-
1359
- obj.xxSend = function (x) {
1360
- //obj.Debug("Redir Send(" + x.length + "): " + rstr2hex(x));
1361
- if (obj.socket != null && obj.socket.readyState == WebSocket.OPEN) {
1362
- var b = new Uint8Array(x.length);
1363
- for (var i = 0; i < x.length; ++i) { b[i] = x.charCodeAt(i); }
1364
- obj.socket.send(b.buffer);
1365
- }
1366
- }
1367
-
1368
- obj.Send = function (x) {
1369
- if (obj.socket == null || obj.connectstate != 1) return;
1370
- if (obj.protocol == 1) { obj.xxSend(String.fromCharCode(0x28, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + ShortToStrX(x.length) + x); } else { obj.xxSend(x); }
1371
- }
1372
-
1373
- obj.xxSendAmtKeepAlive = function () {
1374
- if (obj.socket == null) return;
1375
- obj.xxSend(String.fromCharCode(0x2B, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++));
1376
- }
1377
-
1378
- obj.xxRandomNonceX = "abcdef0123456789";
1379
- obj.xxRandomNonce = function (length) {
1380
- var r = "";
1381
- for (var i = 0; i < length; i++) { r += obj.xxRandomNonceX.charAt(Math.floor(Math.random() * obj.xxRandomNonceX.length)); }
1382
- return r;
1383
- }
1384
-
1385
- obj.xxOnSocketClosed = function () {
1386
- //obj.Debug("Redir Socket Closed");
1387
- obj.Stop();
1388
- }
1389
-
1390
- obj.xxStateChange = function(newstate) {
1391
- if (obj.State == newstate) return;
1392
- obj.State = newstate;
1393
- obj.m.xxStateChange(obj.State);
1394
- if (obj.onStateChanged != null) obj.onStateChanged(obj, obj.State);
1395
- }
1396
-
1397
- obj.Stop = function () {
1398
- //obj.Debug("Redir Socket Stopped");
1399
- obj.xxStateChange(0);
1400
- obj.connectstate = -1;
1401
- obj.amtaccumulator = "";
1402
- if (obj.socket != null) { obj.socket.close(); obj.socket = null; }
1403
- if (obj.amtkeepalivetimer != null) { clearInterval(obj.amtkeepalivetimer); obj.amtkeepalivetimer = null; }
1404
- }
1405
-
1406
- obj.RedirectStartSol = String.fromCharCode(0x10, 0x00, 0x00, 0x00, 0x53, 0x4F, 0x4C, 0x20);
1407
- obj.RedirectStartKvm = String.fromCharCode(0x10, 0x01, 0x00, 0x00, 0x4b, 0x56, 0x4d, 0x52);
1408
- obj.RedirectStartIder = String.fromCharCode(0x10, 0x00, 0x00, 0x00, 0x49, 0x44, 0x45, 0x52);
1409
-
1410
- return obj;
1411
-}
1412
-/**
1413
-* @description Intel(r) AMT WSMAN Stack
1414
-* @author Ylian Saint-Hilaire
1415
-* @version v0.2.0
1416
-*/
1417
-
1418
-// Construct a MeshServer object
1419
-var WsmanStackCreateService = function (host, port, user, pass, tls, extra) {
1420
- var obj = {};
1421
- //obj.onDebugMessage = null; // Set to a function if you want to get debug messages.
1422
- obj.NextMessageId = 1; // Next message number, used to label WSMAN calls.
1423
- obj.Address = '/wsman';
1424
- obj.comm = CreateWsmanComm(host, port, user, pass, tls, extra);
1425
-
1426
- obj.PerformAjax = function (postdata, callback, tag, pri, namespaces) {
1427
- if (namespaces == null) namespaces = '';
1428
- obj.comm.PerformAjax('<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns=\"http://www.w3.org/2003/05/soap-envelope\" ' + namespaces + '><Header><a:Action>' + postdata, function (data, status, tag) {
1429
- if (status != 200) { callback(obj, null, { Header: { HttpError: status } }, status, tag); return; }
1430
- var wsresponse = obj.ParseWsman(data);
1431
- if (!wsresponse || wsresponse == null) { callback(obj, null, { Header: { HttpError: status } }, 601, tag); } else { callback(obj, wsresponse.Header["ResourceURI"], wsresponse, 200, tag); }
1432
- }, tag, pri);
1433
- }
1434
-
1435
- // Private method
1436
- //obj.Debug = function (msg) { /*console.log(msg);*/ }
1437
-
1438
- // Cancel all pending queries with given status
1439
- obj.CancelAllQueries = function (s) { obj.comm.CancelAllQueries(s); }
1440
-
1441
- // Get the last element of a URI string
1442
- obj.GetNameFromUrl = function (resuri) {
1443
- var x = resuri.lastIndexOf("/");
1444
- return (x == -1)?resuri:resuri.substring(x + 1);
1445
- }
1446
-
1447
- // Perform a WSMAN Subscribe operation
1448
- obj.ExecSubscribe = function (resuri, delivery, url, callback, tag, pri, selectors, opaque, user, pass) {
1449
- var digest = "", digest2 = "", opaque = "";
1450
- if (user != null && pass != null) { digest = '<t:IssuedTokens xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>' + user + '</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">' + pass + '</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>'; digest2 = '<w:Auth Profile="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/digest"/>'; }
1451
- if (opaque != null) { opaque = '<a:ReferenceParameters><m:arg>' + opaque + '</m:arg></a:ReferenceParameters>'; }
1452
- if (delivery == 'PushWithAck') { delivery = 'dmtf.org/wbem/wsman/1/wsman/PushWithAck'; } else if (delivery == 'Push') { delivery = 'xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push'; }
1453
- var data = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>" + _PutObjToSelectorsXml(selectors) + digest + '</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.' + delivery + '"><e:NotifyTo><a:Address>' + url + '</a:Address>' + opaque + '</e:NotifyTo>' + digest2 + '</e:Delivery></e:Subscribe>';
1454
- obj.PerformAjax(data + "</Body></Envelope>", callback, tag, pri, 'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:m="http://x.com"');
1455
- }
1456
-
1457
- // Perform a WSMAN UnSubscribe operation
1458
- obj.ExecUnSubscribe = function (resuri, callback, tag, pri, selectors) {
1459
- var data = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>" + _PutObjToSelectorsXml(selectors) + '</Header><Body><e:Unsubscribe/>';
1460
- obj.PerformAjax(data + "</Body></Envelope>", callback, tag, pri, 'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"');
1461
- }
1462
-
1463
- // Perform a WSMAN PUT operation
1464
- obj.ExecPut = function (resuri, putobj, callback, tag, pri, selectors) {
1465
- var data = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>" + _PutObjToSelectorsXml(selectors) + '</Header><Body>' + _PutObjToBodyXml(resuri, putobj);
1466
- obj.PerformAjax(data + "</Body></Envelope>", callback, tag, pri);
1467
- }
1468
-
1469
- // Perform a WSMAN CREATE operation
1470
- obj.ExecCreate = function (resuri, putobj, callback, tag, pri, selectors) {
1471
- var objname = obj.GetNameFromUrl(resuri);
1472
- var data = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>" + _PutObjToSelectorsXml(selectors) + "</Header><Body><g:" + objname + " xmlns:g=\"" + resuri + "\">";
1473
- for (var n in putobj) { data += "<g:" + n + ">" + putobj[n] + "</g:" + n + ">" }
1474
- obj.PerformAjax(data + "</g:" + objname + "></Body></Envelope>", callback, tag, pri);
1475
- }
1476
-
1477
- // Perform a WSMAN DELETE operation
1478
- obj.ExecDelete = function (resuri, putobj, callback, tag, pri) {
1479
- var data = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>" + _PutObjToSelectorsXml(putobj) + "</Header><Body /></Envelope>";
1480
- obj.PerformAjax(data, callback, tag, pri);
1481
- }
1482
-
1483
- // Perform a WSMAN GET operation
1484
- obj.ExecGet = function (resuri, callback, tag, pri) {
1485
- obj.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>", callback, tag, pri);
1486
- }
1487
-
1488
- // Perform a WSMAN method call operation
1489
- obj.ExecMethod = function (resuri, method, args, callback, tag, pri, selectors) {
1490
- var argsxml = "";
1491
- for (var i in args) { if (args[i] != null) { if (Array.isArray(args[i])) { for (var x in args[i]) { argsxml += "<r:" + i + ">" + args[i][x] + "</r:" + i + ">"; } } else { argsxml += "<r:" + i + ">" + args[i] + "</r:" + i + ">"; } } }
1492
- obj.ExecMethodXml(resuri, method, argsxml, callback, tag, pri, selectors);
1493
- }
1494
-
1495
- // Perform a WSMAN method call operation. The arguments are already formatted in XML.
1496
- obj.ExecMethodXml = function (resuri, method, argsxml, callback, tag, pri, selectors) {
1497
- obj.PerformAjax(resuri + "/" + method + "</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>" + _PutObjToSelectorsXml(selectors) + "</Header><Body><r:" + method + '_INPUT' + " xmlns:r=\"" + resuri + "\">" + argsxml + "</r:" + method + "_INPUT></Body></Envelope>", callback, tag, pri);
1498
- }
1499
-
1500
- // Perform a WSMAN ENUM operation
1501
- obj.ExecEnum = function (resuri, callback, tag, pri) {
1502
- obj.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns=\"http://schemas.xmlsoap.org/ws/2004/09/enumeration\" /></Body></Envelope>", callback, tag, pri);
1503
- }
1504
-
1505
- // Perform a WSMAN PULL operation
1506
- obj.ExecPull = function (resuri, enumctx, callback, tag, pri) {
1507
- obj.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns=\"http://schemas.xmlsoap.org/ws/2004/09/enumeration\"><EnumerationContext>" + enumctx + "</EnumerationContext></Pull></Body></Envelope>", callback, tag, pri); // </EnumerationContext>--<MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters>--</Pull>
1508
- }
1509
-
1510
- // Private method
1511
- obj.ParseWsman = function (xml) {
1512
- try {
1513
- if (!xml.childNodes) xml = _turnToXml(xml);
1514
- var r = { Header:{} }, header = xml.getElementsByTagName("Header")[0], t;
1515
- if (!header) header = xml.getElementsByTagName("a:Header")[0];
1516
- if (!header) return null;
1517
- for (var i = 0; i < header.childNodes.length; i++) {
1518
- var child = header.childNodes[i];
1519
- r.Header[child.localName] = child.textContent;
1520
- }
1521
- var body = xml.getElementsByTagName("Body")[0];
1522
- if (!body) body = xml.getElementsByTagName("a:Body")[0];
1523
- if (!body) return null;
1524
- if (body.childNodes.length > 0) {
1525
- t = body.childNodes[0].localName;
1526
- if (t.indexOf("_OUTPUT") == t.length - 7) { t = t.substring(0, t.length - 7); }
1527
- r.Header['Method'] = t;
1528
- r.Body = _ParseWsmanRec(body.childNodes[0]);
1529
- }
1530
- return r;
1531
- } catch (e) {
1532
- console.log("Unable to parse XML: " + xml);
1533
- return null;
1534
- }
1535
- }
1536
-
1537
- // Private method
1538
- function _ParseWsmanRec(node) {
1539
- var data, r = {};
1540
- for (var i = 0; i < node.childNodes.length; i++) {
1541
- var child = node.childNodes[i];
1542
- if ((child.childElementCount == null) || (child.childElementCount == 0)) { data = child.textContent; } else { data = _ParseWsmanRec(child); }
1543
- if (data == 'true') data = true; // Convert 'true' into true
1544
- if (data == 'false') data = false; // Convert 'false' into false
1545
- if ((parseInt(data) + '') === data) data = parseInt(data); // Convert integers
1546
-
1547
- var childObj = data;
1548
- if ((child.attributes != null) && (child.attributes.length > 0)) {
1549
- childObj = { 'Value': data };
1550
- for(var j = 0; j < child.attributes.length; j++) {
1551
- childObj['@' + child.attributes[j].name] = child.attributes[j].value;
1552
- }
1553
- }
1554
-
1555
- if (r[child.localName] instanceof Array) { r[child.localName].push(childObj); }
1556
- else if (r[child.localName] == null) { r[child.localName] = childObj; }
1557
- else { r[child.localName] = [r[child.localName], childObj]; }
1558
- }
1559
- return r;
1560
- }
1561
-
1562
- function _PutObjToBodyXml(resuri, putObj) {
1563
- if (!resuri || putObj == null) return '';
1564
- var objname = obj.GetNameFromUrl(resuri);
1565
- var result = '<r:' + objname + ' xmlns:r="' + resuri + '">';
1566
-
1567
- for (var prop in putObj) {
1568
- if (!putObj.hasOwnProperty(prop) || prop.indexOf('__') === 0 || prop.indexOf('@') === 0) continue;
1569
- if (putObj[prop] == null || typeof putObj[prop] === 'function') continue;
1570
- if (typeof putObj[prop] === 'object' && putObj[prop]['ReferenceParameters']) {
1571
- result += '<r:' + prop + '><a:Address>' + putObj[prop].Address + '</a:Address><a:ReferenceParameters><w:ResourceURI>' + putObj[prop]['ReferenceParameters']["ResourceURI"] + '</w:ResourceURI><w:SelectorSet>';
1572
- var selectorArray = putObj[prop]['ReferenceParameters']['SelectorSet']['Selector'];
1573
- if (Array.isArray(selectorArray)) {
1574
- for (var i=0; i< selectorArray.length; i++) {
1575
- result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray[i]) + '>' + selectorArray[i]['Value'] + '</w:Selector>';
1576
- }
1577
- }
1578
- else {
1579
- result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray) + '>' + selectorArray['Value'] + '</w:Selector>';
1580
- }
1581
- result += '</w:SelectorSet></a:ReferenceParameters></r:' + prop + '>';
1582
- }
1583
- else {
1584
- if (Array.isArray(putObj[prop])) {
1585
- for (var i = 0; i < putObj[prop].length; i++) {
1586
- result += '<r:' + prop + '>' + putObj[prop][i].toString() + '</r:' + prop + '>';
1587
- }
1588
- } else {
1589
- result += '<r:' + prop + '>' + putObj[prop].toString() + '</r:' + prop + '>';
1590
- }
1591
- }
1592
- }
1593
-
1594
- result += '</r:' + objname + '>';
1595
- return result;
1596
- }
1597
-
1598
- /*
1599
- convert
1600
- { @Name: 'InstanceID', @AttrName: 'Attribute Value'}
1601
- into
1602
- ' Name="InstanceID" AttrName="Attribute Value" '
1603
- */
1604
- function _ObjectToXmlAttributes(objWithAttributes) {
1605
- if(!objWithAttributes) return '';
1606
- var result = ' ';
1607
- for (var propName in objWithAttributes) {
1608
- if (!objWithAttributes.hasOwnProperty(propName) || propName.indexOf('@') !== 0) continue;
1609
- result += propName.substring(1) + '="' + objWithAttributes[propName] + '" ';
1610
- }
1611
- return result;
1612
- }
1613
-
1614
- function _PutObjToSelectorsXml(selectorSet) {
1615
- if (!selectorSet) return '';
1616
- if (typeof selectorSet == 'string') return selectorSet;
1617
- if (selectorSet['InstanceID']) return "<w:SelectorSet><w:Selector Name=\"InstanceID\">" + selectorSet['InstanceID'] + "</w:Selector></w:SelectorSet>";
1618
- var result = '<w:SelectorSet>';
1619
- for(var propName in selectorSet) {
1620
- if (!selectorSet.hasOwnProperty(propName)) continue;
1621
- result += '<w:Selector Name="' + propName + '">';
1622
- if (selectorSet[propName]['ReferenceParameters']) {
1623
- result += '<a:EndpointReference>';
1624
- result += '<a:Address>' + selectorSet[propName]['Address'] + '</a:Address><a:ReferenceParameters><w:ResourceURI>' + selectorSet[propName]['ReferenceParameters']['ResourceURI'] + '</w:ResourceURI><w:SelectorSet>';
1625
- var selectorArray = selectorSet[propName]['ReferenceParameters']['SelectorSet']['Selector'];
1626
- if (Array.isArray(selectorArray)) {
1627
- for (var i = 0; i < selectorArray.length; i++) {
1628
- result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray[i]) + '>' + selectorArray[i]['Value'] + '</w:Selector>';
1629
- }
1630
- }
1631
- else {
1632
- result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray) + '>' + selectorArray['Value'] + '</w:Selector>';
1633
- }
1634
- result += '</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>';
1635
- } else {
1636
- result += selectorSet[propName];
1637
- }
1638
- result += '</w:Selector>';
1639
- }
1640
- result += '</w:SelectorSet>';
1641
- return result;
1642
- }
1643
-
1644
- function _turnToXml(text) {
1645
- if (window.DOMParser) {
1646
- return new DOMParser().parseFromString(text, "text/xml");
1647
- } else {
1648
- // Internet Explorer
1649
- var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
1650
- xmlDoc.async = false;
1651
- xmlDoc.loadXML(text);
1652
- return xmlDoc;
1653
- }
1654
- }
1655
-
1656
- /*
1657
- // This is a drop-in replacement to _turnToXml() that works without xml parser dependency.
1658
- Object.defineProperty(Array.prototype, "peek", { value: function () { return (this.length > 0 ? this[this.length - 1] : null); } });
1659
- function _treeBuilder() {
1660
- this.tree = [];
1661
- this.push = function (element) { this.tree.push(element); };
1662
- this.pop = function () { var element = this.tree.pop(); if (this.tree.length > 0) { var x = this.tree.peek(); x.childNodes.push(element); x.childElementCount = x.childNodes.length; } return (element); };
1663
- this.peek = function () { return (this.tree.peek()); }
1664
- this.addNamespace = function (prefix, namespace) { this.tree.peek().nsTable[prefix] = namespace; if (this.tree.peek().attributes.length > 0) { for (var i = 0; i < this.tree.peek().attributes; ++i) { var a = this.tree.peek().attributes[i]; if (prefix == '*' && a.name == a.localName) { a.namespace = namespace; } else if (prefix != '*' && a.name != a.localName) { var pfx = a.name.split(':')[0]; if (pfx == prefix) { a.namespace = namespace; } } } } }
1665
- this.getNamespace = function (prefix) { for (var i = this.tree.length - 1; i >= 0; --i) { if (this.tree[i].nsTable[prefix] != null) { return (this.tree[i].nsTable[prefix]); } } return null; }
1666
- }
1667
- function _turnToXml(text) { if (text == null) return null; return ({ childNodes: [_turnToXmlRec(text)], getElementsByTagName: _getElementsByTagName, getChildElementsByTagName: _getChildElementsByTagName, getElementsByTagNameNS: _getElementsByTagNameNS }); }
1668
- function _getElementsByTagNameNS(ns, name) { var ret = []; _xmlTraverseAllRec(this.childNodes, function (node) { if (node.localName == name && (node.namespace == ns || ns == '*')) { ret.push(node); } }); return ret; }
1669
- function _getElementsByTagName(name) { var ret = []; _xmlTraverseAllRec(this.childNodes, function (node) { if (node.localName == name) { ret.push(node); } }); return ret; }
1670
- function _getChildElementsByTagName(name) { var ret = []; if (this.childNodes != null) { for (var node in this.childNodes) { if (this.childNodes[node].localName == name) { ret.push(this.childNodes[node]); } } } return (ret); }
1671
- function _getChildElementsByTagNameNS(ns, name) { var ret = []; if (this.childNodes != null) { for (var node in this.childNodes) { if (this.childNodes[node].localName == name && (ns == '*' || this.childNodes[node].namespace == ns)) { ret.push(this.childNodes[node]); } } } return (ret); }
1672
- function _xmlTraverseAllRec(nodes, func) { for (var i in nodes) { func(nodes[i]); if (nodes[i].childNodes) { _xmlTraverseAllRec(nodes[i].childNodes, func); } } }
1673
- function _turnToXmlRec(text) {
1674
- var elementStack = new _treeBuilder(), lastElement = null, x1 = text.split('<'), ret = [], element = null, currentElementName = null;
1675
- for (var i in x1) {
1676
- var x2 = x1[i].split('>'), x3 = x2[0].split(' '), elementName = x3[0];
1677
- if ((elementName.length > 0) && (elementName[0] != '?')) {
1678
- if (elementName[0] != '/') {
1679
- var attributes = [], localName, localname2 = elementName.split(' ')[0].split(':'), localName = (localname2.length > 1) ? localname2[1] : localname2[0];
1680
- Object.defineProperty(attributes, "get",
1681
- {
1682
- value: function () {
1683
- if (arguments.length == 1) {
1684
- for (var a in this) { if (this[a].name == arguments[0]) { return (this[a]); } }
1685
- }
1686
- else if (arguments.length == 2) {
1687
- for (var a in this) { if (this[a].name == arguments[1] && (arguments[0] == '*' || this[a].namespace == arguments[0])) { return (this[a]); } }
1688
- }
1689
- else {
1690
- throw ('attributes.get(): Invalid number of parameters');
1691
- }
1692
- }
1693
- });
1694
- elementStack.push({ name: elementName, localName: localName, getChildElementsByTagName: _getChildElementsByTagName, getElementsByTagNameNS: _getElementsByTagNameNS, getChildElementsByTagNameNS: _getChildElementsByTagNameNS, attributes: attributes, childNodes: [], nsTable: {} });
1695
- // Parse Attributes
1696
- if (x3.length > 0) {
1697
- var skip = false;
1698
- for (var j in x3) {
1699
- if (x3[j] == '/') {
1700
- // This is an empty Element
1701
- elementStack.peek().namespace = elementStack.peek().name == elementStack.peek().localName ? elementStack.getNamespace('*') : elementStack.getNamespace(elementStack.peek().name.substring(0, elementStack.peek().name.indexOf(':')));
1702
- elementStack.peek().textContent = '';
1703
- lastElement = elementStack.pop();
1704
- skip = true;
1705
- break;
1706
- }
1707
- var k = x3[j].indexOf('=');
1708
- if (k > 0) {
1709
- var attrName = x3[j].substring(0, k);
1710
- var attrValue = x3[j].substring(k + 2, x3[j].length - 1);
1711
- var attrNS = elementStack.getNamespace('*');
1712
-
1713
- if (attrName == 'xmlns') {
1714
- elementStack.addNamespace('*', attrValue);
1715
- attrNS = attrValue;
1716
- } else if (attrName.startsWith('xmlns:')) {
1717
- elementStack.addNamespace(attrName.substring(6), attrValue);
1718
- } else {
1719
- var ax = attrName.split(':');
1720
- if (ax.length == 2) { attrName = ax[1]; attrNS = elementStack.getNamespace(ax[0]); }
1721
- }
1722
- var x = { name: attrName, value: attrValue }
1723
- if (attrNS != null) x.namespace = attrNS;
1724
- elementStack.peek().attributes.push(x);
1725
- }
1726
- }
1727
- if (skip) { continue; }
1728
- }
1729
- elementStack.peek().namespace = elementStack.peek().name == elementStack.peek().localName ? elementStack.getNamespace('*') : elementStack.getNamespace(elementStack.peek().name.substring(0, elementStack.peek().name.indexOf(':')));
1730
- if (x2[1]) { elementStack.peek().textContent = x2[1]; }
1731
- } else { lastElement = elementStack.pop(); }
1732
- }
1733
- }
1734
- return lastElement;
1735
- }
1736
- */
1737
-
1738
- return obj;
1739
-}
1740
-/**
1741
-* @fileoverview Intel(r) AMT Communication StackXX
1742
-* @author Ylian Saint-Hilaire
1743
-* @version v0.2.0b
1744
-*/
1745
-
1746
-/**
1747
- * Construct a AmtStackCreateService object, this ia the main Intel AMT communication stack.
1748
- * @constructor
1749
- */
1750
-function AmtStackCreateService(wsmanStack) {
1751
- var obj = new Object();
1752
- obj.wsman = wsmanStack;
1753
- obj.pfx = ["http://intel.com/wbem/wscim/1/amt-schema/1/", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/", "http://intel.com/wbem/wscim/1/ips-schema/1/"];
1754
- obj.PendingEnums = [];
1755
- obj.PendingBatchOperations = 0;
1756
- obj.ActiveEnumsCount = 0;
1757
- obj.MaxActiveEnumsCount = 1; // Maximum number of enumerations that can be done at the same time.
1758
- obj.onProcessChanged = null;
1759
- var _MaxProcess = 0;
1760
- var _LastProcess = 0;
1761
-
1762
- // Return the number of pending actions
1763
- obj.GetPendingActions = function () { return (obj.PendingEnums.length * 2) + (obj.ActiveEnumsCount) + obj.wsman.comm.PendingAjax.length + obj.wsman.comm.ActiveAjaxCount + obj.PendingBatchOperations; }
1764
-
1765
- // Private Method, Update the current processing status, this gives the application an idea of what progress is being done by the WSMAN stack
1766
- function _up() {
1767
- var x = obj.GetPendingActions();
1768
- if (_MaxProcess < x) _MaxProcess = x;
1769
- if (obj.onProcessChanged != null && _LastProcess != x) {
1770
- //console.log("Process Old=" + _LastProcess + ", New=" + x + ", PEnums=" + obj.PendingEnums.length + ", AEnums=" + obj.ActiveEnumsCount + ", PAjax=" + obj.wsman.comm.PendingAjax.length + ", AAjax=" + obj.wsman.comm.ActiveAjaxCount + ", PBatch=" + obj.PendingBatchOperations);
1771
- _LastProcess = x;
1772
- obj.onProcessChanged(x, _MaxProcess);
1773
- }
1774
- if (x == 0) _MaxProcess = 0;
1775
- }
1776
-
1777
- // Perform a WSMAN "SUBSCRIBE" operation.
1778
- obj.Subscribe = function (name, delivery, url, callback, tag, pri, selectors, opaque, user, pass) { obj.wsman.ExecSubscribe(obj.CompleteName(name), delivery, url, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri, selectors, opaque, user, pass); _up(); }
1779
-
1780
- // Perform a WSMAN "UNSUBSCRIBE" operation.
1781
- obj.UnSubscribe = function (name, callback, tag, pri, selectors) { obj.wsman.ExecUnSubscribe(obj.CompleteName(name), function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri, selectors); _up(); }
1782
-
1783
- // Perform a WSMAN "GET" operation.
1784
- obj.Get = function (name, callback, tag, pri) { obj.wsman.ExecGet(obj.CompleteName(name), function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri); _up(); }
1785
-
1786
- // Perform a WSMAN "PUT" operation.
1787
- obj.Put = function (name, putobj, callback, tag, pri, selectors) { obj.wsman.ExecPut(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri, selectors); _up(); }
1788
-
1789
- // Perform a WSMAN "CREATE" operation.
1790
- obj.Create = function (name, putobj, callback, tag, pri) { obj.wsman.ExecCreate(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri); _up(); }
1791
-
1792
- // Perform a WSMAN "DELETE" operation.
1793
- obj.Delete = function (name, putobj, callback, tag, pri) { obj.wsman.ExecDelete(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri); _up(); }
1794
-
1795
- // Perform a WSMAN method call operation.
1796
- obj.Exec = function (name, method, args, callback, tag, pri, selectors) { obj.wsman.ExecMethod(obj.CompleteName(name), method, args, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, obj.CompleteExecResponse(response), xstatus, tag); }, 0, pri, selectors); _up(); }
1797
-
1798
- // Perform a WSMAN method call operation.
1799
- obj.ExecWithXml = function (name, method, args, callback, tag, pri, selectors) { obj.wsman.ExecMethodXml(obj.CompleteName(name), method, execArgumentsToXml(args), function (ws, resuri, response, xstatus) { _up(); callback(obj, name, obj.CompleteExecResponse(response), xstatus, tag); }, 0, pri, selectors); _up(); }
1800
-
1801
- // Perform a WSMAN "ENUMERATE" operation.
1802
- obj.Enum = function (name, callback, tag, pri) {
1803
- if (obj.ActiveEnumsCount < obj.MaxActiveEnumsCount) {
1804
- obj.ActiveEnumsCount++; obj.wsman.ExecEnum(obj.CompleteName(name), function (ws, resuri, response, xstatus, tag0) { _up(); _EnumStartSink(name, response, callback, resuri, xstatus, tag0); }, tag, pri);
1805
- } else {
1806
- obj.PendingEnums.push([name, callback, tag, pri]);
1807
- }
1808
- _up();
1809
- }
1810
-
1811
- // Private method
1812
- function _EnumStartSink(name, response, callback, resuri, status, tag, pri) {
1813
- if (status != 200) { callback(obj, name, null, status, tag); _EnumDoNext(1); return; }
1814
- if (response == null || response.Header["Method"] != "EnumerateResponse" || !response.Body["EnumerationContext"]) { callback(obj, name, null, 603, tag); _EnumDoNext(1); return; }
1815
- var enumctx = response.Body["EnumerationContext"];
1816
- obj.wsman.ExecPull(resuri, enumctx, function (ws, resuri, response, xstatus) { _EnumContinueSink(name, response, callback, resuri, [], xstatus, tag, pri); });
1817
- }
1818
-
1819
- // Private method
1820
- function _EnumContinueSink(name, response, callback, resuri, items, status, tag, pri) {
1821
- if (status != 200) { callback(obj, name, null, status, tag); _EnumDoNext(1); return; }
1822
- if (response == null || response.Header["Method"] != "PullResponse") { callback(obj, name, null, 604, tag); _EnumDoNext(1); return; }
1823
- for (var i in response.Body["Items"]) {
1824
- if (response.Body["Items"][i] instanceof Array) {
1825
- for (var j in response.Body["Items"][i]) { if (typeof response.Body["Items"][i][j] != 'function') { items.push(response.Body["Items"][i][j]); } }
1826
- } else {
1827
- if (typeof response.Body["Items"][i] != 'function') { items.push(response.Body["Items"][i]); }
1828
- }
1829
- }
1830
- if (response.Body["EnumerationContext"]) {
1831
- var enumctx = response.Body["EnumerationContext"];
1832
- obj.wsman.ExecPull(resuri, enumctx, function (ws, resuri, response, xstatus) { _EnumContinueSink(name, response, callback, resuri, items, xstatus, tag, 1); });
1833
- } else {
1834
- _EnumDoNext(1);
1835
- callback(obj, name, items, status, tag);
1836
- _up();
1837
- }
1838
- }
1839
-
1840
- // Private method
1841
- function _EnumDoNext(dec) {
1842
- obj.ActiveEnumsCount -= dec;
1843
- if (obj.ActiveEnumsCount >= obj.MaxActiveEnumsCount || obj.PendingEnums.length == 0) return;
1844
- var x = obj.PendingEnums.shift();
1845
- obj.Enum(x[0], x[1], x[2]);
1846
- _EnumDoNext(0);
1847
- }
1848
-
1849
- // Perform a batch of WSMAN "ENUM" operations.
1850
- obj.BatchEnum = function (batchname, names, callback, tag, continueOnError, pri) {
1851
- obj.PendingBatchOperations += (names.length * 2);
1852
- _BatchNextEnum(batchname, Clone(names), callback, tag, {}, continueOnError, pri); _up();
1853
- }
1854
-
1855
- // Request each enum in the batch, stopping if something does not return status 200
1856
- function _BatchNextEnum(batchname, names, callback, tag, results, continueOnError, pri) {
1857
- obj.PendingBatchOperations -= 2;
1858
- var n = names.shift(), f = obj.Enum;
1859
- if (n[0] == '*') { f = obj.Get; n = n.substring(1); } // If the name starts with a star, do a GET instead of an ENUM. This will reduce round trips.
1860
- //console.log((f == obj.Get?'Get ':'Enum ') + n);
1861
- // Perform a GET/ENUM action
1862
- f(n, function (stack, name, responses, status, tag0) {
1863
- tag0[2][name] = { response: (responses==null?null:responses.Body), responses: responses, status: status };
1864
- if (tag0[1].length == 0 || status == 401 || (continueOnError != true && status != 200 && status != 400)) { obj.PendingBatchOperations -= (names.length * 2); _up(); callback(obj, batchname, tag0[2], status, tag); }
1865
- else { _up(); _BatchNextEnum(batchname, names, callback, tag, tag0[2], pri); }
1866
- }, [batchname, names, results], pri);
1867
- _up();
1868
- }
1869
-
1870
- // Perform a batch of WSMAN "GET" operations.
1871
- obj.BatchGet = function (batchname, names, callback, tag, pri) {
1872
- _FetchNext({ name: batchname, names: names, callback: callback, current: 0, responses: {}, tag: tag, pri: pri }); _up();
1873
- }
1874
-
1875
- // Private method
1876
- function _FetchNext(batch) {
1877
- if (batch.names.length <= batch.current) {
1878
- batch.callback(obj, batch.name, batch.responses, 200, batch.tag);
1879
- } else {
1880
- obj.wsman.ExecGet(obj.CompleteName(batch.names[batch.current]), function (ws, resuri, response, xstatus) { _Fetched(batch, response, xstatus); }, batch.pri);
1881
- batch.current++;
1882
- }
1883
- _up();
1884
- }
1885
-
1886
- // Private method
1887
- function _Fetched(batch, response, status) {
1888
- if (response == null || status != 200) {
1889
- batch.callback(obj, batch.name, null, status, batch.tag);
1890
- } else {
1891
- batch.responses[response.Header["Method"]] = response;
1892
- _FetchNext(batch);
1893
- }
1894
- }
1895
-
1896
- // Private method
1897
- obj.CompleteName = function(name) {
1898
- if (name.indexOf("AMT_") == 0) return obj.pfx[0] + name;
1899
- if (name.indexOf("CIM_") == 0) return obj.pfx[1] + name;
1900
- if (name.indexOf("IPS_") == 0) return obj.pfx[2] + name;
1901
- }
1902
-
1903
- obj.CompleteExecResponse = function (resp) {
1904
- if (resp && resp != null && resp.Body && (resp.Body["ReturnValue"] != undefined)) { resp.Body.ReturnValueStr = obj.AmtStatusToStr(resp.Body["ReturnValue"]); }
1905
- return resp;
1906
- }
1907
-
1908
- obj.RequestPowerStateChange = function (PowerState, callback_func) {
1909
- obj.CIM_PowerManagementService_RequestPowerStateChange(PowerState, "<Address xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"><ResourceURI xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\"><Selector Name=\"CreationClassName\">CIM_ComputerSystem</Selector><Selector Name=\"Name\">ManagedSystem</Selector></SelectorSet></ReferenceParameters>", null, null, callback_func);
1910
- }
1911
-
1912
- obj.SetBootConfigRole = function (Role, callback_func) {
1913
- obj.CIM_BootService_SetBootConfigRole("<Address xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"><ResourceURI xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\"><Selector Name=\"InstanceID\">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>", Role, callback_func);
1914
- }
1915
-
1916
- // Cancel all pending queries with given status
1917
- obj.CancelAllQueries = function (s) {
1918
- obj.wsman.CancelAllQueries(s);
1919
- }
1920
-
1921
- // Auto generated methods
1922
- obj.AMT_AgentPresenceWatchdog_RegisterAgent = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdog", "RegisterAgent", {}, callback_func); }
1923
- obj.AMT_AgentPresenceWatchdog_AssertPresence = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdog", "AssertPresence", { "SequenceNumber": SequenceNumber }, callback_func); }
1924
- obj.AMT_AgentPresenceWatchdog_AssertShutdown = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdog", "AssertShutdown", { "SequenceNumber": SequenceNumber }, callback_func); }
1925
- obj.AMT_AgentPresenceWatchdog_AddAction = function (OldState, NewState, EventOnTransition, ActionSd, ActionEac, callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "AddAction", { "OldState": OldState, "NewState": NewState, "EventOnTransition": EventOnTransition, "ActionSd": ActionSd, "ActionEac": ActionEac }, callback_func, tag, pri, selectors); }
1926
- obj.AMT_AgentPresenceWatchdog_DeleteAllActions = function (callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "DeleteAllActions", {}, callback_func, tag, pri, selectors); }
1927
- obj.AMT_AgentPresenceWatchdogAction_GetActionEac = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdogAction", "GetActionEac", {}, callback_func); }
1928
- obj.AMT_AgentPresenceWatchdogVA_RegisterAgent = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "RegisterAgent", {}, callback_func); }
1929
- obj.AMT_AgentPresenceWatchdogVA_AssertPresence = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AssertPresence", { "SequenceNumber": SequenceNumber }, callback_func); }
1930
- obj.AMT_AgentPresenceWatchdogVA_AssertShutdown = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AssertShutdown", { "SequenceNumber": SequenceNumber }, callback_func); }
1931
- obj.AMT_AgentPresenceWatchdogVA_AddAction = function (OldState, NewState, EventOnTransition, ActionSd, ActionEac, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AddAction", { "OldState": OldState, "NewState": NewState, "EventOnTransition": EventOnTransition, "ActionSd": ActionSd, "ActionEac": ActionEac }, callback_func); }
1932
- obj.AMT_AgentPresenceWatchdogVA_DeleteAllActions = function (_method_dummy, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "DeleteAllActions", { "_method_dummy": _method_dummy }, callback_func); }
1933
- obj.AMT_AuditLog_ClearLog = function (callback_func) { obj.Exec("AMT_AuditLog", "ClearLog", {}, callback_func); }
1934
- obj.AMT_AuditLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_AuditLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
1935
- obj.AMT_AuditLog_ReadRecords = function (StartIndex, callback_func, tag) { obj.Exec("AMT_AuditLog", "ReadRecords", { "StartIndex": StartIndex }, callback_func, tag); }
1936
- obj.AMT_AuditLog_SetAuditLock = function (LockTimeoutInSeconds, Flag, Handle, callback_func) { obj.Exec("AMT_AuditLog", "SetAuditLock", { "LockTimeoutInSeconds": LockTimeoutInSeconds, "Flag": Flag, "Handle": Handle }, callback_func); }
1937
- obj.AMT_AuditLog_ExportAuditLogSignature = function (SigningMechanism, callback_func) { obj.Exec("AMT_AuditLog", "ExportAuditLogSignature", { "SigningMechanism": SigningMechanism }, callback_func); }
1938
- obj.AMT_AuditLog_SetSigningKeyMaterial = function (SigningMechanismType, SigningKey, LengthOfCertificates, Certificates, callback_func) { obj.Exec("AMT_AuditLog", "SetSigningKeyMaterial", { "SigningMechanismType": SigningMechanismType, "SigningKey": SigningKey, "LengthOfCertificates": LengthOfCertificates, "Certificates": Certificates }, callback_func); }
1939
- obj.AMT_AuditPolicyRule_SetAuditPolicy = function (Enable, AuditedAppID, EventID, PolicyType, callback_func) { obj.Exec("AMT_AuditPolicyRule", "SetAuditPolicy", { "Enable": Enable, "AuditedAppID": AuditedAppID, "EventID": EventID, "PolicyType": PolicyType }, callback_func); }
1940
- obj.AMT_AuditPolicyRule_SetAuditPolicyBulk = function (Enable, AuditedAppID, EventID, PolicyType, callback_func) { obj.Exec("AMT_AuditPolicyRule", "SetAuditPolicyBulk", { "Enable": Enable, "AuditedAppID": AuditedAppID, "EventID": EventID, "PolicyType": PolicyType }, callback_func); }
1941
- obj.AMT_AuthorizationService_AddUserAclEntryEx = function (DigestUsername, DigestPassword, KerberosUserSid, AccessPermission, Realms, callback_func) { obj.Exec("AMT_AuthorizationService", "AddUserAclEntryEx", { "DigestUsername": DigestUsername, "DigestPassword": DigestPassword, "KerberosUserSid": KerberosUserSid, "AccessPermission": AccessPermission, "Realms": Realms }, callback_func); }
1942
- obj.AMT_AuthorizationService_EnumerateUserAclEntries = function (StartIndex, callback_func) { obj.Exec("AMT_AuthorizationService", "EnumerateUserAclEntries", { "StartIndex": StartIndex }, callback_func); }
1943
- obj.AMT_AuthorizationService_GetUserAclEntryEx = function (Handle, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "GetUserAclEntryEx", { "Handle": Handle }, callback_func, tag); }
1944
- obj.AMT_AuthorizationService_UpdateUserAclEntryEx = function (Handle, DigestUsername, DigestPassword, KerberosUserSid, AccessPermission, Realms, callback_func) { obj.Exec("AMT_AuthorizationService", "UpdateUserAclEntryEx", { "Handle": Handle, "DigestUsername": DigestUsername, "DigestPassword": DigestPassword, "KerberosUserSid": KerberosUserSid, "AccessPermission": AccessPermission, "Realms": Realms }, callback_func); }
1945
- obj.AMT_AuthorizationService_RemoveUserAclEntry = function (Handle, callback_func) { obj.Exec("AMT_AuthorizationService", "RemoveUserAclEntry", { "Handle": Handle }, callback_func); }
1946
- obj.AMT_AuthorizationService_SetAdminAclEntryEx = function (Username, DigestPassword, callback_func) { obj.Exec("AMT_AuthorizationService", "SetAdminAclEntryEx", { "Username": Username, "DigestPassword": DigestPassword }, callback_func); }
1947
- obj.AMT_AuthorizationService_GetAdminAclEntry = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminAclEntry", {}, callback_func); }
1948
- obj.AMT_AuthorizationService_GetAdminAclEntryStatus = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminAclEntryStatus", {}, callback_func); }
1949
- obj.AMT_AuthorizationService_GetAdminNetAclEntryStatus = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminNetAclEntryStatus", {}, callback_func); }
1950
- obj.AMT_AuthorizationService_SetAclEnabledState = function (Handle, Enabled, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "SetAclEnabledState", { "Handle": Handle, "Enabled": Enabled }, callback_func, tag); }
1951
- obj.AMT_AuthorizationService_GetAclEnabledState = function (Handle, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "GetAclEnabledState", { "Handle": Handle }, callback_func, tag); }
1952
- obj.AMT_EndpointAccessControlService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
1953
- obj.AMT_EndpointAccessControlService_GetPosture = function (PostureType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetPosture", { "PostureType": PostureType }, callback_func); }
1954
- obj.AMT_EndpointAccessControlService_GetPostureHash = function (PostureType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetPostureHash", { "PostureType": PostureType }, callback_func); }
1955
- obj.AMT_EndpointAccessControlService_UpdatePostureState = function (UpdateType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "UpdatePostureState", { "UpdateType": UpdateType }, callback_func); }
1956
- obj.AMT_EndpointAccessControlService_GetEacOptions = function (callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetEacOptions", {}, callback_func); }
1957
- obj.AMT_EndpointAccessControlService_SetEacOptions = function (EacVendors, PostureHashAlgorithm, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "SetEacOptions", { "EacVendors": EacVendors, "PostureHashAlgorithm": PostureHashAlgorithm }, callback_func); }
1958
- obj.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy = function (Policy, callback_func) { obj.Exec("AMT_EnvironmentDetectionSettingData", "SetSystemDefensePolicy", { "Policy": Policy }, callback_func); }
1959
- obj.AMT_EnvironmentDetectionSettingData_EnableVpnRouting = function (Enable, callback_func) { obj.Exec("AMT_EnvironmentDetectionSettingData", "EnableVpnRouting", { "Enable": Enable }, callback_func); }
1960
- obj.AMT_EthernetPortSettings_SetLinkPreference = function (LinkPreference, Timeout, callback_func) { obj.Exec("AMT_EthernetPortSettings", "SetLinkPreference", { "LinkPreference": LinkPreference, "Timeout": Timeout }, callback_func); }
1961
- obj.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats = function (SelectedStatistics, callback_func) { obj.Exec("AMT_HeuristicPacketFilterStatistics", "ResetSelectedStats", { "SelectedStatistics": SelectedStatistics }, callback_func); }
1962
- obj.AMT_KerberosSettingData_GetCredentialCacheState = function (callback_func) { obj.Exec("AMT_KerberosSettingData", "GetCredentialCacheState", {}, callback_func); }
1963
- obj.AMT_KerberosSettingData_SetCredentialCacheState = function (Enable, callback_func) { obj.Exec("AMT_KerberosSettingData", "SetCredentialCacheState", { "Enable": Enable }, callback_func); }
1964
- obj.AMT_MessageLog_CancelIteration = function (IterationIdentifier, callback_func) { obj.Exec("AMT_MessageLog", "CancelIteration", { "IterationIdentifier": IterationIdentifier }, callback_func); }
1965
- obj.AMT_MessageLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_MessageLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
1966
- obj.AMT_MessageLog_ClearLog = function (callback_func) { obj.Exec("AMT_MessageLog", "ClearLog", { }, callback_func); }
1967
- obj.AMT_MessageLog_GetRecords = function (IterationIdentifier, MaxReadRecords, callback_func, tag) { obj.Exec("AMT_MessageLog", "GetRecords", { "IterationIdentifier": IterationIdentifier, "MaxReadRecords": MaxReadRecords }, callback_func, tag); }
1968
- obj.AMT_MessageLog_GetRecord = function (IterationIdentifier, PositionToNext, callback_func) { obj.Exec("AMT_MessageLog", "GetRecord", { "IterationIdentifier": IterationIdentifier, "PositionToNext": PositionToNext }, callback_func); }
1969
- obj.AMT_MessageLog_PositionAtRecord = function (IterationIdentifier, MoveAbsolute, RecordNumber, callback_func) { obj.Exec("AMT_MessageLog", "PositionAtRecord", { "IterationIdentifier": IterationIdentifier, "MoveAbsolute": MoveAbsolute, "RecordNumber": RecordNumber }, callback_func); }
1970
- obj.AMT_MessageLog_PositionToFirstRecord = function (callback_func, tag) { obj.Exec("AMT_MessageLog", "PositionToFirstRecord", {}, callback_func, tag); }
1971
- obj.AMT_MessageLog_FreezeLog = function (Freeze, callback_func) { obj.Exec("AMT_MessageLog", "FreezeLog", { "Freeze": Freeze }, callback_func); }
1972
- obj.AMT_PublicKeyManagementService_AddCRL = function (Url, SerialNumbers, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddCRL", { "Url": Url, "SerialNumbers": SerialNumbers }, callback_func); }
1973
- obj.AMT_PublicKeyManagementService_ResetCRLList = function (_method_dummy, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "ResetCRLList", { "_method_dummy": _method_dummy }, callback_func); }
1974
- obj.AMT_PublicKeyManagementService_AddCertificate = function (CertificateBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddCertificate", { "CertificateBlob": CertificateBlob }, callback_func); }
1975
- obj.AMT_PublicKeyManagementService_AddTrustedRootCertificate = function (CertificateBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddTrustedRootCertificate", { "CertificateBlob": CertificateBlob }, callback_func); }
1976
- obj.AMT_PublicKeyManagementService_AddKey = function (KeyBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddKey", { "KeyBlob": KeyBlob }, callback_func); }
1977
- obj.AMT_PublicKeyManagementService_GeneratePKCS10Request = function (KeyPair, DNName, Usage, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GeneratePKCS10Request", { "KeyPair": KeyPair, "DNName": DNName, "Usage": Usage }, callback_func); }
1978
- obj.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx = function (KeyPair, SigningAlgorithm, NullSignedCertificateRequest, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GeneratePKCS10RequestEx", { "KeyPair": KeyPair, "SigningAlgorithm": SigningAlgorithm, "NullSignedCertificateRequest": NullSignedCertificateRequest }, callback_func); }
1979
- obj.AMT_PublicKeyManagementService_GenerateKeyPair = function (KeyAlgorithm, KeyLength, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GenerateKeyPair", { "KeyAlgorithm": KeyAlgorithm, "KeyLength": KeyLength }, callback_func); }
1980
- obj.AMT_RedirectionService_RequestStateChange = function (RequestedState, callback_func) { obj.Exec("AMT_RedirectionService", "RequestStateChange", { "RequestedState": RequestedState }, callback_func); }
1981
- obj.AMT_RedirectionService_TerminateSession = function (SessionType, callback_func) { obj.Exec("AMT_RedirectionService", "TerminateSession", { "SessionType": SessionType }, callback_func); }
1982
- obj.AMT_RemoteAccessService_AddMpServer = function (AccessInfo, InfoFormat, Port, AuthMethod, Certificate, Username, Password, CN, callback_func) { obj.Exec("AMT_RemoteAccessService", "AddMpServer", { "AccessInfo": AccessInfo, "InfoFormat": InfoFormat, "Port": Port, "AuthMethod": AuthMethod, "Certificate": Certificate, "Username": Username, "Password": Password, "CN": CN }, callback_func); }
1983
- obj.AMT_RemoteAccessService_AddRemoteAccessPolicyRule = function (Trigger, TunnelLifeTime, ExtendedData, MpServer, callback_func) { obj.Exec("AMT_RemoteAccessService", "AddRemoteAccessPolicyRule", { "Trigger": Trigger, "TunnelLifeTime": TunnelLifeTime, "ExtendedData": ExtendedData, "MpServer": MpServer }, callback_func); }
1984
- obj.AMT_RemoteAccessService_CloseRemoteAccessConnection = function (_method_dummy, callback_func) { obj.Exec("AMT_RemoteAccessService", "CloseRemoteAccessConnection", { "_method_dummy": _method_dummy }, callback_func); }
1985
- obj.AMT_SetupAndConfigurationService_CommitChanges = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "CommitChanges", { "_method_dummy": _method_dummy }, callback_func); }
1986
- obj.AMT_SetupAndConfigurationService_Unprovision = function (ProvisioningMode, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "Unprovision", { "ProvisioningMode": ProvisioningMode }, callback_func); }
1987
- obj.AMT_SetupAndConfigurationService_PartialUnprovision = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "PartialUnprovision", { "_method_dummy": _method_dummy }, callback_func); }
1988
- obj.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "ResetFlashWearOutProtection", { "_method_dummy": _method_dummy }, callback_func); }
1989
- obj.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod = function (Duration, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "ExtendProvisioningPeriod", { "Duration": Duration }, callback_func); }
1990
- obj.AMT_SetupAndConfigurationService_SetMEBxPassword = function (Password, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "SetMEBxPassword", { "Password": Password }, callback_func); }
1991
- obj.AMT_SetupAndConfigurationService_SetTLSPSK = function (PID, PPS, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "SetTLSPSK", { "PID": PID, "PPS": PPS }, callback_func); }
1992
- obj.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetProvisioningAuditRecord", {}, callback_func); }
1993
- obj.AMT_SetupAndConfigurationService_GetUuid = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetUuid", {}, callback_func); }
1994
- obj.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetUnprovisionBlockingComponents", {}, callback_func); }
1995
- obj.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2 = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetProvisioningAuditRecordV2", {}, callback_func); }
1996
- obj.AMT_SystemDefensePolicy_GetTimeout = function (callback_func) { obj.Exec("AMT_SystemDefensePolicy", "GetTimeout", {}, callback_func); }
1997
- obj.AMT_SystemDefensePolicy_SetTimeout = function (Timeout, callback_func) { obj.Exec("AMT_SystemDefensePolicy", "SetTimeout", { "Timeout": Timeout }, callback_func); }
1998
- obj.AMT_SystemDefensePolicy_UpdateStatistics = function (NetworkInterface, ResetOnRead, callback_func, tag, pri, selectors) { obj.Exec("AMT_SystemDefensePolicy", "UpdateStatistics", { "NetworkInterface": NetworkInterface, "ResetOnRead": ResetOnRead }, callback_func, tag, pri, selectors); }
1999
- obj.AMT_SystemPowerScheme_SetPowerScheme = function (callback_func, schemeInstanceId, tag) { obj.Exec("AMT_SystemPowerScheme", "SetPowerScheme", {}, callback_func, tag, 0, { "InstanceID": schemeInstanceId }); }
2000
- obj.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch = function (callback_func, tag) { obj.Exec("AMT_TimeSynchronizationService", "GetLowAccuracyTimeSynch", {}, callback_func, tag); }
2001
- obj.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch = function (Ta0, Tm1, Tm2, callback_func, tag) { obj.Exec("AMT_TimeSynchronizationService", "SetHighAccuracyTimeSynch", { "Ta0": Ta0, "Tm1": Tm1, "Tm2": Tm2 }, callback_func, tag); }
2002
- obj.AMT_UserInitiatedConnectionService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_UserInitiatedConnectionService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2003
- obj.AMT_WebUIService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_WebUIService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2004
- obj.AMT_WiFiPortConfigurationService_AddWiFiSettings = function (WiFiEndpoint, WiFiEndpointSettingsInput, IEEE8021xSettingsInput, ClientCredential, CACredential, callback_func) { obj.ExecWithXml("AMT_WiFiPortConfigurationService", "AddWiFiSettings", { "WiFiEndpoint": WiFiEndpoint, "WiFiEndpointSettingsInput": WiFiEndpointSettingsInput, "IEEE8021xSettingsInput": IEEE8021xSettingsInput, "ClientCredential": ClientCredential, "CACredential": CACredential }, callback_func); }
2005
- obj.AMT_WiFiPortConfigurationService_UpdateWiFiSettings = function (WiFiEndpointSettings, WiFiEndpointSettingsInput, IEEE8021xSettingsInput, ClientCredential, CACredential, callback_func) { obj.ExecWithXml("AMT_WiFiPortConfigurationService", "UpdateWiFiSettings", { "WiFiEndpointSettings": WiFiEndpointSettings, "WiFiEndpointSettingsInput": WiFiEndpointSettingsInput, "IEEE8021xSettingsInput": IEEE8021xSettingsInput, "ClientCredential": ClientCredential, "CACredential": CACredential }, callback_func); }
2006
- obj.AMT_WiFiPortConfigurationService_DeleteAllITProfiles = function (_method_dummy, callback_func) { obj.Exec("AMT_WiFiPortConfigurationService", "DeleteAllITProfiles", { "_method_dummy": _method_dummy }, callback_func); }
2007
- obj.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles = function (_method_dummy, callback_func) { obj.Exec("AMT_WiFiPortConfigurationService", "DeleteAllUserProfiles", { "_method_dummy": _method_dummy }, callback_func); }
2008
- obj.CIM_Account_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Account", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2009
- obj.CIM_AccountManagementService_CreateAccount = function (System, AccountTemplate, callback_func) { obj.Exec("CIM_AccountManagementService", "CreateAccount", { "System": System, "AccountTemplate": AccountTemplate }, callback_func); }
2010
- obj.CIM_BootConfigSetting_ChangeBootOrder = function (Source, callback_func) { obj.Exec("CIM_BootConfigSetting", "ChangeBootOrder", { "Source": Source }, callback_func); }
2011
- obj.CIM_BootService_SetBootConfigRole = function (BootConfigSetting, Role, callback_func) { obj.Exec("CIM_BootService", "SetBootConfigRole", { "BootConfigSetting": BootConfigSetting, "Role": Role }, callback_func, 0, 1); }
2012
- obj.CIM_Card_ConnectorPower = function (Connector, PoweredOn, callback_func) { obj.Exec("CIM_Card", "ConnectorPower", { "Connector": Connector, "PoweredOn": PoweredOn }, callback_func); }
2013
- obj.CIM_Card_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_Card", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2014
- obj.CIM_Chassis_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_Chassis", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2015
- obj.CIM_Fan_SetSpeed = function (DesiredSpeed, callback_func) { obj.Exec("CIM_Fan", "SetSpeed", { "DesiredSpeed": DesiredSpeed }, callback_func); }
2016
- obj.CIM_KVMRedirectionSAP_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_KVMRedirectionSAP", "RequestStateChange", { "RequestedState": RequestedState/*, "TimeoutPeriod": TimeoutPeriod */}, callback_func); }
2017
- obj.CIM_MediaAccessDevice_LockMedia = function (Lock, callback_func) { obj.Exec("CIM_MediaAccessDevice", "LockMedia", { "Lock": Lock }, callback_func); }
2018
- obj.CIM_MediaAccessDevice_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_MediaAccessDevice", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2019
- obj.CIM_MediaAccessDevice_Reset = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "Reset", {}, callback_func); }
2020
- obj.CIM_MediaAccessDevice_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_MediaAccessDevice", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2021
- obj.CIM_MediaAccessDevice_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_MediaAccessDevice", "OnlineDevice", { "Online": Online }, callback_func); }
2022
- obj.CIM_MediaAccessDevice_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_MediaAccessDevice", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2023
- obj.CIM_MediaAccessDevice_SaveProperties = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "SaveProperties", {}, callback_func); }
2024
- obj.CIM_MediaAccessDevice_RestoreProperties = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "RestoreProperties", {}, callback_func); }
2025
- obj.CIM_MediaAccessDevice_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_MediaAccessDevice", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2026
- obj.CIM_PhysicalFrame_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_PhysicalFrame", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2027
- obj.CIM_PhysicalPackage_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_PhysicalPackage", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2028
- obj.CIM_PowerManagementService_RequestPowerStateChange = function (PowerState, ManagedElement, Time, TimeoutPeriod, callback_func) { obj.Exec("CIM_PowerManagementService", "RequestPowerStateChange", { "PowerState": PowerState, "ManagedElement": ManagedElement, "Time": Time, "TimeoutPeriod": TimeoutPeriod }, callback_func, 0, 1); }
2029
- obj.CIM_PowerSupply_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_PowerSupply", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2030
- obj.CIM_PowerSupply_Reset = function (callback_func) { obj.Exec("CIM_PowerSupply", "Reset", {}, callback_func); }
2031
- obj.CIM_PowerSupply_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_PowerSupply", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2032
- obj.CIM_PowerSupply_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_PowerSupply", "OnlineDevice", { "Online": Online }, callback_func); }
2033
- obj.CIM_PowerSupply_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_PowerSupply", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2034
- obj.CIM_PowerSupply_SaveProperties = function (callback_func) { obj.Exec("CIM_PowerSupply", "SaveProperties", {}, callback_func); }
2035
- obj.CIM_PowerSupply_RestoreProperties = function (callback_func) { obj.Exec("CIM_PowerSupply", "RestoreProperties", {}, callback_func); }
2036
- obj.CIM_PowerSupply_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_PowerSupply", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2037
- obj.CIM_Processor_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Processor", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2038
- obj.CIM_Processor_Reset = function (callback_func) { obj.Exec("CIM_Processor", "Reset", {}, callback_func); }
2039
- obj.CIM_Processor_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Processor", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2040
- obj.CIM_Processor_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Processor", "OnlineDevice", { "Online": Online }, callback_func); }
2041
- obj.CIM_Processor_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Processor", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2042
- obj.CIM_Processor_SaveProperties = function (callback_func) { obj.Exec("CIM_Processor", "SaveProperties", {}, callback_func); }
2043
- obj.CIM_Processor_RestoreProperties = function (callback_func) { obj.Exec("CIM_Processor", "RestoreProperties", {}, callback_func); }
2044
- obj.CIM_Processor_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Processor", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2045
- obj.CIM_RecordLog_ClearLog = function (callback_func) { obj.Exec("CIM_RecordLog", "ClearLog", {}, callback_func); }
2046
- obj.CIM_RecordLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_RecordLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2047
- obj.CIM_RedirectionService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_RedirectionService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2048
- obj.CIM_Sensor_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Sensor", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2049
- obj.CIM_Sensor_Reset = function (callback_func) { obj.Exec("CIM_Sensor", "Reset", {}, callback_func); }
2050
- obj.CIM_Sensor_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Sensor", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2051
- obj.CIM_Sensor_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Sensor", "OnlineDevice", { "Online": Online }, callback_func); }
2052
- obj.CIM_Sensor_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Sensor", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2053
- obj.CIM_Sensor_SaveProperties = function (callback_func) { obj.Exec("CIM_Sensor", "SaveProperties", {}, callback_func); }
2054
- obj.CIM_Sensor_RestoreProperties = function (callback_func) { obj.Exec("CIM_Sensor", "RestoreProperties", {}, callback_func); }
2055
- obj.CIM_Sensor_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Sensor", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2056
- obj.CIM_StatisticalData_ResetSelectedStats = function (SelectedStatistics, callback_func) { obj.Exec("CIM_StatisticalData", "ResetSelectedStats", { "SelectedStatistics": SelectedStatistics }, callback_func); }
2057
- obj.CIM_Watchdog_KeepAlive = function (callback_func) { obj.Exec("CIM_Watchdog", "KeepAlive", {}, callback_func); }
2058
- obj.CIM_Watchdog_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Watchdog", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2059
- obj.CIM_Watchdog_Reset = function (callback_func) { obj.Exec("CIM_Watchdog", "Reset", {}, callback_func); }
2060
- obj.CIM_Watchdog_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Watchdog", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2061
- obj.CIM_Watchdog_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Watchdog", "OnlineDevice", { "Online": Online }, callback_func); }
2062
- obj.CIM_Watchdog_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Watchdog", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2063
- obj.CIM_Watchdog_SaveProperties = function (callback_func) { obj.Exec("CIM_Watchdog", "SaveProperties", {}, callback_func); }
2064
- obj.CIM_Watchdog_RestoreProperties = function (callback_func) { obj.Exec("CIM_Watchdog", "RestoreProperties", {}, callback_func); }
2065
- obj.CIM_Watchdog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Watchdog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2066
- obj.CIM_WiFiPort_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_WiFiPort", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2067
- obj.CIM_WiFiPort_Reset = function (callback_func) { obj.Exec("CIM_WiFiPort", "Reset", {}, callback_func); }
2068
- obj.CIM_WiFiPort_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_WiFiPort", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2069
- obj.CIM_WiFiPort_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_WiFiPort", "OnlineDevice", { "Online": Online }, callback_func); }
2070
- obj.CIM_WiFiPort_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_WiFiPort", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2071
- obj.CIM_WiFiPort_SaveProperties = function (callback_func) { obj.Exec("CIM_WiFiPort", "SaveProperties", {}, callback_func); }
2072
- obj.CIM_WiFiPort_RestoreProperties = function (callback_func) { obj.Exec("CIM_WiFiPort", "RestoreProperties", {}, callback_func); }
2073
- obj.CIM_WiFiPort_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_WiFiPort", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2074
- obj.IPS_HostBasedSetupService_Setup = function (NetAdminPassEncryptionType, NetworkAdminPassword, McNonce, Certificate, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "Setup", { "NetAdminPassEncryptionType": NetAdminPassEncryptionType, "NetworkAdminPassword": NetworkAdminPassword, "McNonce": McNonce, "Certificate": Certificate, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
2075
- obj.IPS_HostBasedSetupService_AddNextCertInChain = function (NextCertificate, IsLeafCertificate, IsRootCertificate, callback_func) { obj.Exec("IPS_HostBasedSetupService", "AddNextCertInChain", { "NextCertificate": NextCertificate, "IsLeafCertificate": IsLeafCertificate, "IsRootCertificate": IsRootCertificate }, callback_func); }
2076
- obj.IPS_HostBasedSetupService_AdminSetup = function (NetAdminPassEncryptionType, NetworkAdminPassword, McNonce, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "AdminSetup", { "NetAdminPassEncryptionType": NetAdminPassEncryptionType, "NetworkAdminPassword": NetworkAdminPassword, "McNonce": McNonce, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
2077
- obj.IPS_HostBasedSetupService_UpgradeClientToAdmin = function (McNonce, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "UpgradeClientToAdmin", { "McNonce": McNonce, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
2078
- obj.IPS_HostBasedSetupService_DisableClientControlMode = function (_method_dummy, callback_func) { obj.Exec("IPS_HostBasedSetupService", "DisableClientControlMode", { "_method_dummy": _method_dummy }, callback_func); }
2079
- obj.IPS_KVMRedirectionSettingData_TerminateSession = function (callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "TerminateSession", {}, callback_func); }
2080
- obj.IPS_KVMRedirectionSettingData_DataChannelRead = function (callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "DataChannelRead", {}, callback_func); }
2081
- obj.IPS_KVMRedirectionSettingData_DataChannelWrite = function (Data, callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "DataChannelWrite", { "DataMessage": Data }, callback_func); }
2082
- obj.IPS_OptInService_StartOptIn = function (callback_func) { obj.Exec("IPS_OptInService", "StartOptIn", {}, callback_func); }
2083
- obj.IPS_OptInService_CancelOptIn = function (callback_func) { obj.Exec("IPS_OptInService", "CancelOptIn", {}, callback_func); }
2084
- obj.IPS_OptInService_SendOptInCode = function (OptInCode, callback_func) { obj.Exec("IPS_OptInService", "SendOptInCode", { "OptInCode": OptInCode }, callback_func); }
2085
- obj.IPS_OptInService_StartService = function (callback_func) { obj.Exec("IPS_OptInService", "StartService", {}, callback_func); }
2086
- obj.IPS_OptInService_StopService = function (callback_func) { obj.Exec("IPS_OptInService", "StopService", {}, callback_func); }
2087
- obj.IPS_OptInService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_OptInService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2088
- obj.IPS_ProvisioningRecordLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_ProvisioningRecordLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2089
- obj.IPS_ProvisioningRecordLog_ClearLog = function (_method_dummy, callback_func) { obj.Exec("IPS_ProvisioningRecordLog", "ClearLog", { "_method_dummy": _method_dummy }, callback_func); }
2090
- obj.IPS_SecIOService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_SecIOService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2091
-
2092
- obj.AmtStatusToStr = function (code) { if (obj.AmtStatusCodes[code]) return obj.AmtStatusCodes[code]; else return "UNKNOWN_ERROR" }
2093
- obj.AmtStatusCodes = {
2094
- 0x0000: "SUCCESS",
2095
- 0x0001: "INTERNAL_ERROR",
2096
- 0x0002: "NOT_READY",
2097
- 0x0003: "INVALID_PT_MODE",
2098
- 0x0004: "INVALID_MESSAGE_LENGTH",
2099
- 0x0005: "TABLE_FINGERPRINT_NOT_AVAILABLE",
2100
- 0x0006: "INTEGRITY_CHECK_FAILED",
2101
- 0x0007: "UNSUPPORTED_ISVS_VERSION",
2102
- 0x0008: "APPLICATION_NOT_REGISTERED",
2103
- 0x0009: "INVALID_REGISTRATION_DATA",
2104
- 0x000A: "APPLICATION_DOES_NOT_EXIST",
2105
- 0x000B: "NOT_ENOUGH_STORAGE",
2106
- 0x000C: "INVALID_NAME",
2107
- 0x000D: "BLOCK_DOES_NOT_EXIST",
2108
- 0x000E: "INVALID_BYTE_OFFSET",
2109
- 0x000F: "INVALID_BYTE_COUNT",
2110
- 0x0010: "NOT_PERMITTED",
2111
- 0x0011: "NOT_OWNER",
2112
- 0x0012: "BLOCK_LOCKED_BY_OTHER",
2113
- 0x0013: "BLOCK_NOT_LOCKED",
2114
- 0x0014: "INVALID_GROUP_PERMISSIONS",
2115
- 0x0015: "GROUP_DOES_NOT_EXIST",
2116
- 0x0016: "INVALID_MEMBER_COUNT",
2117
- 0x0017: "MAX_LIMIT_REACHED",
2118
- 0x0018: "INVALID_AUTH_TYPE",
2119
- 0x0019: "AUTHENTICATION_FAILED",
2120
- 0x001A: "INVALID_DHCP_MODE",
2121
- 0x001B: "INVALID_IP_ADDRESS",
2122
- 0x001C: "INVALID_DOMAIN_NAME",
2123
- 0x001D: "UNSUPPORTED_VERSION",
2124
- 0x001E: "REQUEST_UNEXPECTED",
2125
- 0x001F: "INVALID_TABLE_TYPE",
2126
- 0x0020: "INVALID_PROVISIONING_STATE",
2127
- 0x0021: "UNSUPPORTED_OBJECT",
2128
- 0x0022: "INVALID_TIME",
2129
- 0x0023: "INVALID_INDEX",
2130
- 0x0024: "INVALID_PARAMETER",
2131
- 0x0025: "INVALID_NETMASK",
2132
- 0x0026: "FLASH_WRITE_LIMIT_EXCEEDED",
2133
- 0x0027: "INVALID_IMAGE_LENGTH",
2134
- 0x0028: "INVALID_IMAGE_SIGNATURE",
2135
- 0x0029: "PROPOSE_ANOTHER_VERSION",
2136
- 0x002A: "INVALID_PID_FORMAT",
2137
- 0x002B: "INVALID_PPS_FORMAT",
2138
- 0x002C: "BIST_COMMAND_BLOCKED",
2139
- 0x002D: "CONNECTION_FAILED",
2140
- 0x002E: "CONNECTION_TOO_MANY",
2141
- 0x002F: "RNG_GENERATION_IN_PROGRESS",
2142
- 0x0030: "RNG_NOT_READY",
2143
- 0x0031: "CERTIFICATE_NOT_READY",
2144
- 0x0400: "DISABLED_BY_POLICY",
2145
- 0x0800: "NETWORK_IF_ERROR_BASE",
2146
- 0x0801: "UNSUPPORTED_OEM_NUMBER",
2147
- 0x0802: "UNSUPPORTED_BOOT_OPTION",
2148
- 0x0803: "INVALID_COMMAND",
2149
- 0x0804: "INVALID_SPECIAL_COMMAND",
2150
- 0x0805: "INVALID_HANDLE",
2151
- 0x0806: "INVALID_PASSWORD",
2152
- 0x0807: "INVALID_REALM",
2153
- 0x0808: "STORAGE_ACL_ENTRY_IN_USE",
2154
- 0x0809: "DATA_MISSING",
2155
- 0x080A: "DUPLICATE",
2156
- 0x080B: "EVENTLOG_FROZEN",
2157
- 0x080C: "PKI_MISSING_KEYS",
2158
- 0x080D: "PKI_GENERATING_KEYS",
2159
- 0x080E: "INVALID_KEY",
2160
- 0x080F: "INVALID_CERT",
2161
- 0x0810: "CERT_KEY_NOT_MATCH",
2162
- 0x0811: "MAX_KERB_DOMAIN_REACHED",
2163
- 0x0812: "UNSUPPORTED",
2164
- 0x0813: "INVALID_PRIORITY",
2165
- 0x0814: "NOT_FOUND",
2166
- 0x0815: "INVALID_CREDENTIALS",
2167
- 0x0816: "INVALID_PASSPHRASE",
2168
- 0x0818: "NO_ASSOCIATION",
2169
- 0x081B: "AUDIT_FAIL",
2170
- 0x081C: "BLOCKING_COMPONENT",
2171
- 0x0821: "USER_CONSENT_REQUIRED",
2172
- 0x1000: "APP_INTERNAL_ERROR",
2173
- 0x1001: "NOT_INITIALIZED",
2174
- 0x1002: "LIB_VERSION_UNSUPPORTED",
2175
- 0x1003: "INVALID_PARAM",
2176
- 0x1004: "RESOURCES",
2177
- 0x1005: "HARDWARE_ACCESS_ERROR",
2178
- 0x1006: "REQUESTOR_NOT_REGISTERED",
2179
- 0x1007: "NETWORK_ERROR",
2180
- 0x1008: "PARAM_BUFFER_TOO_SHORT",
2181
- 0x1009: "COM_NOT_INITIALIZED_IN_THREAD",
2182
- 0x100A: "URL_REQUIRED"
2183
- }
2184
-
2185
- //
2186
- // Methods used for getting the event log
2187
- //
2188
-
2189
- obj.GetMessageLog = function (func, tag) {
2190
- obj.AMT_MessageLog_PositionToFirstRecord(_GetMessageLog0, [func, tag, []]);
2191
- }
2192
- function _GetMessageLog0(stack, name, responses, status, tag) {
2193
- if (status != 200 || responses.Body["ReturnValue"] != '0') { tag[0](obj, null, tag[2]); return; }
2194
- obj.AMT_MessageLog_GetRecords(responses.Body["IterationIdentifier"], 390, _GetMessageLog1, tag);
2195
- }
2196
- function _GetMessageLog1(stack, name, responses, status, tag) {
2197
- if (status != 200 || responses.Body["ReturnValue"] != '0') { tag[0](obj, null, tag[2]); return; }
2198
- var i, j, x, e, AmtMessages = tag[2], t = new Date(), TimeStamp, ra = responses.Body["RecordArray"];
2199
- if (typeof ra === 'string') { responses.Body["RecordArray"] = [responses.Body["RecordArray"]]; }
2200
-
2201
- for (i in ra) {
2202
- e = null;
2203
- try {
2204
-
2205
- e = window.atob(ra[i]);
2206
- } catch (ex) { }
2207
- if (e != null) {
2208
- TimeStamp = ReadIntX(e, 0);
2209
- if ((TimeStamp > 0) && (TimeStamp < 0xFFFFFFFF)) {
2210
- x = { 'DeviceAddress': e.charCodeAt(4), 'EventSensorType': e.charCodeAt(5), 'EventType': e.charCodeAt(6), 'EventOffset': e.charCodeAt(7), 'EventSourceType': e.charCodeAt(8), 'EventSeverity': e.charCodeAt(9), 'SensorNumber': e.charCodeAt(10), 'Entity': e.charCodeAt(11), 'EntityInstance': e.charCodeAt(12), 'EventData': [], 'Time': new Date((TimeStamp + (t.getTimezoneOffset() * 60)) * 1000) };
2211
- for (j = 13; j < 21; j++) { x['EventData'].push(e.charCodeAt(j)); }
2212
- x['EntityStr'] = _SystemEntityTypes[x['Entity']];
2213
- x['Desc'] = _GetEventDetailStr(x['EventSensorType'], x['EventOffset'], x['EventData'], x['Entity']);
2214
- if (!x['EntityStr']) x['EntityStr'] = "Unknown";
2215
- AmtMessages.push(x);
2216
- }
2217
- }
2218
- }
2219
-
2220
- if (responses.Body["NoMoreRecords"] != true) { obj.AMT_MessageLog_GetRecords(responses.Body["IterationIdentifier"], 390, _GetMessageLog1, [tag[0], AmtMessages, tag[2]]); } else { tag[0](obj, AmtMessages, tag[2]); }
2221
- }
2222
-
2223
- var _EventTrapSourceTypes = "Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split('|');
2224
- var _SystemFirmwareError = "Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split('|');
2225
- var _SystemFirmwareProgress = "Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split('|');
2226
- var _SystemEntityTypes = "Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split('|');
2227
- obj.RealmNames = "||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split('|');
2228
- obj.WatchdogCurrentStates = { 1: 'Not Started', 2: 'Stopped', 4: 'Running', 8: 'Expired', 16: 'Suspended' };
2229
-
2230
- function _GetEventDetailStr(eventSensorType, eventOffset, eventDataField, entity) {
2231
-
2232
- if (eventSensorType == 15)
2233
- {
2234
- if (eventDataField[0] == 235) return "Invalid Data";
2235
- if (eventOffset == 0) return _SystemFirmwareError[eventDataField[1]];
2236
- return _SystemFirmwareProgress[eventDataField[1]];
2237
- }
2238
-
2239
- if (eventSensorType == 18 && eventDataField[0] == 170) // System watchdog event
2240
- {
2241
- return "Agent watchdog " + char2hex(eventDataField[4]) + char2hex(eventDataField[3]) + char2hex(eventDataField[2]) + char2hex(eventDataField[1]) + "-" + char2hex(eventDataField[6]) + char2hex(eventDataField[5]) + "-... changed to " + obj.WatchdogCurrentStates[eventDataField[7]];
2242
- }
2243
-
2244
- /*
2245
- if (eventSensorType == 5 && eventOffset == 0) // System chassis
2246
- {
2247
- return "Case intrusion";
2248
- }
2249
-
2250
- if (eventSensorType == 192 && eventOffset == 0 && eventDataField[0] == 170 && eventDataField[1] == 48)
2251
- {
2252
- if (eventDataField[2] == 0) return "A remote Serial Over LAN session was established.";
2253
- if (eventDataField[2] == 1) return "Remote Serial Over LAN session finished. User control was restored.";
2254
- if (eventDataField[2] == 2) return "A remote IDE-Redirection session was established.";
2255
- if (eventDataField[2] == 3) return "Remote IDE-Redirection session finished. User control was restored.";
2256
- }
2257
-
2258
- if (eventSensorType == 36)
2259
- {
2260
- long handle = ((long)(eventDataField[1]) << 24) + ((long)(eventDataField[2]) << 16) + ((long)(eventDataField[3]) << 8) + (long)(eventDataField[4]);
2261
- string nic = string.Format("#{0}", eventDataField[0]);
2262
- if (eventDataField[0] == 0xAA) nic = "wired"; // TODO: Add wireless *****
2263
- //if (eventDataField[0] == 0xAA) nic = "wireless";
2264
-
2265
- if (handle == 4294967293) { return string.Format("All received packet filter was matched on {0} interface.", nic); }
2266
- if (handle == 4294967292) { return string.Format("All outbound packet filter was matched on {0} interface.", nic); }
2267
- if (handle == 4294967290) { return string.Format("Spoofed packet filter was matched on {0} interface.", nic); }
2268
- return string.Format("Filter {0} was matched on {1} interface.", handle, nic);
2269
- }
2270
-
2271
- if (eventSensorType == 192)
2272
- {
2273
- if (eventDataField[2] == 0) return "Security policy invoked. Some or all network traffic (TX) was stopped.";
2274
- if (eventDataField[2] == 2) return "Security policy invoked. Some or all network traffic (RX) was stopped.";
2275
- return "Security policy invoked.";
2276
- }
2277
-
2278
- if (eventSensorType == 193)
2279
- {
2280
- if (eventDataField[0] == 0xAA && eventDataField[1] == 0x30 && eventDataField[2] == 0x00 && eventDataField[3] == 0x00) { return "User request for remote connection."; }
2281
- if (eventDataField[0] == 0xAA && eventDataField[1] == 0x20 && eventDataField[2] == 0x03 && eventDataField[3] == 0x01) { return "EAC error: attempt to get posture while NAC in Intel� AMT is disabled."; // eventDataField = 0xAA20030100000000 }
2282
- if (eventDataField[0] == 0xAA && eventDataField[1] == 0x20 && eventDataField[2] == 0x04 && eventDataField[3] == 0x00) { return "Certificate revoked. "; }
2283
- }
2284
- */
2285
-
2286
- if (eventSensorType == 6) return "Authentication failed " + (eventDataField[1] + (eventDataField[2] << 8)) + " times. The system may be under attack.";
2287
- if (eventSensorType == 30) return "No bootable media";
2288
- if (eventSensorType == 32) return "Operating system lockup or power interrupt";
2289
- if (eventSensorType == 35) return "System boot failure";
2290
- if (eventSensorType == 37) return "System firmware started (at least one CPU is properly executing).";
2291
- return "Unknown Sensor Type #" + eventSensorType;
2292
- }
2293
-
2294
-
2295
-
2296
- // Useful link: https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fsecurityadminevents.htm
2297
-
2298
- var _AmtAuditStringTable =
2299
- {
2300
- 16: 'Security Admin',
2301
- 17: 'RCO',
2302
- 18: 'Redirection Manager',
2303
- 19: 'Firmware Update Manager',
2304
- 20: 'Security Audit Log',
2305
- 21: 'Network Time',
2306
- 22: 'Network Administration',
2307
- 23: 'Storage Administration',
2308
- 24: 'Event Manager',
2309
- 25: 'Circuit Breaker Manager',
2310
- 26: 'Agent Presence Manager',
2311
- 27: 'Wireless Configuration',
2312
- 28: 'EAC',
2313
- 29: 'KVM',
2314
- 30: 'User Opt-In Events',
2315
- 32: 'Screen Blanking',
2316
- 33: 'Watchdog Events',
2317
- 1600: 'Provisioning Started',
2318
- 1601: 'Provisioning Completed',
2319
- 1602: 'ACL Entry Added',
2320
- 1603: 'ACL Entry Modified',
2321
- 1604: 'ACL Entry Removed',
2322
- 1605: 'ACL Access with Invalid Credentials',
2323
- 1606: 'ACL Entry State',
2324
- 1607: 'TLS State Changed',
2325
- 1608: 'TLS Server Certificate Set',
2326
- 1609: 'TLS Server Certificate Remove',
2327
- 1610: 'TLS Trusted Root Certificate Added',
2328
- 1611: 'TLS Trusted Root Certificate Removed',
2329
- 1612: 'TLS Preshared Key Set',
2330
- 1613: 'Kerberos Settings Modified',
2331
- 1614: 'Kerberos Master Key Modified',
2332
- 1615: 'Flash Wear out Counters Reset',
2333
- 1616: 'Power Package Modified',
2334
- 1617: 'Set Realm Authentication Mode',
2335
- 1618: 'Upgrade Client to Admin Control Mode',
2336
- 1619: 'Unprovisioning Started',
2337
- 1700: 'Performed Power Up',
2338
- 1701: 'Performed Power Down',
2339
- 1702: 'Performed Power Cycle',
2340
- 1703: 'Performed Reset',
2341
- 1704: 'Set Boot Options',
2342
- 1800: 'IDER Session Opened',
2343
- 1801: 'IDER Session Closed',
2344
- 1802: 'IDER Enabled',
2345
- 1803: 'IDER Disabled',
2346
- 1804: 'SoL Session Opened',
2347
- 1805: 'SoL Session Closed',
2348
- 1806: 'SoL Enabled',
2349
- 1807: 'SoL Disabled',
2350
- 1808: 'KVM Session Started',
2351
- 1809: 'KVM Session Ended',
2352
- 1810: 'KVM Enabled',
2353
- 1811: 'KVM Disabled',
2354
- 1812: 'VNC Password Failed 3 Times',
2355
- 1900: 'Firmware Updated',
2356
- 1901: 'Firmware Update Failed',
2357
- 2000: 'Security Audit Log Cleared',
2358
- 2001: 'Security Audit Policy Modified',
2359
- 2002: 'Security Audit Log Disabled',
2360
- 2003: 'Security Audit Log Enabled',
2361
- 2004: 'Security Audit Log Exported',
2362
- 2005: 'Security Audit Log Recovered',
2363
- 2100: 'Intel® ME Time Set',
2364
- 2200: 'TCPIP Parameters Set',
2365
- 2201: 'Host Name Set',
2366
- 2202: 'Domain Name Set',
2367
- 2203: 'VLAN Parameters Set',
2368
- 2204: 'Link Policy Set',
2369
- 2205: 'IPv6 Parameters Set',
2370
- 2300: 'Global Storage Attributes Set',
2371
- 2301: 'Storage EACL Modified',
2372
- 2302: 'Storage FPACL Modified',
2373
- 2303: 'Storage Write Operation',
2374
- 2400: 'Alert Subscribed',
2375
- 2401: 'Alert Unsubscribed',
2376
- 2402: 'Event Log Cleared',
2377
- 2403: 'Event Log Frozen',
2378
- 2500: 'CB Filter Added',
2379
- 2501: 'CB Filter Removed',
2380
- 2502: 'CB Policy Added',
2381
- 2503: 'CB Policy Removed',
2382
- 2504: 'CB Default Policy Set',
2383
- 2505: 'CB Heuristics Option Set',
2384
- 2506: 'CB Heuristics State Cleared',
2385
- 2600: 'Agent Watchdog Added',
2386
- 2601: 'Agent Watchdog Removed',
2387
- 2602: 'Agent Watchdog Action Set',
2388
- 2700: 'Wireless Profile Added',
2389
- 2701: 'Wireless Profile Removed',
2390
- 2702: 'Wireless Profile Updated',
2391
- 2800: 'EAC Posture Signer SET',
2392
- 2801: 'EAC Enabled',
2393
- 2802: 'EAC Disabled',
2394
- 2803: 'EAC Posture State',
2395
- 2804: 'EAC Set Options',
2396
- 2900: 'KVM Opt-in Enabled',
2397
- 2901: 'KVM Opt-in Disabled',
2398
- 2902: 'KVM Password Changed',
2399
- 2903: 'KVM Consent Succeeded',
2400
- 2904: 'KVM Consent Failed',
2401
- 3000: 'Opt-In Policy Change',
2402
- 3001: 'Send Consent Code Event',
2403
- 3002: 'Start Opt-In Blocked Event'
2404
- }
2405
-
2406
- // Return human readable extended audit log data
2407
- // TODO: Just put some of them here, but many more still need to be added, helpful link here:
2408
- // https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fsecurityadminevents.htm
2409
- obj.GetAuditLogExtendedDataStr = function (id, data) {
2410
- if ((id == 1602 || id == 1604) && data.charCodeAt(0) == 0) { return data.substring(2, 2 + data.charCodeAt(1)); } // ACL Entry Added/Removed (Digest)
2411
- if (id == 1603) { if (data.charCodeAt(1) == 0) { return data.substring(3); } return null; } // ACL Entry Modified
2412
- if (id == 1605) { return ["Invalid ME access", "Invalid MEBx access"][data.charCodeAt(0)]; } // ACL Access with Invalid Credentials
2413
- if (id == 1606) { var r = ["Disabled", "Enabled"][data.charCodeAt(0)]; if (data.charCodeAt(1) == 0) { r += ", " + data.substring(3); } return r;} // ACL Entry State
2414
- if (id == 1607) { return "Remote " + ["NoAuth", "ServerAuth", "MutualAuth"][data.charCodeAt(0)] + ", Local " + ["NoAuth", "ServerAuth", "MutualAuth"][data.charCodeAt(1)]; } // TLS State Changed
2415
- if (id == 1617) { return obj.RealmNames[ReadInt(data, 0)] + ", " + ["NoAuth", "Auth", "Disabled"][data.charCodeAt(4)]; } // Set Realm Authentication Mode
2416
- if (id == 1619) { return ["BIOS", "MEBx", "Local MEI", "Local WSMAN", "Remote WSAMN"][data.charCodeAt(0)]; } // Intel AMT Unprovisioning Started
2417
- if (id == 1900) { return "From " + ReadShort(data, 0) + "." + ReadShort(data, 2) + "." + ReadShort(data, 4) + "." + ReadShort(data, 6) + " to " + ReadShort(data, 8) + "." + ReadShort(data, 10) + "." + ReadShort(data, 12) + "." + ReadShort(data, 14); } // Firmware Updated
2418
- if (id == 2100) { var t4 = new Date(); t4.setTime(ReadInt(data, 0) * 1000 + (new Date().getTimezoneOffset() * 60000)); return t4.toLocaleString(); } // Intel AMT Time Set
2419
- if (id == 3000) { return "From " + ["None", "KVM", "All"][data.charCodeAt(0)] + " to " + ["None", "KVM", "All"][data.charCodeAt(1)]; } // Opt-In Policy Change
2420
- if (id == 3001) { return ["Success", "Failed 3 times"][data.charCodeAt(0)]; } // Send Consent Code Event
2421
- return null;
2422
- }
2423
-
2424
- obj.GetAuditLog = function (func) {
2425
- obj.AMT_AuditLog_ReadRecords(1, _GetAuditLog0, [func, []]);
2426
- }
2427
-
2428
- function _GetAuditLog0(stack, name, responses, status, tag) {
2429
- if (status != 200) { tag[0](obj, [], status); return; }
2430
- var ptr, i, e, x, r = tag[1], t = new Date(), TimeStamp;
2431
-
2432
- if (responses.Body['RecordsReturned'] > 0) {
2433
- responses.Body['EventRecords'] = MakeToArray(responses.Body['EventRecords']);
2434
-
2435
- for (i in responses.Body['EventRecords']) {
2436
- e = null;
2437
- try {
2438
- e = window.atob(responses.Body['EventRecords'][i]);
2439
- } catch (e) {
2440
- console.log(e + " " + responses.Body['EventRecords'][i])
2441
- }
2442
- x = { 'AuditAppID': ReadShort(e, 0), 'EventID': ReadShort(e, 2), 'InitiatorType': e.charCodeAt(4) };
2443
- x['AuditApp'] = _AmtAuditStringTable[x['AuditAppID']];
2444
- x['Event'] = _AmtAuditStringTable[(x['AuditAppID'] * 100) + x['EventID']];
2445
- if (!x['Event']) x['Event'] = '#' + x['EventID'];
2446
-
2447
- // Read and process the initiator
2448
- if (x['InitiatorType'] == 0) {
2449
- // HTTP digest
2450
- var userlen = e.charCodeAt(5);
2451
- x['Initiator'] = e.substring(6, 6 + userlen);
2452
- ptr = 6 + userlen;
2453
- }
2454
- if (x['InitiatorType'] == 1) {
2455
- // Kerberos
2456
- x['KerberosUserInDomain'] = ReadInt(e, 5);
2457
- var userlen = e.charCodeAt(9);
2458
- x['Initiator'] = GetSidString(e.substring(10, 10 + userlen));
2459
- ptr = 10 + userlen;
2460
- }
2461
- if (x['InitiatorType'] == 2) {
2462
- // Local
2463
- x['Initiator'] = '<i>Local</i>';
2464
- ptr = 5;
2465
- }
2466
- if (x['InitiatorType'] == 3) {
2467
- // KVM Default Port
2468
- x['Initiator'] = '<i>KVM Default Port</i>';
2469
- ptr = 5;
2470
- }
2471
-
2472
- // Read timestamp
2473
- TimeStamp = ReadInt(e, ptr);
2474
- x['Time'] = new Date((TimeStamp + (t.getTimezoneOffset() * 60)) * 1000);
2475
- ptr += 4;
2476
-
2477
- // Read network access
2478
- x['MCLocationType'] = e.charCodeAt(ptr++);
2479
- var netlen = e.charCodeAt(ptr++);
2480
- x['NetAddress'] = e.substring(ptr, ptr + netlen);
2481
-
2482
- // Read extended data
2483
- ptr += netlen;
2484
- var exlen = e.charCodeAt(ptr++);
2485
- x['Ex'] = e.substring(ptr, ptr + exlen);
2486
- x['ExStr'] = obj.GetAuditLogExtendedDataStr((x['AuditAppID'] * 100) + x['EventID'], x['Ex']);
2487
-
2488
- r.push(x);
2489
- }
2490
- }
2491
- if (responses.Body['TotalRecordCount'] > r.length) {
2492
- obj.AMT_AuditLog_ReadRecords(r.length + 1, _GetAuditLog0, [tag[0], r]);
2493
- } else {
2494
- tag[0](obj, r, status);
2495
- }
2496
- }
2497
-
2498
-
2499
- return obj;
2500
-}
2501
-
2502
-
2503
-
2504
-
2505
-// Forge MD5
2506
-function hex_md5(str) { return forge.md.md5.create().update(str).digest().toHex(); }
2507
-
2508
-
2509
-
2510
-// Perform MD5 on raw string and return raw string result
2511
-function rstr_md5(str) { return hex2rstr(hex_md5(str)); }
2512
-
2513
-/*
2514
-Convert arguments into selector set and body XML. Used by AMT_WiFiPortConfigurationService_UpdateWiFiSettings.
2515
-args = {
2516
- "WiFiEndpoint": {
2517
- __parameterType: 'reference',
2518
- __resourceUri: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint',
2519
- Name: 'WiFi Endpoint 0'
2520
- },
2521
- "WiFiEndpointSettingsInput":
2522
- {
2523
- __parameterType: 'instance',
2524
- __namespace: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings',
2525
- ElementName: document.querySelector('#editProfile-profileName').value,
2526
- InstanceID: 'Intel(r) AMT:WiFi Endpoint Settings ' + document.querySelector('#editProfile-profileName').value,
2527
- AuthenticationMethod: document.querySelector('#editProfile-networkAuthentication').value,
2528
- //BSSType: 3, // Intel(r) AMT supports only infrastructure networks
2529
- EncryptionMethod: document.querySelector('#editProfile-encryption').value,
2530
- SSID: document.querySelector('#editProfile-networkName').value,
2531
- Priority: 100,
2532
- PSKPassPhrase: document.querySelector('#editProfile-passPhrase').value
2533
- },
2534
- "IEEE8021xSettingsInput": null,
2535
- "ClientCredential": null,
2536
- "CACredential": null
2537
-},
2538
-*/
2539
-function execArgumentsToXml(args) {
2540
- if(args === undefined || args === null) return null;
2541
-
2542
- var result = '';
2543
- for(var argName in args) {
2544
- var arg = args[argName];
2545
- if(!arg) continue;
2546
- if(arg['__parameterType'] === 'reference') result += referenceToXml(argName, arg);
2547
- else result += instanceToXml(argName, arg);
2548
- //if(arg['__isInstance']) result += instanceToXml(argName, arg);
2549
- }
2550
- return result;
2551
-}
2552
-
2553
-/**
2554
- * Convert JavaScript object into XML
2555
-
2556
- <r:WiFiEndpointSettingsInput xmlns:q="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings">
2557
- <q:ElementName>Wireless-Profile-Admin</q:ElementName>
2558
- <q:InstanceID>Intel(r) AMT:WiFi Endpoint Settings Wireless-Profile-Admin</q:InstanceID>
2559
- <q:AuthenticationMethod>6</q:AuthenticationMethod>
2560
- <q:EncryptionMethod>4</q:EncryptionMethod>
2561
- <q:Priority>100</q:Priority>
2562
- <q:PSKPassPhrase>P@ssw0rd</q:PSKPassPhrase>
2563
- </r:WiFiEndpointSettingsInput>
2564
- */
2565
-function instanceToXml(instanceName, inInstance) {
2566
- if(inInstance === undefined || inInstance === null) return null;
2567
-
2568
- var hasNamespace = !!inInstance['__namespace'];
2569
- var startTag = hasNamespace ? '<q:' : '<';
2570
- var endTag = hasNamespace ? '</q:' : '</';
2571
- var namespaceDef = hasNamespace ? (' xmlns:q="' + inInstance['__namespace'] + '"' ): '';
2572
- var result = '<r:' + instanceName + namespaceDef + '>';
2573
- for(var prop in inInstance) {
2574
- if (!inInstance.hasOwnProperty(prop) || prop.indexOf('__') === 0) continue;
2575
-
2576
- if (typeof inInstance[prop] === 'function' || Array.isArray(inInstance[prop]) ) continue;
2577
-
2578
- if (typeof inInstance[prop] === 'object') {
2579
- //result += startTag + prop +'>' + instanceToXml('prop', inInstance[prop]) + endTag + prop +'>';
2580
- console.error('only convert one level down...');
2581
- }
2582
- else {
2583
- result += startTag + prop +'>' + inInstance[prop].toString() + endTag + prop +'>';
2584
- }
2585
- }
2586
- result += '</r:' + instanceName + '>';
2587
- return result;
2588
-}
2589
-
2590
-
2591
-/**
2592
- * Convert a selector set into XML. Expect no nesting.
2593
- * {
2594
- * selectorName : selectorValue,
2595
- * selectorName : selectorValue,
2596
- * ... ...
2597
- * }
2598
-
2599
- <r:WiFiEndpoint>
2600
- <a:Address>http://192.168.1.103:16992/wsman</a:Address>
2601
- <a:ReferenceParameters>
2602
- <w:ResourceURI>http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint</w:ResourceURI>
2603
- <w:SelectorSet>
2604
- <w:Selector Name="Name">WiFi Endpoint 0</w:Selector>
2605
- </w:SelectorSet>
2606
- </a:ReferenceParameters>
2607
- </r:WiFiEndpoint>
2608
-
2609
- */
2610
-function referenceToXml(referenceName, inReference) {
2611
- if(inReference === undefined || inReference === null ) return null;
2612
-
2613
- var result = '<r:' + referenceName + '><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>'+ inReference['__resourceUri']+'</w:ResourceURI><w:SelectorSet>';
2614
- for(var selectorName in inReference) {
2615
- if (!inReference.hasOwnProperty(selectorName) || selectorName.indexOf('__') === 0) continue;
2616
-
2617
- if (typeof inReference[selectorName] === 'function' ||
2618
- typeof inReference[selectorName] === 'object' ||
2619
- Array.isArray(inReference[selectorName]) )
2620
- continue;
2621
-
2622
- result += '<w:Selector Name="' + selectorName +'">' + inReference[selectorName].toString() + '</w:Selector>';
2623
- }
2624
-
2625
- result += '</w:SelectorSet></a:ReferenceParameters></r:' + referenceName + '>';
2626
- return result;
2627
-}
2628
-
2629
-// Convert a byte array of SID into string
2630
-function GetSidString(sid) {
2631
- var r = "S-" + sid.charCodeAt(0) + "-" + sid.charCodeAt(7);
2632
- for (var i = 2; i < (sid.length / 4) ; i++) r += "-" + ReadIntX(sid, i * 4);
2633
- return r;
2634
-}
2635
-
2636
-// Convert a SID readable string into bytes
2637
-function GetSidByteArray(sidString) {
2638
- if (!sidString || sidString == null) return null;
2639
- var sidParts = sidString.split('-');
2640
-
2641
- // Make sure the SID has at least 4 parts and starts with 'S'
2642
- if (sidParts.length < 4 || (sidParts[0] != 's' && sidParts[0] != 'S')) return null;
2643
-
2644
- // Check that each part of the SID is really an integer
2645
- for (var i = 1; i < sidParts.length; i++) { var y = parseInt(sidParts[i]); if (y != sidParts[i]) return null; sidParts[i] = y; }
2646
-
2647
- // Version (8 bit) + Id count (8 bit) + 48 bit in big endian -- DO NOT use bitwise right shift operator. JavaScript converts the number into a 32 bit integer before shifting. In real world, it's highly likely this part is always 0.
2648
- var r = String.fromCharCode(sidParts[1]) + String.fromCharCode(sidParts.length - 3) + ShortToStr(Math.floor(sidParts[2] / Math.pow(2, 32))) + IntToStr((sidParts[2]) & 0xFFFF);
2649
-
2650
- // the rest are in 32 bit in little endian
2651
- for (var i = 3; i < sidParts.length; i++) r += IntToStrX(sidParts[i]);
2652
- return r;
2653
-}
2654
-(function(root, factory) {
2655
- if(typeof define === 'function' && define.amd) {
2656
- define([], factory);
2657
- } else {
2658
- root.forge = factory();
2659
- }
2660
-})(this, function() {
2661
-/**
2662
- * license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
2663
- * Available via the MIT or new BSD license.
2664
- * see: http://github.com/jrburke/almond for details
2665
- */
2666
-//Going sloppy to avoid 'use strict' string cost, but strict practices should
2667
-//be followed.
2668
-/*jslint sloppy: true */
2669
-/*global setTimeout: false */
2670
-
2671
-var requirejs, require, define;
2672
-(function (undef) {
2673
- var main, req, makeMap, handlers,
2674
- defined = {},
2675
- waiting = {},
2676
- config = {},
2677
- defining = {},
2678
- hasOwn = Object.prototype.hasOwnProperty,
2679
- aps = [].slice,
2680
- jsSuffixRegExp = /\.js$/;
2681
-
2682
- function hasProp(obj, prop) {
2683
- return hasOwn.call(obj, prop);
2684
- }
2685
-
2686
- /**
2687
- * Given a relative module name, like ./something, normalize it to
2688
- * a real name that can be mapped to a path.
2689
- * @param {String} name the relative name
2690
- * @param {String} baseName a real name that the name arg is relative
2691
- * to.
2692
- * @returns {String} normalized name
2693
- */
2694
- function normalize(name, baseName) {
2695
- var nameParts, nameSegment, mapValue, foundMap, lastIndex,
2696
- foundI, foundStarMap, starI, i, j, part,
2697
- baseParts = baseName && baseName.split("/"),
2698
- map = config.map,
2699
- starMap = (map && map['*']) || {};
2700
-
2701
- //Adjust any relative paths.
2702
- if (name && name.charAt(0) === ".") {
2703
- //If have a base name, try to normalize against it,
2704
- //otherwise, assume it is a top-level require that will
2705
- //be relative to baseUrl in the end.
2706
- if (baseName) {
2707
- //Convert baseName to array, and lop off the last part,
2708
- //so that . matches that "directory" and not name of the baseName's
2709
- //module. For instance, baseName of "one/two/three", maps to
2710
- //"one/two/three.js", but we want the directory, "one/two" for
2711
- //this normalization.
2712
- baseParts = baseParts.slice(0, baseParts.length - 1);
2713
- name = name.split('/');
2714
- lastIndex = name.length - 1;
2715
-
2716
- // Node .js allowance:
2717
- if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
2718
- name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
2719
- }
2720
-
2721
- name = baseParts.concat(name);
2722
-
2723
- //start trimDots
2724
- for (i = 0; i < name.length; i += 1) {
2725
- part = name[i];
2726
- if (part === ".") {
2727
- name.splice(i, 1);
2728
- i -= 1;
2729
- } else if (part === "..") {
2730
- if (i === 1 && (name[2] === '..' || name[0] === '..')) {
2731
- //End of the line. Keep at least one non-dot
2732
- //path segment at the front so it can be mapped
2733
- //correctly to disk. Otherwise, there is likely
2734
- //no path mapping for a path starting with '..'.
2735
- //This can still fail, but catches the most reasonable
2736
- //uses of ..
2737
- break;
2738
- } else if (i > 0) {
2739
- name.splice(i - 1, 2);
2740
- i -= 2;
2741
- }
2742
- }
2743
- }
2744
- //end trimDots
2745
-
2746
- name = name.join("/");
2747
- } else if (name.indexOf('./') === 0) {
2748
- // No baseName, so this is ID is resolved relative
2749
- // to baseUrl, pull off the leading dot.
2750
- name = name.substring(2);
2751
- }
2752
- }
2753
-
2754
- //Apply map config if available.
2755
- if ((baseParts || starMap) && map) {
2756
- nameParts = name.split('/');
2757
-
2758
- for (i = nameParts.length; i > 0; i -= 1) {
2759
- nameSegment = nameParts.slice(0, i).join("/");
2760
-
2761
- if (baseParts) {
2762
- //Find the longest baseName segment match in the config.
2763
- //So, do joins on the biggest to smallest lengths of baseParts.
2764
- for (j = baseParts.length; j > 0; j -= 1) {
2765
- mapValue = map[baseParts.slice(0, j).join('/')];
2766
-
2767
- //baseName segment has config, find if it has one for
2768
- //this name.
2769
- if (mapValue) {
2770
- mapValue = mapValue[nameSegment];
2771
- if (mapValue) {
2772
- //Match, update name to the new value.
2773
- foundMap = mapValue;
2774
- foundI = i;
2775
- break;
2776
- }
2777
- }
2778
- }
2779
- }
2780
-
2781
- if (foundMap) {
2782
- break;
2783
- }
2784
-
2785
- //Check for a star map match, but just hold on to it,
2786
- //if there is a shorter segment match later in a matching
2787
- //config, then favor over this star map.
2788
- if (!foundStarMap && starMap && starMap[nameSegment]) {
2789
- foundStarMap = starMap[nameSegment];
2790
- starI = i;
2791
- }
2792
- }
2793
-
2794
- if (!foundMap && foundStarMap) {
2795
- foundMap = foundStarMap;
2796
- foundI = starI;
2797
- }
2798
-
2799
- if (foundMap) {
2800
- nameParts.splice(0, foundI, foundMap);
2801
- name = nameParts.join('/');
2802
- }
2803
- }
2804
-
2805
- return name;
2806
- }
2807
-
2808
- function makeRequire(relName, forceSync) {
2809
- return function () {
2810
- //A version of a require function that passes a moduleName
2811
- //value for items that may need to
2812
- //look up paths relative to the moduleName
2813
- return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync]));
2814
- };
2815
- }
2816
-
2817
- function makeNormalize(relName) {
2818
- return function (name) {
2819
- return normalize(name, relName);
2820
- };
2821
- }
2822
-
2823
- function makeLoad(depName) {
2824
- return function (value) {
2825
- defined[depName] = value;
2826
- };
2827
- }
2828
-
2829
- function callDep(name) {
2830
- if (hasProp(waiting, name)) {
2831
- var args = waiting[name];
2832
- delete waiting[name];
2833
- defining[name] = true;
2834
- main.apply(undef, args);
2835
- }
2836
-
2837
- if (!hasProp(defined, name) && !hasProp(defining, name)) {
2838
- throw new Error('No ' + name);
2839
- }
2840
- return defined[name];
2841
- }
2842
-
2843
- //Turns a plugin!resource to [plugin, resource]
2844
- //with the plugin being undefined if the name
2845
- //did not have a plugin prefix.
2846
- function splitPrefix(name) {
2847
- var prefix,
2848
- index = name ? name.indexOf('!') : -1;
2849
- if (index > -1) {
2850
- prefix = name.substring(0, index);
2851
- name = name.substring(index + 1, name.length);
2852
- }
2853
- return [prefix, name];
2854
- }
2855
-
2856
- /**
2857
- * Makes a name map, normalizing the name, and using a plugin
2858
- * for normalization if necessary. Grabs a ref to plugin
2859
- * too, as an optimization.
2860
- */
2861
- makeMap = function (name, relName) {
2862
- var plugin,
2863
- parts = splitPrefix(name),
2864
- prefix = parts[0];
2865
-
2866
- name = parts[1];
2867
-
2868
- if (prefix) {
2869
- prefix = normalize(prefix, relName);
2870
- plugin = callDep(prefix);
2871
- }
2872
-
2873
- //Normalize according
2874
- if (prefix) {
2875
- if (plugin && plugin.normalize) {
2876
- name = plugin.normalize(name, makeNormalize(relName));
2877
- } else {
2878
- name = normalize(name, relName);
2879
- }
2880
- } else {
2881
- name = normalize(name, relName);
2882
- parts = splitPrefix(name);
2883
- prefix = parts[0];
2884
- name = parts[1];
2885
- if (prefix) {
2886
- plugin = callDep(prefix);
2887
- }
2888
- }
2889
-
2890
- //Using ridiculous property names for space reasons
2891
- return {
2892
- f: prefix ? prefix + '!' + name : name, //fullName
2893
- n: name,
2894
- pr: prefix,
2895
- p: plugin
2896
- };
2897
- };
2898
-
2899
- function makeConfig(name) {
2900
- return function () {
2901
- return (config && config.config && config.config[name]) || {};
2902
- };
2903
- }
2904
-
2905
- handlers = {
2906
- require: function (name) {
2907
- return makeRequire(name);
2908
- },
2909
- exports: function (name) {
2910
- var e = defined[name];
2911
- if (typeof e !== 'undefined') {
2912
- return e;
2913
- } else {
2914
- return (defined[name] = {});
2915
- }
2916
- },
2917
- module: function (name) {
2918
- return {
2919
- id: name,
2920
- uri: '',
2921
- exports: defined[name],
2922
- config: makeConfig(name)
2923
- };
2924
- }
2925
- };
2926
-
2927
- main = function (name, deps, callback, relName) {
2928
- var cjsModule, depName, ret, map, i,
2929
- args = [],
2930
- callbackType = typeof callback,
2931
- usingExports;
2932
-
2933
- //Use name if no relName
2934
- relName = relName || name;
2935
-
2936
- //Call the callback to define the module, if necessary.
2937
- if (callbackType === 'undefined' || callbackType === 'function') {
2938
- //Pull out the defined dependencies and pass the ordered
2939
- //values to the callback.
2940
- //Default to [require, exports, module] if no deps
2941
- deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
2942
- for (i = 0; i < deps.length; i += 1) {
2943
- map = makeMap(deps[i], relName);
2944
- depName = map.f;
2945
-
2946
- //Fast path CommonJS standard dependencies.
2947
- if (depName === "require") {
2948
- args[i] = handlers.require(name);
2949
- } else if (depName === "exports") {
2950
- //CommonJS module spec 1.1
2951
- args[i] = handlers.exports(name);
2952
- usingExports = true;
2953
- } else if (depName === "module") {
2954
- //CommonJS module spec 1.1
2955
- cjsModule = args[i] = handlers.module(name);
2956
- } else if (hasProp(defined, depName) ||
2957
- hasProp(waiting, depName) ||
2958
- hasProp(defining, depName)) {
2959
- args[i] = callDep(depName);
2960
- } else if (map.p) {
2961
- map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
2962
- args[i] = defined[depName];
2963
- } else {
2964
- throw new Error(name + ' missing ' + depName);
2965
- }
2966
- }
2967
-
2968
- ret = callback ? callback.apply(defined[name], args) : undefined;
2969
-
2970
- if (name) {
2971
- //If setting exports via "module" is in play,
2972
- //favor that over return value and exports. After that,
2973
- //favor a non-undefined return value over exports use.
2974
- if (cjsModule && cjsModule.exports !== undef &&
2975
- cjsModule.exports !== defined[name]) {
2976
- defined[name] = cjsModule.exports;
2977
- } else if (ret !== undef || !usingExports) {
2978
- //Use the return value from the function.
2979
- defined[name] = ret;
2980
- }
2981
- }
2982
- } else if (name) {
2983
- //May just be an object definition for the module. Only
2984
- //worry about defining if have a module name.
2985
- defined[name] = callback;
2986
- }
2987
- };
2988
-
2989
- requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
2990
- if (typeof deps === "string") {
2991
- if (handlers[deps]) {
2992
- //callback in this case is really relName
2993
- return handlers[deps](callback);
2994
- }
2995
- //Just return the module wanted. In this scenario, the
2996
- //deps arg is the module name, and second arg (if passed)
2997
- //is just the relName.
2998
- //Normalize module name, if it contains . or ..
2999
- return callDep(makeMap(deps, callback).f);
3000
- } else if (!deps.splice) {
3001
- //deps is a config object, not an array.
3002
- config = deps;
3003
- if (config.deps) {
3004
- req(config.deps, config.callback);
3005
- }
3006
- if (!callback) {
3007
- return;
3008
- }
3009
-
3010
- if (callback.splice) {
3011
- //callback is an array, which means it is a dependency list.
3012
- //Adjust args if there are dependencies
3013
- deps = callback;
3014
- callback = relName;
3015
- relName = null;
3016
- } else {
3017
- deps = undef;
3018
- }
3019
- }
3020
-
3021
- //Support require(['a'])
3022
- callback = callback || function () {};
3023
-
3024
- //If relName is a function, it is an errback handler,
3025
- //so remove it.
3026
- if (typeof relName === 'function') {
3027
- relName = forceSync;
3028
- forceSync = alt;
3029
- }
3030
-
3031
- //Simulate async callback;
3032
- if (forceSync) {
3033
- main(undef, deps, callback, relName);
3034
- } else {
3035
- //Using a non-zero value because of concern for what old browsers
3036
- //do, and latest browsers "upgrade" to 4 if lower value is used:
3037
- //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
3038
- //If want a value immediately, use require('id') instead -- something
3039
- //that works in almond on the global level, but not guaranteed and
3040
- //unlikely to work in other AMD implementations.
3041
- setTimeout(function () {
3042
- main(undef, deps, callback, relName);
3043
- }, 4);
3044
- }
3045
-
3046
- return req;
3047
- };
3048
-
3049
- /**
3050
- * Just drops the config on the floor, but returns req in case
3051
- * the config return value is used.
3052
- */
3053
- req.config = function (cfg) {
3054
- return req(cfg);
3055
- };
3056
-
3057
- /**
3058
- * Expose module registry for debugging and tooling
3059
- */
3060
- requirejs._defined = defined;
3061
-
3062
- define = function (name, deps, callback) {
3063
-
3064
- //This module may not have dependencies
3065
- if (!deps.splice) {
3066
- //deps is not an array, so probably means
3067
- //an object literal or factory function for
3068
- //the value. Adjust args.
3069
- callback = deps;
3070
- deps = [];
3071
- }
3072
-
3073
- if (!hasProp(defined, name) && !hasProp(waiting, name)) {
3074
- waiting[name] = [name, deps, callback];
3075
- }
3076
- };
3077
-
3078
- define.amd = {
3079
- jQuery: true
3080
- };
3081
-}());
3082
-
3083
-define("node_modules/almond/almond", function(){});
3084
-
3085
-/**
3086
- * Utility functions for web applications.
3087
- *
3088
- * @author Dave Longley
3089
- *
3090
- * Copyright (c) 2010-2014 Digital Bazaar, Inc.
3091
- */
3092
-(function() {
3093
-/* ########## Begin module implementation ########## */
3094
-function initModule(forge) {
3095
-
3096
-/* Utilities API */
3097
-var util = forge.util = forge.util || {};
3098
-
3099
-// define setImmediate and nextTick
3100
-(function() {
3101
- // use native nextTick
3102
- if(typeof process !== 'undefined' && process.nextTick) {
3103
- util.nextTick = process.nextTick;
3104
- if(typeof setImmediate === 'function') {
3105
- util.setImmediate = setImmediate;
3106
- } else {
3107
- // polyfill setImmediate with nextTick, older versions of node
3108
- // (those w/o setImmediate) won't totally starve IO
3109
- util.setImmediate = util.nextTick;
3110
- }
3111
- return;
3112
- }
3113
-
3114
- // polyfill nextTick with native setImmediate
3115
- if(typeof setImmediate === 'function') {
3116
- util.setImmediate = setImmediate;
3117
- util.nextTick = function(callback) {
3118
- return setImmediate(callback);
3119
- };
3120
- return;
3121
- }
3122
-
3123
- /* Note: A polyfill upgrade pattern is used here to allow combining
3124
- polyfills. For example, MutationObserver is fast, but blocks UI updates,
3125
- so it needs to allow UI updates periodically, so it falls back on
3126
- postMessage or setTimeout. */
3127
-
3128
- // polyfill with setTimeout
3129
- util.setImmediate = function(callback) {
3130
- setTimeout(callback, 0);
3131
- };
3132
-
3133
- // upgrade polyfill to use postMessage
3134
- if(typeof window !== 'undefined' &&
3135
- typeof window.postMessage === 'function') {
3136
- var msg = 'forge.setImmediate';
3137
- var callbacks = [];
3138
- util.setImmediate = function(callback) {
3139
- callbacks.push(callback);
3140
- // only send message when one hasn't been sent in
3141
- // the current turn of the event loop
3142
- if(callbacks.length === 1) {
3143
- window.postMessage(msg, '*');
3144
- }
3145
- };
3146
- function handler(event) {
3147
- if(event.source === window && event.data === msg) {
3148
- event.stopPropagation();
3149
- var copy = callbacks.slice();
3150
- callbacks.length = 0;
3151
- copy.forEach(function(callback) {
3152
- callback();
3153
- });
3154
- }
3155
- }
3156
- window.addEventListener('message', handler, true);
3157
- }
3158
-
3159
- // upgrade polyfill to use MutationObserver
3160
- if(typeof MutationObserver !== 'undefined') {
3161
- // polyfill with MutationObserver
3162
- var now = Date.now();
3163
- var attr = true;
3164
- var div = document.createElement('div');
3165
- var callbacks = [];
3166
- new MutationObserver(function() {
3167
- var copy = callbacks.slice();
3168
- callbacks.length = 0;
3169
- copy.forEach(function(callback) {
3170
- callback();
3171
- });
3172
- }).observe(div, {attributes: true});
3173
- var oldSetImmediate = util.setImmediate;
3174
- util.setImmediate = function(callback) {
3175
- if(Date.now() - now > 15) {
3176
- now = Date.now();
3177
- oldSetImmediate(callback);
3178
- } else {
3179
- callbacks.push(callback);
3180
- // only trigger observer when it hasn't been triggered in
3181
- // the current turn of the event loop
3182
- if(callbacks.length === 1) {
3183
- div.setAttribute('a', attr = !attr);
3184
- }
3185
- }
3186
- };
3187
- }
3188
-
3189
- util.nextTick = util.setImmediate;
3190
-})();
3191
-
3192
-// define isArray
3193
-util.isArray = Array.isArray || function(x) {
3194
- return Object.prototype.toString.call(x) === '[object Array]';
3195
-};
3196
-
3197
-// define isArrayBuffer
3198
-util.isArrayBuffer = function(x) {
3199
- return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;
3200
-};
3201
-
3202
-// define isArrayBufferView
3203
-util.isArrayBufferView = function(x) {
3204
- return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;
3205
-};
3206
-
3207
-// TODO: set ByteBuffer to best available backing
3208
-util.ByteBuffer = ByteStringBuffer;
3209
-
3210
-/** Buffer w/BinaryString backing */
3211
-
3212
-/**
3213
- * Constructor for a binary string backed byte buffer.
3214
- *
3215
- * @param [b] the bytes to wrap (either encoded as string, one byte per
3216
- * character, or as an ArrayBuffer or Typed Array).
3217
- */
3218
-function ByteStringBuffer(b) {
3219
- // TODO: update to match DataBuffer API
3220
-
3221
- // the data in this buffer
3222
- this.data = '';
3223
- // the pointer for reading from this buffer
3224
- this.read = 0;
3225
-
3226
- if(typeof b === 'string') {
3227
- this.data = b;
3228
- } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {
3229
- // convert native buffer to forge buffer
3230
- // FIXME: support native buffers internally instead
3231
- var arr = new Uint8Array(b);
3232
- try {
3233
- this.data = String.fromCharCode.apply(null, arr);
3234
- } catch(e) {
3235
- for(var i = 0; i < arr.length; ++i) {
3236
- this.putByte(arr[i]);
3237
- }
3238
- }
3239
- } else if(b instanceof ByteStringBuffer ||
3240
- (typeof b === 'object' && typeof b.data === 'string' &&
3241
- typeof b.read === 'number')) {
3242
- // copy existing buffer
3243
- this.data = b.data;
3244
- this.read = b.read;
3245
- }
3246
-
3247
- // used for v8 optimization
3248
- this._constructedStringLength = 0;
3249
-}
3250
-util.ByteStringBuffer = ByteStringBuffer;
3251
-
3252
-/* Note: This is an optimization for V8-based browsers. When V8 concatenates
3253
- a string, the strings are only joined logically using a "cons string" or
3254
- "constructed/concatenated string". These containers keep references to one
3255
- another and can result in very large memory usage. For example, if a 2MB
3256
- string is constructed by concatenating 4 bytes together at a time, the
3257
- memory usage will be ~44MB; so ~22x increase. The strings are only joined
3258
- together when an operation requiring their joining takes place, such as
3259
- substr(). This function is called when adding data to this buffer to ensure
3260
- these types of strings are periodically joined to reduce the memory
3261
- footprint. */
3262
-var _MAX_CONSTRUCTED_STRING_LENGTH = 4096;
3263
-util.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {
3264
- this._constructedStringLength += x;
3265
- if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {
3266
- // this substr() should cause the constructed string to join
3267
- this.data.substr(0, 1);
3268
- this._constructedStringLength = 0;
3269
- }
3270
-};
3271
-
3272
-/**
3273
- * Gets the number of bytes in this buffer.
3274
- *
3275
- * @return the number of bytes in this buffer.
3276
- */
3277
-util.ByteStringBuffer.prototype.length = function() {
3278
- return this.data.length - this.read;
3279
-};
3280
-
3281
-/**
3282
- * Gets whether or not this buffer is empty.
3283
- *
3284
- * @return true if this buffer is empty, false if not.
3285
- */
3286
-util.ByteStringBuffer.prototype.isEmpty = function() {
3287
- return this.length() <= 0;
3288
-};
3289
-
3290
-/**
3291
- * Puts a byte in this buffer.
3292
- *
3293
- * @param b the byte to put.
3294
- *
3295
- * @return this buffer.
3296
- */
3297
-util.ByteStringBuffer.prototype.putByte = function(b) {
3298
- return this.putBytes(String.fromCharCode(b));
3299
-};
3300
-
3301
-/**
3302
- * Puts a byte in this buffer N times.
3303
- *
3304
- * @param b the byte to put.
3305
- * @param n the number of bytes of value b to put.
3306
- *
3307
- * @return this buffer.
3308
- */
3309
-util.ByteStringBuffer.prototype.fillWithByte = function(b, n) {
3310
- b = String.fromCharCode(b);
3311
- var d = this.data;
3312
- while(n > 0) {
3313
- if(n & 1) {
3314
- d += b;
3315
- }
3316
- n >>>= 1;
3317
- if(n > 0) {
3318
- b += b;
3319
- }
3320
- }
3321
- this.data = d;
3322
- this._optimizeConstructedString(n);
3323
- return this;
3324
-};
3325
-
3326
-/**
3327
- * Puts bytes in this buffer.
3328
- *
3329
- * @param bytes the bytes (as a UTF-8 encoded string) to put.
3330
- *
3331
- * @return this buffer.
3332
- */
3333
-util.ByteStringBuffer.prototype.putBytes = function(bytes) {
3334
- this.data += bytes;
3335
- this._optimizeConstructedString(bytes.length);
3336
- return this;
3337
-};
3338
-
3339
-/**
3340
- * Puts a UTF-16 encoded string into this buffer.
3341
- *
3342
- * @param str the string to put.
3343
- *
3344
- * @return this buffer.
3345
- */
3346
-util.ByteStringBuffer.prototype.putString = function(str) {
3347
- return this.putBytes(util.encodeUtf8(str));
3348
-};
3349
-
3350
-/**
3351
- * Puts a 16-bit integer in this buffer in big-endian order.
3352
- *
3353
- * @param i the 16-bit integer.
3354
- *
3355
- * @return this buffer.
3356
- */
3357
-util.ByteStringBuffer.prototype.putInt16 = function(i) {
3358
- return this.putBytes(
3359
- String.fromCharCode(i >> 8 & 0xFF) +
3360
- String.fromCharCode(i & 0xFF));
3361
-};
3362
-
3363
-/**
3364
- * Puts a 24-bit integer in this buffer in big-endian order.
3365
- *
3366
- * @param i the 24-bit integer.
3367
- *
3368
- * @return this buffer.
3369
- */
3370
-util.ByteStringBuffer.prototype.putInt24 = function(i) {
3371
- return this.putBytes(
3372
- String.fromCharCode(i >> 16 & 0xFF) +
3373
- String.fromCharCode(i >> 8 & 0xFF) +
3374
- String.fromCharCode(i & 0xFF));
3375
-};
3376
-
3377
-/**
3378
- * Puts a 32-bit integer in this buffer in big-endian order.
3379
- *
3380
- * @param i the 32-bit integer.
3381
- *
3382
- * @return this buffer.
3383
- */
3384
-util.ByteStringBuffer.prototype.putInt32 = function(i) {
3385
- return this.putBytes(
3386
- String.fromCharCode(i >> 24 & 0xFF) +
3387
- String.fromCharCode(i >> 16 & 0xFF) +
3388
- String.fromCharCode(i >> 8 & 0xFF) +
3389
- String.fromCharCode(i & 0xFF));
3390
-};
3391
-
3392
-/**
3393
- * Puts a 16-bit integer in this buffer in little-endian order.
3394
- *
3395
- * @param i the 16-bit integer.
3396
- *
3397
- * @return this buffer.
3398
- */
3399
-util.ByteStringBuffer.prototype.putInt16Le = function(i) {
3400
- return this.putBytes(
3401
- String.fromCharCode(i & 0xFF) +
3402
- String.fromCharCode(i >> 8 & 0xFF));
3403
-};
3404
-
3405
-/**
3406
- * Puts a 24-bit integer in this buffer in little-endian order.
3407
- *
3408
- * @param i the 24-bit integer.
3409
- *
3410
- * @return this buffer.
3411
- */
3412
-util.ByteStringBuffer.prototype.putInt24Le = function(i) {
3413
- return this.putBytes(
3414
- String.fromCharCode(i & 0xFF) +
3415
- String.fromCharCode(i >> 8 & 0xFF) +
3416
- String.fromCharCode(i >> 16 & 0xFF));
3417
-};
3418
-
3419
-/**
3420
- * Puts a 32-bit integer in this buffer in little-endian order.
3421
- *
3422
- * @param i the 32-bit integer.
3423
- *
3424
- * @return this buffer.
3425
- */
3426
-util.ByteStringBuffer.prototype.putInt32Le = function(i) {
3427
- return this.putBytes(
3428
- String.fromCharCode(i & 0xFF) +
3429
- String.fromCharCode(i >> 8 & 0xFF) +
3430
- String.fromCharCode(i >> 16 & 0xFF) +
3431
- String.fromCharCode(i >> 24 & 0xFF));
3432
-};
3433
-
3434
-/**
3435
- * Puts an n-bit integer in this buffer in big-endian order.
3436
- *
3437
- * @param i the n-bit integer.
3438
- * @param n the number of bits in the integer.
3439
- *
3440
- * @return this buffer.
3441
- */
3442
-util.ByteStringBuffer.prototype.putInt = function(i, n) {
3443
- var bytes = '';
3444
- do {
3445
- n -= 8;
3446
- bytes += String.fromCharCode((i >> n) & 0xFF);
3447
- } while(n > 0);
3448
- return this.putBytes(bytes);
3449
-};
3450
-
3451
-/**
3452
- * Puts a signed n-bit integer in this buffer in big-endian order. Two's
3453
- * complement representation is used.
3454
- *
3455
- * @param i the n-bit integer.
3456
- * @param n the number of bits in the integer.
3457
- *
3458
- * @return this buffer.
3459
- */
3460
-util.ByteStringBuffer.prototype.putSignedInt = function(i, n) {
3461
- if(i < 0) {
3462
- i += 2 << (n - 1);
3463
- }
3464
- return this.putInt(i, n);
3465
-};
3466
-
3467
-/**
3468
- * Puts the given buffer into this buffer.
3469
- *
3470
- * @param buffer the buffer to put into this one.
3471
- *
3472
- * @return this buffer.
3473
- */
3474
-util.ByteStringBuffer.prototype.putBuffer = function(buffer) {
3475
- return this.putBytes(buffer.getBytes());
3476
-};
3477
-
3478
-/**
3479
- * Gets a byte from this buffer and advances the read pointer by 1.
3480
- *
3481
- * @return the byte.
3482
- */
3483
-util.ByteStringBuffer.prototype.getByte = function() {
3484
- return this.data.charCodeAt(this.read++);
3485
-};
3486
-
3487
-/**
3488
- * Gets a uint16 from this buffer in big-endian order and advances the read
3489
- * pointer by 2.
3490
- *
3491
- * @return the uint16.
3492
- */
3493
-util.ByteStringBuffer.prototype.getInt16 = function() {
3494
- var rval = (
3495
- this.data.charCodeAt(this.read) << 8 ^
3496
- this.data.charCodeAt(this.read + 1));
3497
- this.read += 2;
3498
- return rval;
3499
-};
3500
-
3501
-/**
3502
- * Gets a uint24 from this buffer in big-endian order and advances the read
3503
- * pointer by 3.
3504
- *
3505
- * @return the uint24.
3506
- */
3507
-util.ByteStringBuffer.prototype.getInt24 = function() {
3508
- var rval = (
3509
- this.data.charCodeAt(this.read) << 16 ^
3510
- this.data.charCodeAt(this.read + 1) << 8 ^
3511
- this.data.charCodeAt(this.read + 2));
3512
- this.read += 3;
3513
- return rval;
3514
-};
3515
-
3516
-/**
3517
- * Gets a uint32 from this buffer in big-endian order and advances the read
3518
- * pointer by 4.
3519
- *
3520
- * @return the word.
3521
- */
3522
-util.ByteStringBuffer.prototype.getInt32 = function() {
3523
- var rval = (
3524
- this.data.charCodeAt(this.read) << 24 ^
3525
- this.data.charCodeAt(this.read + 1) << 16 ^
3526
- this.data.charCodeAt(this.read + 2) << 8 ^
3527
- this.data.charCodeAt(this.read + 3));
3528
- this.read += 4;
3529
- return rval;
3530
-};
3531
-
3532
-/**
3533
- * Gets a uint16 from this buffer in little-endian order and advances the read
3534
- * pointer by 2.
3535
- *
3536
- * @return the uint16.
3537
- */
3538
-util.ByteStringBuffer.prototype.getInt16Le = function() {
3539
- var rval = (
3540
- this.data.charCodeAt(this.read) ^
3541
- this.data.charCodeAt(this.read + 1) << 8);
3542
- this.read += 2;
3543
- return rval;
3544
-};
3545
-
3546
-/**
3547
- * Gets a uint24 from this buffer in little-endian order and advances the read
3548
- * pointer by 3.
3549
- *
3550
- * @return the uint24.
3551
- */
3552
-util.ByteStringBuffer.prototype.getInt24Le = function() {
3553
- var rval = (
3554
- this.data.charCodeAt(this.read) ^
3555
- this.data.charCodeAt(this.read + 1) << 8 ^
3556
- this.data.charCodeAt(this.read + 2) << 16);
3557
- this.read += 3;
3558
- return rval;
3559
-};
3560
-
3561
-/**
3562
- * Gets a uint32 from this buffer in little-endian order and advances the read
3563
- * pointer by 4.
3564
- *
3565
- * @return the word.
3566
- */
3567
-util.ByteStringBuffer.prototype.getInt32Le = function() {
3568
- var rval = (
3569
- this.data.charCodeAt(this.read) ^
3570
- this.data.charCodeAt(this.read + 1) << 8 ^
3571
- this.data.charCodeAt(this.read + 2) << 16 ^
3572
- this.data.charCodeAt(this.read + 3) << 24);
3573
- this.read += 4;
3574
- return rval;
3575
-};
3576
-
3577
-/**
3578
- * Gets an n-bit integer from this buffer in big-endian order and advances the
3579
- * read pointer by n/8.
3580
- *
3581
- * @param n the number of bits in the integer.
3582
- *
3583
- * @return the integer.
3584
- */
3585
-util.ByteStringBuffer.prototype.getInt = function(n) {
3586
- var rval = 0;
3587
- do {
3588
- rval = (rval << 8) + this.data.charCodeAt(this.read++);
3589
- n -= 8;
3590
- } while(n > 0);
3591
- return rval;
3592
-};
3593
-
3594
-/**
3595
- * Gets a signed n-bit integer from this buffer in big-endian order, using
3596
- * two's complement, and advances the read pointer by n/8.
3597
- *
3598
- * @param n the number of bits in the integer.
3599
- *
3600
- * @return the integer.
3601
- */
3602
-util.ByteStringBuffer.prototype.getSignedInt = function(n) {
3603
- var x = this.getInt(n);
3604
- var max = 2 << (n - 2);
3605
- if(x >= max) {
3606
- x -= max << 1;
3607
- }
3608
- return x;
3609
-};
3610
-
3611
-/**
3612
- * Reads bytes out into a UTF-8 string and clears them from the buffer.
3613
- *
3614
- * @param count the number of bytes to read, undefined or null for all.
3615
- *
3616
- * @return a UTF-8 string of bytes.
3617
- */
3618
-util.ByteStringBuffer.prototype.getBytes = function(count) {
3619
- var rval;
3620
- if(count) {
3621
- // read count bytes
3622
- count = Math.min(this.length(), count);
3623
- rval = this.data.slice(this.read, this.read + count);
3624
- this.read += count;
3625
- } else if(count === 0) {
3626
- rval = '';
3627
- } else {
3628
- // read all bytes, optimize to only copy when needed
3629
- rval = (this.read === 0) ? this.data : this.data.slice(this.read);
3630
- this.clear();
3631
- }
3632
- return rval;
3633
-};
3634
-
3635
-/**
3636
- * Gets a UTF-8 encoded string of the bytes from this buffer without modifying
3637
- * the read pointer.
3638
- *
3639
- * @param count the number of bytes to get, omit to get all.
3640
- *
3641
- * @return a string full of UTF-8 encoded characters.
3642
- */
3643
-util.ByteStringBuffer.prototype.bytes = function(count) {
3644
- return (typeof(count) === 'undefined' ?
3645
- this.data.slice(this.read) :
3646
- this.data.slice(this.read, this.read + count));
3647
-};
3648
-
3649
-/**
3650
- * Gets a byte at the given index without modifying the read pointer.
3651
- *
3652
- * @param i the byte index.
3653
- *
3654
- * @return the byte.
3655
- */
3656
-util.ByteStringBuffer.prototype.at = function(i) {
3657
- return this.data.charCodeAt(this.read + i);
3658
-};
3659
-
3660
-/**
3661
- * Puts a byte at the given index without modifying the read pointer.
3662
- *
3663
- * @param i the byte index.
3664
- * @param b the byte to put.
3665
- *
3666
- * @return this buffer.
3667
- */
3668
-util.ByteStringBuffer.prototype.setAt = function(i, b) {
3669
- this.data = this.data.substr(0, this.read + i) +
3670
- String.fromCharCode(b) +
3671
- this.data.substr(this.read + i + 1);
3672
- return this;
3673
-};
3674
-
3675
-/**
3676
- * Gets the last byte without modifying the read pointer.
3677
- *
3678
- * @return the last byte.
3679
- */
3680
-util.ByteStringBuffer.prototype.last = function() {
3681
- return this.data.charCodeAt(this.data.length - 1);
3682
-};
3683
-
3684
-/**
3685
- * Creates a copy of this buffer.
3686
- *
3687
- * @return the copy.
3688
- */
3689
-util.ByteStringBuffer.prototype.copy = function() {
3690
- var c = util.createBuffer(this.data);
3691
- c.read = this.read;
3692
- return c;
3693
-};
3694
-
3695
-/**
3696
- * Compacts this buffer.
3697
- *
3698
- * @return this buffer.
3699
- */
3700
-util.ByteStringBuffer.prototype.compact = function() {
3701
- if(this.read > 0) {
3702
- this.data = this.data.slice(this.read);
3703
- this.read = 0;
3704
- }
3705
- return this;
3706
-};
3707
-
3708
-/**
3709
- * Clears this buffer.
3710
- *
3711
- * @return this buffer.
3712
- */
3713
-util.ByteStringBuffer.prototype.clear = function() {
3714
- this.data = '';
3715
- this.read = 0;
3716
- return this;
3717
-};
3718
-
3719
-/**
3720
- * Shortens this buffer by triming bytes off of the end of this buffer.
3721
- *
3722
- * @param count the number of bytes to trim off.
3723
- *
3724
- * @return this buffer.
3725
- */
3726
-util.ByteStringBuffer.prototype.truncate = function(count) {
3727
- var len = Math.max(0, this.length() - count);
3728
- this.data = this.data.substr(this.read, len);
3729
- this.read = 0;
3730
- return this;
3731
-};
3732
-
3733
-/**
3734
- * Converts this buffer to a hexadecimal string.
3735
- *
3736
- * @return a hexadecimal string.
3737
- */
3738
-util.ByteStringBuffer.prototype.toHex = function() {
3739
- var rval = '';
3740
- for(var i = this.read; i < this.data.length; ++i) {
3741
- var b = this.data.charCodeAt(i);
3742
- if(b < 16) {
3743
- rval += '0';
3744
- }
3745
- rval += b.toString(16);
3746
- }
3747
- return rval;
3748
-};
3749
-
3750
-/**
3751
- * Converts this buffer to a UTF-16 string (standard JavaScript string).
3752
- *
3753
- * @return a UTF-16 string.
3754
- */
3755
-util.ByteStringBuffer.prototype.toString = function() {
3756
- return util.decodeUtf8(this.bytes());
3757
-};
3758
-
3759
-/** End Buffer w/BinaryString backing */
3760
-
3761
-
3762
-/** Buffer w/UInt8Array backing */
3763
-
3764
-/**
3765
- * FIXME: Experimental. Do not use yet.
3766
- *
3767
- * Constructor for an ArrayBuffer-backed byte buffer.
3768
- *
3769
- * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a
3770
- * TypedArray.
3771
- *
3772
- * If a string is given, its encoding should be provided as an option,
3773
- * otherwise it will default to 'binary'. A 'binary' string is encoded such
3774
- * that each character is one byte in length and size.
3775
- *
3776
- * If an ArrayBuffer, DataView, or TypedArray is given, it will be used
3777
- * *directly* without any copying. Note that, if a write to the buffer requires
3778
- * more space, the buffer will allocate a new backing ArrayBuffer to
3779
- * accommodate. The starting read and write offsets for the buffer may be
3780
- * given as options.
3781
- *
3782
- * @param [b] the initial bytes for this buffer.
3783
- * @param options the options to use:
3784
- * [readOffset] the starting read offset to use (default: 0).
3785
- * [writeOffset] the starting write offset to use (default: the
3786
- * length of the first parameter).
3787
- * [growSize] the minimum amount, in bytes, to grow the buffer by to
3788
- * accommodate writes (default: 1024).
3789
- * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the
3790
- * first parameter, if it is a string (default: 'binary').
3791
- */
3792
-function DataBuffer(b, options) {
3793
- // default options
3794
- options = options || {};
3795
-
3796
- // pointers for read from/write to buffer
3797
- this.read = options.readOffset || 0;
3798
- this.growSize = options.growSize || 1024;
3799
-
3800
- var isArrayBuffer = util.isArrayBuffer(b);
3801
- var isArrayBufferView = util.isArrayBufferView(b);
3802
- if(isArrayBuffer || isArrayBufferView) {
3803
- // use ArrayBuffer directly
3804
- if(isArrayBuffer) {
3805
- this.data = new DataView(b);
3806
- } else {
3807
- // TODO: adjust read/write offset based on the type of view
3808
- // or specify that this must be done in the options ... that the
3809
- // offsets are byte-based
3810
- this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);
3811
- }
3812
- this.write = ('writeOffset' in options ?
3813
- options.writeOffset : this.data.byteLength);
3814
- return;
3815
- }
3816
-
3817
- // initialize to empty array buffer and add any given bytes using putBytes
3818
- this.data = new DataView(new ArrayBuffer(0));
3819
- this.write = 0;
3820
-
3821
- if(b !== null && b !== undefined) {
3822
- this.putBytes(b);
3823
- }
3824
-
3825
- if('writeOffset' in options) {
3826
- this.write = options.writeOffset;
3827
- }
3828
-}
3829
-util.DataBuffer = DataBuffer;
3830
-
3831
-/**
3832
- * Gets the number of bytes in this buffer.
3833
- *
3834
- * @return the number of bytes in this buffer.
3835
- */
3836
-util.DataBuffer.prototype.length = function() {
3837
- return this.write - this.read;
3838
-};
3839
-
3840
-/**
3841
- * Gets whether or not this buffer is empty.
3842
- *
3843
- * @return true if this buffer is empty, false if not.
3844
- */
3845
-util.DataBuffer.prototype.isEmpty = function() {
3846
- return this.length() <= 0;
3847
-};
3848
-
3849
-/**
3850
- * Ensures this buffer has enough empty space to accommodate the given number
3851
- * of bytes. An optional parameter may be given that indicates a minimum
3852
- * amount to grow the buffer if necessary. If the parameter is not given,
3853
- * the buffer will be grown by some previously-specified default amount
3854
- * or heuristic.
3855
- *
3856
- * @param amount the number of bytes to accommodate.
3857
- * @param [growSize] the minimum amount, in bytes, to grow the buffer by if
3858
- * necessary.
3859
- */
3860
-util.DataBuffer.prototype.accommodate = function(amount, growSize) {
3861
- if(this.length() >= amount) {
3862
- return this;
3863
- }
3864
- growSize = Math.max(growSize || this.growSize, amount);
3865
-
3866
- // grow buffer
3867
- var src = new Uint8Array(
3868
- this.data.buffer, this.data.byteOffset, this.data.byteLength);
3869
- var dst = new Uint8Array(this.length() + growSize);
3870
- dst.set(src);
3871
- this.data = new DataView(dst.buffer);
3872
-
3873
- return this;
3874
-};
3875
-
3876
-/**
3877
- * Puts a byte in this buffer.
3878
- *
3879
- * @param b the byte to put.
3880
- *
3881
- * @return this buffer.
3882
- */
3883
-util.DataBuffer.prototype.putByte = function(b) {
3884
- this.accommodate(1);
3885
- this.data.setUint8(this.write++, b);
3886
- return this;
3887
-};
3888
-
3889
-/**
3890
- * Puts a byte in this buffer N times.
3891
- *
3892
- * @param b the byte to put.
3893
- * @param n the number of bytes of value b to put.
3894
- *
3895
- * @return this buffer.
3896
- */
3897
-util.DataBuffer.prototype.fillWithByte = function(b, n) {
3898
- this.accommodate(n);
3899
- for(var i = 0; i < n; ++i) {
3900
- this.data.setUint8(b);
3901
- }
3902
- return this;
3903
-};
3904
-
3905
-/**
3906
- * Puts bytes in this buffer. The bytes may be given as a string, an
3907
- * ArrayBuffer, a DataView, or a TypedArray.
3908
- *
3909
- * @param bytes the bytes to put.
3910
- * @param [encoding] the encoding for the first parameter ('binary', 'utf8',
3911
- * 'utf16', 'hex'), if it is a string (default: 'binary').
3912
- *
3913
- * @return this buffer.
3914
- */
3915
-util.DataBuffer.prototype.putBytes = function(bytes, encoding) {
3916
- if(util.isArrayBufferView(bytes)) {
3917
- var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
3918
- var len = src.byteLength - src.byteOffset;
3919
- this.accommodate(len);
3920
- var dst = new Uint8Array(this.data.buffer, this.write);
3921
- dst.set(src);
3922
- this.write += len;
3923
- return this;
3924
- }
3925
-
3926
- if(util.isArrayBuffer(bytes)) {
3927
- var src = new Uint8Array(bytes);
3928
- this.accommodate(src.byteLength);
3929
- var dst = new Uint8Array(this.data.buffer);
3930
- dst.set(src, this.write);
3931
- this.write += src.byteLength;
3932
- return this;
3933
- }
3934
-
3935
- // bytes is a util.DataBuffer or equivalent
3936
- if(bytes instanceof util.DataBuffer ||
3937
- (typeof bytes === 'object' &&
3938
- typeof bytes.read === 'number' && typeof bytes.write === 'number' &&
3939
- util.isArrayBufferView(bytes.data))) {
3940
- var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());
3941
- this.accommodate(src.byteLength);
3942
- var dst = new Uint8Array(bytes.data.byteLength, this.write);
3943
- dst.set(src);
3944
- this.write += src.byteLength;
3945
- return this;
3946
- }
3947
-
3948
- if(bytes instanceof util.ByteStringBuffer) {
3949
- // copy binary string and process as the same as a string parameter below
3950
- bytes = bytes.data;
3951
- encoding = 'binary';
3952
- }
3953
-
3954
- // string conversion
3955
- encoding = encoding || 'binary';
3956
- if(typeof bytes === 'string') {
3957
- var view;
3958
-
3959
- // decode from string
3960
- if(encoding === 'hex') {
3961
- this.accommodate(Math.ceil(bytes.length / 2));
3962
- view = new Uint8Array(this.data.buffer, this.write);
3963
- this.write += util.binary.hex.decode(bytes, view, this.write);
3964
- return this;
3965
- }
3966
- if(encoding === 'base64') {
3967
- this.accommodate(Math.ceil(bytes.length / 4) * 3);
3968
- view = new Uint8Array(this.data.buffer, this.write);
3969
- this.write += util.binary.base64.decode(bytes, view, this.write);
3970
- return this;
3971
- }
3972
-
3973
- // encode text as UTF-8 bytes
3974
- if(encoding === 'utf8') {
3975
- // encode as UTF-8 then decode string as raw binary
3976
- bytes = util.encodeUtf8(bytes);
3977
- encoding = 'binary';
3978
- }
3979
-
3980
- // decode string as raw binary
3981
- if(encoding === 'binary' || encoding === 'raw') {
3982
- // one byte per character
3983
- this.accommodate(bytes.length);
3984
- view = new Uint8Array(this.data.buffer, this.write);
3985
- this.write += util.binary.raw.decode(view);
3986
- return this;
3987
- }
3988
-
3989
- // encode text as UTF-16 bytes
3990
- if(encoding === 'utf16') {
3991
- // two bytes per character
3992
- this.accommodate(bytes.length * 2);
3993
- view = new Uint16Array(this.data.buffer, this.write);
3994
- this.write += util.text.utf16.encode(view);
3995
- return this;
3996
- }
3997
-
3998
- throw new Error('Invalid encoding: ' + encoding);
3999
- }
4000
-
4001
- throw Error('Invalid parameter: ' + bytes);
4002
-};
4003
-
4004
-/**
4005
- * Puts the given buffer into this buffer.
4006
- *
4007
- * @param buffer the buffer to put into this one.
4008
- *
4009
- * @return this buffer.
4010
- */
4011
-util.DataBuffer.prototype.putBuffer = function(buffer) {
4012
- this.putBytes(buffer);
4013
- buffer.clear();
4014
- return this;
4015
-};
4016
-
4017
-/**
4018
- * Puts a string into this buffer.
4019
- *
4020
- * @param str the string to put.
4021
- * @param [encoding] the encoding for the string (default: 'utf16').
4022
- *
4023
- * @return this buffer.
4024
- */
4025
-util.DataBuffer.prototype.putString = function(str) {
4026
- return this.putBytes(str, 'utf16');
4027
-};
4028
-
4029
-/**
4030
- * Puts a 16-bit integer in this buffer in big-endian order.
4031
- *
4032
- * @param i the 16-bit integer.
4033
- *
4034
- * @return this buffer.
4035
- */
4036
-util.DataBuffer.prototype.putInt16 = function(i) {
4037
- this.accommodate(2);
4038
- this.data.setInt16(this.write, i);
4039
- this.write += 2;
4040
- return this;
4041
-};
4042
-
4043
-/**
4044
- * Puts a 24-bit integer in this buffer in big-endian order.
4045
- *
4046
- * @param i the 24-bit integer.
4047
- *
4048
- * @return this buffer.
4049
- */
4050
-util.DataBuffer.prototype.putInt24 = function(i) {
4051
- this.accommodate(3);
4052
- this.data.setInt16(this.write, i >> 8 & 0xFFFF);
4053
- this.data.setInt8(this.write, i >> 16 & 0xFF);
4054
- this.write += 3;
4055
- return this;
4056
-};
4057
-
4058
-/**
4059
- * Puts a 32-bit integer in this buffer in big-endian order.
4060
- *
4061
- * @param i the 32-bit integer.
4062
- *
4063
- * @return this buffer.
4064
- */
4065
-util.DataBuffer.prototype.putInt32 = function(i) {
4066
- this.accommodate(4);
4067
- this.data.setInt32(this.write, i);
4068
- this.write += 4;
4069
- return this;
4070
-};
4071
-
4072
-/**
4073
- * Puts a 16-bit integer in this buffer in little-endian order.
4074
- *
4075
- * @param i the 16-bit integer.
4076
- *
4077
- * @return this buffer.
4078
- */
4079
-util.DataBuffer.prototype.putInt16Le = function(i) {
4080
- this.accommodate(2);
4081
- this.data.setInt16(this.write, i, true);
4082
- this.write += 2;
4083
- return this;
4084
-};
4085
-
4086
-/**
4087
- * Puts a 24-bit integer in this buffer in little-endian order.
4088
- *
4089
- * @param i the 24-bit integer.
4090
- *
4091
- * @return this buffer.
4092
- */
4093
-util.DataBuffer.prototype.putInt24Le = function(i) {
4094
- this.accommodate(3);
4095
- this.data.setInt8(this.write, i >> 16 & 0xFF);
4096
- this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);
4097
- this.write += 3;
4098
- return this;
4099
-};
4100
-
4101
-/**
4102
- * Puts a 32-bit integer in this buffer in little-endian order.
4103
- *
4104
- * @param i the 32-bit integer.
4105
- *
4106
- * @return this buffer.
4107
- */
4108
-util.DataBuffer.prototype.putInt32Le = function(i) {
4109
- this.accommodate(4);
4110
- this.data.setInt32(this.write, i, true);
4111
- this.write += 4;
4112
- return this;
4113
-};
4114
-
4115
-/**
4116
- * Puts an n-bit integer in this buffer in big-endian order.
4117
- *
4118
- * @param i the n-bit integer.
4119
- * @param n the number of bits in the integer.
4120
- *
4121
- * @return this buffer.
4122
- */
4123
-util.DataBuffer.prototype.putInt = function(i, n) {
4124
- this.accommodate(n / 8);
4125
- do {
4126
- n -= 8;
4127
- this.data.setInt8(this.write++, (i >> n) & 0xFF);
4128
- } while(n > 0);
4129
- return this;
4130
-};
4131
-
4132
-/**
4133
- * Puts a signed n-bit integer in this buffer in big-endian order. Two's
4134
- * complement representation is used.
4135
- *
4136
- * @param i the n-bit integer.
4137
- * @param n the number of bits in the integer.
4138
- *
4139
- * @return this buffer.
4140
- */
4141
-util.DataBuffer.prototype.putSignedInt = function(i, n) {
4142
- this.accommodate(n / 8);
4143
- if(i < 0) {
4144
- i += 2 << (n - 1);
4145
- }
4146
- return this.putInt(i, n);
4147
-};
4148
-
4149
-/**
4150
- * Gets a byte from this buffer and advances the read pointer by 1.
4151
- *
4152
- * @return the byte.
4153
- */
4154
-util.DataBuffer.prototype.getByte = function() {
4155
- return this.data.getInt8(this.read++);
4156
-};
4157
-
4158
-/**
4159
- * Gets a uint16 from this buffer in big-endian order and advances the read
4160
- * pointer by 2.
4161
- *
4162
- * @return the uint16.
4163
- */
4164
-util.DataBuffer.prototype.getInt16 = function() {
4165
- var rval = this.data.getInt16(this.read);
4166
- this.read += 2;
4167
- return rval;
4168
-};
4169
-
4170
-/**
4171
- * Gets a uint24 from this buffer in big-endian order and advances the read
4172
- * pointer by 3.
4173
- *
4174
- * @return the uint24.
4175
- */
4176
-util.DataBuffer.prototype.getInt24 = function() {
4177
- var rval = (
4178
- this.data.getInt16(this.read) << 8 ^
4179
- this.data.getInt8(this.read + 2));
4180
- this.read += 3;
4181
- return rval;
4182
-};
4183
-
4184
-/**
4185
- * Gets a uint32 from this buffer in big-endian order and advances the read
4186
- * pointer by 4.
4187
- *
4188
- * @return the word.
4189
- */
4190
-util.DataBuffer.prototype.getInt32 = function() {
4191
- var rval = this.data.getInt32(this.read);
4192
- this.read += 4;
4193
- return rval;
4194
-};
4195
-
4196
-/**
4197
- * Gets a uint16 from this buffer in little-endian order and advances the read
4198
- * pointer by 2.
4199
- *
4200
- * @return the uint16.
4201
- */
4202
-util.DataBuffer.prototype.getInt16Le = function() {
4203
- var rval = this.data.getInt16(this.read, true);
4204
- this.read += 2;
4205
- return rval;
4206
-};
4207
-
4208
-/**
4209
- * Gets a uint24 from this buffer in little-endian order and advances the read
4210
- * pointer by 3.
4211
- *
4212
- * @return the uint24.
4213
- */
4214
-util.DataBuffer.prototype.getInt24Le = function() {
4215
- var rval = (
4216
- this.data.getInt8(this.read) ^
4217
- this.data.getInt16(this.read + 1, true) << 8);
4218
- this.read += 3;
4219
- return rval;
4220
-};
4221
-
4222
-/**
4223
- * Gets a uint32 from this buffer in little-endian order and advances the read
4224
- * pointer by 4.
4225
- *
4226
- * @return the word.
4227
- */
4228
-util.DataBuffer.prototype.getInt32Le = function() {
4229
- var rval = this.data.getInt32(this.read, true);
4230
- this.read += 4;
4231
- return rval;
4232
-};
4233
-
4234
-/**
4235
- * Gets an n-bit integer from this buffer in big-endian order and advances the
4236
- * read pointer by n/8.
4237
- *
4238
- * @param n the number of bits in the integer.
4239
- *
4240
- * @return the integer.
4241
- */
4242
-util.DataBuffer.prototype.getInt = function(n) {
4243
- var rval = 0;
4244
- do {
4245
- rval = (rval << 8) + this.data.getInt8(this.read++);
4246
- n -= 8;
4247
- } while(n > 0);
4248
- return rval;
4249
-};
4250
-
4251
-/**
4252
- * Gets a signed n-bit integer from this buffer in big-endian order, using
4253
- * two's complement, and advances the read pointer by n/8.
4254
- *
4255
- * @param n the number of bits in the integer.
4256
- *
4257
- * @return the integer.
4258
- */
4259
-util.DataBuffer.prototype.getSignedInt = function(n) {
4260
- var x = this.getInt(n);
4261
- var max = 2 << (n - 2);
4262
- if(x >= max) {
4263
- x -= max << 1;
4264
- }
4265
- return x;
4266
-};
4267
-
4268
-/**
4269
- * Reads bytes out into a UTF-8 string and clears them from the buffer.
4270
- *
4271
- * @param count the number of bytes to read, undefined or null for all.
4272
- *
4273
- * @return a UTF-8 string of bytes.
4274
- */
4275
-util.DataBuffer.prototype.getBytes = function(count) {
4276
- // TODO: deprecate this method, it is poorly named and
4277
- // this.toString('binary') replaces it
4278
- // add a toTypedArray()/toArrayBuffer() function
4279
- var rval;
4280
- if(count) {
4281
- // read count bytes
4282
- count = Math.min(this.length(), count);
4283
- rval = this.data.slice(this.read, this.read + count);
4284
- this.read += count;
4285
- } else if(count === 0) {
4286
- rval = '';
4287
- } else {
4288
- // read all bytes, optimize to only copy when needed
4289
- rval = (this.read === 0) ? this.data : this.data.slice(this.read);
4290
- this.clear();
4291
- }
4292
- return rval;
4293
-};
4294
-
4295
-/**
4296
- * Gets a UTF-8 encoded string of the bytes from this buffer without modifying
4297
- * the read pointer.
4298
- *
4299
- * @param count the number of bytes to get, omit to get all.
4300
- *
4301
- * @return a string full of UTF-8 encoded characters.
4302
- */
4303
-util.DataBuffer.prototype.bytes = function(count) {
4304
- // TODO: deprecate this method, it is poorly named, add "getString()"
4305
- return (typeof(count) === 'undefined' ?
4306
- this.data.slice(this.read) :
4307
- this.data.slice(this.read, this.read + count));
4308
-};
4309
-
4310
-/**
4311
- * Gets a byte at the given index without modifying the read pointer.
4312
- *
4313
- * @param i the byte index.
4314
- *
4315
- * @return the byte.
4316
- */
4317
-util.DataBuffer.prototype.at = function(i) {
4318
- return this.data.getUint8(this.read + i);
4319
-};
4320
-
4321
-/**
4322
- * Puts a byte at the given index without modifying the read pointer.
4323
- *
4324
- * @param i the byte index.
4325
- * @param b the byte to put.
4326
- *
4327
- * @return this buffer.
4328
- */
4329
-util.DataBuffer.prototype.setAt = function(i, b) {
4330
- this.data.setUint8(i, b);
4331
- return this;
4332
-};
4333
-
4334
-/**
4335
- * Gets the last byte without modifying the read pointer.
4336
- *
4337
- * @return the last byte.
4338
- */
4339
-util.DataBuffer.prototype.last = function() {
4340
- return this.data.getUint8(this.write - 1);
4341
-};
4342
-
4343
-/**
4344
- * Creates a copy of this buffer.
4345
- *
4346
- * @return the copy.
4347
- */
4348
-util.DataBuffer.prototype.copy = function() {
4349
- return new util.DataBuffer(this);
4350
-};
4351
-
4352
-/**
4353
- * Compacts this buffer.
4354
- *
4355
- * @return this buffer.
4356
- */
4357
-util.DataBuffer.prototype.compact = function() {
4358
- if(this.read > 0) {
4359
- var src = new Uint8Array(this.data.buffer, this.read);
4360
- var dst = new Uint8Array(src.byteLength);
4361
- dst.set(src);
4362
- this.data = new DataView(dst);
4363
- this.write -= this.read;
4364
- this.read = 0;
4365
- }
4366
- return this;
4367
-};
4368
-
4369
-/**
4370
- * Clears this buffer.
4371
- *
4372
- * @return this buffer.
4373
- */
4374
-util.DataBuffer.prototype.clear = function() {
4375
- this.data = new DataView(new ArrayBuffer(0));
4376
- this.read = this.write = 0;
4377
- return this;
4378
-};
4379
-
4380
-/**
4381
- * Shortens this buffer by triming bytes off of the end of this buffer.
4382
- *
4383
- * @param count the number of bytes to trim off.
4384
- *
4385
- * @return this buffer.
4386
- */
4387
-util.DataBuffer.prototype.truncate = function(count) {
4388
- this.write = Math.max(0, this.length() - count);
4389
- this.read = Math.min(this.read, this.write);
4390
- return this;
4391
-};
4392
-
4393
-/**
4394
- * Converts this buffer to a hexadecimal string.
4395
- *
4396
- * @return a hexadecimal string.
4397
- */
4398
-util.DataBuffer.prototype.toHex = function() {
4399
- var rval = '';
4400
- for(var i = this.read; i < this.data.byteLength; ++i) {
4401
- var b = this.data.getUint8(i);
4402
- if(b < 16) {
4403
- rval += '0';
4404
- }
4405
- rval += b.toString(16);
4406
- }
4407
- return rval;
4408
-};
4409
-
4410
-/**
4411
- * Converts this buffer to a string, using the given encoding. If no
4412
- * encoding is given, 'utf8' (UTF-8) is used.
4413
- *
4414
- * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',
4415
- * 'base64' (default: 'utf8').
4416
- *
4417
- * @return a string representation of the bytes in this buffer.
4418
- */
4419
-util.DataBuffer.prototype.toString = function(encoding) {
4420
- var view = new Uint8Array(this.data, this.read, this.length());
4421
- encoding = encoding || 'utf8';
4422
-
4423
- // encode to string
4424
- if(encoding === 'binary' || encoding === 'raw') {
4425
- return util.binary.raw.encode(view);
4426
- }
4427
- if(encoding === 'hex') {
4428
- return util.binary.hex.encode(view);
4429
- }
4430
- if(encoding === 'base64') {
4431
- return util.binary.base64.encode(view);
4432
- }
4433
-
4434
- // decode to text
4435
- if(encoding === 'utf8') {
4436
- return util.text.utf8.decode(view);
4437
- }
4438
- if(encoding === 'utf16') {
4439
- return util.text.utf16.decode(view);
4440
- }
4441
-
4442
- throw new Error('Invalid encoding: ' + encoding);
4443
-};
4444
-
4445
-/** End Buffer w/UInt8Array backing */
4446
-
4447
-
4448
-/**
4449
- * Creates a buffer that stores bytes. A value may be given to put into the
4450
- * buffer that is either a string of bytes or a UTF-16 string that will
4451
- * be encoded using UTF-8 (to do the latter, specify 'utf8' as the encoding).
4452
- *
4453
- * @param [input] the bytes to wrap (as a string) or a UTF-16 string to encode
4454
- * as UTF-8.
4455
- * @param [encoding] (default: 'raw', other: 'utf8').
4456
- */
4457
-util.createBuffer = function(input, encoding) {
4458
- // TODO: deprecate, use new ByteBuffer() instead
4459
- encoding = encoding || 'raw';
4460
- if(input !== undefined && encoding === 'utf8') {
4461
- input = util.encodeUtf8(input);
4462
- }
4463
- return new util.ByteBuffer(input);
4464
-};
4465
-
4466
-/**
4467
- * Fills a string with a particular value. If you want the string to be a byte
4468
- * string, pass in String.fromCharCode(theByte).
4469
- *
4470
- * @param c the character to fill the string with, use String.fromCharCode
4471
- * to fill the string with a byte value.
4472
- * @param n the number of characters of value c to fill with.
4473
- *
4474
- * @return the filled string.
4475
- */
4476
-util.fillString = function(c, n) {
4477
- var s = '';
4478
- while(n > 0) {
4479
- if(n & 1) {
4480
- s += c;
4481
- }
4482
- n >>>= 1;
4483
- if(n > 0) {
4484
- c += c;
4485
- }
4486
- }
4487
- return s;
4488
-};
4489
-
4490
-/**
4491
- * Performs a per byte XOR between two byte strings and returns the result as a
4492
- * string of bytes.
4493
- *
4494
- * @param s1 first string of bytes.
4495
- * @param s2 second string of bytes.
4496
- * @param n the number of bytes to XOR.
4497
- *
4498
- * @return the XOR'd result.
4499
- */
4500
-util.xorBytes = function(s1, s2, n) {
4501
- var s3 = '';
4502
- var b = '';
4503
- var t = '';
4504
- var i = 0;
4505
- var c = 0;
4506
- for(; n > 0; --n, ++i) {
4507
- b = s1.charCodeAt(i) ^ s2.charCodeAt(i);
4508
- if(c >= 10) {
4509
- s3 += t;
4510
- t = '';
4511
- c = 0;
4512
- }
4513
- t += String.fromCharCode(b);
4514
- ++c;
4515
- }
4516
- s3 += t;
4517
- return s3;
4518
-};
4519
-
4520
-/**
4521
- * Converts a hex string into a 'binary' encoded string of bytes.
4522
- *
4523
- * @param hex the hexadecimal string to convert.
4524
- *
4525
- * @return the binary-encoded string of bytes.
4526
- */
4527
-util.hexToBytes = function(hex) {
4528
- // TODO: deprecate: "Deprecated. Use util.binary.hex.decode instead."
4529
- var rval = '';
4530
- var i = 0;
4531
- if(hex.length & 1 == 1) {
4532
- // odd number of characters, convert first character alone
4533
- i = 1;
4534
- rval += String.fromCharCode(parseInt(hex[0], 16));
4535
- }
4536
- // convert 2 characters (1 byte) at a time
4537
- for(; i < hex.length; i += 2) {
4538
- rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
4539
- }
4540
- return rval;
4541
-};
4542
-
4543
-/**
4544
- * Converts a 'binary' encoded string of bytes to hex.
4545
- *
4546
- * @param bytes the byte string to convert.
4547
- *
4548
- * @return the string of hexadecimal characters.
4549
- */
4550
-util.bytesToHex = function(bytes) {
4551
- // TODO: deprecate: "Deprecated. Use util.binary.hex.encode instead."
4552
- return util.createBuffer(bytes).toHex();
4553
-};
4554
-
4555
-/**
4556
- * Converts an 32-bit integer to 4-big-endian byte string.
4557
- *
4558
- * @param i the integer.
4559
- *
4560
- * @return the byte string.
4561
- */
4562
-util.int32ToBytes = function(i) {
4563
- return (
4564
- String.fromCharCode(i >> 24 & 0xFF) +
4565
- String.fromCharCode(i >> 16 & 0xFF) +
4566
- String.fromCharCode(i >> 8 & 0xFF) +
4567
- String.fromCharCode(i & 0xFF));
4568
-};
4569
-
4570
-// base64 characters, reverse mapping
4571
-var _base64 =
4572
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
4573
-var _base64Idx = [
4574
-/*43 -43 = 0*/
4575
-/*'+', 1, 2, 3,'/' */
4576
- 62, -1, -1, -1, 63,
4577
-
4578
-/*'0','1','2','3','4','5','6','7','8','9' */
4579
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4580
-
4581
-/*15, 16, 17,'=', 19, 20, 21 */
4582
- -1, -1, -1, 64, -1, -1, -1,
4583
-
4584
-/*65 - 43 = 22*/
4585
-/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */
4586
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
4587
-
4588
-/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */
4589
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4590
-
4591
-/*91 - 43 = 48 */
4592
-/*48, 49, 50, 51, 52, 53 */
4593
- -1, -1, -1, -1, -1, -1,
4594
-
4595
-/*97 - 43 = 54*/
4596
-/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */
4597
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4598
-
4599
-/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */
4600
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
4601
-];
4602
-
4603
-/**
4604
- * Base64 encodes a 'binary' encoded string of bytes.
4605
- *
4606
- * @param input the binary encoded string of bytes to base64-encode.
4607
- * @param maxline the maximum number of encoded characters per line to use,
4608
- * defaults to none.
4609
- *
4610
- * @return the base64-encoded output.
4611
- */
4612
-util.encode64 = function(input, maxline) {
4613
- // TODO: deprecate: "Deprecated. Use util.binary.base64.encode instead."
4614
- var line = '';
4615
- var output = '';
4616
- var chr1, chr2, chr3;
4617
- var i = 0;
4618
- while(i < input.length) {
4619
- chr1 = input.charCodeAt(i++);
4620
- chr2 = input.charCodeAt(i++);
4621
- chr3 = input.charCodeAt(i++);
4622
-
4623
- // encode 4 character group
4624
- line += _base64.charAt(chr1 >> 2);
4625
- line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));
4626
- if(isNaN(chr2)) {
4627
- line += '==';
4628
- } else {
4629
- line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));
4630
- line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);
4631
- }
4632
-
4633
- if(maxline && line.length > maxline) {
4634
- output += line.substr(0, maxline) + '\r\n';
4635
- line = line.substr(maxline);
4636
- }
4637
- }
4638
- output += line;
4639
- return output;
4640
-};
4641
-
4642
-/**
4643
- * Base64 decodes a string into a 'binary' encoded string of bytes.
4644
- *
4645
- * @param input the base64-encoded input.
4646
- *
4647
- * @return the binary encoded string.
4648
- */
4649
-util.decode64 = function(input) {
4650
- // TODO: deprecate: "Deprecated. Use util.binary.base64.decode instead."
4651
-
4652
- // remove all non-base64 characters
4653
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
4654
-
4655
- var output = '';
4656
- var enc1, enc2, enc3, enc4;
4657
- var i = 0;
4658
-
4659
- while(i < input.length) {
4660
- enc1 = _base64Idx[input.charCodeAt(i++) - 43];
4661
- enc2 = _base64Idx[input.charCodeAt(i++) - 43];
4662
- enc3 = _base64Idx[input.charCodeAt(i++) - 43];
4663
- enc4 = _base64Idx[input.charCodeAt(i++) - 43];
4664
-
4665
- output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));
4666
- if(enc3 !== 64) {
4667
- // decoded at least 2 bytes
4668
- output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));
4669
- if(enc4 !== 64) {
4670
- // decoded 3 bytes
4671
- output += String.fromCharCode(((enc3 & 3) << 6) | enc4);
4672
- }
4673
- }
4674
- }
4675
-
4676
- return output;
4677
-};
4678
-
4679
-/**
4680
- * UTF-8 encodes the given UTF-16 encoded string (a standard JavaScript
4681
- * string). Non-ASCII characters will be encoded as multiple bytes according
4682
- * to UTF-8.
4683
- *
4684
- * @param str the string to encode.
4685
- *
4686
- * @return the UTF-8 encoded string.
4687
- */
4688
-util.encodeUtf8 = function(str) {
4689
- return unescape(encodeURIComponent(str));
4690
-};
4691
-
4692
-/**
4693
- * Decodes a UTF-8 encoded string into a UTF-16 string.
4694
- *
4695
- * @param str the string to decode.
4696
- *
4697
- * @return the UTF-16 encoded string (standard JavaScript string).
4698
- */
4699
-util.decodeUtf8 = function(str) {
4700
- return decodeURIComponent(escape(str));
4701
-};
4702
-
4703
-// binary encoding/decoding tools
4704
-// FIXME: Experimental. Do not use yet.
4705
-util.binary = {
4706
- raw: {},
4707
- hex: {},
4708
- base64: {}
4709
-};
4710
-
4711
-/**
4712
- * Encodes a Uint8Array as a binary-encoded string. This encoding uses
4713
- * a value between 0 and 255 for each character.
4714
- *
4715
- * @param bytes the Uint8Array to encode.
4716
- *
4717
- * @return the binary-encoded string.
4718
- */
4719
-util.binary.raw.encode = function(bytes) {
4720
- return String.fromCharCode.apply(null, bytes);
4721
-};
4722
-
4723
-/**
4724
- * Decodes a binary-encoded string to a Uint8Array. This encoding uses
4725
- * a value between 0 and 255 for each character.
4726
- *
4727
- * @param str the binary-encoded string to decode.
4728
- * @param [output] an optional Uint8Array to write the output to; if it
4729
- * is too small, an exception will be thrown.
4730
- * @param [offset] the start offset for writing to the output (default: 0).
4731
- *
4732
- * @return the Uint8Array or the number of bytes written if output was given.
4733
- */
4734
-util.binary.raw.decode = function(str, output, offset) {
4735
- var out = output;
4736
- if(!out) {
4737
- out = new Uint8Array(str.length);
4738
- }
4739
- offset = offset || 0;
4740
- var j = offset;
4741
- for(var i = 0; i < str.length; ++i) {
4742
- out[j++] = str.charCodeAt(i);
4743
- }
4744
- return output ? (j - offset) : out;
4745
-};
4746
-
4747
-/**
4748
- * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or
4749
- * ByteBuffer as a string of hexadecimal characters.
4750
- *
4751
- * @param bytes the bytes to convert.
4752
- *
4753
- * @return the string of hexadecimal characters.
4754
- */
4755
-util.binary.hex.encode = util.bytesToHex;
4756
-
4757
-/**
4758
- * Decodes a hex-encoded string to a Uint8Array.
4759
- *
4760
- * @param hex the hexadecimal string to convert.
4761
- * @param [output] an optional Uint8Array to write the output to; if it
4762
- * is too small, an exception will be thrown.
4763
- * @param [offset] the start offset for writing to the output (default: 0).
4764
- *
4765
- * @return the Uint8Array or the number of bytes written if output was given.
4766
- */
4767
-util.binary.hex.decode = function(hex, output, offset) {
4768
- var out = output;
4769
- if(!out) {
4770
- out = new Uint8Array(Math.ceil(hex.length / 2));
4771
- }
4772
- offset = offset || 0;
4773
- var i = 0, j = offset;
4774
- if(hex.length & 1) {
4775
- // odd number of characters, convert first character alone
4776
- i = 1;
4777
- out[j++] = parseInt(hex[0], 16);
4778
- }
4779
- // convert 2 characters (1 byte) at a time
4780
- for(; i < hex.length; i += 2) {
4781
- out[j++] = parseInt(hex.substr(i, 2), 16);
4782
- }
4783
- return output ? (j - offset) : out;
4784
-};
4785
-
4786
-/**
4787
- * Base64-encodes a Uint8Array.
4788
- *
4789
- * @param input the Uint8Array to encode.
4790
- * @param maxline the maximum number of encoded characters per line to use,
4791
- * defaults to none.
4792
- *
4793
- * @return the base64-encoded output string.
4794
- */
4795
-util.binary.base64.encode = function(input, maxline) {
4796
- var line = '';
4797
- var output = '';
4798
- var chr1, chr2, chr3;
4799
- var i = 0;
4800
- while(i < input.byteLength) {
4801
- chr1 = input[i++];
4802
- chr2 = input[i++];
4803
- chr3 = input[i++];
4804
-
4805
- // encode 4 character group
4806
- line += _base64.charAt(chr1 >> 2);
4807
- line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));
4808
- if(isNaN(chr2)) {
4809
- line += '==';
4810
- } else {
4811
- line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));
4812
- line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);
4813
- }
4814
-
4815
- if(maxline && line.length > maxline) {
4816
- output += line.substr(0, maxline) + '\r\n';
4817
- line = line.substr(maxline);
4818
- }
4819
- }
4820
- output += line;
4821
- return output;
4822
-};
4823
-
4824
-/**
4825
- * Decodes a base64-encoded string to a Uint8Array.
4826
- *
4827
- * @param input the base64-encoded input string.
4828
- * @param [output] an optional Uint8Array to write the output to; if it
4829
- * is too small, an exception will be thrown.
4830
- * @param [offset] the start offset for writing to the output (default: 0).
4831
- *
4832
- * @return the Uint8Array or the number of bytes written if output was given.
4833
- */
4834
-util.binary.base64.decode = function(input, output, offset) {
4835
- var out = output;
4836
- if(!out) {
4837
- out = new Uint8Array(Math.ceil(input.length / 4) * 3);
4838
- }
4839
-
4840
- // remove all non-base64 characters
4841
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
4842
-
4843
- offset = offset || 0;
4844
- var enc1, enc2, enc3, enc4;
4845
- var i = 0, j = offset;
4846
-
4847
- while(i < input.length) {
4848
- enc1 = _base64Idx[input.charCodeAt(i++) - 43];
4849
- enc2 = _base64Idx[input.charCodeAt(i++) - 43];
4850
- enc3 = _base64Idx[input.charCodeAt(i++) - 43];
4851
- enc4 = _base64Idx[input.charCodeAt(i++) - 43];
4852
-
4853
- out[j++] = (enc1 << 2) | (enc2 >> 4);
4854
- if(enc3 !== 64) {
4855
- // decoded at least 2 bytes
4856
- out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);
4857
- if(enc4 !== 64) {
4858
- // decoded 3 bytes
4859
- out[j++] = ((enc3 & 3) << 6) | enc4;
4860
- }
4861
- }
4862
- }
4863
-
4864
- // make sure result is the exact decoded length
4865
- return output ?
4866
- (j - offset) :
4867
- out.subarray(0, j);
4868
-};
4869
-
4870
-// text encoding/decoding tools
4871
-// FIXME: Experimental. Do not use yet.
4872
-util.text = {
4873
- utf8: {},
4874
- utf16: {}
4875
-};
4876
-
4877
-/**
4878
- * Encodes the given string as UTF-8 in a Uint8Array.
4879
- *
4880
- * @param str the string to encode.
4881
- * @param [output] an optional Uint8Array to write the output to; if it
4882
- * is too small, an exception will be thrown.
4883
- * @param [offset] the start offset for writing to the output (default: 0).
4884
- *
4885
- * @return the Uint8Array or the number of bytes written if output was given.
4886
- */
4887
-util.text.utf8.encode = function(str, output, offset) {
4888
- str = util.encodeUtf8(str);
4889
- var out = output;
4890
- if(!out) {
4891
- out = new Uint8Array(str.length);
4892
- }
4893
- offset = offset || 0;
4894
- var j = offset;
4895
- for(var i = 0; i < str.length; ++i) {
4896
- out[j++] = str.charCodeAt(i);
4897
- }
4898
- return output ? (j - offset) : out;
4899
-};
4900
-
4901
-/**
4902
- * Decodes the UTF-8 contents from a Uint8Array.
4903
- *
4904
- * @param bytes the Uint8Array to decode.
4905
- *
4906
- * @return the resulting string.
4907
- */
4908
-util.text.utf8.decode = function(bytes) {
4909
- return util.decodeUtf8(String.fromCharCode.apply(null, bytes));
4910
-};
4911
-
4912
-/**
4913
- * Encodes the given string as UTF-16 in a Uint8Array.
4914
- *
4915
- * @param str the string to encode.
4916
- * @param [output] an optional Uint8Array to write the output to; if it
4917
- * is too small, an exception will be thrown.
4918
- * @param [offset] the start offset for writing to the output (default: 0).
4919
- *
4920
- * @return the Uint8Array or the number of bytes written if output was given.
4921
- */
4922
-util.text.utf16.encode = function(str, output, offset) {
4923
- var out = output;
4924
- if(!out) {
4925
- out = new Uint8Array(str.length * 2);
4926
- }
4927
- var view = new Uint16Array(out.buffer);
4928
- offset = offset || 0;
4929
- var j = offset;
4930
- var k = offset;
4931
- for(var i = 0; i < str.length; ++i) {
4932
- view[k++] = str.charCodeAt(i);
4933
- j += 2;
4934
- }
4935
- return output ? (j - offset) : out;
4936
-};
4937
-
4938
-/**
4939
- * Decodes the UTF-16 contents from a Uint8Array.
4940
- *
4941
- * @param bytes the Uint8Array to decode.
4942
- *
4943
- * @return the resulting string.
4944
- */
4945
-util.text.utf16.decode = function(bytes) {
4946
- return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));
4947
-};
4948
-
4949
-/**
4950
- * Deflates the given data using a flash interface.
4951
- *
4952
- * @param api the flash interface.
4953
- * @param bytes the data.
4954
- * @param raw true to return only raw deflate data, false to include zlib
4955
- * header and trailer.
4956
- *
4957
- * @return the deflated data as a string.
4958
- */
4959
-util.deflate = function(api, bytes, raw) {
4960
- bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);
4961
-
4962
- // strip zlib header and trailer if necessary
4963
- if(raw) {
4964
- // zlib header is 2 bytes (CMF,FLG) where FLG indicates that
4965
- // there is a 4-byte DICT (alder-32) block before the data if
4966
- // its 5th bit is set
4967
- var start = 2;
4968
- var flg = bytes.charCodeAt(1);
4969
- if(flg & 0x20) {
4970
- start = 6;
4971
- }
4972
- // zlib trailer is 4 bytes of adler-32
4973
- bytes = bytes.substring(start, bytes.length - 4);
4974
- }
4975
-
4976
- return bytes;
4977
-};
4978
-
4979
-/**
4980
- * Inflates the given data using a flash interface.
4981
- *
4982
- * @param api the flash interface.
4983
- * @param bytes the data.
4984
- * @param raw true if the incoming data has no zlib header or trailer and is
4985
- * raw DEFLATE data.
4986
- *
4987
- * @return the inflated data as a string, null on error.
4988
- */
4989
-util.inflate = function(api, bytes, raw) {
4990
- // TODO: add zlib header and trailer if necessary/possible
4991
- var rval = api.inflate(util.encode64(bytes)).rval;
4992
- return (rval === null) ? null : util.decode64(rval);
4993
-};
4994
-
4995
-/**
4996
- * Sets a storage object.
4997
- *
4998
- * @param api the storage interface.
4999
- * @param id the storage ID to use.
This file is too large to show in full.
public/compress.bat
new
+32
@@ -0,0 +1,32 @@
1
+@ECHO OFF
2
+REM *** default.handlebars
3
+DEL ..\views\default-min.handlebars
4
+COPY ..\views\default.handlebars index.html
5
+..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
6
+COPY compress.htm ..\views\default-min.handlebars
7
+DEL compress.htm
8
+DEL index.html
9
+
10
+REM *** default-mobile.handlebars
11
+DEL ..\views\default-mobile-min.handlebars
12
+COPY ..\views\default-mobile.handlebars index.html
13
+..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
14
+COPY compress.htm ..\views\default-mobile-min.handlebars
15
+DEL compress.htm
16
+DEL index.html
17
+
18
+REM *** login.handlebars
19
+DEL ..\views\login-min.handlebars
20
+COPY ..\views\login.handlebars index.html
21
+..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
22
+COPY compress.htm ..\views\login-min.handlebars
23
+DEL compress.htm
24
+DEL index.html
25
+
26
+REM *** login-mobile.handlebars
27
+DEL ..\views\login-mobile-min.handlebars
28
+COPY ..\views\login-mobile.handlebars index.html
29
+..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
30
+COPY compress.htm ..\views\login-mobile-min.handlebars
31
+DEL compress.htm
32
+DEL index.html
\ No newline at end of file
public/compress.wcc
Binary files /dev/null and b/public/compress.wcc differ
views/default-min.handlebars
new
+1
@@ -0,0 +1 @@
1
+<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <style>body{margin:0;padding:0;border:0;color:black;font-size:13px;font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;background-color:#d3d9d6;}#container{background-color:#fff;width:960px;min-width:960px;margin:0 auto;border-top:0;border-right:1px solid #b7b7b7;border-bottom:0;border-left:1px solid #b7b7b7;padding:0;}#masthead{width:auto;margin:0;padding:0;overflow:auto;text-align:right;background-color:#036;width:960px;}#column_l{position:relative;float:left;width:930px;margin:0;padding:0 15px;background-color:#fff;}#footer{clear:both;overflow:auto;width:100%;text-align:center;background-color:#113962;padding-top:5px;padding-bottom:5px;}#masthead img{float:left;}#masthead p{font-size:11px;color:#fff;margin:10px 10px 0;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}a{color:#036;text-decoration:underline;}.i1{background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i2{background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i3{background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i4{background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i5{background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i6{background:url(../images/icons50.png) -250px 0px;height:50px;width:50px;cursor:pointer;border:none;}.j1{background:url(../images/icons16.png) 0px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j2{background:url(../images/icons16.png) -16px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j3{background:url(../images/icons16.png) -32px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j4{background:url(../images/icons16.png) -48px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j5{background:url(../images/icons16.png) -64px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j6{background:url(../images/icons16.png) -80px 0px;height:16px;width:16px;cursor:pointer;border:none;}.m0{background :url(../images/images16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.m1{background :url(../images/images16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.m2{background :url(../images/images16.png) -96px 0px;height :16px;width :16px;border:none;float:left }.m3{background :url(../images/images16.png) -112px 0px;height :16px;width :16px;border:none;float:left }.si0{background :url(../images/icons16.png) 0px 0px;height :16px;width :16px;border:none;float:left }.si1{background :url(../images/icons16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.si2{background :url(../images/icons16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.si3{background :url(../images/icons16.png) -48px 0px;height :16px;width :16px;border:none;float:left }.si4{background :url(../images/icons16.png) -64px 0px;height :16px;width :16px;border:none;float:left }.mi{background :url(../images/meshicon50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none }#floatframe{position:fixed;top:200px;height:300px;z-index:200;display:none;}.style1{text-align:center;}.style2{text-align:center;background-color:#808080;font-weight:bold;}.style3{text-align:center;color:white;background-color:#808080;font-weight:bold;}.style4{color:white;text-decoration:none;}.style5{text-align:center;background-color:#808080;font-weight:normal;}.style6{text-align:center;background-color:#D3D9D6;}.style7{font-size:large;background-color:#FFFFFF;}.style10{background-color:#C9C9C9;}.style11{font-size:large;background-color:#C9C9C9;}.style14{text-align:left;background-color:#D3D9D6;}.auto-style1{text-align:right;background-color:#D3D9D6;}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;background-color:white;clear:both;}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.fsize{float:right;text-align:right;width:180px;}.g1{background-position:0% 0%;width:14px;height:100%;float:left; background-image:linear-gradient(to right, #ffffff 0%, #c9c9c9 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.g2{background-position:0% 0%;width:14px;height:100%;float:right; background-image:linear-gradient(to right, #c9c9c9 0%, #ffffff 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.h1{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #ffffff 0%, #d3d9d6 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.h2{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #d3d9d6 0%, #ffffff 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.e1{font-size:large;margin-top:4px;margin-bottom:3px;overflow:hidden;word-wrap:hyphenate;white-space:nowrap;text-overflow:ellipsis;}.e2{float:left;height:100%;width:201px;background-color:#c9c9c9;}.bar{font-size:large;background-color:#C9C9C9;height:24px;float:left;margin-bottom:2px;}.bar2{font-size:large;height:24px;float:left;margin-bottom:2px;}.bar18{font-size:large;background-color:#C9C9C9;height:18px;float:left;margin-bottom:2px;}.bar182{font-size:large;height:18px;float:left;margin-bottom:2px;}.devHeaderx{color:lightgray;}.DevSt{border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#DDDDDD;}.contextMenu{background:#F9F9F9;box-shadow:0 0 12px rgba( 0, 0, 0, .3 );border:1px solid #ccc; display:none;position:absolute;top:0;left:0;list-style:none;margin:0;padding:5px;min-width:100px;max-width:150px;z-index:500;}.cmtext{color:#444;display:inline-block;padding-left:8px;padding-right:8px;padding-top:5px;padding-bottom:5px;text-decoration:none;width:85%;cursor:default;overflow:hidden;position:relative;}.cmtext:hover{color:#f9f9f9;background:#444;}.gray{ filter:gray; -webkit-filter:grayscale(100%) opacity(60%); }.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.notifiyBox{position:absolute;z-index:1000;top:50px;right:26px;width:300px;text-align:left;background-color:#F0ECCD;border:4px solid #666;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:2px 2px 4px #888;-moz-box-shadow:2px 2px 4px #888;box-shadow:2px 2px 4px #888;max-height:200px;}.notifiyBox:before{content:' ';position:absolute;width:0;height:0;right:5px;top:-30px;border:15px solid;border-color:transparent #666 #666 transparent;}.notifiyBox:after{content:' ';position:absolute;width:0;height:0;right:7px;top:-24px;border:12px solid;border-color:transparent #F0ECCD #F0ECCD transparent;}.notification{width:100%;min-height:30px;}.notification:hover{background-color:#EFE8B6;}.deskToolsBar{padding:3px;}.deskToolsBar:hover{background-color:#EFE8B6;}.userTableHeader{border-bottom:1pt solid lightgray;padding-top:4px;padding-bottom:4px;}</style> <style>.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f;}.ol-mouse-position{top:8px;right:8px;position:absolute;}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute;}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;}.ol-overlay-container{will-change:left,right,top,bottom;}.ol-unsupported{display:none;}.ol-unselectable, .ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing;}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px;}.ol-control:hover{background-color:rgba(255,255,255,.6);}.ol-zoom{top:.5em;right:.5em;}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear;}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s;}.ol-zoom-extent{top:4.643em;left:.5em;}.ol-full-screen{right:.5em;top:.5em;}@media print{.ol-control{display:none;}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px;}.ol-control button::-moz-focus-inner{border:none;padding:0;}.ol-zoom-extent button{line-height:1.4em;}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform;}.ol-touch .ol-control button{font-size:1.5em;}.ol-touch .ol-zoom-extent{top:5.5em;}.ol-control button:focus, .ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7);}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0;}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px;}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff;}.ol-attribution li{display:inline;list-style:none;line-height:inherit;}.ol-attribution li:not(:last-child):after{content:" ";}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle;}.ol-attribution button, .ol-attribution ul{display:inline-block;}.ol-attribution.ol-collapsed ul{display:none;}.ol-attribution.ol-logo-only ul{display:block;}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8);}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em;}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em;}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em;}.ol-attribution.ol-logo-only button, .ol-attribution.ol-uncollapsible button{display:none;}.ol-zoomslider{top:4.5em;left:.5em;height:200px;}.ol-zoomslider button{position:relative;height:10px;}.ol-touch .ol-zoomslider{top:5.5em;}.ol-overviewmap{left:.5em;bottom:.5em;}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0;}.ol-overviewmap .ol-overviewmap-map, .ol-overviewmap button{display:inline-block;}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px;}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute;}.ol-overviewmap.ol-collapsed .ol-overviewmap-map, .ol-overviewmap.ol-uncollapsible button{display:none;}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8);}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7);}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move;}</style> <style> .ol-ctx-menu-container{position:absolute;padding:8px;background:#fff;color:#222;font-size:13px;border-radius:5px;box-shadow:3px 3px 5px rgba(0,0,0,.2);box-sizing:border-box}.ol-ctx-menu-container a,.ol-ctx-menu-container div,.ol-ctx-menu-container img,.ol-ctx-menu-container li,.ol-ctx-menu-container span,.ol-ctx-menu-container ul{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}.ol-ctx-menu-container a img{border:none}.ol-ctx-menu-container *,.ol-ctx-menu-container :after,.ol-ctx-menu-container :before{box-sizing:inherit}.ol-ctx-menu-container.ol-ctx-menu-hidden{opacity:0;visibility:hidden;-webkit-transition:visibility 0s linear .3s,opacity .3s;transition:visibility 0s linear .3s,opacity .3s}.ol-ctx-menu-container ul{list-style:none}.ol-ctx-menu-container li{position:relative;line-height:20px;padding:2px 5px}.ol-ctx-menu-container li:not(.ol-ctx-menu-separator):hover{cursor:pointer;background-color:#333;color:#eee}.ol-ctx-menu-container li.ol-ctx-menu-submenu .ol-ctx-menu-container{border:1px solid #eee;padding:8px;top:0;opacity:0;visibility:hidden;-webkit-transition:visibility 0s linear .3s,opacity .3s;transition:visibility 0s linear .3s,opacity .3s}.ol-ctx-menu-container li.ol-ctx-menu-submenu:hover .ol-ctx-menu-container{opacity:1;visibility:visible;-webkit-transition-delay:0s;transition-delay:0s}.ol-ctx-menu-container li.ol-ctx-menu-submenu:after{position:absolute;top:7px;right:10px;content:"";display:inline-block;width:.6em;height:.6em;border-right:.3em solid #222;border-top:.3em solid #222;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ol-ctx-menu-container li.ol-ctx-menu-submenu:hover:after{border-color:#eee}.ol-ctx-menu-container li.ol-ctx-menu-separator{padding:0}.ol-ctx-menu-container li.ol-ctx-menu-separator hr{border:0;height:1px;background-image:-webkit-linear-gradient(right,transparent,rgba(0,0,0,.75),transparent);background-image:linear-gradient(270deg,transparent,rgba(0,0,0,.75),transparent)}.ol-ctx-menu-icon{text-indent:20px;background-size:20px auto;background-repeat:no-repeat;background-position:0}.ol-ctx-menu-zoom-in{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABaUlEQVQ4T72U7VHCQBCGn90GtAMuNGCswFiBWIFQgWMFxg6wArECsQKhArEBiB1Qwa1zgQn5IAYcxv13k71n3919L8KJQ07M47+BzgG9TRfZ/JBuWhS6BJFHRJICYrZGZIz3z5Ct2+B7gG6I6kt+wewdkQVwjtkAkR5mC8yu26A1oItR/cTsOweQBdgutD8G7jGm2PJ2n8oqUKIpIjd4HxTM8gvaT/F+AlmWnyWaIXKF95eNguFzTYFhNsdWu9kFgFlaFMANUH3D8wDLoLgSTSD2il8NCe2ZXQBxWDGwxmyUzzOMBZ7wy7Qb2K0wQfXjMOBuhlFpZtNty5sFaTQBuTusZdymeqs1SpYKcO9HkE3KbTd9WFijMHJQ5hBNEAYNq5Qd0dhyke0GiE4QzjqfW23mHT8Hl4DG4Lce3FPE7AtbBSdsbNqpoJLgYkRnNeUV+xwJDHTnUEkxHGbhBXUs5TjJjew/KPy94g+NRaIVRYmMXwAAAABJRU5ErkJggg==")}.ol-ctx-menu-container li:hover.ol-ctx-menu-zoom-in{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABc0lEQVQ4T71U21ECQRDsJgGdvQDECMQIxAjECMQILCPwzAAjECIQI0AiEDPQAPaWCBhrcKHuCUcV5f7dY3v6tUscefHIePhfwBBCF8CZqRCReRs1tQxDCH1VfQLQz4EsSY4AvIjIsgm8AhhCGKrqa9zwrqoLAKckB5HtguR1E2gBMITQU9VPAD8GICIGtl3e+xHJBwBT59xtHcsCYJZlUwA3kcGHbfDep51OZywi3/acZZm9vyJ5WR5o38uACmDunNt6ZwAkUxFZDwghDFT1jeSjiJinhVUBVNVJkiTDKO8CQA+AsbNQ7s1Ps0VVn5MkSfcCtmBoDZi1Bdx4eJ7zbBolrwPy3o9J3rWSHPs3A1BbjVKlYBaIyDgvu9LDXDU2RTZmXVW1oKyLxRD+OrkOrJLy5mVM0iaftDhuhVbsvBzMglzKUNW6IV/OOWtCM8MmVvEkmbwt83LaB19fdgOtVquUZJeknaDdobTwbOcvBzPcN/AXH1DFFWP7u9oAAAAASUVORK5CYII=")}.ol-ctx-menu-zoom-out{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABU0lEQVQ4T72U7VECMRRFz3sNaAdkacC1AtcKxApcKnCsQOwAK3CtQKxAqEBsANYOqCDPyTIC+8WCw5jfybn33dxEOPGSE/P4b6BzQG89RT47ZJoWhy5B5BGRZAMxWyEyxvtnyFdt8AagS1F9KQ6YvSMyB84xGyDSw2yO2XUbtAJ0MaqfmH0XAPIA2y7tj4F7jAm2uG1yWQZKNEHkBu+Dg2njWBJNEbnC+8uaIFRuWfuG2QxbbrOrUd0A1Tc8D7AIjkur7DAAsVf8MiWMZ3ZR2m02LPIMscATfjHqBnY7TFD9OAy4zTCCPG/MUKMM5O6wkXFr9dZq7FQqqHk/hDzbFa73cFONTZFDdRyiCcKg5rrSiLaXkiI6RjjrfG6VzDs+B5eAxuDXeYpmNRGzL2wZ/wof+du4GNFpBVqqz5HA4MM5VEYYDrOs+1I6Q9u/4Q8O9wN/AGgWjBVqQjjgAAAAAElFTkSuQmCC")}.ol-ctx-menu-container li:hover.ol-ctx-menu-zoom-out{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABYklEQVQ4T72U4VHCQBCF36tA91KAWIFYgViBWIFYgWMFYgdYgVCBWAFSgdiBFpAsFWSdxcDkQoBkhnF/ZjbfvX377ogjF4/Mw/8CVbUD4MynEJF5k2lqFapqz8yeAPRKkCXJEYAXEVnugm8BVXVgZq/FD+9mtgBwSrJfqF2QvN4FjYCq2jWzTwA/DhARh20qTdMRyQcA0xDCbZ3KCJhl2RTATaHgo+6HLMv8+xXJy+qB3l8FGoB5CKHsXcRV1b6ZvZF8FBH3NKotoJlNkiQZFONdlLtJ3rufbouZPSdJMjwIbKDQEzBrClx7eC4i33Uepmk6JnnXaOQifzMAtdGoRApugYiMI1uqKkrRWAfZo9MxM1+UZzFewl8mN4nYdVM83L7BkwbXLUrF3sfBLQDQBbDy08x8vOohXyEE71lVq9emuEk+3gZa3XYroCvwFyjP8yHJDsnxwaU08GxvS2uFhw78BbzWrxXgMbsHAAAAAElFTkSuQmCC")}</style> <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script> <script type="text/javascript" src="scripts/ol.js"></script> <script type="text/javascript" src="scripts/ol3-contextmenu.js"></script> <title>MeshCentral</title> </head> <body onload="if (typeof(startup) !== 'undefined') startup();" oncontextmenu="handleContextMenu(event)"> <div id="contextMenu" class="contextMenu" style="display:none"> <div id="cxinfo" class="cmtext" onclick="cmaction(1)"><b>Information</b></div> <div id="cxterminal" class="cmtext" onclick="cmaction(2)">Terminal</div> <div id="cxdesktop" class="cmtext" onclick="cmaction(3)">Desktop</div> <div id="cxfiles" class="cmtext" onclick="cmaction(4)">Files</div> <div id="cxevents" class="cmtext" onclick="cmaction(5)">Events</div> <div id="cxconsole" class="cmtext" onclick="cmaction(6)">Console</div> <hr id="cxmgroupsplit"> <div id="cxmdesktop" class="cmtext" onclick="cmaction(7)" style="display:none">Multi-Desktop</div> </div> <div id="meshContextMenu" class="contextMenu" style="display:none;min-width:0px"> <div id="cxselectall" class="cmtext" onclick="cmmeshaction(1)">Select All</div> <div id="cxselectnone" class="cmtext" onclick="cmmeshaction(2)">Select None</div> <hr id="cxmgroupsplit2" style="display:none"> <div id="cxmmdesktop" class="cmtext" style="display:none" onclick="cmmeshaction(3)">Multi-Desktop</div> </div> <div id="container" style="max-height:100vh;position:relative"> <div id="notifiyBox" class="notifiyBox" style="display:none"></div> <div id="mastheadx"></div> <div id="masthead" class="noselect" style="background:url(images/logoback.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:20px;padding-top:8px"> <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px"> <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> <div style="float:right"> <div id="notificationCount" onclick="clickNotificationIcon()" class="unselectable" style="display:none;min-width:28px;font-size:20px;border-radius:5px;background-color:lightblue;text-align:center;margin:8px;cursor:pointer;padding:4px" title="Click to view current notifications">0</div> </div> <p id="logoutControl">{{{logoutControl}}}</p> </div> <div id="topbarmaster"> <div id="topbar" class="noselect" style="display:none"> <div> <div> <table style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="MainMenuMyDevices" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(1)">My Devices</td> <td id="MainMenuMyAccount" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(2)">My Account</td> <td id="MainMenuMyEvents" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(3)">My Events</td> <td id="MainMenuMyFiles" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(5)">My Files</td> <td id="MainMenuMyUsers" style="width:100px;height:24px;cursor:pointer;display:none" class="style3" onclick="go(4)">My Users</td> <td class="style3" style="text-align:right;height:24px"><span title="Toggle full width" style="cursor:pointer;opacity:0.2" onclick="toggleFullScreen(1)">↔</span> </td> </tr> </table> <div id="MainSubMenuSpan" style="display:none"> <table id="MainSubMenu" style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="MainDev" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(10)">General</td> <td id="MainDevDesktop" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(11)">Desktop</td> <td id="MainDevTerminal" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(12)">Terminal</td> <td id="MainDevFiles" style="width:100px;height:24px;cursor:pointer;display:none" class="style3" onclick="go(13)">Files</td> <td id="MainDevEvents" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(16)">Events</td> <td id="MainDevAmt" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(14)">Intel® AMT</td> <td id="MainDevConsole" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(15)">Console</td> <td class="style3" style="height:24px"> </td> </tr> </table> </div> <div id="MeshSubMenuSpan" style="display:none"> <table id="MeshSubMenu" style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="MeshGeneral" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(20)">General</td> <td class="style3" style="height:24px"> </td> </tr> </table> </div> <div id="UserSubMenuSpan" style="display:none"> <table id="UserSubMenu" style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="UserGeneral" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(30)">General</td> <td id="UserEvents" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(31)">Events</td> <td class="style3" style="height:24px"> </td> </tr> </table> </div> </div> </div> </div> </div> <div id="page_content" style="max-height:calc(100vh - 138px)"> <div id="column_l"> <div id="p0" style="display:none"> <div id="p0message" style="margin:50px;text-align:center">Server disconnected, <href onclick="reload()" style="cursor:pointer"><u>click to reconnect</u></href>.</div> </div> <div id="p1" style="display:none"> <h1>My Devices</h1> <div style="width:100%;height:24px;background-color:#d3d9d6"> <div class="h1" style="height:100%;float:left"> </div> <div id="devListToolbar" class="style14" style="height:100%;float:left"> <input type="button" id="SelectAllButton" onclick="selectallButtonFunction();" value="Select All"> <input type="button" id="GroupActionButton" disabled="disabled" value="Group Action" onclick="groupActionFunction()"> <input id="SearchInput" type="text" style="width:120px" placeholder="Search" onchange="onSearchInputChanged()" onkeyup="onSearchInputChanged()" autocomplete="off" onfocus="onSearchFocus(1)" onblur="onSearchFocus(0)"> <input type="checkbox" id="RealNameCheckBox" onclick="onRealNameCheckBox()"><span title="Show devices operating system name">OS Name</span> </div> <div id="kvmListToolbar" class="style14" style="height:100%;float:left"> <input type="button" onclick="connectAllKvmFunction()" value="Connect All"> <input type="button" onclick="disconnectAllKvmFunction()" value="Disconnect All"> <input type="checkbox" id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)">AutoConnect <input type="button" onclick="showMultiDesktopSettings()" value="Settings"> </div> <div id="devMapToolbar" class="style14" style="height:100%;float:left"> <input type="text" id="mapSearchLocation" placeholder="Search Location" onfocus="onMapSearchFocus(1)" onblur="onMapSearchFocus(0)"> <input type="button" value="Search" title="Search for location" onclick="getSearchLocation()"> <input type="button" id="refreshmap" title="Reset map view" value="Reset" style="margin-left:5px" onclick="refreshMap(false,true)"> </div> <div class="auto-style1" style="height:100%;float:right"> <div style="height:100%;width:4px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right"> </div> <div style="float:right" id="devListToolbarView"> View <select id="viewselect" onchange="onDeviceViewChange()"> <option value="1">Columns <option value="2">List <option value="3">Desktops <option id="viewselectmapoption" value="4">Map </select> </div> <div style="float:right" id="devListToolbarSort"> Sort <select id="sortselect" onchange="onSortSelectChange()"> <option>Mesh <option>Power <option>Device <option>Group </select> </div> <div style="float:right" id="devListToolbarSize"> Size <select id="sizeselect" onchange="onDeviceViewChange()"> <option value="0">Small <option value="1">Medium <option value="2">Large </select> </div> </div> </div> <div id="NoMeshesPanel" style="display:none"> <table style="width:100%;padding:20px"> <tr> <td valign="top" style="width:50px"> <img src="images/info.png" height="48" width="47"> </td> <td> To get started managing devices, <a onclick="account_createMesh()" style="cursor:pointer"><strong>click here to create a new group of devices called a Mesh</strong></a>. </td> </tr> </table> </div> <div id="xdevices" style="max-height:calc(100vh - 242px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch"></div> <div id="xdevicesmap" style="height:500px;width:100%;overflow:hidden;position:relative"> <div id="xmapSearchResultsDlg" style="position:absolute;display:none;max-height:280px;left:5px;top:5px;max-width:250px;z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="xmapSearchClose" style="float:right;padding:5px;cursor:pointer" onclick="mapCloseSearchWindow()"><b>X</b></div> <div style="padding:5px">Location Results</div> <div style="width:100%;margin:6px"></div> </div> <div id="xmapSearchResults" style="margin:6px"></div> </div> </div> <div id="xmap-info-window" style="text-shadow:0px 0px 15px #FFF"></div> </div> <div id="p2" style="display:none"> <h1>My Account</h1> <div id="p2AccountActions"> <p><strong><img alt="" width="150" height="103" src="images/mainaccount.png" style="margin-bottom:10px;margin-right:20px;float:right">Account actions</strong></p> <p style="margin-left:40px"> <span id="verifyEmailId" style="display:none"><a onclick="account_showVerifyEmail()" style="cursor:pointer">Verify email</a><br></span> <a onclick="account_showChangeEmail()" style="cursor:pointer">Change email address</a><br> <a onclick="account_showChangePassword()" style="cursor:pointer">Change password</a><br> <a onclick="account_showDeleteAccount()" style="cursor:pointer">Delete account</a><br> </p> </div> <p id="p2ServerActions"><strong>Server actions</strong></p> <p style="margin-left:40px"> <a id="p2ServerActionsBackup" href="/backup.zip" target="_blank" style="cursor:pointer">Download server backup</a><br> <a id="p2ServerActionsRestore" onclick="server_showRestoreDlg()" style="cursor:pointer">Restore server with backup</a><br> <a id="p2ServerActionsVersion" onclick="server_showVersionDlg()" style="cursor:pointer">Check server version</a><br> </p> <br style="clear:both"> <strong>Administrative Meshes</strong> ( <a onclick="account_createMesh()" style="cursor:pointer"><img height="12" src="images/icon-addnew.png" width="12" border="0"> New</a> ) <br><br> <div id="p2meshes"></div> <div id="p2noMeshFound" style="margin-left:40px;display:none">No meshes. <a onclick="account_createMesh()" style="cursor:pointer"><strong>Get started here!</strong></a></div> <br style="clear:both"> </div> <div id="p3" style="display:none"> <h1>My Events</h1> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left"> </div> <div class="h1" style="height:100%;float:left"> </div> <div class="style14" style="height:100%;float:left"> <input id="p2deleteall" type="button" onclick="showDeleteAllEventsDialog()" style="display:none" value="Delete All..."> </div> <div class="auto-style1" style="height:100%;float:right"> Show <select id="p3limitdropdown" onchange="refreshEvents()"> <option value="60">Last 60 <option value="120">Last 120 <option value="250">Last 250 <option value="500">Last 500 <option value="1000">Last 1000 </select> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right;"> </div> </div> </div> <div id="p3events" style="max-height:600px;overflow-y:scroll"></div> </div> <div id="p4" style="display:none"> <h1>My Users</h1> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left"> </div> <div class="h1" style="height:100%;float:left"> </div> <div class="style14" style="height:100%;float:left"> <input type="button" onclick="showCreateNewAccountDialog()" value="New Account..."> <input id="UserSearchInput" type="text" style="width:120px" placeholder="Search" onchange="onUserSearchInputChanged()" onkeyup="onUserSearchInputChanged()" autocomplete="off" onfocus="onUserSearchFocus(1)" onblur="onUserSearchFocus(0)"> </div> <div class="auto-style1" style="height:100%;float:right"> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right"> </div> </div> </div> <div id="p3users" style="max-height:600px;overflow-y:auto"></div> </div> <div id="p5" style="display:none"> <h1>My Files</h1> <table id="p5toolbar" style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div id="p5rightOfButtons" style="float:right;margin-top:3px"></div> <div> <input type="button" id="p5FolderUp" disabled="disabled" onclick="p5folderup();" value="Up"> <input type="button" id="p5SelectAllButton" disabled="disabled" onclick="p5selectallfile();" value="Select All" onkeypress="return false;" onkeydown="return false;"> <input type="button" id="p5RenameFileButton" disabled="disabled" value="Rename" onclick="p5renamefile();" onkeypress="return false;" onkeydown="return false;"> <input type="button" id="p5DeleteFileButton" disabled="disabled" value="Delete" onclick="p5deletefile();" onkeypress="return false;" onkeydown="return false;"> <input type="button" id="p5NewFolderButton" disabled="disabled" value="New Folder" onclick="p5createfolder();" onkeypress="return false;" onkeydown="return false;"> <input type="button" id="p5UploadButton" disabled="disabled" value="Upload" onclick="p5uploadFile()" onkeypress="return false;" onkeydown="return false;"> <input type="button" id="p5CutButton" disabled="disabled" value="Cut" onclick="p5copyFile(1)" onkeypress="return false" onkeydown="return false"> <input type="button" id="p5CopyButton" disabled="disabled" value="Copy" onclick="p5copyFile(0)" onkeypress="return false" onkeydown="return false"> <input type="button" id="p5PasteButton" disabled="disabled" value="Paste" onclick="p5pasteFile()" onkeypress="return false" onkeydown="return false"> </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <div style="float:right"> <select id="p5sortdropdown" onchange="updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </div> <div> <span id="p5currentpath"></span></div> </td> </tr> </table> <div id="p5filetable" style="width:100%;height:500px;overflow:auto;-webkit-user-select:none;position:relative"> <div id="p5PublicShare" style="display:none;width:100%;padding:4px;overflow:auto;-webkit-user-select:none;background-color:lightsteelblue">This files is shared publically, click "link" to get public url.</div> <div id="bigok" style="width:256px;overflow:hidden;position:absolute;left:337px;top:20px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>✓</b></div> <div id="bigfail" style="width:256px;overflow:hidden;position:absolute;left:337px;top:20px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>✗</b></div> <span id="p5files"></span> </div> <table id="p5toolbarBottom" style="width:100%" cellpadding="0" cellspacing="0"> <tr><td class="style6" style="text-align:left;padding:3px"> <span id="p5bottomstatus"></span></td></tr> </table> </div> <div id="p10" style="display:none"> <table style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="width:auto" valign="top"> <div id="p10title"> <h1>General - <span id="p10deviceName"></span></h1> </div> <div id="p10html"></div> </td> <td style="width:20px"></td> <td style="width:200px"> <a style="cursor:pointer" onclick="p10showiconselector()"><img id="MainComputerImage" style="border-width:0px;height:200px;width:200px"></a> <div style="width:100%;text-align:center"><strong><span id="MainComputerState"></span></strong></div> </td> </tr> </table><br> <div id="p10html2"></div> <div id="p10html3"></div> </div> <div id="p11" style="display:none"> <div id="p11title"> <h1 id="p11deviceNameHeader">Desktop - <span id="p11deviceName"></span></h1> </div> <div id="p14warning" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showFeaturesDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Intel® AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div> </div> <div id="p14warning2" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showPowerActionDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Remote computer is not powered on, click here to issue a power command.</div> </div> <table cellpadding="0" cellspacing="0" style="width:100%;padding:0px;padding:0px;margin-top:0px"> <tr id="deskarea1"> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <span id="p14power"></span> <div style='cursor:pointer;border:none;float:right;font-size:130%;margin-right:4px' title="Rotate Left" onclick="drotate(-1)">↺</div> <div style='cursor:pointer;border:none;float:right;font-size:130%;margin-right:4px' title="Rotate Right" onclick="drotate(1)">↻</div> <input id="deskFullBtn" type="button" title="Toggle full screen mode" onkeypress="return false" onkeydown="return false" value="Full" onclick="deskToggleFull()" style="margin-right:3px"> <input id="deskFocusBtn" type="button" title="Toggle focus mode, when active only the region around the mouse is updated" onkeypress="return false" onkeydown="return false" value="Focus All" onclick="deskToggleFocus()" style="margin-right:3px;display:none"> <input id="deskSaveBtn" type="button" title="Save a screenshot of the remote desktop" onkeypress="return false" onkeydown="return false" value="Save..." onclick="deskSaveImage()" style="margin-right:3px"> <input id="deskActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:3px"> <input type="button" value="Settings..." title="Edit remote desktop settings" onkeypress="return false" onkeydown="return false" onclick="showDesktopSettings()" style="margin-right:3px"> <input type="button" title="Change the power state of the remote machine" onkeypress="return false" onkeydown="return false" value="Power Actions..." onclick="showPowerActionDlg()" style="margin-right:3px;display:none"> </div> <div> <div id="idx_deskFullBtn2" onclick="deskToggleFull()" style="float:left;font-size:large;cursor:pointer;display:none"> X</div> <input type="button" id="autoconnectbutton1" value="AutoConnect" onclick="autoConnectDesktop(event)" onkeypress="return false" onkeydown="return false" style="display:none"> <span id="connectbutton1span"> <input type="button" id="connectbutton1" value="Connect" onclick="connectDesktop(event,1)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="connectbutton1hspan"> <input type="button" id="connectbutton1h" value="HW Connect" onclick="connectDesktop(event,2)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="disconnectbutton1span"> <input type="button" id="disconnectbutton1" value="Disconnect" onclick="connectDesktop(event,0)" onkeypress="return false" onkeydown="return false"></span> <span id="deskstatus">Disconnected</span> </div> </td> </tr> <tr id="deskarea2"> <td> <div style="background-color:gray"><div id="progressbar" style="height:2px;width:0%;background-color:red"></div></div> </td> </tr> <tr id="deskarea3"> <td id="deskarea3x" style="background:black;text-align:center;height:400px;position:relative"> <div id="DeskFocus" style="color:transparent;border:3px dotted rgba(255,0,0,.2);position:absolute;border-radius:5px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)"></div> <div id="DeskParent"> <canvas id="Desk" width="640" height="200" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" onmousewheel="dmousewheel(event)"></canvas> </div> <div id="DeskTools" style="position:absolute;width:400px;height:100%;background-color:gray;top:0;right:0;border-left:2px solid lightgray;display:none"> <a id="DeskToolsRefreshButton" style="float:right;padding:3px;cursor:pointer" onclick="refreshDeskTools()">Refresh</a> <div id="DeskToolsBar" style="position:absolute;padding:3px;border-radius:3px 3px 0px 0px;top:5px;left:4px;bottom:26px;background-color:lightgray;cursor:pointer">Processes</div> <div style="position:absolute;top:26px;left:4px;right:4px;bottom:4px;background-color:lightgray;text-align:left"> <div style="border-bottom:1px solid darkgray;padding:3px"><a style="width:50px;padding-right:5px;float:left;cursor:pointer" title="Sort by process id" onclick="sortProcess(0)">PID</a><a style="cursor:pointer" title="Sort by name" onclick="sortProcess(1)">Name</a></div> <div id="DeskToolsProcesses" style="overflow-y:scroll;position:absolute;top:24px;bottom:0px;width:100%"></div> </div> </div> </td> </tr> <tr id="deskarea4"> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <select id="termdisplays" style="display:none" onchange="deskSetDisplay(event)" onclick="deskGetDisplayNumbers(event)"></select> <input id="DeskToastButton" type="button" value="Toast" title="Display a notification message on the remote computer" onkeypress="return false" onkeydown="return false" onclick="deviceToastFunction()"> <input id="DeskToolsButton" type="button" value="Tools" title="Toggle tools view" onkeypress="return false" onkeydown="return false" onclick="toggleDeskTools()"> </div> <div> <select style="margin-left:6px" id="deskkeys"> <option value="5">Win <option value="0">Win+Down <option value="1">Win+Up <option value="2">Win+L <option value="3">Win+M <option value="4">Shift+Win+M </select> <input id="DeskWD" type="button" value="Send" onkeypress="return false" onkeydown="return false" onclick="deskSendKeys()"> <input id="DeskCAD" style="margin-left:6px" type="button" value="Ctrl-Alt-Del" onkeypress="return false" onkeydown="return false" onclick="sendCAD()"> <span style="margin-left:6px" title="Toggle mouse and keyboard input"><input id="DeskControl" type="checkbox" onkeypress="return false" onkeydown="return false" onclick="toggleKvmControl()">Input</span> </div> </td> </tr> </table> </div> <div id="p12" style="display:none"> <div id="p12title"><h1>Terminal - <span id="p12deviceName"></span></h1></div> <div id="p12warning" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showFeaturesDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Intel® AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div> </div> <div id="p12warning2" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showPowerActionDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Remote computer is not powered on, click here to issue a power command.</div> </div> <table cellpadding="0" cellspacing="0" style="width:100%;padding:0px;padding:0px;margin-top:0px"> <tr> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <input id="termActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:3px"> </div> <div> <input type="button" id="autoconnectbutton2" value="AutoConnect" onclick="autoConnectTerminal(event)" onkeypress="return false" onkeydown="return false" style="display:none"> <span id="connectbutton2span"> <input type="button" id="connectbutton2" value="Connect" onclick="connectTerminal(event,1)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="connectbutton2hspan"> <input type="button" id="connectbutton2h" value="HW Connect" onclick="connectTerminal(event,2)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="disconnectbutton2span"> <input type="button" id="disconnectbutton2" value="Disconnect" onclick="connectTerminal(event,0)" onkeypress="return false" onkeydown="return false"></span> <span id="termstatus">Disconnected</span> </div> </td> </tr> <tr> <td> <div style="background-color:gray"><div id="termprogressbar" style="height:2px;width:0%;background-color:red"></div></div> </td> </tr> <tr> <td style="background:black;text-align:center;height:500px;position:relative"> <pre id="Term" style="background:black;margin:0;padding:0"></pre> </td> </tr> <tr> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <input id="id_tfxkeysbutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Intel (F10 = ESC+[OM)" title="Toggle F1 to F10 keys emulation type" onclick="termToggleFx()"> <input id="id_ttypebutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Extended Ascii" title="Toggle terminal emulation type" onclick="termToggleType()"> <select id="specialkeylist" onkeypress="return false"></select> <input id="specialkeylistinput" type="button" onkeypress="return false" class="bottombutton" value="Send" title="Send the selected special key" onclick="sendSpecialKey()"> </div> <div> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlcbutton" value="Ctl-C" onclick="termSendKey(3,'ctrlcbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlxbutton" value="Ctl-X" onclick="termSendKey(24,'ctrlxbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="escbutton" value="ESC" onclick="termSendKey(27,'escbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="bsbutton" value="Backspace" onclick="termSendKey(8,'bsbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="pastebutton" value="Paste" title="Paste text into the terminal" onclick="showTermPasteDialog()"> </div> </td> </tr> </table> </div> <div id="p13" style="display:none"> <div id="p13title"><h1>Files - <span id="p13deviceName"></span></h1></div> <table id="p13toolbar" style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="background-color:#C0C0C0;border-bottom:2px solid black;padding:2px"> <div style="float:right;text-align:right"> <input id="filesActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:3px"> </div> <div> <input id="p13AutoConnect" value="AutoConnect" onclick="autoConnectFiles(event)" onkeypress="return false" onkeydown="return false" type="button" style="display:none"> <input id="p13Connect" value="Connect" onclick="connectFiles(event)" onkeypress="return false" onkeydown="return false" type="button"> <span id="p13Status">Disconnected</span> </div> </td> </tr> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div id="p13rightOfButtons" style="float:right;margin-top:3px"></div> <div> <input type="button" id="p13FolderUp" disabled="disabled" onclick="p13folderup()" value="Up"> <input type="button" id="p13SelectAllButton" disabled="disabled" onclick="p13selectallfile()" value="Select All" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13RenameFileButton" disabled="disabled" value="Rename" onclick="p13renamefile()" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13DeleteFileButton" disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13NewFolderButton" disabled="disabled" value="New Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13UploadButton" disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13CutButton" disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13CopyButton" disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13PasteButton" disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false"> <input type="button" id="p13RefreshButton" disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false"> </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <div style="float:right"> <select id="p13sortdropdown" onchange="p13updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </div> <div> <span id="p13currentpath"></span></div> </td> </tr> </table> <div id="p13filetable" style="width:100%;height:500px;overflow:auto;-webkit-user-select:none"> <div id="p13bigok" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>✓</b></div> <div id="p13bigfail" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>✗</b></div> <span id="p13files"></span> </div> <table id="p13toolbarBottom" style="width:100%" cellpadding="0" cellspacing="0"> <tr><td class="style6" style="text-align:left;padding:3px"> <span id="p13bottomstatus"></span></td></tr> </table> </div> <div id="p14" style="display:none"> <div id="p14title"><h1>Intel® AMT - <span id="p14deviceName"></span></h1></div> <iframe id="p14iframe" style="width:100%;height:650px;border:0;overflow:hidden" src="/commander.htm"></iframe> </div> <div id="p15" style="display:none"> <div id="p15title"><h1>Console - <span id="p15deviceName"></span></h1></div> <table cellpadding="0" cellspacing="0" style="width:100%;padding:0px;padding:0px;margin-top:0px"> <tr> <td style="background:#C0C0C0"> <div style="float:right;padding-right:4px"> <div style="padding:4px;display:inline-block" id="p15coreName" title="Information about current core running on this agent"></div> <input type="button" id="p15uploadCore" value="Agent Action" onclick="p15uploadCore(event)" title="Change the agent Java Script code module"> </div> <div id="p15statetext" style="padding:4px"></div> </td> </tr> <tr> <td> <div style="background-color:gray"><div id="consoleprogressbar" style="height:2px;width:0%;background-color:red"></div></div> </td> </tr> <tr> <td style="background:black;text-align:center;height:500px;position:relative"> <div id="p15agentConsole" style="background:black;margin:0;padding:0;color:lightgray;width:100%;max-width:930px;height:100%;text-align:left;overflow-y:scroll"><pre id="p15agentConsoleText"></pre></div> </td> </tr> <tr> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <table style="width:100%"> <tr> <td style="width:99%"> <input id="p15consoleText" style="width:100%" onkeyup="p15consoleSend(event)" onfocus="onConsoleFocus(1)" onblur="onConsoleFocus(0)"> </td> <td> </td> <td style="width:1%"><input id="id_p15consoleClear" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Clear" onclick="p15consoleClear()"></td> </tr> </table> </td> </tr> </table> </div> <div id="p16" style="display:none"> <div id="p16title"><h1>Events - <span id="p16deviceName"></span></h1></div> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left"> </div> <div class="h1" style="height:100%;float:left"> </div> <div class="style14" style="height:100%;float:left"> <input type="button" value="Refresh" onclick="refreshDeviceEvents()"> </div> <div class="auto-style1" style="height:100%;float:right"> Show <select id="p16limitdropdown" onchange="refreshDeviceEvents()"> <option value="60">Last 60 <option value="120">Last 120 <option value="250">Last 250 <option value="500">Last 500 <option value="1000">Last 1000 </select> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right"> </div> </div> </div> <div id="p16events" style="max-height:600px;overflow-y:scroll"></div> </div> <div id="p20" style="display:none"> <img id="MainMeshImage" src="images/mesh-200.png" style="border-width:0px;height:200px;width:200px;float:right"> <h1><span id="p20meshName"></span> - General</h1> <p id="p20info"> </div> <div id="p30" style="display:none"> <table style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="width:auto" valign="top"> <div id="p30title"> <h1><span id="p30userName"></span> - General</h1> </div> <div id="p30html"></div> </td> <td style="width:20px"></td> <td style="width:200px"> <img id="MainUserImage" src="images/user-200.png" style="border-width:0px;height:200px;width:200px"> <div style="width:100%;text-align:center"><strong><span id="MainUserState"></span></strong></div> </td> </tr> </table><br> <div id="p30html2"></div> <div id="p30html3"></div> </div> <div id="p31" style="display:none"> <h1><span id="p31userName"></span> - Events</h1> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left"> </div> <div class="h1" style="height:100%;float:left"> </div> <div class="style14" style="height:100%;float:left"> <input type="button" value="Refresh" onclick="refreshUsersEvents()"> </div> <div class="auto-style1" style="height:100%;float:right"> Show <select id="p31limitdropdown" onchange="refreshUsersEvents()"> <option value="60">Last 60 <option value="120">Last 120 <option value="250">Last 250 <option value="500">Last 500 <option value="1000">Last 1000 </select> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right;"> </div> </div> </div> <div id="p31events" style="max-height:600px;overflow-y:scroll"></div> </div> <br id="column_l_bottomgap"> </div> <div id="footer" class="noselect"> <table cellpadding="0" cellspacing="10" style="width:100%"> <tr> <td style="text-align:left;color:white"> {{{footer}}} </td> <td style="text-align:right"> <a id="verifyEmailId2" style="color:yellow;margin-left:3px;cursor:pointer;display:none" onclick="account_showVerifyEmail()">Verify Email</a> <a style="margin-left:3px" href="terms">Terms & Privacy</a> </td> </tr> </table> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:160px;width:400px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> <div id="dialog3" style="margin:auto;margin:3px"> <div style="height:26px"> <select id="d3uploadMode" style="float:right;width:260px" onchange="d3modechange()"> <option value="1">Local file upload <option value="2">Server file selection </select> <div>File Selection</div> </div> <div id="d3localmode" style="height:26px;display:none"> <form id="d3localmodeform" method="post" enctype="multipart/form-data" action="uploadfile.ashx" target="fileUploadFrame"> <input type="text" id="d3attrib" name="attrib" style="display:none"> <input type="file" id="d3localFile" name="files" style="float:right;width:260px" onchange="d3setActions()"> <input type="submit" id="d3submit" style="display:none"> </form> <div>Upload File</div> </div> <div id="d3servermode"> <div style="width:100%;background-color:#d3d9d6;text-align:left;padding:3px" valign="bottom"> <input type="button" id="p3FolderUp" disabled="disabled" onclick="d3folderup()" value="Up"> </div> <div id="d3serverfiles" style="width:100%;height:150px;background-color:white;padding:2px;border:1px solid gray;overflow-y:scroll"></div> </div> </div> <div id="dialog7" style="margin:auto;margin:3px"> <div id="d7meshkvm"> <h4 style="width:100%;border-bottom:1px solid gray">Mesh Agent Remote Desktop</h4> <div style="margin:3px 0 3px 0"> <select id="d7bitmapquality" style="float:right;width:200px;height:20px" dir="rtl"></select> <div style="height:20px">Quality</div> </div> <div style="margin:3px 0 3px 0"> <select id="d7bitmapscaling" style="float:right;width:200px;height:20px" dir="rtl"> <option selected="selected" value="1024">100% <option value="896">87.5% <option value="768">75% <option value="640">62.5% <option value="512">50% <option value="384">37.5% <option value="256">25% <option value="128">12.5% </select> <div style="height:20px">Scaling</div> </div> <div style="margin:3px 0 3px 0"> <select id="d7framelimiter" style="float:right;width:200px;height:20px" dir="rtl"> <option selected="selected" value="50">Fast <option value="100">Medium <option value="400">Slow <option value="1000">Very slow </select> <div style="height:20px">Frame rate</div> </div> </div> <div id="d7amtkvm"> <h4 style="width:100%;border-bottom:1px solid gray">Intel® AMT Hardware KVM</h4> <div style='height:26px'> <select id="d7desktopmode" style="float:right;width:200px"> <option value="1">RLE8, Fastest <option value="2">RLE16, Recommended <option value="3">RAW8, Slow <option value="4">RAW16, Very Slow </select> <div>Image Encoding</div> </div> <div style="height:60px"> <div style="float:right;border:1px solid #666;width:200px;height:60px;overflow-y:scroll;background-color:white"> <input type="checkbox" id='d7showfocus'>Show Focus Tool<br> <input type="checkbox" id='d7showcursor'>Show Local Mouse Cursor<br> </div> <div>Other Settings</div> </div> </div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:4px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> <div style="height:25px"><input id="idx_dlgDeleteButton" type="button" value="Delete" style="width:80px;display:none" onclick="dialogclose(2)"></div> </div> </div> <iframe name="fileUploadFrame" style="display:none"></iframe> <form style="display:none" method="post" action="uploadfile.ashx" enctype="multipart/form-data" target="fileUploadFrame"><input id="p5fileDragName" name="name"><input id="p5fileDragSize" name="size"><input id="p5fileDragType" name="type"><input id="p5fileDragData" name="data"><input id="p5fileDragLink" name="link"><input type="submit" id="p5loginSubmit2" style="display:none"></form> <form style="display:none" method="post" action="uploadnodefile.ashx" enctype="multipart/form-data" target="fileUploadFrame"><input id="p13fileDragName" name="name"><input id="p13fileDragSize" name="size"><input id="p13fileDragType" name="type"><input id="p13fileDragData" name="data"><input id="p13fileDragLink" name="link"><input type="submit" id="p13loginSubmit2" style="display:none"></form> <audio id="chimes"><source src="sounds/chimes.mp3" type="audio/mp3"></source></audio> </div> </div> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g," ")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(f,a){var d="";if(f!=0&&(!f||f==null)){return"(Null)"}if(f instanceof Array){for(var b in f){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(f[b],a+1)}}else{if(f instanceof Object){for(var b in f){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(f[b],a+1)}}else{d+=EscapeHtml(f)}}return d}function ObjectToStringEx2(f,a){var d="";if(f!=0&&(!f||f==null)){return"(Null)"}if(f instanceof Array){for(var b in f){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(f[b],a+1)}}else{if(f instanceof Object){for(var b in f){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(f[b],a+1)}}else{d+=EscapeHtml(f)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),f;while(f=b.shift()){c+=String.fromCharCode("0x"+f)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"®").replace(/\(TM\)/g,"™")}var MeshServerCreateControl=function(a){var b={};b.State=0;b.connectstate=0;b.pingTimer=null;b.xxStateChange=function(c){if(b.State==c){return}b.State=c;if(b.onStateChanged){b.onStateChanged(b,b.State)}};b.Start=function(){b.connectstate=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+a+"control.ashx");b.socket.onopen=function(){b.connectstate=1;b.xxStateChange(2)};b.socket.onmessage=b.xxOnMessage;b.socket.onclose=function(){b.Stop()};b.xxStateChange(1);if(b.pingTimer!=null){clearInterval(b.pingTimer)}b.pingTimer=setInterval(function(){b.send({action:"ping"})},29000)};b.Stop=function(){b.connectstate=0;if(b.socket){b.socket.close();delete b.socket}if(b.pingTimer!=null){clearInterval(b.pingTimer);b.pingTimer=null}b.xxStateChange(0)};b.xxOnMessage=function(c){var d;try{d=JSON.parse(c.data)}catch(c){return}if(d.action=="pong"){return}if(b.onMessage){b.onMessage(b,d)}};b.send=function(c){if(b.socket!=null&&b.connectstate==1){b.socket.send(JSON.stringify(c))}};return b};function AmtStackCreateService(t){var s=new Object();s.wsman=t;s.pfx=["http://intel.com/wbem/wscim/1/amt-schema/1/","http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/","http://intel.com/wbem/wscim/1/ips-schema/1/"];s.PendingEnums=[];s.PendingBatchOperations=0;s.ActiveEnumsCount=0;s.MaxActiveEnumsCount=1;s.onProcessChanged=null;var n=0;var m=0;s.GetPendingActions=function(){return(s.PendingEnums.length*2)+(s.ActiveEnumsCount)+s.wsman.comm.PendingAjax.length+s.wsman.comm.ActiveAjaxCount+s.PendingBatchOperations};function r(){var u=s.GetPendingActions();if(n<u){n=u}if(s.onProcessChanged!=null&&m!=u){m=u;s.onProcessChanged(u,n)}if(u==0){n=0}}s.Subscribe=function(w,v,D,u,C,A,B,y,E,z){s.wsman.ExecSubscribe(s.CompleteName(w),v,D,function(H,G,F,I){r();u(s,w,F,I,C)},0,A,B,y,E,z);r()};s.UnSubscribe=function(v,u,z,w,y){s.wsman.ExecUnSubscribe(s.CompleteName(v),function(C,B,A,D){r();u(s,v,A,D,z)},0,w,y);r()};s.Get=function(v,u,y,w){s.wsman.ExecGet(s.CompleteName(v),function(B,A,z,C){r();u(s,v,z,C,y)},0,w);r()};s.Put=function(v,y,u,A,w,z){s.wsman.ExecPut(s.CompleteName(v),y,function(D,C,B,E){r();u(s,v,B,E,A)},0,w,z);r()};s.Create=function(v,y,u,z,w){s.wsman.ExecCreate(s.CompleteName(v),y,function(C,B,A,D){r();u(s,v,A,D,z)},0,w);r()};s.Delete=function(v,y,u,z,w){s.wsman.ExecDelete(s.CompleteName(v),y,function(C,B,A,D){r();u(s,v,A,D,z)},0,w);r()};s.Exec=function(y,w,u,v,B,z,A){s.wsman.ExecMethod(s.CompleteName(y),w,u,function(E,D,C,F){r();v(s,y,s.CompleteExecResponse(C),F,B)},0,z,A);r()};s.ExecWithXml=function(y,w,u,v,B,z,A){s.wsman.ExecMethodXml(s.CompleteName(y),w,execArgumentsToXml(u),function(E,D,C,F){r();v(s,y,s.CompleteExecResponse(C),F,B)},0,z,A);r()};s.Enum=function(v,u,y,w){if(s.ActiveEnumsCount<s.MaxActiveEnumsCount){s.ActiveEnumsCount++;s.wsman.ExecEnum(s.CompleteName(v),function(C,A,z,D,B){r();d(v,z,u,A,D,B)},y,w)}else{s.PendingEnums.push([v,u,y,w])}r()};function d(w,z,u,A,B,C,y){if(B!=200){u(s,w,null,B,C);c(1);return}if(z==null||z.Header.Method!="EnumerateResponse"||!z.Body.EnumerationContext){u(s,w,null,603,C);c(1);return}var v=z.Body.EnumerationContext;s.wsman.ExecPull(A,v,function(F,E,D,G){b(w,D,u,E,[],G,C,y)})}function b(A,C,u,D,y,E,F,B){if(E!=200){u(s,A,null,E,F);c(1);return}if(C==null||C.Header.Method!="PullResponse"){u(s,A,null,604,F);c(1);return}for(var w in C.Body.Items){if(C.Body.Items[w] instanceof Array){for(var z in C.Body.Items[w]){y.push(C.Body.Items[w][z])}}else{y.push(C.Body.Items[w])}}if(C.Body.EnumerationContext){var v=C.Body.EnumerationContext;s.wsman.ExecPull(D,v,function(I,H,G,J){b(A,G,u,H,y,J,F,1)})}else{c(1);u(s,A,y,E,F);r()}}function c(u){s.ActiveEnumsCount-=u;if(s.ActiveEnumsCount>=s.MaxActiveEnumsCount||s.PendingEnums.length==0){return}var v=s.PendingEnums.shift();s.Enum(v[0],v[1],v[2]);c(0)}s.BatchEnum=function(u,y,v,A,w,z){s.PendingBatchOperations+=(y.length*2);a(u,Clone(y),v,A,{},w,z);r()};function a(u,A,v,D,C,w,B){s.PendingBatchOperations-=2;var z=A.shift(),y=s.Enum;if(z[0]=="*"){y=s.Get;z=z.substring(1)}y(z,function(G,E,F,H,I){I[2][E]={response:(F==null?null:F.Body),responses:F,status:H};if(I[1].length==0||H==401||(w!=true&&H!=200&&H!=400)){s.PendingBatchOperations-=(A.length*2);r();v(s,u,I[2],H,D)}else{r();a(u,A,v,D,I[2],B)}},[u,A,C],B);r()}s.BatchGet=function(u,w,v,z,y){h({name:u,names:w,callback:v,current:0,responses:{},tag:z,pri:y});r()};function h(u){if(u.names.length<=u.current){u.callback(s,u.name,u.responses,200,u.tag)}else{s.wsman.ExecGet(s.CompleteName(u.names[u.current]),function(y,w,v,z){g(u,v,z)},u.pri);u.current++}r()}function g(u,v,w){if(v==null||w!=200){u.callback(s,u.name,null,w,u.tag)}else{u.responses[v.Header.Method]=v;h(u)}}s.CompleteName=function(u){if(u.indexOf("AMT_")==0){return s.pfx[0]+u}if(u.indexOf("CIM_")==0){return s.pfx[1]+u}if(u.indexOf("IPS_")==0){return s.pfx[2]+u}};s.CompleteExecResponse=function(u){if(u&&u!=null&&u.Body&&u.Body.ReturnValue){u.Body.ReturnValueStr=s.AmtStatusToStr(u.Body.ReturnValue)}return u};s.RequestPowerStateChange=function(v,u){s.CIM_PowerManagementService_RequestPowerStateChange(v,'<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="CreationClassName">CIM_ComputerSystem</Selector><Selector Name="Name">ManagedSystem</Selector></SelectorSet></ReferenceParameters>',null,null,u)};s.SetBootConfigRole=function(v,u){s.CIM_BootService_SetBootConfigRole('<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="InstanceID">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>',v,u)};s.CancelAllQueries=function(u){s.wsman.CancelAllQueries(u)};s.AMT_AgentPresenceWatchdog_RegisterAgent=function(u){s.Exec("AMT_AgentPresenceWatchdog","RegisterAgent",{},u)};s.AMT_AgentPresenceWatchdog_AssertPresence=function(v,u){s.Exec("AMT_AgentPresenceWatchdog","AssertPresence",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdog_AssertShutdown=function(v,u){s.Exec("AMT_AgentPresenceWatchdog","AssertShutdown",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdog_AddAction=function(A,z,y,v,u,w,D,B,C){s.Exec("AMT_AgentPresenceWatchdog","AddAction",{OldState:A,NewState:z,EventOnTransition:y,ActionSd:v,ActionEac:u},w,D,B,C)};s.AMT_AgentPresenceWatchdog_DeleteAllActions=function(u,y,v,w){s.Exec("AMT_AgentPresenceWatchdog","DeleteAllActions",{},u,y,v,w)};s.AMT_AgentPresenceWatchdogAction_GetActionEac=function(u){s.Exec("AMT_AgentPresenceWatchdogAction","GetActionEac",{},u)};s.AMT_AgentPresenceWatchdogVA_RegisterAgent=function(u){s.Exec("AMT_AgentPresenceWatchdogVA","RegisterAgent",{},u)};s.AMT_AgentPresenceWatchdogVA_AssertPresence=function(v,u){s.Exec("AMT_AgentPresenceWatchdogVA","AssertPresence",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdogVA_AssertShutdown=function(v,u){s.Exec("AMT_AgentPresenceWatchdogVA","AssertShutdown",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdogVA_AddAction=function(A,z,y,v,u,w){s.Exec("AMT_AgentPresenceWatchdogVA","AddAction",{OldState:A,NewState:z,EventOnTransition:y,ActionSd:v,ActionEac:u},w)};s.AMT_AgentPresenceWatchdogVA_DeleteAllActions=function(u,v){s.Exec("AMT_AgentPresenceWatchdogVA","DeleteAllActions",{_method_dummy:u},v)};s.AMT_AuditLog_ClearLog=function(u){s.Exec("AMT_AuditLog","ClearLog",{},u)};s.AMT_AuditLog_RequestStateChange=function(v,w,u){s.Exec("AMT_AuditLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_AuditLog_ReadRecords=function(v,u,w){s.Exec("AMT_AuditLog","ReadRecords",{StartIndex:v},u,w)};s.AMT_AuditLog_SetAuditLock=function(y,v,w,u){s.Exec("AMT_AuditLog","SetAuditLock",{LockTimeoutInSeconds:y,Flag:v,Handle:w},u)};s.AMT_AuditLog_ExportAuditLogSignature=function(v,u){s.Exec("AMT_AuditLog","ExportAuditLogSignature",{SigningMechanism:v},u)};s.AMT_AuditLog_SetSigningKeyMaterial=function(z,y,w,v,u){s.Exec("AMT_AuditLog","SetSigningKeyMaterial",{SigningMechanismType:z,SigningKey:y,LengthOfCertificates:w,Certificates:v},u)};s.AMT_AuditPolicyRule_SetAuditPolicy=function(w,u,y,z,v){s.Exec("AMT_AuditPolicyRule","SetAuditPolicy",{Enable:w,AuditedAppID:u,EventID:y,PolicyType:z},v)};s.AMT_AuditPolicyRule_SetAuditPolicyBulk=function(w,u,y,z,v){s.Exec("AMT_AuditPolicyRule","SetAuditPolicyBulk",{Enable:w,AuditedAppID:u,EventID:y,PolicyType:z},v)};s.AMT_AuthorizationService_AddUserAclEntryEx=function(y,w,z,u,A,v){s.Exec("AMT_AuthorizationService","AddUserAclEntryEx",{DigestUsername:y,DigestPassword:w,KerberosUserSid:z,AccessPermission:u,Realms:A},v)};s.AMT_AuthorizationService_EnumerateUserAclEntries=function(v,u){s.Exec("AMT_AuthorizationService","EnumerateUserAclEntries",{StartIndex:v},u)};s.AMT_AuthorizationService_GetUserAclEntryEx=function(v,u,w){s.Exec("AMT_AuthorizationService","GetUserAclEntryEx",{Handle:v},u,w)};s.AMT_AuthorizationService_UpdateUserAclEntryEx=function(z,y,w,A,u,B,v){s.Exec("AMT_AuthorizationService","UpdateUserAclEntryEx",{Handle:z,DigestUsername:y,DigestPassword:w,KerberosUserSid:A,AccessPermission:u,Realms:B},v)};s.AMT_AuthorizationService_RemoveUserAclEntry=function(v,u){s.Exec("AMT_AuthorizationService","RemoveUserAclEntry",{Handle:v},u)};s.AMT_AuthorizationService_SetAdminAclEntryEx=function(w,v,u){s.Exec("AMT_AuthorizationService","SetAdminAclEntryEx",{Username:w,DigestPassword:v},u)};s.AMT_AuthorizationService_GetAdminAclEntry=function(u){s.Exec("AMT_AuthorizationService","GetAdminAclEntry",{},u)};s.AMT_AuthorizationService_GetAdminAclEntryStatus=function(u){s.Exec("AMT_AuthorizationService","GetAdminAclEntryStatus",{},u)};s.AMT_AuthorizationService_GetAdminNetAclEntryStatus=function(u){s.Exec("AMT_AuthorizationService","GetAdminNetAclEntryStatus",{},u)};s.AMT_AuthorizationService_SetAclEnabledState=function(w,v,u,y){s.Exec("AMT_AuthorizationService","SetAclEnabledState",{Handle:w,Enabled:v},u,y)};s.AMT_AuthorizationService_GetAclEnabledState=function(v,u,w){s.Exec("AMT_AuthorizationService","GetAclEnabledState",{Handle:v},u,w)};s.AMT_EndpointAccessControlService_RequestStateChange=function(v,w,u){s.Exec("AMT_EndpointAccessControlService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_EndpointAccessControlService_GetPosture=function(v,u){s.Exec("AMT_EndpointAccessControlService","GetPosture",{PostureType:v},u)};s.AMT_EndpointAccessControlService_GetPostureHash=function(v,u){s.Exec("AMT_EndpointAccessControlService","GetPostureHash",{PostureType:v},u)};s.AMT_EndpointAccessControlService_UpdatePostureState=function(v,u){s.Exec("AMT_EndpointAccessControlService","UpdatePostureState",{UpdateType:v},u)};s.AMT_EndpointAccessControlService_GetEacOptions=function(u){s.Exec("AMT_EndpointAccessControlService","GetEacOptions",{},u)};s.AMT_EndpointAccessControlService_SetEacOptions=function(v,w,u){s.Exec("AMT_EndpointAccessControlService","SetEacOptions",{EacVendors:v,PostureHashAlgorithm:w},u)};s.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy=function(v,u){s.Exec("AMT_EnvironmentDetectionSettingData","SetSystemDefensePolicy",{Policy:v},u)};s.AMT_EnvironmentDetectionSettingData_EnableVpnRouting=function(v,u){s.Exec("AMT_EnvironmentDetectionSettingData","EnableVpnRouting",{Enable:v},u)};s.AMT_EthernetPortSettings_SetLinkPreference=function(v,w,u){s.Exec("AMT_EthernetPortSettings","SetLinkPreference",{LinkPreference:v,Timeout:w},u)};s.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats=function(v,u){s.Exec("AMT_HeuristicPacketFilterStatistics","ResetSelectedStats",{SelectedStatistics:v},u)};s.AMT_KerberosSettingData_GetCredentialCacheState=function(u){s.Exec("AMT_KerberosSettingData","GetCredentialCacheState",{},u)};s.AMT_KerberosSettingData_SetCredentialCacheState=function(v,u){s.Exec("AMT_KerberosSettingData","SetCredentialCacheState",{Enable:v},u)};s.AMT_MessageLog_CancelIteration=function(v,u){s.Exec("AMT_MessageLog","CancelIteration",{IterationIdentifier:v},u)};s.AMT_MessageLog_RequestStateChange=function(v,w,u){s.Exec("AMT_MessageLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_MessageLog_ClearLog=function(u){s.Exec("AMT_MessageLog","ClearLog",{},u)};s.AMT_MessageLog_GetRecords=function(v,w,u,y){s.Exec("AMT_MessageLog","GetRecords",{IterationIdentifier:v,MaxReadRecords:w},u,y)};s.AMT_MessageLog_GetRecord=function(v,w,u){s.Exec("AMT_MessageLog","GetRecord",{IterationIdentifier:v,PositionToNext:w},u)};s.AMT_MessageLog_PositionAtRecord=function(v,w,y,u){s.Exec("AMT_MessageLog","PositionAtRecord",{IterationIdentifier:v,MoveAbsolute:w,RecordNumber:y},u)};s.AMT_MessageLog_PositionToFirstRecord=function(u,v){s.Exec("AMT_MessageLog","PositionToFirstRecord",{},u,v)};s.AMT_MessageLog_FreezeLog=function(v,u){s.Exec("AMT_MessageLog","FreezeLog",{Freeze:v},u)};s.AMT_PublicKeyManagementService_AddCRL=function(w,v,u){s.Exec("AMT_PublicKeyManagementService","AddCRL",{Url:w,SerialNumbers:v},u)};s.AMT_PublicKeyManagementService_ResetCRLList=function(u,v){s.Exec("AMT_PublicKeyManagementService","ResetCRLList",{_method_dummy:u},v)};s.AMT_PublicKeyManagementService_AddCertificate=function(v,u){s.Exec("AMT_PublicKeyManagementService","AddCertificate",{CertificateBlob:v},u)};s.AMT_PublicKeyManagementService_AddTrustedRootCertificate=function(v,u){s.Exec("AMT_PublicKeyManagementService","AddTrustedRootCertificate",{CertificateBlob:v},u)};s.AMT_PublicKeyManagementService_AddKey=function(v,u){s.Exec("AMT_PublicKeyManagementService","AddKey",{KeyBlob:v},u)};s.AMT_PublicKeyManagementService_GeneratePKCS10Request=function(w,v,y,u){s.Exec("AMT_PublicKeyManagementService","GeneratePKCS10Request",{KeyPair:w,DNName:v,Usage:y},u)};s.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx=function(v,y,w,u){s.Exec("AMT_PublicKeyManagementService","GeneratePKCS10RequestEx",{KeyPair:v,SigningAlgorithm:y,NullSignedCertificateRequest:w},u)};s.AMT_PublicKeyManagementService_GenerateKeyPair=function(v,w,u){s.Exec("AMT_PublicKeyManagementService","GenerateKeyPair",{KeyAlgorithm:v,KeyLength:w},u)};s.AMT_RedirectionService_RequestStateChange=function(v,u){s.Exec("AMT_RedirectionService","RequestStateChange",{RequestedState:v},u)};s.AMT_RedirectionService_TerminateSession=function(v,u){s.Exec("AMT_RedirectionService","TerminateSession",{SessionType:v},u)};s.AMT_RemoteAccessService_AddMpServer=function(u,A,C,v,y,D,B,z,w){s.Exec("AMT_RemoteAccessService","AddMpServer",{AccessInfo:u,InfoFormat:A,Port:C,AuthMethod:v,Certificate:y,Username:D,Password:B,CN:z},w)};s.AMT_RemoteAccessService_AddRemoteAccessPolicyRule=function(y,z,v,w,u){s.Exec("AMT_RemoteAccessService","AddRemoteAccessPolicyRule",{Trigger:y,TunnelLifeTime:z,ExtendedData:v,MpServer:w},u)};s.AMT_RemoteAccessService_CloseRemoteAccessConnection=function(u,v){s.Exec("AMT_RemoteAccessService","CloseRemoteAccessConnection",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_CommitChanges=function(u,v){s.Exec("AMT_SetupAndConfigurationService","CommitChanges",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_Unprovision=function(v,u){s.Exec("AMT_SetupAndConfigurationService","Unprovision",{ProvisioningMode:v},u)};s.AMT_SetupAndConfigurationService_PartialUnprovision=function(u,v){s.Exec("AMT_SetupAndConfigurationService","PartialUnprovision",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection=function(u,v){s.Exec("AMT_SetupAndConfigurationService","ResetFlashWearOutProtection",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod=function(v,u){s.Exec("AMT_SetupAndConfigurationService","ExtendProvisioningPeriod",{Duration:v},u)};s.AMT_SetupAndConfigurationService_SetMEBxPassword=function(v,u){s.Exec("AMT_SetupAndConfigurationService","SetMEBxPassword",{Password:v},u)};s.AMT_SetupAndConfigurationService_SetTLSPSK=function(v,w,u){s.Exec("AMT_SetupAndConfigurationService","SetTLSPSK",{PID:v,PPS:w},u)};s.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord=function(u){s.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecord",{},u)};s.AMT_SetupAndConfigurationService_GetUuid=function(u){s.Exec("AMT_SetupAndConfigurationService","GetUuid",{},u)};s.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents=function(u){s.Exec("AMT_SetupAndConfigurationService","GetUnprovisionBlockingComponents",{},u)};s.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2=function(u){s.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecordV2",{},u)};s.AMT_SystemDefensePolicy_GetTimeout=function(u){s.Exec("AMT_SystemDefensePolicy","GetTimeout",{},u)};s.AMT_SystemDefensePolicy_SetTimeout=function(v,u){s.Exec("AMT_SystemDefensePolicy","SetTimeout",{Timeout:v},u)};s.AMT_SystemDefensePolicy_UpdateStatistics=function(v,y,u,A,w,z){s.Exec("AMT_SystemDefensePolicy","UpdateStatistics",{NetworkInterface:v,ResetOnRead:y},u,A,w,z)};s.AMT_SystemPowerScheme_SetPowerScheme=function(u,v,w){s.Exec("AMT_SystemPowerScheme","SetPowerScheme",{},u,w,0,{InstanceID:v})};s.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch=function(u,v){s.Exec("AMT_TimeSynchronizationService","GetLowAccuracyTimeSynch",{},u,v)};s.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch=function(v,y,z,u,w){s.Exec("AMT_TimeSynchronizationService","SetHighAccuracyTimeSynch",{Ta0:v,Tm1:y,Tm2:z},u,w)};s.AMT_UserInitiatedConnectionService_RequestStateChange=function(v,w,u){s.Exec("AMT_UserInitiatedConnectionService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_WebUIService_RequestStateChange=function(v,w,u){s.Exec("AMT_WebUIService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_WiFiPortConfigurationService_AddWiFiSettings=function(z,A,y,w,u,v){s.ExecWithXml("AMT_WiFiPortConfigurationService","AddWiFiSettings",{WiFiEndpoint:z,WiFiEndpointSettingsInput:A,IEEE8021xSettingsInput:y,ClientCredential:w,CACredential:u},v)};s.AMT_WiFiPortConfigurationService_UpdateWiFiSettings=function(z,A,y,w,u,v){s.ExecWithXml("AMT_WiFiPortConfigurationService","UpdateWiFiSettings",{WiFiEndpointSettings:z,WiFiEndpointSettingsInput:A,IEEE8021xSettingsInput:y,ClientCredential:w,CACredential:u},v)};s.AMT_WiFiPortConfigurationService_DeleteAllITProfiles=function(u,v){s.Exec("AMT_WiFiPortConfigurationService","DeleteAllITProfiles",{_method_dummy:u},v)};s.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles=function(u,v){s.Exec("AMT_WiFiPortConfigurationService","DeleteAllUserProfiles",{_method_dummy:u},v)};s.CIM_Account_RequestStateChange=function(v,w,u){s.Exec("CIM_Account","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_AccountManagementService_CreateAccount=function(w,u,v){s.Exec("CIM_AccountManagementService","CreateAccount",{System:w,AccountTemplate:u},v)};s.CIM_BootConfigSetting_ChangeBootOrder=function(v,u){s.Exec("CIM_BootConfigSetting","ChangeBootOrder",{Source:v},u)};s.CIM_BootService_SetBootConfigRole=function(u,w,v){s.Exec("CIM_BootService","SetBootConfigRole",{BootConfigSetting:u,Role:w},v,0,1)};s.CIM_Card_ConnectorPower=function(v,w,u){s.Exec("CIM_Card","ConnectorPower",{Connector:v,PoweredOn:w},u)};s.CIM_Card_IsCompatible=function(v,u){s.Exec("CIM_Card","IsCompatible",{ElementToCheck:v},u)};s.CIM_Chassis_IsCompatible=function(v,u){s.Exec("CIM_Chassis","IsCompatible",{ElementToCheck:v},u)};s.CIM_Fan_SetSpeed=function(v,u){s.Exec("CIM_Fan","SetSpeed",{DesiredSpeed:v},u)};s.CIM_KVMRedirectionSAP_RequestStateChange=function(v,w,u){s.Exec("CIM_KVMRedirectionSAP","RequestStateChange",{RequestedState:v},u)};s.CIM_MediaAccessDevice_LockMedia=function(v,u){s.Exec("CIM_MediaAccessDevice","LockMedia",{Lock:v},u)};s.CIM_MediaAccessDevice_SetPowerState=function(v,w,u){s.Exec("CIM_MediaAccessDevice","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_MediaAccessDevice_Reset=function(u){s.Exec("CIM_MediaAccessDevice","Reset",{},u)};s.CIM_MediaAccessDevice_EnableDevice=function(v,u){s.Exec("CIM_MediaAccessDevice","EnableDevice",{Enabled:v},u)};s.CIM_MediaAccessDevice_OnlineDevice=function(v,u){s.Exec("CIM_MediaAccessDevice","OnlineDevice",{Online:v},u)};s.CIM_MediaAccessDevice_QuiesceDevice=function(v,u){s.Exec("CIM_MediaAccessDevice","QuiesceDevice",{Quiesce:v},u)};s.CIM_MediaAccessDevice_SaveProperties=function(u){s.Exec("CIM_MediaAccessDevice","SaveProperties",{},u)};s.CIM_MediaAccessDevice_RestoreProperties=function(u){s.Exec("CIM_MediaAccessDevice","RestoreProperties",{},u)};s.CIM_MediaAccessDevice_RequestStateChange=function(v,w,u){s.Exec("CIM_MediaAccessDevice","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_PhysicalFrame_IsCompatible=function(v,u){s.Exec("CIM_PhysicalFrame","IsCompatible",{ElementToCheck:v},u)};s.CIM_PhysicalPackage_IsCompatible=function(v,u){s.Exec("CIM_PhysicalPackage","IsCompatible",{ElementToCheck:v},u)};s.CIM_PowerManagementService_RequestPowerStateChange=function(w,v,y,z,u){s.Exec("CIM_PowerManagementService","RequestPowerStateChange",{PowerState:w,ManagedElement:v,Time:y,TimeoutPeriod:z},u,0,1)};s.CIM_PowerSupply_SetPowerState=function(v,w,u){s.Exec("CIM_PowerSupply","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_PowerSupply_Reset=function(u){s.Exec("CIM_PowerSupply","Reset",{},u)};s.CIM_PowerSupply_EnableDevice=function(v,u){s.Exec("CIM_PowerSupply","EnableDevice",{Enabled:v},u)};s.CIM_PowerSupply_OnlineDevice=function(v,u){s.Exec("CIM_PowerSupply","OnlineDevice",{Online:v},u)};s.CIM_PowerSupply_QuiesceDevice=function(v,u){s.Exec("CIM_PowerSupply","QuiesceDevice",{Quiesce:v},u)};s.CIM_PowerSupply_SaveProperties=function(u){s.Exec("CIM_PowerSupply","SaveProperties",{},u)};s.CIM_PowerSupply_RestoreProperties=function(u){s.Exec("CIM_PowerSupply","RestoreProperties",{},u)};s.CIM_PowerSupply_RequestStateChange=function(v,w,u){s.Exec("CIM_PowerSupply","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_Processor_SetPowerState=function(v,w,u){s.Exec("CIM_Processor","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_Processor_Reset=function(u){s.Exec("CIM_Processor","Reset",{},u)};s.CIM_Processor_EnableDevice=function(v,u){s.Exec("CIM_Processor","EnableDevice",{Enabled:v},u)};s.CIM_Processor_OnlineDevice=function(v,u){s.Exec("CIM_Processor","OnlineDevice",{Online:v},u)};s.CIM_Processor_QuiesceDevice=function(v,u){s.Exec("CIM_Processor","QuiesceDevice",{Quiesce:v},u)};s.CIM_Processor_SaveProperties=function(u){s.Exec("CIM_Processor","SaveProperties",{},u)};s.CIM_Processor_RestoreProperties=function(u){s.Exec("CIM_Processor","RestoreProperties",{},u)};s.CIM_Processor_RequestStateChange=function(v,w,u){s.Exec("CIM_Processor","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_RecordLog_ClearLog=function(u){s.Exec("CIM_RecordLog","ClearLog",{},u)};s.CIM_RecordLog_RequestStateChange=function(v,w,u){s.Exec("CIM_RecordLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_RedirectionService_RequestStateChange=function(v,w,u){s.Exec("CIM_RedirectionService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_Sensor_SetPowerState=function(v,w,u){s.Exec("CIM_Sensor","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_Sensor_Reset=function(u){s.Exec("CIM_Sensor","Reset",{},u)};s.CIM_Sensor_EnableDevice=function(v,u){s.Exec("CIM_Sensor","EnableDevice",{Enabled:v},u)};s.CIM_Sensor_OnlineDevice=function(v,u){s.Exec("CIM_Sensor","OnlineDevice",{Online:v},u)};s.CIM_Sensor_QuiesceDevice=function(v,u){s.Exec("CIM_Sensor","QuiesceDevice",{Quiesce:v},u)};s.CIM_Sensor_SaveProperties=function(u){s.Exec("CIM_Sensor","SaveProperties",{},u)};s.CIM_Sensor_RestoreProperties=function(u){s.Exec("CIM_Sensor","RestoreProperties",{},u)};s.CIM_Sensor_RequestStateChange=function(v,w,u){s.Exec("CIM_Sensor","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_StatisticalData_ResetSelectedStats=function(v,u){s.Exec("CIM_StatisticalData","ResetSelectedStats",{SelectedStatistics:v},u)};s.CIM_Watchdog_KeepAlive=function(u){s.Exec("CIM_Watchdog","KeepAlive",{},u)};s.CIM_Watchdog_SetPowerState=function(v,w,u){s.Exec("CIM_Watchdog","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_Watchdog_Reset=function(u){s.Exec("CIM_Watchdog","Reset",{},u)};s.CIM_Watchdog_EnableDevice=function(v,u){s.Exec("CIM_Watchdog","EnableDevice",{Enabled:v},u)};s.CIM_Watchdog_OnlineDevice=function(v,u){s.Exec("CIM_Watchdog","OnlineDevice",{Online:v},u)};s.CIM_Watchdog_QuiesceDevice=function(v,u){s.Exec("CIM_Watchdog","QuiesceDevice",{Quiesce:v},u)};s.CIM_Watchdog_SaveProperties=function(u){s.Exec("CIM_Watchdog","SaveProperties",{},u)};s.CIM_Watchdog_RestoreProperties=function(u){s.Exec("CIM_Watchdog","RestoreProperties",{},u)};s.CIM_Watchdog_RequestStateChange=function(v,w,u){s.Exec("CIM_Watchdog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_WiFiPort_SetPowerState=function(v,w,u){s.Exec("CIM_WiFiPort","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_WiFiPort_Reset=function(u){s.Exec("CIM_WiFiPort","Reset",{},u)};s.CIM_WiFiPort_EnableDevice=function(v,u){s.Exec("CIM_WiFiPort","EnableDevice",{Enabled:v},u)};s.CIM_WiFiPort_OnlineDevice=function(v,u){s.Exec("CIM_WiFiPort","OnlineDevice",{Online:v},u)};s.CIM_WiFiPort_QuiesceDevice=function(v,u){s.Exec("CIM_WiFiPort","QuiesceDevice",{Quiesce:v},u)};s.CIM_WiFiPort_SaveProperties=function(u){s.Exec("CIM_WiFiPort","SaveProperties",{},u)};s.CIM_WiFiPort_RestoreProperties=function(u){s.Exec("CIM_WiFiPort","RestoreProperties",{},u)};s.CIM_WiFiPort_RequestStateChange=function(v,w,u){s.Exec("CIM_WiFiPort","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.IPS_HostBasedSetupService_Setup=function(z,A,y,v,B,w,u){s.Exec("IPS_HostBasedSetupService","Setup",{NetAdminPassEncryptionType:z,NetworkAdminPassword:A,McNonce:y,Certificate:v,SigningAlgorithm:B,DigitalSignature:w},u)};s.IPS_HostBasedSetupService_AddNextCertInChain=function(y,v,w,u){s.Exec("IPS_HostBasedSetupService","AddNextCertInChain",{NextCertificate:y,IsLeafCertificate:v,IsRootCertificate:w},u)};s.IPS_HostBasedSetupService_AdminSetup=function(y,z,w,A,v,u){s.Exec("IPS_HostBasedSetupService","AdminSetup",{NetAdminPassEncryptionType:y,NetworkAdminPassword:z,McNonce:w,SigningAlgorithm:A,DigitalSignature:v},u)};s.IPS_HostBasedSetupService_UpgradeClientToAdmin=function(w,y,v,u){s.Exec("IPS_HostBasedSetupService","UpgradeClientToAdmin",{McNonce:w,SigningAlgorithm:y,DigitalSignature:v},u)};s.IPS_HostBasedSetupService_DisableClientControlMode=function(u,v){s.Exec("IPS_HostBasedSetupService","DisableClientControlMode",{_method_dummy:u},v)};s.IPS_KVMRedirectionSettingData_TerminateSession=function(u){s.Exec("IPS_KVMRedirectionSettingData","TerminateSession",{},u)};s.IPS_OptInService_StartOptIn=function(u){s.Exec("IPS_OptInService","StartOptIn",{},u)};s.IPS_OptInService_CancelOptIn=function(u){s.Exec("IPS_OptInService","CancelOptIn",{},u)};s.IPS_OptInService_SendOptInCode=function(v,u){s.Exec("IPS_OptInService","SendOptInCode",{OptInCode:v},u)};s.IPS_OptInService_StartService=function(u){s.Exec("IPS_OptInService","StartService",{},u)};s.IPS_OptInService_StopService=function(u){s.Exec("IPS_OptInService","StopService",{},u)};s.IPS_OptInService_RequestStateChange=function(v,w,u){s.Exec("IPS_OptInService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.IPS_ProvisioningRecordLog_RequestStateChange=function(v,w,u){s.Exec("IPS_ProvisioningRecordLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.IPS_ProvisioningRecordLog_ClearLog=function(u,v){s.Exec("IPS_ProvisioningRecordLog","ClearLog",{_method_dummy:u},v)};s.IPS_SecIOService_RequestStateChange=function(v,w,u){s.Exec("IPS_SecIOService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AmtStatusToStr=function(u){if(s.AmtStatusCodes[u]){return s.AmtStatusCodes[u]}else{return"UNKNOWN_ERROR"}};s.AmtStatusCodes={0:"SUCCESS",1:"INTERNAL_ERROR",2:"NOT_READY",3:"INVALID_PT_MODE",4:"INVALID_MESSAGE_LENGTH",5:"TABLE_FINGERPRINT_NOT_AVAILABLE",6:"INTEGRITY_CHECK_FAILED",7:"UNSUPPORTED_ISVS_VERSION",8:"APPLICATION_NOT_REGISTERED",9:"INVALID_REGISTRATION_DATA",10:"APPLICATION_DOES_NOT_EXIST",11:"NOT_ENOUGH_STORAGE",12:"INVALID_NAME",13:"BLOCK_DOES_NOT_EXIST",14:"INVALID_BYTE_OFFSET",15:"INVALID_BYTE_COUNT",16:"NOT_PERMITTED",17:"NOT_OWNER",18:"BLOCK_LOCKED_BY_OTHER",19:"BLOCK_NOT_LOCKED",20:"INVALID_GROUP_PERMISSIONS",21:"GROUP_DOES_NOT_EXIST",22:"INVALID_MEMBER_COUNT",23:"MAX_LIMIT_REACHED",24:"INVALID_AUTH_TYPE",25:"AUTHENTICATION_FAILED",26:"INVALID_DHCP_MODE",27:"INVALID_IP_ADDRESS",28:"INVALID_DOMAIN_NAME",29:"UNSUPPORTED_VERSION",30:"REQUEST_UNEXPECTED",31:"INVALID_TABLE_TYPE",32:"INVALID_PROVISIONING_STATE",33:"UNSUPPORTED_OBJECT",34:"INVALID_TIME",35:"INVALID_INDEX",36:"INVALID_PARAMETER",37:"INVALID_NETMASK",38:"FLASH_WRITE_LIMIT_EXCEEDED",39:"INVALID_IMAGE_LENGTH",40:"INVALID_IMAGE_SIGNATURE",41:"PROPOSE_ANOTHER_VERSION",42:"INVALID_PID_FORMAT",43:"INVALID_PPS_FORMAT",44:"BIST_COMMAND_BLOCKED",45:"CONNECTION_FAILED",46:"CONNECTION_TOO_MANY",47:"RNG_GENERATION_IN_PROGRESS",48:"RNG_NOT_READY",49:"CERTIFICATE_NOT_READY",1024:"DISABLED_BY_POLICY",2048:"NETWORK_IF_ERROR_BASE",2049:"UNSUPPORTED_OEM_NUMBER",2050:"UNSUPPORTED_BOOT_OPTION",2051:"INVALID_COMMAND",2052:"INVALID_SPECIAL_COMMAND",2053:"INVALID_HANDLE",2054:"INVALID_PASSWORD",2055:"INVALID_REALM",2056:"STORAGE_ACL_ENTRY_IN_USE",2057:"DATA_MISSING",2058:"DUPLICATE",2059:"EVENTLOG_FROZEN",2060:"PKI_MISSING_KEYS",2061:"PKI_GENERATING_KEYS",2062:"INVALID_KEY",2063:"INVALID_CERT",2064:"CERT_KEY_NOT_MATCH",2065:"MAX_KERB_DOMAIN_REACHED",2066:"UNSUPPORTED",2067:"INVALID_PRIORITY",2068:"NOT_FOUND",2069:"INVALID_CREDENTIALS",2070:"INVALID_PASSPHRASE",2072:"NO_ASSOCIATION",2075:"AUDIT_FAIL",2076:"BLOCKING_COMPONENT",2081:"USER_CONSENT_REQUIRED",4096:"APP_INTERNAL_ERROR",4097:"NOT_INITIALIZED",4098:"LIB_VERSION_UNSUPPORTED",4099:"INVALID_PARAM",4100:"RESOURCES",4101:"HARDWARE_ACCESS_ERROR",4102:"REQUESTOR_NOT_REGISTERED",4103:"NETWORK_ERROR",4104:"PARAM_BUFFER_TOO_SHORT",4105:"COM_NOT_INITIALIZED_IN_THREAD",4106:"URL_REQUIRED"};s.GetMessageLog=function(u,v){s.AMT_MessageLog_PositionToFirstRecord(k,[u,v,[]])};function k(w,u,v,y,z){if(y!=200||v.Body.ReturnValue!="0"){z[0](s,null,z[2]);return}s.AMT_MessageLog_GetRecords(v.Body.IterationIdentifier,390,l,z)}function l(D,A,C,E,G){if(E!=200||C.Body.ReturnValue!="0"){G[0](s,null,G[2]);return}var y,z,I,v,u=G[2],F=new Date(),H,B=C.Body.RecordArray;if(typeof B==="string"){C.Body.RecordArray=[C.Body.RecordArray]}for(y in B){v=null;try{v=window.atob(B[y])}catch(w){}if(v!=null){H=ReadIntX(v,0);if((H>0)&&(H<4294967295)){I={DeviceAddress:v.charCodeAt(4),EventSensorType:v.charCodeAt(5),EventType:v.charCodeAt(6),EventOffset:v.charCodeAt(7),EventSourceType:v.charCodeAt(8),EventSeverity:v.charCodeAt(9),SensorNumber:v.charCodeAt(10),Entity:v.charCodeAt(11),EntityInstance:v.charCodeAt(12),EventData:[],Time:new Date((H+(F.getTimezoneOffset()*60))*1000)};for(z=13;z<21;z++){I.EventData.push(v.charCodeAt(z))}I.EntityStr=o[I.Entity];I.Desc=j(I.EventSensorType,I.EventOffset,I.EventData,I.Entity);if(!I.EntityStr){I.EntityStr="Unknown"}u.push(I)}}}if(C.Body.NoMoreRecords!=true){s.AMT_MessageLog_GetRecords(C.Body.IterationIdentifier,390,l,[G[0],u,G[2]])}else{G[0](s,u,G[2])}}var f="Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split("|");var p="Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split("|");var q="Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split("|");var o="Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split("|");s.RealmNames="||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split("|");s.WatchdogCurrentStates={1:"Not Started",2:"Stopped",4:"Running",8:"Expired",16:"Suspended"};function j(y,w,v,u){if(y==15){if(v[0]==235){return"Invalid Data"}if(w==0){return p[v[1]]}return q[v[1]]}if(y==18&&v[0]==170){return"Agent watchdog "+char2hex(v[4])+char2hex(v[3])+char2hex(v[2])+char2hex(v[1])+"-"+char2hex(v[6])+char2hex(v[5])+"-... changed to "+s.WatchdogCurrentStates[v[7]]}if(y==6){return"Authentication failed "+(v[1]+(v[2]<<8))+" times. The system may be under attack."}if(y==30){return"No bootable media"}if(y==32){return"Operating system lockup or power interrupt"}if(y==35){return"System boot failure"}if(y==37){return"System firmware started (at least one CPU is properly executing)."}return"Unknown Sensor Type #"+y}return s}var md5_k=[];for(var i=0;i<64;){md5_k[i]=0|(Math.abs(Math.sin(++i))*4294967296)}function hex_md5(p){var g,k,l,o,r=[],q=unescape(encodeURI(p)),f=q.length,m=[g=1732584193,k=-271733879,~g,~k],n=0;for(;n<=f;){r[n>>2]|=(q.charCodeAt(n)||128)<<8*(n++%4)}r[p=(f+8>>6)*16+14]=f*8;n=0;for(;n<p;n+=16){f=m;o=0;for(;o<64;){f=[l=f[3],((g=f[1]|0)+((l=((f[0]+[g&(k=f[2])|~g&l,l&g|~l&k,g^k^l,k^(g|~l)][f=o>>4])+(md5_k[o]+(r[[o,5*o+1,3*o+5,7*o][f]%16+n]|0))))<<(f=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*f+o++%4])|l>>>32-f)),g,k]}for(o=4;o;){m[--o]=m[o]+f[o]}}p="";for(;o<32;){p+=((m[o>>3]>>((1^o++&7)*4))&15).toString(16)}return p}function rstr_md5(a){return hex2rstr(hex_md5(a))}function execArgumentsToXml(c){if(c===undefined||c===null){return null}var d="";for(var b in c){var a=c[b];if(!a){continue}if(a.__parameterType==="reference"){d+=referenceToXml(b,a)}else{d+=instanceToXml(b,a)}}return d}function instanceToXml(d,c){if(c===undefined||c===null){return null}var b=!!c.__namespace;var j=b?"<q:":"<";var a=b?"</q:":"</";var f=b?(' xmlns:q="'+c.__namespace+'"'):"";var h="<r:"+d+f+">";for(var g in c){if(!c.hasOwnProperty(g)||g.indexOf("__")===0){continue}if(typeof c[g]==="function"||Array.isArray(c[g])){continue}if(typeof c[g]==="object"){console.error("only convert one level down...")}else{h+=j+g+">"+c[g].toString()+a+g+">"}}h+="</r:"+d+">";return h}function referenceToXml(b,a){if(a===undefined||a===null){return null}var c="<r:"+b+"><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>"+a.__resourceUri+"</w:ResourceURI><w:SelectorSet>";for(var d in a){if(!a.hasOwnProperty(d)||d.indexOf("__")===0){continue}if(typeof a[d]==="function"||typeof a[d]==="object"||Array.isArray(a[d])){continue}c+='<w:Selector Name="'+d+'">'+a[d].toString()+"</w:Selector>"}c+="</w:SelectorSet></a:ReferenceParameters></r:"+b+">";return c}function GetSidString(c){var b="S-"+c.charCodeAt(0)+"-"+c.charCodeAt(7);for(var a=2;a<(c.length/4);a++){b+="-"+ReadIntX(c,a*4)}return b}function GetSidByteArray(d){if(!d||d==null){return null}var c=d.split("-");if(c.length<4||(c[0]!="s"&&c[0]!="S")){return null}for(var a=1;a<c.length;a++){var f=parseInt(c[a]);if(f!=c[a]){return null}c[a]=f}var b=String.fromCharCode(c[1])+String.fromCharCode(c.length-3)+ShortToStr(Math.floor(c[2]/Math.pow(2,32)))+IntToStr((c[2])&65535);for(var a=3;a<c.length;a++){b+=IntToStrX(c[a])}return b}var WsmanStackCreateService=function(h,l,n,k,m,g){var j={};j.NextMessageId=1;j.Address="/wsman";j.comm=CreateWsmanComm(h,l,n,k,m,g);j.PerformAjax=function(q,o,s,r,p){if(p==undefined){p=""}j.comm.PerformAjax('<?xml version="1.0" encoding="utf-8"?><Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns="http://www.w3.org/2003/05/soap-envelope" '+p+"><Header><a:Action>"+q,function(t,u,v){if(u!=200){o(j,null,{Header:{HttpError:u}},u,v);return}var w=j.ParseWsman(t);if(!w||w==null){o(j,null,{Header:{HttpError:u}},601,v)}else{o(j,w.Header.ResourceURI,w,200,v)}},s,r)};j.CancelAllQueries=function(o){j.comm.CancelAllQueries(o)};j.GetNameFromUrl=function(o){var p=o.lastIndexOf("/");return(p==-1)?o:o.substring(p+1)};j.ExecSubscribe=function(w,q,A,o,z,v,y,t,B,u){var r="",s="";if(B!=undefined&&u!=undefined){r="<t:IssuedTokens><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>"+B+'</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">'+u+"</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>";s='<Auth Profile="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/secprofile/http/digest"/>'}if(t!=undefined&&t!=null){t="<a:ReferenceParameters>"+t+"</a:ReferenceParameters>"}else{t=""}var p="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+w+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+d(y)+r+'</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.dmtf.org/wbem/wsman/1/wsman/'+q+'"><e:NotifyTo><a:Address>'+A+"</a:Address></e:NotifyTo>"+s+"</e:Delivery><e:Expires>PT0.000000S</e:Expires></e:Subscribe>";j.PerformAjax(p+"</Body></Envelope>",o,z,v,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')};j.ExecUnSubscribe=function(r,o,t,q,s){var p="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+r+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+d(s)+"</Header><Body><e:Unsubscribe/>";j.PerformAjax(p+"</Body></Envelope>",o,t,q,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')};j.ExecPut=function(s,r,o,u,q,t){var p="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>"+d(t)+"</Header><Body>"+c(s,r);j.PerformAjax(p+"</Body></Envelope>",o,u,q)};j.ExecCreate=function(u,t,o,w,s,v){var r=j.GetNameFromUrl(u);var p="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+u+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+d(v)+"</Header><Body><g:"+r+' xmlns:g="'+u+'">';for(var q in t){p+="<g:"+q+">"+t[q]+"</g:"+q+">"}j.PerformAjax(p+"</g:"+r+"></Body></Envelope>",o,w,s)};j.ExecCreateXml=function(s,o,p,u,r){var q=j.GetNameFromUrl(s),t="";j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout></Header><Body><r:"+q+' xmlns:r="'+s+'">'+o+"</r:"+q+"></Body></Envelope>",p,u,r)};j.ExecDelete=function(s,r,o,t,q){var p="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+d(r)+"</Header><Body /></Envelope>";j.PerformAjax(p,o,t,q)};j.ExecGet=function(q,o,r,p){j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+q+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>",o,r,p)};j.ExecMethod=function(u,s,o,q,w,t,v){var p="";for(var r in o){if(o[r]!=null){if(Array.isArray(o[r])){for(var y in o[r]){p+="<r:"+r+">"+o[r][y]+"</r:"+r+">"}}else{p+="<r:"+r+">"+o[r]+"</r:"+r+">"}}}j.ExecMethodXml(u,s,p,q,w,t,v)};j.ExecMethodXml=function(s,q,o,p,u,r,t){j.PerformAjax(s+"/"+q+"</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+d(t)+"</Header><Body><r:"+q+'_INPUT xmlns:r="'+s+'">'+o+"</r:"+q+"_INPUT></Body></Envelope>",p,u,r)};j.ExecEnum=function(q,o,r,p){j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+q+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration" /></Body></Envelope>',o,r,p)};j.ExecPull=function(r,p,o,s,q){j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+r+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><EnumerationContext>'+p+"</EnumerationContext><MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters></Pull></Body></Envelope>",o,s,q)};j.ParseWsman=function(y){try{if(!y.childNodes){y=f(y)}var v={Header:{}},s=y.getElementsByTagName("Header")[0],w;if(!s){s=y.getElementsByTagName("a:Header")[0]}if(!s){return null}for(var u=0;u<s.childNodes.length;u++){var p=s.childNodes[u];v.Header[p.localName]=p.textContent}var o=y.getElementsByTagName("Body")[0];if(!o){o=y.getElementsByTagName("a:Body")[0]}if(!o){return null}if(o.childNodes.length>0){w=o.childNodes[0].localName;if(w.indexOf("_OUTPUT")==w.length-7){w=w.substring(0,w.length-7)}v.Header.Method=w;v.Body=b(o.childNodes[0])}return v}catch(q){console.log("Unable to parse XML: "+y);return null}};function b(u){var q,v={};for(var s=0;s<u.childNodes.length;s++){var o=u.childNodes[s];if(o.childElementCount==0){q=o.textContent}else{q=b(o)}if(q=="true"){q=true}if(q=="false"){q=false}var p=q;if(o.attributes.length>0){p={Value:q};for(var t=0;t<o.attributes.length;t++){p["@"+o.attributes[t].name]=o.attributes[t].value}}if(v[o.localName] instanceof Array){v[o.localName].push(p)}else{if(v[o.localName]==undefined){v[o.localName]=p}else{v[o.localName]=[v[o.localName],p]}}}return v}function c(t,r){if(!t||r===undefined||r===null){return""}var p=j.GetNameFromUrl(t);var s="<r:"+p+' xmlns:r="'+t+'">';for(var q in r){if(!r.hasOwnProperty(q)||q.indexOf("__")===0||q.indexOf("@")===0){continue}if(r[q]===undefined||r[q]===null||typeof r[q]==="function"){continue}if(typeof r[q]==="object"&&r[q]["ReferenceParameters"]){s+="<r:"+q+"><a:Address>"+r[q].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+r[q]["ReferenceParameters"]["ResourceURI"]+"</w:ResourceURI><w:SelectorSet>";var u=r[q]["ReferenceParameters"]["SelectorSet"]["Selector"];if(Array.isArray(u)){for(var o=0;o<u.length;o++){s+="<w:Selector"+a(u[o])+">"+u[o]["Value"]+"</w:Selector>"}}else{s+="<w:Selector"+a(u)+">"+u.Value+"</w:Selector>"}s+="</w:SelectorSet></a:ReferenceParameters></r:"+q+">"}else{if(Array.isArray(r[q])){for(var o=0;o<r[q].length;o++){s+="<r:"+q+">"+r[q][o].toString()+"</r:"+q+">"}}else{s+="<r:"+q+">"+r[q].toString()+"</r:"+q+">"}}}s+="</r:"+p+">";return s}function a(o){if(!o){return""}var q=" ";for(var p in o){if(!o.hasOwnProperty(p)||p.indexOf("@")!==0){continue}q+=p.substring(1)+'="'+o[p]+'" '}return q}function d(s){if(!s){return""}if(typeof s=="string"){return s}if(s.InstanceID){return'<w:SelectorSet><w:Selector Name="InstanceID">'+s.InstanceID+"</w:Selector></w:SelectorSet>"}var q="<w:SelectorSet>";for(var p in s){if(!s.hasOwnProperty(p)){continue}q+='<w:Selector Name="'+p+'">';if(s[p]["ReferenceParameters"]){q+="<a:EndpointReference>";q+="<a:Address>"+s[p]["Address"]+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+s[p]["ReferenceParameters"]["ResourceURI"]+"</w:ResourceURI><w:SelectorSet>";var r=s[p]["ReferenceParameters"]["SelectorSet"]["Selector"];if(Array.isArray(r)){for(var o=0;o<r.length;o++){q+="<w:Selector"+a(r[o])+">"+r[o]["Value"]+"</w:Selector>"}}else{q+="<w:Selector"+a(r)+">"+r.Value+"</w:Selector>"}q+="</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>"}else{q+=s[p]}q+="</w:Selector>"}q+="</w:SelectorSet>";return q}function f(o){if(window.DOMParser){return new DOMParser().parseFromString(o,"text/xml")}else{var p=new ActiveXObject("Microsoft.XMLDOM");p.async=false;p.loadXML(o);return p}}return j};var CreateAmtRemoteDesktop=function(k,m){var l={};l.canvasid=k;l.CanvasId=Q(k);l.scrolldiv=m;l.canvas=Q(k).getContext("2d");l.protocol=2;l.state=0;l.acc="";l.ScreenWidth=960;l.ScreenHeight=700;l.width=0;l.height=0;l.rwidth=0;l.rheight=0;l.bpp=2;l.useZRLE=true;l.showmouse=true;l.buttonmask=0;l.spare=null;l.sparew=0;l.spareh=0;l.sparew2=0;l.spareh2=0;l.sparecache={};l.ZRLEfirst=1;l.onScreenSizeChange=null;l.frameRateDelay=0;l.Debug=function(n){console.log(n)};l.xxStateChange=function(n){if(n==0){l.canvas.fillStyle="#000000";l.canvas.fillRect(0,0,l.width,l.height);l.canvas.canvas.width=l.rwidth=l.width=640;l.canvas.canvas.height=l.rheight=l.height=400;QS(l.canvasid).cursor="auto"}else{if(!l.showmouse){QS(l.canvasid).cursor="none"}}};l.ProcessData=function(q){if(!q){return}l.acc+=q;while(l.acc.length>0){var o=0;if(l.state==0&&l.acc.length>=12){o=12;l.state=1;l.send("RFB 003.008\n")}else{if(l.state==1&&l.acc.length>=1){o=l.acc.charCodeAt(0)+1;l.send(String.fromCharCode(1));l.state=2}else{if(l.state==2&&l.acc.length>=4){o=4;if(ReadInt(l.acc,0)!=0){return l.Stop()}l.send(String.fromCharCode(1));l.state=3}else{if(l.state==3&&l.acc.length>=24){var A=ReadInt(l.acc,20);if(l.acc.length<24+A){return}o=24+A;l.canvas.canvas.width=l.rwidth=l.width=l.ScreenWidth=ReadShort(l.acc,0);l.canvas.canvas.height=l.rheight=l.height=l.ScreenHeight=ReadShort(l.acc,2);var D="";if(l.useZRLE){D+=IntToStr(16)}D+=IntToStr(0);l.send(String.fromCharCode(2,0)+ShortToStr((D.length/4)+1)+D+IntToStr(-223));if(l.bpp==1){l.send(String.fromCharCode(0,0,0,0,8,8,0,1)+ShortToStr(7)+ShortToStr(7)+ShortToStr(3)+String.fromCharCode(5,2,0,0,0,0))}l.state=4;l.parent.xxStateChange(3);h();if(l.onScreenSizeChange!=null){l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight)}}else{if(l.state==4){var n=l.acc.charCodeAt(0);if(n==2){o=1}else{if(n==0){if(l.acc.length<4){return}l.state=100+ReadShort(l.acc,2);o=4}}}else{if(l.state>100&&l.acc.length>=12){var F=ReadShort(l.acc,0),H=ReadShort(l.acc,2),E=ReadShort(l.acc,4),w=ReadShort(l.acc,6),C=E*w,v=ReadInt(l.acc,8);if(v<17){if(E<1||E>64||w<1||w>64){console.log("Invalid tile size ("+E+","+w+"), disconnecting.");return l.Stop()}if(l.sparew!=E||l.spareh!=w){l.sparew=l.sparew2=E;l.spareh=l.spareh2=w;var G=l.sparew2+"x"+l.spareh2;l.spare=l.sparecache[G];if(!l.spare){l.sparecache[G]=l.spare=l.canvas.createImageData(l.sparew2,l.spareh2)}}}if(v==4294967073){l.canvas.canvas.width=l.rwidth=l.width=E;l.canvas.canvas.height=l.rheight=l.height=w;l.send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(l.width)+ShortToStr(l.height));o=12;if(l.onScreenSizeChange!=null){l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight)}}else{if(v==0){var B=12,p=12+(C*l.bpp);if(l.acc.length<p){return}o=p;for(var z=0;z<C;z++){j(l.acc.charCodeAt(B++)+((l.bpp==2)?(l.acc.charCodeAt(B++)<<8):0),z)}g(l.spare,F,H)}else{if(v==16){if(l.acc.length<16){return}var r=ReadInt(l.acc,12);if(l.acc.length<(16+r)){return}var B=16,t=5,u=0;if(r>5&&l.acc.charCodeAt(B)==0&&ReadShortX(l.acc,B+1)==(r-t)){a(l.acc,B+5,F,H,E,w,C,r)}o=16+r}else{l.Debug("Unknown Encoding: "+v);return l.Stop()}}}if(--l.state==100){l.state=4;if(l.frameRateDelay==0){h()}else{setTimeout(h,l.frameRateDelay)}}}}}}}}if(o==0){return}l.acc=l.acc.substring(o)}};function a(p,z,H,I,G,r,D,q){var E=p.charCodeAt(z++),u,F,C,w={},A=0,B=0,t;if(E==0){for(t=0;t<D;t++){j(p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0),t)}g(l.spare,H,I)}else{if(E==1){F=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0);l.canvas.fillStyle="rgb("+((l.bpp==1)?((F&224)+","+((F&28)<<3)+","+b((F&3)<<6)):(((F>>8)&248)+","+((F>>3)&252)+","+((F&31)<<3)))+")";l.canvas.fillRect(H,I,G,r)}else{if(E>1&&E<17){var o=4,n=15;for(t=0;t<E;t++){w[t]=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0)}if(E==2){o=1;n=1}else{if(E<=4){o=2;n=3}}while(A<D&&z<p.length){F=p.charCodeAt(z++);for(t=(8-o);t>=0;t-=o){j(w[(F>>t)&n],A++)}}g(l.spare,H,I)}else{if(E==128){while(A<D&&z<p.length){F=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0);B=1;do{B+=(C=p.charCodeAt(z++))}while(C==255);while(--B>=0){j(F,A++)}}g(l.spare,H,I)}else{if(E>129){for(t=0;t<(E-128);t++){w[t]=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0)}while(A<D&&z<p.length){B=1;u=p.charCodeAt(z++);F=w[u%128];if(u>127){do{B+=(C=p.charCodeAt(z++))}while(C==255)}while(--B>=0){j(F,A++)}}g(l.spare,H,I)}}}}}}function g(n,o,p){l.canvas.putImageData(n,o,p)}function j(q,n){var o=n*4;if(l.bpp==1){l.spare.data[o++]=q&224;l.spare.data[o++]=(q&28)<<3;l.spare.data[o++]=b((q&3)<<6)}else{l.spare.data[o++]=(q>>8)&248;l.spare.data[o++]=(q>>3)&252;l.spare.data[o++]=(q&31)<<3}l.spare.data[o]=255}function b(n){return(n>127)?(n+32):n}function h(){l.send(String.fromCharCode(3,1,0,0,0,0)+ShortToStr(l.rwidth)+ShortToStr(l.rheight))}l.Start=function(){l.state=0;l.acc="";l.ZRLEfirst=1;for(var n in l.sparecache){delete l.sparecache[n]}};l.Stop=function(){l.UnGrabMouseInput();l.UnGrabKeyInput();l.parent.Stop()};l.send=function(n){l.parent.send(n)};function c(n,o){if(!o){o=window.event}var p=o.keyCode,q=p;if(o.shiftKey==false&&p>=65&&p<=90){q=p+32}if(p>=112&&p<=124){q=p+65358}if(p==8){q=65288}if(p==9){q=65289}if(p==13){q=65293}if(p==16){q=65505}if(p==17){q=65507}if(p==18){q=65513}if(p==27){q=65307}if(p==33){q=65365}if(p==34){q=65366}if(p==35){q=65367}if(p==36){q=65360}if(p==37){q=65361}if(p==38){q=65362}if(p==39){q=65363}if(p==40){q=65364}if(p==45){q=65379}if(p==46){q=65535}if(p>=96&&p<=105){q=p-48}if(p==106){q=42}if(p==107){q=43}if(p==109){q=45}if(p==110){q=46}if(p==111){q=47}if(p==186){q=59}if(p==187){q=61}if(p==188){q=44}if(p==189){q=45}if(p==190){q=46}if(p==191){q=47}if(p==192){q=96}if(p==219){q=91}if(p==220){q=92}if(p==221){q=93}if(p==222){q=39}l.sendkey(q,n);return l.haltEvent(o)}l.sendkey=function(p,n){if(typeof p=="object"){for(var o in p){l.sendkey(p[o][0],p[o][1])}}else{l.send(String.fromCharCode(4,n,0,0)+IntToStr(p))}};l.SendCtrlAltDelMsg=function(){l.sendcad()};l.sendcad=function(){l.sendkey([[65507,1],[65513,1],[65535,1],[65535,0],[65513,0],[65507,0]])};var f=false;var d=false;l.GrabMouseInput=function(){if(f==true){return}var n=l.canvas.canvas;n.onmouseup=l.mouseup;n.onmousedown=l.mousedown;n.onmousemove=l.mousemove;f=true};l.UnGrabMouseInput=function(){if(f==false){return}var n=l.canvas.canvas;n.onmousemove=null;n.onmouseup=null;n.onmousedown=null;f=false};l.GrabKeyInput=function(){if(d==true){return}document.onkeyup=l.handleKeyUp;document.onkeydown=l.handleKeyDown;document.onkeypress=l.handleKeys;d=true};l.UnGrabKeyInput=function(){if(d==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;d=false};l.handleKeys=function(n){return l.haltEvent(n)};l.handleKeyUp=function(n){return c(0,n)};l.handleKeyDown=function(n){return c(1,n)};l.haltEvent=function(n){if(n.preventDefault){n.preventDefault()}if(n.stopPropagation){n.stopPropagation()}return false};l.mousedown=function(n){l.buttonmask|=(1<<n.button);return l.mousemove(n)};l.mouseup=function(n){l.buttonmask&=(65535-(1<<n.button));return l.mousemove(n)};l.mousemove=function(n){if(l.state!=4){return true}var o=l.getPositionOfControl(Q(l.canvasid));l.mx=(n.pageX-o[0])*(l.canvas.canvas.height/Q(l.canvasid).offsetHeight);l.my=((n.pageY-o[1]+(m?m.scrollTop:0))*(l.canvas.canvas.width/Q(l.canvasid).offsetWidth));l.send(String.fromCharCode(5,l.buttonmask)+ShortToStr(l.mx)+ShortToStr(l.my));return l.haltEvent(n)};l.getPositionOfControl=function(n){var o=Array(2);o[0]=o[1]=0;while(n){o[0]+=n.offsetLeft;o[1]+=n.offsetTop;n=n.offsetParent}return o};return l};var CreateAmtRemoteTerminal=function(C){var D={};D.DivId=C;D.DivElement=document.getElementById(C);D.protocol=1;D.fxEmulation=0;D.width=80;D.height=25;D.lineFeed="\r\n";var r=21;var s=13;var m=["000000","BB0000","00BB00","BBBB00","0000BB","BB00BB","00BBBB","BBBBBB","555555","FF5555","55FF55","FFFF55","5555FF","FF55FF","55FFFF","FFFFFF"];var p=0;var o=7;var n=0;var t=true;var w=0;var y=0;var v=0;var d=[];var f=0;var l=[];var z=[];var B=1;var A=2;D.Start=function(){};D.Init=function(F,E){D.width=F?F:80;D.height=E?E:25;for(var H=0;H<D.height;H++){z[H]=[];l[H]=[];for(var G=0;G<D.width;G++){z[H][G]=" ";l[H][G]=(7<<6)}}D.TermInit();D.TermDraw()};D.xxStateChange=function(E){};D.ProcessData=function(E){if(D.capture!=null){D.capture+=E}k(E);D.TermDraw()};function k(F){for(var E=0;E<F.length;E++){j(String.fromCharCode(F.charCodeAt(E)),F.charCodeAt(E))}}function j(E,F){switch(v){case 0:switch(F){case 27:v=1;break;default:h(E);break}break;case 1:switch(E){case"[":f=0;d=[];v=2;break;case"(":v=4;break;case")":v=5;break;default:v=0;break}break;case 2:if(E>="0"&&E<="9"){if(!d[f]){d[f]=(E-"0")}else{d[f]=((d[f]*10)+(E-"0"))}break}else{if(E==";"){f++;break}else{if(!d[0]){d[0]=0}g(E,d,f+1);v=0}}break;case 4:v=0;break;case 5:v=0;break}}function g(H,E,F){var I;switch(H){case"c":D.TermResetScreen();break;case"A":if(F==1){y-=E[0];if(y<0){y=0}}break;case"B":if(F==1){y+=E[0];if(y>D.height){y=D.height}}break;case"C":if(F==1){w+=E[0];if(w>D.width){w=D.width}}break;case"D":if(F==1){w-=E[0];if(w<0){w=0}}break;case"d":if(F==1){y=E[0]-1;if(y>D.height){y=D.height}if(y<0){y=0}}break;case"G":if(F==1){w=E[0]-1;if(w<0){w=0}if(w>79){w=79}}break;case"J":if(F==1&&E[0]==2){D.TermClear((n<<12)+(o<<6));w=0;y=0}else{if(F==0||F==1&&E[0]==0){b();for(I=y+1;I<D.height;I++){c(I)}}else{if(F==1&&E[0]==1){b();for(I=0;I<y-1;I++){c(I)}}}}break;case"H":if(F==2){if(E[0]<1){E[0]=1}if(E[1]<1){E[1]=1}if(E[0]>D.height){E[0]=D.height}if(E[1]>D.width){E[1]=D.width}y=E[0]-1;w=E[1]-1}else{y=0;w=0}break;case"m":for(I=0;I<F;I++){if(!E[I]||E[I]==0){n=0;o=7;p=0}else{if(E[I]==1){if(o<8){o+=8}}else{if(E[I]==2||E[I]==22){if(o>=8){o-=8}}else{if(E[I]==7){p=2}else{if(E[I]==27){p=0}else{if(E[I]>=30&&E[I]<=37){var G=(o>=8);o=(E[I]-30);if(G&&o<=8){o+=8}}else{if(E[I]>=40&&E[I]<=47){n=(E[I]-40)}else{if(E[I]>=90&&E[I]<=99){o=(E[I]-82)}else{if(E[I]>=100&&E[I]<=109){n=(E[I]-92)}}}}}}}}}}break;case"K":if(F==0||(F==1&&(!E[0]||E[0]==0))){b()}else{if(F==1){if(E[0]==1){a()}else{if(E[0]==2){c(y)}}}}break;case"h":t=true;break;case"l":t=false;break;default:break}}D.ProcessVt100String=function(F){for(var E=0;E<F.length;E++){h(String.fromCharCode(F.charCodeAt(E)))}};function h(E){if(E=="\0"||E.charCodeAt()==7){return}var F=E.charCodeAt();switch(F){case 16:E=" ";break;case 24:E="?";break;case 25:E="?";break}if(w>D.width){w=D.width}if(y>(D.height-1)){y=(D.height-1)}switch(E){case"\b":if(w>0){w=w-1;q(" ")}break;case"\t":var G=8-(w%8);for(var H=0;H<G;H++){h(" ")}break;case"\n":y++;if(y>(D.height-1)){u(1);y=(D.height-1)}break;case"\r":w=0;break;default:if(w>=D.width){w=0;if(t){y++}if(y>=(D.height-1)){u(1);y=(D.height-1)}}q(E);w++;break}}function q(E){z[y][w]=E;l[y][w]=(o<<6)+(n<<12)+p}D.TermClear=function(E){for(var G=0;G<D.height;G++){for(var F=0;F<D.width;F++){z[G][F]=" ";l[G][F]=E}}};D.TermResetScreen=function(){p=0;o=7;n=0;t=true;w=0;y=0;D.TermClear(7<<6)};function b(){var E=(n<<12);for(var F=w;F<D.width;F++){z[y][F]=" ";l[y][F]=E}}function a(){var E=(n<<12);for(var F=0;F<w;F++){z[y][F]=" ";l[y][F]=E}}function c(E){var F=(n<<12);for(var G=0;G<D.width;G++){z[E][G]=" ";l[E][G]=F}}D.TermSendKeys=function(E){D.parent.send(E)};D.TermSendKey=function(E){D.parent.send(String.fromCharCode(E))};function u(E){var F,G;for(G=0;G<D.height-E;G++){z[G]=z[G+E];l[G]=l[G+E]}for(G=D.height-E;G<D.height;G++){z[G]=[];l[G]=[];for(F=0;F<D.width;F++){z[G][F]=" ";l[G][F]=(7<<6)}}}D.TermHandleKeys=function(E){if(!E.ctrlKey){if(E.which==127){D.TermSendKey(8)}else{if(E.which==13){D.TermSendKeys(D.lineFeed)}else{if(E.which!=0){D.TermSendKey(E.which)}}}return false}if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}};D.TermHandleKeyUp=function(E){if((E.which!=8)&&(E.which!=32)&&(E.which!=9)){return true}if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return false};D.TermHandleKeyDown=function(E){if((E.which>=65)&&(E.which<=90)&&(E.ctrlKey==true)){D.TermSendKey(E.which-64);if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return}if(E.which==27){D.TermSendKeys(String.fromCharCode(27));return true}if(E.which==37){D.TermSendKeys(String.fromCharCode(27,91,68));return true}if(E.which==38){D.TermSendKeys(String.fromCharCode(27,91,65));return true}if(E.which==39){D.TermSendKeys(String.fromCharCode(27,91,67));return true}if(E.which==40){D.TermSendKeys(String.fromCharCode(27,91,66));return true}if(E.which==9){D.TermSendKeys("\t");if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return true}if(E.which!=8&&E.which!=32&&E.which!=9){return true}D.TermSendKey(E.which);if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return false};D.TermDraw=function(){var F,E="",G="",H,I=1,K,L;for(var M=0;M<D.height;++M){for(var J=0;J<D.width;++J){H=l[M][J];if(w==J&&y==M){H|=A}if(H!=I){E+=G;G="";K=6;L=12;if(H&A){K=12;L=6}E+='<span style="color:#'+m[(H>>K)&63]+";background-color:#"+m[(H>>L)&63];if(H&B){E+=";text-decoration:underline"}E+=';">';G="</span>"+G;I=H}F=z[M][J];switch(F){case"&":E+="&";break;case"<":E+="<";break;case">":E+=">";break;case" ":E+=" ";break;default:E+=F;break}}if(M!=(D.height-1)){E+="<br>"}}D.DivElement.innerHTML="<font size='4'><b>"+E+G+"</b></font>"};D.TermInit=function(){D.TermResetScreen()};D.Init();return D};var ZLIB=(ZLIB||{});if(typeof ZLIB.common_initialized==="undefined"){ZLIB.Z_NO_FLUSH=0;ZLIB.Z_PARTIAL_FLUSH=1;ZLIB.Z_SYNC_FLUSH=2;ZLIB.Z_FULL_FLUSH=3;ZLIB.Z_FINISH=4;ZLIB.Z_BLOCK=5;ZLIB.Z_TREES=6;ZLIB.Z_OK=0;ZLIB.Z_STREAM_END=1;ZLIB.Z_NEED_DICT=2;ZLIB.Z_ERRNO=(-1);ZLIB.Z_STREAM_ERROR=(-2);ZLIB.Z_DATA_ERROR=(-3);ZLIB.Z_MEM_ERROR=(-4);ZLIB.Z_BUF_ERROR=(-5);ZLIB.Z_VERSION_ERROR=(-6);ZLIB.Z_DEFLATED=8;ZLIB.z_stream=function(){this.next_in=0;this.avail_in=0;this.total_in=0;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg=null;this.state=null;this.data_type=0;this.adler=0;this.input_data="";this.output_data="";this.error=0;this.checksum_function=null};ZLIB.gz_header=function(){this.text=0;this.time=0;this.xflags=0;this.os=255;this.extra=null;this.extra_len=0;this.extra_max=0;this.name=null;this.name_max=0;this.comment=null;this.comm_max=0;this.hcrc=0;this.done=0};ZLIB.common_initialized=true}if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-inflate.js")}(function(){var o=15;var H=0;var E=1;var an=2;var ag=3;var B=4;var C=5;var ad=6;var j=7;var G=8;var q=9;var p=10;var ao=11;var ap=12;var ak=13;var l=14;var k=15;var am=16;var X=17;var g=18;var T=19;var S=20;var U=21;var r=22;var s=23;var ab=24;var Z=25;var d=26;var W=27;var v=28;var a=29;var ac=30;var al=31;var A=852;var z=592;var y=(A+z);var h=0;var Y=1;var u=2;var O=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0];var P=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,203,69];var M=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0];var N=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];ZLIB.inflate_copyright=" inflate 1.2.6 Copyright 1995-2012 Mark Adler ";function L(aS,aW){var aN=15;var aV=aS.next;var au=(aW==u?aS.distbits:aS.lenbits);var aY=aS.work;var aI=aS.lens;var aJ=(aW==u?aS.nlen:0);var aT=aS.codes;var av;if(aW==Y){av=aS.nlen}else{if(aW==u){av=aS.ndist}else{av=19}}var aH;var aU;var aO,aM;var aR;var ax;var ay;var aG;var aX;var aE;var aF;var aC;var aK;var aL;var aD;var aP;var ar;var at;var aA;var aB;var az;var aw=new Array(aN+1);var aQ=new Array(aN+1);for(aH=0;aH<=aN;aH++){aw[aH]=0}for(aU=0;aU<av;aU++){aw[aI[aJ+aU]]++}aR=au;for(aM=aN;aM>=1;aM--){if(aw[aM]!=0){break}}if(aR>aM){aR=aM}if(aM==0){aD={op:64,bits:1,val:0};aT[aV++]=aD;aT[aV++]=aD;if(aW==u){aS.distbits=1}else{aS.lenbits=1}aS.next=aV;return 0}for(aO=1;aO<aM;aO++){if(aw[aO]!=0){break}}if(aR<aO){aR=aO}aG=1;for(aH=1;aH<=aN;aH++){aG<<=1;aG-=aw[aH];if(aG<0){return -1}}if(aG>0&&(aW==h||aM!=1)){aS.next=aV;return -1}aQ[1]=0;for(aH=1;aH<aN;aH++){aQ[aH+1]=aQ[aH]+aw[aH]}for(aU=0;aU<av;aU++){if(aI[aJ+aU]!=0){aY[aQ[aI[aJ+aU]]++]=aU}}switch(aW){case h:ar=aA=aY;at=0;aB=0;az=19;break;case Y:ar=O;at=-257;aA=P;aB=-257;az=256;break;default:ar=M;aA=N;at=0;aB=0;az=-1}aE=0;aU=0;aH=aO;aP=aV;ax=aR;ay=0;aK=-1;aX=1<<aR;aL=aX-1;if((aW==Y&&aX>=A)||(aW==u&&aX>=z)){aS.next=aV;return 1}for(;;){aD={op:0,bits:aH-ay,val:0};if(aY[aU]<az){aD.val=aY[aU]}else{if(aY[aU]>az){aD.op=aA[aB+aY[aU]];aD.val=ar[at+aY[aU]]}else{aD.op=32+64}}aF=1<<(aH-ay);aC=1<<ax;aO=aC;do{aC-=aF;aT[aP+(aE>>>ay)+aC]=aD}while(aC!=0);aF=1<<(aH-1);while(aE&aF){aF>>>=1}if(aF!=0){aE&=aF-1;aE+=aF}else{aE=0}aU++;if(--(aw[aH])==0){if(aH==aM){break}aH=aI[aJ+aY[aU]]}if(aH>aR&&(aE&aL)!=aK){if(ay==0){ay=aR}aP+=aO;ax=aH-ay;aG=(1<<ax);while(ax+ay<aM){aG-=aw[ax+ay];if(aG<=0){break}ax++;aG<<=1}aX+=1<<ax;if((aW==Y&&aX>=A)||(aW==u&&aX>=z)){aS.next=aV;return 1}aK=aE&aL;aT[aV+aK]={op:ax,bits:aR,val:aP-aV}}}if(aE!=0){aT[aP+aE]={op:64,bits:aH-ay,val:0}}aS.next=aV+aX;if(aW==u){aS.distbits=aR}else{aS.lenbits=aR}return 0}function I(aO,aM){var aN;var aD;var aJ;var aE;var aL;var ar;var ay;var aS;var aP;var aR;var aQ;var aC;var at;var au;var aF;var av;var aI;var ax;var aB;var aK;var aG;var aw;var aA=-1;var az=-1;aN=aO.state;aD=aO.input_data;aJ=aO.next_in;aE=aJ+aO.avail_in-5;aL=aO.next_out;ar=aL-(aM-aO.avail_out);ay=aL+(aO.avail_out-257);aS=aN.wsize;aP=aN.whave;aR=aN.wnext;aQ=aN.window;aC=aN.hold;at=aN.bits;au=aN.codes;aF=aN.lencode;av=aN.distcode;aI=(1<<aN.lenbits)-1;ax=(1<<aN.distbits)-1;loop:do{if(at<15){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8;aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}aB=au[aF+(aC&aI)];dolen:while(true){aK=aB.bits;aC>>>=aK;at-=aK;aK=aB.op;if(aK==0){aO.output_data+=String.fromCharCode(aB.val);aL++}else{if(aK&16){aG=aB.val;aK&=15;if(aK){if(at<aK){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}aG+=aC&((1<<aK)-1);aC>>>=aK;at-=aK}if(at<15){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8;aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}aB=au[av+(aC&ax)];dodist:while(true){aK=aB.bits;aC>>>=aK;at-=aK;aK=aB.op;if(aK&16){aw=aB.val;aK&=15;if(at<aK){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8;if(at<aK){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}}aw+=aC&((1<<aK)-1);aC>>>=aK;at-=aK;aK=aL-ar;if(aw>aK){aK=aw-aK;if(aK>aP){if(aN.sane){aO.msg="invalid distance too far back";aN.mode=a;break loop}}aA=0;az=-1;if(aR==0){aA+=aS-aK;if(aK<aG){aG-=aK;aO.output_data+=aQ.substring(aA,aA+aK);aL+=aK;aK=0;aA=-1;az=aL-aw}}else{aA+=aR-aK;if(aK<aG){aG-=aK;aO.output_data+=aQ.substring(aA,aA+aK);aL+=aK;aA=-1;az=aL-aw}}}else{aA=-1;az=aL-aw}if(aA>=0){aO.output_data+=aQ.substring(aA,aA+aG);aL+=aG;aA+=aG}else{var aH=aG;if(aH>aL-az){aH=aL-az}aO.output_data+=aO.output_data.substring(az,az+aH);aL+=aH;aG-=aH;az+=aH;aL+=aG;while(aG>2){aO.output_data+=aO.output_data.charAt(az++);aO.output_data+=aO.output_data.charAt(az++);aO.output_data+=aO.output_data.charAt(az++);aG-=3}if(aG){aO.output_data+=aO.output_data.charAt(az++);if(aG>1){aO.output_data+=aO.output_data.charAt(az++)}}}}else{if((aK&64)==0){aB=au[av+(aB.val+(aC&((1<<aK)-1)))];continue dodist}else{aO.msg="invalid distance code";aN.mode=a;break loop}}break dodist}}else{if((aK&64)==0){aB=au[aF+(aB.val+(aC&((1<<aK)-1)))];continue dolen}else{if(aK&32){aN.mode=ao;break loop}else{aO.msg="invalid literal/length code";aN.mode=a;break loop}}}}break dolen}}while(aJ<aE&&aL<ay);aG=at>>>3;aJ-=aG;at-=aG<<3;aC&=(1<<at)-1;aO.next_in=aJ;aO.next_out=aL;aO.avail_in=(aJ<aE?5+(aE-aJ):5-(aJ-aE));aO.avail_out=(aL<ay?257+(ay-aL):257-(aL-ay));aN.hold=aC;aN.bits=at}function af(au){var at;var ar=new Array(au);for(at=0;at<au;at++){ar[at]=0}return ar}function F(au,at,ar){return(au&&(at in au))?au[at]:ar}function f(){return 0}function K(){var at;this.mode=0;this.last=0;this.wrap=0;this.havedict=0;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=0;this.distcode=0;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=0;this.lens=af(320);this.work=af(288);this.codes=new Array(y);var ar={op:0,bits:0,val:0};for(at=0;at<y;at++){this.codes[at]=ar}this.sane=0;this.back=0;this.was=0}ZLIB.inflateResetKeep=function(at){var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;at.total_in=at.total_out=ar.total=0;at.msg=null;if(ar.wrap){at.adler=ar.wrap&1}ar.mode=H;ar.last=0;ar.havedict=0;ar.dmax=32768;ar.head=null;ar.hold=0;ar.bits=0;ar.lencode=0;ar.distcode=0;ar.next=0;ar.sane=1;ar.back=-1;return ZLIB.Z_OK};ZLIB.inflateReset=function(at,au){var av;var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;if(typeof au==="undefined"){au=o}if(au<0){av=0;au=-au}else{av=(au>>>4)+1;if(au<48){au&=15}}if(av==1&&(typeof ZLIB.adler32==="function")){at.checksum_function=ZLIB.adler32}else{if(av==2&&(typeof ZLIB.crc32==="function")){at.checksum_function=ZLIB.crc32}else{at.checksum_function=f}}if(au&&(au<8||au>15)){return ZLIB.Z_STREAM_ERROR}if(ar.window&&ar.wbits!=au){ar.window=null}ar.wrap=av;ar.wbits=au;ar.wsize=0;ar.whave=0;ar.wnext=0;return ZLIB.inflateResetKeep(at)};ZLIB.inflateInit=function(at){var ar=new ZLIB.z_stream();ar.state=new K();ZLIB.inflateReset(ar,at);return ar};ZLIB.inflatePrime=function(au,ar,av){var at;if(!au||!au.state){return ZLIB.Z_STREAM_ERROR}at=au.state;if(ar<0){at.hold=0;at.bits=0;return ZLIB.Z_OK}if(ar>16||at.bits+ar>32){return ZLIB.Z_STREAM_ERROR}av&=(1<<ar)-1;at.hold+=av<<at.bits;at.bits+=ar;return ZLIB.Z_OK};var V=null;var t=null;function D(at){var ar;if(!V){V=[{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:192},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:160},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:224},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:144},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:208},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:176},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:240},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:200},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:168},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:232},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:152},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:216},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:184},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:248},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:196},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:164},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:228},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:148},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:212},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:180},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:244},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:204},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:172},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:236},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:156},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:220},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:188},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:252},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:194},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:162},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:226},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:146},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:210},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:178},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:242},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:202},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:170},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:234},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:154},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:218},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:186},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:250},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:198},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:166},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:230},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:150},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:214},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:182},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:246},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:206},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:174},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:238},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:158},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:222},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:190},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:254},{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:193},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:161},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:225},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:145},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:209},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:177},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:241},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:201},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:169},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:233},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:153},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:217},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:185},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:249},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:197},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:165},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:229},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:149},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:213},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:181},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:245},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:205},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:173},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:237},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:157},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:221},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:189},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:253},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:195},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:163},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:227},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:147},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:211},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:179},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:243},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:203},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:171},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:235},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:155},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:219},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:187},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:251},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:199},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:167},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:231},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:151},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:215},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:183},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:247},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:207},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:175},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:239},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:159},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:223},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:191},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:255}]}if(!t){t=[{op:16,bits:5,val:1},{op:23,bits:5,val:257},{op:19,bits:5,val:17},{op:27,bits:5,val:4097},{op:17,bits:5,val:5},{op:25,bits:5,val:1025},{op:21,bits:5,val:65},{op:29,bits:5,val:16385},{op:16,bits:5,val:3},{op:24,bits:5,val:513},{op:20,bits:5,val:33},{op:28,bits:5,val:8193},{op:18,bits:5,val:9},{op:26,bits:5,val:2049},{op:22,bits:5,val:129},{op:64,bits:5,val:0},{op:16,bits:5,val:2},{op:23,bits:5,val:385},{op:19,bits:5,val:25},{op:27,bits:5,val:6145},{op:17,bits:5,val:7},{op:25,bits:5,val:1537},{op:21,bits:5,val:97},{op:29,bits:5,val:24577},{op:16,bits:5,val:4},{op:24,bits:5,val:769},{op:20,bits:5,val:49},{op:28,bits:5,val:12289},{op:18,bits:5,val:13},{op:26,bits:5,val:3073},{op:22,bits:5,val:193},{op:64,bits:5,val:0}]}at.lencode=0;at.distcode=512;for(ar=0;ar<512;ar++){at.codes[ar]=V[ar]}for(ar=0;ar<32;ar++){at.codes[ar+512]=t[ar]}at.lenbits=9;at.distbits=5}function aq(au){var at=au.state;var ar=au.output_data.length;if(at.window===null){at.window=""}if(at.wsize==0){at.wsize=1<<at.wbits}if(ar>=at.wsize){at.window=au.output_data.substring(ar-at.wsize)}else{if(at.whave+ar<at.wsize){at.window+=au.output_data}else{at.window=at.window.substring(at.whave-(at.wsize-ar))+au.output_data}}at.whave=at.window.length;if(at.whave<at.wsize){at.wnext=at.whave}else{at.wnext=0}return 0}function m(at,au){var ar=[au&255,(au>>>8)&255];at.state.check=at.checksum_function(at.state.check,ar,0,2)}function n(at,au){var ar=[au&255,(au>>>8)&255,(au>>>16)&255,(au>>>24)&255];at.state.check=at.checksum_function(at.state.check,ar,0,4)}function aa(at,ar){ar.strm=at;ar.left=at.avail_out;ar.next=at.next_in;ar.have=at.avail_in;ar.hold=at.state.hold;ar.bits=at.state.bits;return ar}function ai(ar){var at=ar.strm;at.next_in=ar.next;at.avail_out=ar.left;at.avail_in=ar.have;at.state.hold=ar.hold;at.state.bits=ar.bits}function R(ar){ar.hold=0;ar.bits=0}function ah(ar){if(ar.have==0){return false}ar.have--;ar.hold+=(ar.strm.input_data.charCodeAt(ar.next++)&255)<<ar.bits;ar.bits+=8;return true}function ae(at,ar){while(at.bits<ar){if(!ah(at)){return false}}return true}function b(at,ar){return at.hold&((1<<ar)-1)}function w(at,ar){at.hold>>>=ar;at.bits-=ar}function c(ar){ar.hold>>>=ar.bits&7;ar.bits-=ar.bits&7}function aj(ar){return((ar>>>24)&255)+((ar>>>8)&65280)+((ar&65280)<<8)+((ar&255)<<24)}var J=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];ZLIB.inflate=function(aE,au){var aD;var aC;var ar,aA;var at;var aw=-1;var av=-1;var ax;var ay;var az;var aB;if(!aE||!aE.state||(!aE.input_data&&aE.avail_in!=0)){return ZLIB.Z_STREAM_ERROR}aD=aE.state;if(aD.mode==ao){aD.mode=ap}aC={};aa(aE,aC);ar=aC.have;aA=aC.left;aB=ZLIB.Z_OK;inf_leave:for(;;){switch(aD.mode){case H:if(aD.wrap==0){aD.mode=ap;break}if(!ae(aC,16)){break inf_leave}if((aD.wrap&2)&&aC.hold==35615){aD.check=aE.checksum_function(0,null,0,0);m(aE,aC.hold);R(aC);aD.mode=E;break}aD.flags=0;if(aD.head!==null){aD.head.done=-1}if(!(aD.wrap&1)||((b(aC,8)<<8)+(aC.hold>>>8))%31){aE.msg="incorrect header check";aD.mode=a;break}if(b(aC,4)!=ZLIB.Z_DEFLATED){aE.msg="unknown compression method";aD.mode=a;break}w(aC,4);az=b(aC,4)+8;if(aD.wbits==0){aD.wbits=az}else{if(az>aD.wbits){aE.msg="invalid window size";aD.mode=a;break}}aD.dmax=1<<az;aE.adler=aD.check=aE.checksum_function(0,null,0,0);aD.mode=aC.hold&512?q:ao;R(aC);break;case E:if(!ae(aC,16)){break inf_leave}aD.flags=aC.hold;if((aD.flags&255)!=ZLIB.Z_DEFLATED){aE.msg="unknown compression method";aD.mode=a;break}if(aD.flags&57344){aE.msg="unknown header flags set";aD.mode=a;break}if(aD.head!==null){aD.head.text=(aC.hold>>>8)&1}if(aD.flags&512){m(aE,aC.hold)}R(aC);aD.mode=an;case an:if(!ae(aC,32)){break inf_leave}if(aD.head!==null){aD.head.time=aC.hold}if(aD.flags&512){n(aE,aC.hold)}R(aC);aD.mode=ag;case ag:if(!ae(aC,16)){break inf_leave}if(aD.head!==null){aD.head.xflags=aC.hold&255;aD.head.os=aC.hold>>>8}if(aD.flags&512){m(aE,aC.hold)}R(aC);aD.mode=B;case B:if(aD.flags&1024){if(!ae(aC,16)){break inf_leave}aD.length=aC.hold;if(aD.head!==null){aD.head.extra_len=aC.hold}if(aD.flags&512){m(aE,aC.hold)}R(aC);aD.head.extra=""}else{if(aD.head!==null){aD.head.extra=null}}aD.mode=C;case C:if(aD.flags&1024){at=aD.length;if(at>aC.have){at=aC.have}if(at){if(aD.head!==null&&aD.head.extra!==null){az=aD.head.extra_len-aD.length;aD.head.extra+=aE.input_data.substring(aC.next,aC.next+(az+at>aD.head.extra_max?aD.head.extra_max-az:at))}if(aD.flags&512){aD.check=aE.checksum_function(aD.check,aE.input_data,aC.next,at)}aC.have-=at;aC.next+=at;aD.length-=at}if(aD.length){break inf_leave}}aD.length=0;aD.mode=ad;case ad:if(aD.flags&2048){if(aC.have==0){break inf_leave}if(aD.head!==null&&aD.head.name===null){aD.head.name=""}at=0;do{az=aE.input_data.charAt(aC.next+at);at++;if(az==="\0"){break}if(aD.head!==null&&aD.length<aD.head.name_max){aD.head.name+=az;aD.length++}}while(at<aC.have);if(aD.flags&512){aD.check=aE.checksum_function(aD.check,aE.input_data,aC.next,at)}aC.have-=at;aC.next+=at;if(az!=="\0"){break inf_leave}}else{if(aD.head!==null){aD.head.name=null}}aD.length=0;aD.mode=j;case j:if(aD.flags&4096){if(aC.have==0){break inf_leave}at=0;if(aD.head!==null&&aD.head.comment===null){aD.head.comment=""}do{az=aE.input_data.charAt(aC.next+at);at++;if(az==="\0"){break}if(aD.head!==null&&aD.length<aD.head.comm_max){aD.head.comment+=az;aD.length++}}while(at<aC.have);if(aD.flags&512){aD.check=aE.checksum_function(aD.check,aE.input_data,aC.next,at)}aC.have-=at;aC.next+=at;if(az!=="\0"){break inf_leave}}else{if(aD.head!==null){aD.head.comment=null}}aD.mode=G;case G:if(aD.flags&512){if(!ae(aC,16)){break inf_leave}if(aC.hold!=(aD.check&65535)){aE.msg="header crc mismatch";aD.mode=a;break}R(aC)}if(aD.head!==null){aD.head.hcrc=(aD.flags>>>9)&1;aD.head.done=1}aE.adler=aD.check=aE.checksum_function(0,null,0,0);aD.mode=ao;break;case q:if(!ae(aC,32)){break inf_leave}aE.adler=aD.check=aj(aC.hold);R(aC);aD.mode=p;case p:if(aD.havedict==0){ai(aC);return ZLIB.Z_NEED_DICT}aE.adler=aD.check=aE.checksum_function(0,null,0,0);aD.mode=ao;case ao:if(au==ZLIB.Z_BLOCK||au==ZLIB.Z_TREES){break inf_leave}case ap:if(aD.last){c(aC);aD.mode=d;break}if(!ae(aC,3)){break inf_leave}aD.last=b(aC,1);w(aC,1);switch(b(aC,2)){case 0:aD.mode=ak;break;case 1:D(aD);aD.mode=T;if(au==ZLIB.Z_TREES){w(aC,2);break inf_leave}break;case 2:aD.mode=am;break;case 3:aE.msg="invalid block type";aD.mode=a}w(aC,2);break;case ak:c(aC);if(!ae(aC,32)){break inf_leave}if((aC.hold&65535)!=(((aC.hold>>>16)&65535)^65535)){aE.msg="invalid stored block lengths";aD.mode=a;break}aD.length=aC.hold&65535;R(aC);aD.mode=l;if(au==ZLIB.Z_TREES){break inf_leave}case l:aD.mode=k;case k:at=aD.length;if(at){if(at>aC.have){at=aC.have}if(at>aC.left){at=aC.left}if(at==0){break inf_leave}aE.output_data+=aE.input_data.substring(aC.next,aC.next+at);aE.next_out+=at;aC.have-=at;aC.next+=at;aC.left-=at;aD.length-=at;break}aD.mode=ao;break;case am:if(!ae(aC,14)){break inf_leave}aD.nlen=b(aC,5)+257;w(aC,5);aD.ndist=b(aC,5)+1;w(aC,5);aD.ncode=b(aC,4)+4;w(aC,4);if(aD.nlen>286||aD.ndist>30){aE.msg="too many length or distance symbols";aD.mode=a;break}aD.have=0;aD.mode=X;case X:while(aD.have<aD.ncode){if(!ae(aC,3)){break inf_leave}var aF=b(aC,3);aD.lens[J[aD.have++]]=aF;w(aC,3)}while(aD.have<19){aD.lens[J[aD.have++]]=0}aD.next=0;aD.lencode=0;aD.lenbits=7;aB=L(aD,h);if(aB){aE.msg="invalid code lengths set";aD.mode=a;break}aD.have=0;aD.mode=g;case g:while(aD.have<aD.nlen+aD.ndist){for(;;){ax=aD.codes[aD.lencode+b(aC,aD.lenbits)];if(ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}if(ax.val<16){w(aC,ax.bits);aD.lens[aD.have++]=ax.val}else{if(ax.val==16){if(!ae(aC,ax.bits+2)){break inf_leave}w(aC,ax.bits);if(aD.have==0){aE.msg="invalid bit length repeat";aD.mode=a;break}az=aD.lens[aD.have-1];at=3+b(aC,2);w(aC,2)}else{if(ax.val==17){if(!ae(aC,ax.bits+3)){break inf_leave}w(aC,ax.bits);az=0;at=3+b(aC,3);w(aC,3)}else{if(!ae(aC,ax.bits+7)){break inf_leave}w(aC,ax.bits);az=0;at=11+b(aC,7);w(aC,7)}}if(aD.have+at>aD.nlen+aD.ndist){aE.msg="invalid bit length repeat";aD.mode=a;break}while(at--){aD.lens[aD.have++]=az}}}if(aD.mode==a){break}if(aD.lens[256]==0){aE.msg="invalid code -- missing end-of-block";aD.mode=a;break}aD.next=0;aD.lencode=aD.next;aD.lenbits=9;aB=L(aD,Y);if(aB){aE.msg="invalid literal/lengths set";aD.mode=a;break}aD.distcode=aD.next;aD.distbits=6;aB=L(aD,u);if(aB){aE.msg="invalid distances set";aD.mode=a;break}aD.mode=T;if(au==ZLIB.Z_TREES){break inf_leave}case T:aD.mode=S;case S:if(aC.have>=6&&aC.left>=258){ai(aC);I(aE,aA);aa(aE,aC);if(aD.mode==ao){aD.back=-1}break}aD.back=0;for(;;){ax=aD.codes[aD.lencode+b(aC,aD.lenbits)];if(ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}if(ax.op&&(ax.op&240)==0){ay=ax;for(;;){ax=aD.codes[aD.lencode+ay.val+(b(aC,ay.bits+ay.op)>>>ay.bits)];if(ay.bits+ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}w(aC,ay.bits);aD.back+=ay.bits}w(aC,ax.bits);aD.back+=ax.bits;aD.length=ax.val;if(ax.op==0){aD.mode=Z;break}if(ax.op&32){aD.back=-1;aD.mode=ao;break}if(ax.op&64){aE.msg="invalid literal/length code";aD.mode=a;break}aD.extra=ax.op&15;aD.mode=U;case U:if(aD.extra){if(!ae(aC,aD.extra)){break inf_leave}aD.length+=b(aC,aD.extra);w(aC,aD.extra);aD.back+=aD.extra}aD.was=aD.length;aD.mode=r;case r:for(;;){ax=aD.codes[aD.distcode+b(aC,aD.distbits)];if(ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}if((ax.op&240)==0){ay=ax;for(;;){ax=aD.codes[aD.distcode+ay.val+(b(aC,ay.bits+ay.op)>>>ay.bits)];if((ay.bits+ax.bits)<=aC.bits){break}if(!ah(aC)){break inf_leave}}w(aC,ay.bits);aD.back+=ay.bits}w(aC,ax.bits);aD.back+=ax.bits;if(ax.op&64){aE.msg="invalid distance code";aD.mode=a;break}aD.offset=ax.val;aD.extra=ax.op&15;aD.mode=s;case s:if(aD.extra){if(!ae(aC,aD.extra)){break inf_leave}aD.offset+=b(aC,aD.extra);w(aC,aD.extra);aD.back+=aD.extra}aD.mode=ab;case ab:if(aC.left==0){break inf_leave}at=aA-aC.left;if(aD.offset>at){at=aD.offset-at;if(at>aD.whave){if(aD.sane){aE.msg="invalid distance too far back";aD.mode=a;break}}if(at>aD.wnext){at-=aD.wnext;aw=aD.wsize-at;av=-1}else{aw=aD.wnext-at;av=-1}if(at>aD.length){at=aD.length}}else{aw=-1;av=aE.next_out-aD.offset;at=aD.length}if(at>aC.left){at=aC.left}aC.left-=at;aD.length-=at;if(aw>=0){aE.output_data+=aD.window.substring(aw,aw+at);aE.next_out+=at;at=0}else{aE.next_out+=at;do{aE.output_data+=aE.output_data.charAt(av++)}while(--at)}if(aD.length==0){aD.mode=S}break;case Z:if(aC.left==0){break inf_leave}aE.output_data+=String.fromCharCode(aD.length);aE.next_out++;aC.left--;aD.mode=S;break;case d:if(aD.wrap){if(!ae(aC,32)){break inf_leave}aA-=aC.left;aE.total_out+=aA;aD.total+=aA;if(aA){aE.adler=aD.check=aE.checksum_function(aD.check,aE.output_data,aE.output_data.length-aA,aA)}aA=aC.left;if((aD.flags?aC.hold:aj(aC.hold))!=aD.check){aE.msg="incorrect data check";aD.mode=a;break}R(aC)}aD.mode=W;case W:if(aD.wrap&&aD.flags){if(!ae(aC,32)){break inf_leave}if(aC.hold!=(aD.total&4294967295)){aE.msg="incorrect length check";aD.mode=a;break}R(aC)}aD.mode=v;case v:aB=ZLIB.Z_STREAM_END;break inf_leave;case a:aB=ZLIB.Z_DATA_ERROR;break inf_leave;case ac:return ZLIB.Z_MEM_ERROR;case al:default:return ZLIB.Z_STREAM_ERROR}}inf_leave:ai(aC);if(aD.wsize||(aA!=aE.avail_out&&aD.mode<a&&(aD.mode<d||au!=ZLIB.Z_FINISH))){if(aq(aE)){aD.mode=ac;return ZLIB.Z_MEM_ERROR}}ar-=aE.avail_in;aA-=aE.avail_out;aE.total_in+=ar;aE.total_out+=aA;aD.total+=aA;if(aD.wrap&&aA){aE.adler=aD.check=aE.checksum_function(aD.check,aE.output_data,0,aE.output_data.length)}aE.data_type=aD.bits+(aD.last?64:0)+(aD.mode==ao?128:0)+(aD.mode==T||aD.mode==l?256:0);if(((ar==0&&aA==0)||au==ZLIB.Z_FINISH)&&aB==ZLIB.Z_OK){aB=ZLIB.Z_BUF_ERROR}return aB};ZLIB.inflateEnd=function(at){var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;ar.window=null;at.state=null;return ZLIB.Z_OK};ZLIB.z_stream.prototype.inflate=function(av,aw){var au;var ar;var at=16384;this.input_data=av;this.next_in=F(aw,"next_in",0);this.avail_in=F(aw,"avail_in",av.length-this.next_in);au=F(aw,"flush",ZLIB.Z_SYNC_FLUSH);ar=F(aw,"avail_out",-1);var ax="";do{this.avail_out=(ar>=0?ar:at);this.output_data="";this.next_out=0;this.error=ZLIB.inflate(this,au);if(ar>=0){return this.output_data}ax+=this.output_data;if(this.avail_out>0){break}}while(this.error==ZLIB.Z_OK);return ax};ZLIB.z_stream.prototype.inflateReset=function(ar){return ZLIB.inflateReset(this,ar)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-adler32.js")}(function(){var c=65521;var d=5552;function b(f,g,k,h){var l;var j;l=(f>>>16)&65535;f&=65535;if(h==1){f+=g.charCodeAt(k)&255;if(f>=c){f-=c}l+=f;if(l>=c){l-=c}return f|(l<<16)}if(g===null){return 1}if(h<16){while(h--){f+=g.charCodeAt(k++)&255;l+=f}if(f>=c){f-=c}l%=c;return f|(l<<16)}while(h>=d){h-=d;j=d>>4;do{f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f}while(--j);f%=c;l%=c}if(h){while(h>=16){h-=16;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f}while(h--){f+=g.charCodeAt(k++)&255;l+=f}f%=c;l%=c}return f|(l<<16)}function a(f,g,k,h){var l;var j;l=(f>>>16)&65535;f&=65535;if(h==1){f+=g[k];if(f>=c){f-=c}l+=f;if(l>=c){l-=c}return f|(l<<16)}if(g===null){return 1}if(h<16){while(h--){f+=g[k++];l+=f}if(f>=c){f-=c}l%=c;return f|(l<<16)}while(h>=d){h-=d;j=d>>4;do{f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f}while(--j);f%=c;l%=c}if(h){while(h>=16){h-=16;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f}while(h--){f+=g[k++];l+=f}f%=c;l%=c}return f|(l<<16)}ZLIB.adler32=function(f,g,j,h){if(typeof g==="string"){return b(f,g,j,h)}else{return a(f,g,j,h)}};ZLIB.adler32_combine=function(f,g,h){var k;var l;var j;if(h<0){return 4294967295}h%=c;j=h;k=f&65535;l=j*k;l%=c;k+=(g&65535)+c-1;l+=((f>>16)&65535)+((g>>16)&65535)+c-j;if(k>=c){k-=c}if(k>=c){k-=c}if(l>=(c<<1)){l-=(c<<1)}if(l>=c){l-=c}return k|(l<<16)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-crc32.js")}(function(){var a=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];function c(j,h,l,k){if(h==null){return 0}j=j^4294967295;while(k>=8){j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);k-=8}if(k){do{j=a[(j^h.charCodeAt(l++))&255]^(j>>>8)}while(--k)}return j^4294967295}function b(j,h,l,k){if(h==null){return 0}j=j^4294967295;while(k>=8){j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);k-=8}if(k){do{j=a[(j^h[l++])&255]^(j>>>8)}while(--k)}return j^4294967295}ZLIB.crc32=function(j,h,l,k){if(typeof h==="string"){return c(j,h,l,k)}else{return b(j,h,l,k)}};var d=32;function g(h,l){var k;var j=0;k=0;while(l){if(l&1){k^=h[j]}l>>=1;j++}return k}function f(k,h){var j;for(j=0;j<d;j++){k[j]=g(h,h[j])}}ZLIB.crc32_combine=function(h,j,l){var m;var p;var k;var o;if(l<=0){return h}k=new Array(d);o=new Array(d);o[0]=3988292384;p=1;for(m=1;m<d;m++){o[m]=p;p<<=1}f(k,o);f(o,k);do{f(k,o);if(l&1){h=g(k,h)}l>>=1;if(l==0){break}f(o,k);if(l&1){h=g(o,h)}l>>=1}while(l!=0);h^=j;return h}}());var CreateAmtRedirect=function(a){var b={};b.m=a;a.parent=b;b.State=0;b.socket=null;b.host=null;b.port=0;b.user=null;b.pass=null;b.authuri="/RedirectionService";b.tlsv1only=0;b.inDataCount=0;b.connectstate=0;b.protocol=a.protocol;b.debugmode=0;b.amtaccumulator="";b.amtsequence=1;b.amtkeepalivetimer=null;b.onStateChanged=null;b.Start=function(c,f,h,d,g){b.host=c;b.port=f;b.user=h;b.pass=d;b.connectstate=0;b.inDataCount=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+c+"&port="+f+"&tls="+g+((h=="*")?"&serverauth=1":"")+((typeof d==="undefined")?("&serverauth=1&user="+h):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed;b.xxStateChange(1)};b.xxOnSocketConnected=function(){if(b.debugmode==1){console.log("onSocketConnected")}b.xxStateChange(2);if(b.protocol==1){b.xxSend(b.RedirectStartSol)}if(b.protocol==2){b.xxSend(b.RedirectStartKvm)}if(b.protocol==3){b.xxSend(b.RedirectStartIder)}};b.xxOnMessage=function(g){if(b.debugmode==1){console.log("Recv",g.data)}b.inDataCount++;if(typeof g.data=="object"){var h=new FileReader();if(h.readAsBinaryString){h.onload=function(f){b.xxOnSocketData(f.target.result)};h.readAsBinaryString(new Blob([g.data]))}else{if(h.readAsArrayBuffer){h.onloadend=function(f){b.xxOnSocketData(f.target.result)};h.readAsArrayBuffer(g.data)}else{var c="";var d=new Uint8Array(g.data);var k=d.byteLength;for(var j=0;j<k;j++){c+=String.fromCharCode(d[j])}b.xxOnSocketData(c)}}}else{b.xxOnSocketData(g.data)}};b.xxOnSocketData=function(p){if(!p||b.connectstate==-1){return}if(typeof p==="object"){var h="";var k=new Uint8Array(p);var u=k.byteLength;for(var t=0;t<u;t++){h+=String.fromCharCode(k[t])}p=h}else{if(typeof p!=="string"){return}}if((b.protocol==2||b.protocol==3)&&b.connectstate==1){return b.m.ProcessData(p)}b.amtaccumulator+=p;while(b.amtaccumulator.length>=1){var l=0;switch(b.amtaccumulator.charCodeAt(0)){case 17:if(b.amtaccumulator.length<4){return}var I=b.amtaccumulator.charCodeAt(1);switch(I){case 0:if(b.amtaccumulator.length<13){return}var z=b.amtaccumulator.charCodeAt(12);if(b.amtaccumulator.length<13+z){return}b.xxSend(String.fromCharCode(19,0,0,0,0,0,0,0,0));l=(13+z);break;default:b.Stop(1);break}break;case 20:if(b.amtaccumulator.length<9){return}var f=ReadIntX(b.amtaccumulator,5);if(b.amtaccumulator.length<9+f){return}var H=b.amtaccumulator.charCodeAt(1);var g=b.amtaccumulator.charCodeAt(4);var c=[];for(t=0;t<f;t++){c.push(b.amtaccumulator.charCodeAt(9+t))}var d=b.amtaccumulator.substring(9,9+f);l=9+f;if(g==0){if(c.indexOf(4)>=0){b.xxSend(String.fromCharCode(19,0,0,0,4)+IntToStrX(b.user.length+b.authuri.length+8)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0,0))}else{if(c.indexOf(3)>=0){b.xxSend(String.fromCharCode(19,0,0,0,3)+IntToStrX(b.user.length+b.authuri.length+7)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0))}else{if(c.indexOf(1)>=0){b.xxSend(String.fromCharCode(19,0,0,0,1)+IntToStrX(b.user.length+b.pass.length+2)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(b.pass.length)+b.pass)}else{b.Stop(2)}}}}else{if((g==3||g==4)&&H==1){var o=0;var D=d.charCodeAt(o);var C=d.substring(o+1,o+1+D);o+=(D+1);var y=d.charCodeAt(o);var w=d.substring(o+1,o+1+y);o+=(y+1);var B=0;var A=null;var m=b.xxRandomNonce(32);var G="00000002";var r="";if(g==4){B=d.charCodeAt(o);A=d.substring(o+1,o+1+B);o+=(B+1);r=G+":"+m+":"+A+":"}var q=hex_md5(hex_md5(b.user+":"+C+":"+b.pass)+":"+w+":"+r+hex_md5("POST:"+b.authuri));var J=b.user.length+C.length+w.length+b.authuri.length+m.length+G.length+q.length+7;if(g==4){J+=(A.length+1)}var j=String.fromCharCode(19,0,0,0,g)+IntToStrX(J)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(C.length)+C+String.fromCharCode(w.length)+w+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(m.length)+m+String.fromCharCode(G.length)+G+String.fromCharCode(q.length)+q;if(g==4){j+=(String.fromCharCode(A.length)+A)}b.xxSend(j)}else{if(H==0){if(b.protocol==1){var v=10000;var L=100;var K=0;var F=10000;var E=100;var s=0;b.xxSend(String.fromCharCode(32,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(v)+ShortToStrX(L)+ShortToStrX(K)+ShortToStrX(F)+ShortToStrX(E)+ShortToStrX(s)+IntToStrX(0))}if(b.protocol==2){b.xxSend(String.fromCharCode(64,0,0,0,0,0,0,0))}if(b.protocol==3){b.connectstate=1;b.xxStateChange(3)}}else{b.Stop(3)}}}break;case 33:if(b.amtaccumulator.length<23){break}l=23;b.xxSend(String.fromCharCode(39,0,0,0)+IntToStrX(b.amtsequence++)+String.fromCharCode(0,0,27,0,0,0));if(b.protocol==1){b.amtkeepalivetimer=setInterval(b.xxSendAmtKeepAlive,2000)}b.connectstate=1;b.xxStateChange(3);break;case 41:if(b.amtaccumulator.length<10){break}l=10;break;case 42:if(b.amtaccumulator.length<10){break}var n=(10+((b.amtaccumulator.charCodeAt(9)&255)<<8)+(b.amtaccumulator.charCodeAt(8)&255));if(b.amtaccumulator.length<n){break}b.m.ProcessData(b.amtaccumulator.substring(10,n));l=n;break;case 43:if(b.amtaccumulator.length<8){break}l=8;break;case 65:if(b.amtaccumulator.length<8){break}b.connectstate=1;b.m.Start();if(b.amtaccumulator.length>8){b.m.ProcessData(b.amtaccumulator.substring(8))}l=b.amtaccumulator.length;break;default:console.log("Unknown Intel AMT command: "+b.amtaccumulator.charCodeAt(0)+" acclen="+b.amtaccumulator.length);b.Stop(4);return}if(l==0){return}b.amtaccumulator=b.amtaccumulator.substring(l)}};b.xxSend=function(f){if(b.socket!=null&&b.socket.readyState==WebSocket.OPEN){if(b.debugmode==1){console.log("Send",f)}var c=new Uint8Array(f.length);for(var d=0;d<f.length;++d){c[d]=f.charCodeAt(d)}b.socket.send(c.buffer)}};b.send=function(c){if(b.socket==null||b.connectstate!=1){return}if(b.protocol==1){b.xxSend(String.fromCharCode(40,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(c.length)+c)}else{b.xxSend(c)}};b.xxSendAmtKeepAlive=function(){if(b.socket==null){return}b.xxSend(String.fromCharCode(43,0,0,0)+IntToStrX(b.amtsequence++))};b.xxRandomNonceX="abcdef0123456789";b.xxRandomNonce=function(d){var f="";for(var c=0;c<d;c++){f+=b.xxRandomNonceX.charAt(Math.floor(Math.random()*b.xxRandomNonceX.length))}return f};b.xxOnSocketClosed=function(){if(b.debugmode==1){console.log("onSocketClosed")}if((b.inDataCount==0)&&(b.tlsv1only==0)){b.tlsv1only=1;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+b.host+"&port="+b.port+"&tls="+b.tls+"&tls1only=1"+((b.user=="*")?"&serverauth=1":"")+((typeof pass==="undefined")?("&serverauth=1&user="+b.user):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed}else{b.Stop(5)}};b.xxStateChange=function(c){if(b.State==c){return}b.State=c;b.m.xxStateChange(b.State);if(b.onStateChanged!=null){b.onStateChanged(b,b.State)}};b.Stop=function(c){if(b.debugmode==1){console.log("onSocketStop",c)}b.xxStateChange(0);b.connectstate=-1;b.amtaccumulator="";if(b.socket!=null){b.socket.close();b.socket=null}if(b.amtkeepalivetimer!=null){clearInterval(b.amtkeepalivetimer);b.amtkeepalivetimer=null}};b.RedirectStartSol=String.fromCharCode(16,0,0,0,83,79,76,32);b.RedirectStartKvm=String.fromCharCode(16,1,0,0,75,86,77,82);b.RedirectStartIder=String.fromCharCode(16,0,0,0,73,68,69,82);return b};var CreateWsmanComm=function(h,l,n,k,m){var j={};j.PendingAjax=[];j.ActiveAjaxCount=0;j.MaxActiveAjaxCount=1;j.FailAllError=0;j.challengeParams=null;j.noncecounter=1;j.authcounter=0;j.socket=null;j.socketState=0;j.host=h;j.port=l;j.user=n;j.pass=k;j.tls=m;j.tlsv1only=1;j.cnonce=Math.random().toString(36).substring(7);j.PerformAjax=function(q,p,s,r,t,o){if(j.ActiveAjaxCount<j.MaxActiveAjaxCount&&j.PendingAjax.length==0){j.PerformAjaxEx(q,p,s,t,o)}else{if(r==1){j.PendingAjax.unshift([q,p,s,t,o])}else{j.PendingAjax.push([q,p,s,t,o])}}};j.PerformNextAjax=function(){if(j.ActiveAjaxCount>=j.MaxActiveAjaxCount||j.PendingAjax.length==0){return}var o=j.PendingAjax.shift();j.PerformAjaxEx(o[0],o[1],o[2],o[3],o[4]);j.PerformNextAjax()};j.PerformAjaxEx=function(q,p,r,s,o){if(j.FailAllError!=0){j.gotNextMessagesError({status:j.FailAllError},"error",null,[q,p,r,s,o]);return}if(!q){q=""}j.ActiveAjaxCount++;return j.PerformAjaxExNodeJS(q,p,r,s,o)};j.pendingAjaxCall=[];j.PerformAjaxExNodeJS=function(q,p,r,s,o){j.PerformAjaxExNodeJS2(q,p,r,s,o,3)};j.PerformAjaxExNodeJS2=function(q,p,s,t,o,r){if(r<=0||j.FailAllError!=0){j.ActiveAjaxCount--;if(j.FailAllError!=999){j.gotNextMessages(null,"error",{status:((j.FailAllError==0)?408:j.FailAllError)},[q,p,s,t,o])}j.PerformNextAjax();return}j.pendingAjaxCall.push([q,p,s,t,o,r]);if(j.socketState==0){j.xxConnectHttpSocket()}else{if(j.socketState==2){j.sendRequest(q,t,o)}}};j.sendRequest=function(q,s,o){s=s?s:"/wsman";o=o?o:"POST";var p=o+" "+s+" HTTP/1.1\r\n";if(j.challengeParams!=null){var r=hex_md5(hex_md5(j.user+":"+j.challengeParams.realm+":"+j.pass)+":"+j.challengeParams.nonce+":"+j.noncecounter+":"+j.cnonce+":"+j.challengeParams.qop+":"+hex_md5(o+":"+s));p+="Authorization: "+j.renderDigest({username:j.user,realm:j.challengeParams.realm,nonce:j.challengeParams.nonce,uri:s,qop:j.challengeParams.qop,response:r,nc:j.noncecounter++,cnonce:j.cnonce})+"\r\n"}p+="Host: "+j.host+":"+j.port+"\r\nTransfer-Encoding: chunked\r\n\r\n"+q.length.toString(16).toUpperCase()+"\r\n"+q+"\r\n0\r\n\r\n";g(p)};j.parseDigest=function(o){var p=o.substring(7).split(",");for(i in p){p[i]=p[i].trim()}return p.reduce(function(q,t){var r=t.split("=");q[r[0]]=r[1].replace(/"/g,"");return q},{})};j.renderDigest=function(o){var p=[];for(i in o){p.push(i)}return"Digest "+p.reduce(function(r,q){return r+","+q+'="'+o[q]+'"'},"").substring(1)};j.xxConnectHttpSocket=function(){j.socketParseState=0;j.socketAccumulator="";j.socketHeader=null;j.socketData="";j.socketState=1;console.log(j.tlsv1only);j.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=1&host="+j.host+"&port="+j.port+"&tls="+j.tls+"&tlsv1only="+j.tlsv1only+((n=="*")?"&serverauth=1":"")+((typeof k==="undefined")?("&serverauth=1&user="+n):""));j.socket.onopen=c;j.socket.onmessage=a;j.socket.onclose=b};function c(){j.socketState=2;for(i in j.pendingAjaxCall){j.sendRequest(j.pendingAjaxCall[i][0],j.pendingAjaxCall[i][3],j.pendingAjaxCall[i][4])}}function a(q){if(typeof q.data=="object"){var r=new FileReader();if(r.readAsBinaryString){r.onload=function(u){d(u.target.result)};r.readAsBinaryString(new Blob([q.data]))}else{if(r.readAsArrayBuffer){r.onloadend=function(u){d(u.target.result)};r.readAsArrayBuffer(q.data)}else{var o="";var p=new Uint8Array(q.data);var t=p.byteLength;for(var s=0;s<t;s++){o+=String.fromCharCode(p[s])}d(o)}}}else{if(typeof q.data=="string"){d(q.data)}}}function d(s){if(typeof s==="object"){var o="",p=new Uint8Array(s),v=p.byteLength;for(var u=0;u<v;u++){o+=String.fromCharCode(p[u])}s=o}else{if(typeof s!=="string"){return}}j.socketAccumulator+=s;while(true){if(j.socketParseState==0){var t=j.socketAccumulator.indexOf("\r\n\r\n");if(t<0){return}j.socketHeader=j.socketAccumulator.substring(0,t).split("\r\n");j.socketAccumulator=j.socketAccumulator.substring(t+4);j.socketParseState=1;j.socketData="";j.socketXHeader={Directive:j.socketHeader[0].split(" ")};for(u in j.socketHeader){if(u!=0){var w=j.socketHeader[u].indexOf(":");j.socketXHeader[j.socketHeader[u].substring(0,w).toLowerCase()]=j.socketHeader[u].substring(w+2)}}}if(j.socketParseState==1){var r=-1;if((j.socketXHeader.connection!=undefined)&&(j.socketXHeader.connection.toLowerCase()=="close")&&((j.socketXHeader["transfer-encoding"]==undefined)||(j.socketXHeader["transfer-encoding"].toLowerCase()!="chunked"))){r=0}else{if(j.socketXHeader["content-length"]!=undefined){r=parseInt(j.socketXHeader["content-length"]);if(j.socketAccumulator.length<r){return}var s=j.socketAccumulator.substring(0,r);j.socketAccumulator=j.socketAccumulator.substring(r);j.socketData=s;r=0}else{var q=j.socketAccumulator.indexOf("\r\n");if(q<0){return}r=parseInt(j.socketAccumulator.substring(0,q),16);if(isNaN(r)){if(j.websocket){j.websocket.close()}return}if(j.socketAccumulator.length<q+2+r+2){return}var s=j.socketAccumulator.substring(q+2,q+2+r);j.socketAccumulator=j.socketAccumulator.substring(q+2+r+2);j.socketData+=s}}if(r==0){f(j.socketXHeader,j.socketData);j.socketParseState=0;j.socketHeader=null}}}}function f(p,o){var t=parseInt(p.Directive[1]);if(isNaN(t)){t=602}if(t==401&&++(j.authcounter)<3){j.challengeParams=j.parseDigest(p["www-authenticate"])}else{var q=j.pendingAjaxCall.shift();j.authcounter=0;j.ActiveAjaxCount--;j.gotNextMessages(o,"success",{status:t},q);j.PerformNextAjax()}}function b(o){j.socketState=0;if(j.socket!=null){j.socket.close();j.socket=null}if(j.pendingAjaxCall.length>0){var p=j.pendingAjaxCall.shift();var q=p[5];j.PerformAjaxExNodeJS2(p[0],p[1],p[2],p[3],p[4],--q)}}function g(r){if(j.socketState==2&&j.socket!=null&&j.socket.readyState==WebSocket.OPEN){var o=new Uint8Array(r.length);for(var q=0;q<r.length;++q){o[q]=r.charCodeAt(q)}try{j.socket.send(o.buffer)}catch(p){}}}j.gotNextMessages=function(p,r,q,o){if(j.FailAllError==999){return}if(j.FailAllError!=0){o[1](null,j.FailAllError,o[2]);return}if(q.status!=200){o[1](null,q.status,o[2]);return}o[1](p,200,o[2])};j.gotNextMessagesError=function(q,r,p,o){if(j.FailAllError==999){return}if(j.FailAllError!=0){o[1](null,j.FailAllError,o[2]);return}o[1](j,null,{Header:{HttpError:q.status}},q.status,o[2])};j.CancelAllQueries=function(o){while(j.PendingAjax.length>0){var p=j.PendingAjax.shift();p[1](null,o,p[2])}if(j.websocket!=null){j.websocket.close();j.websocket=null;j.socketState=0}};return j};var CreateAgentRedirect=function(a,b,f){var c={};c.m=b;b.parent=c;c.meshserver=a;c.State=0;c.nodeid=null;c.socket=null;c.connectstate=-1;c.tunnelid=Math.random().toString(36).substring(2);c.protocol=b.protocol;c.onStateChanged=null;c.ctrlMsgAllowed=true;c.attemptWebRTC=false;c.webRtcActive=false;c.webSwitchOk=false;c.webchannel=null;c.webrtc=null;c.debugmode=0;c.Start=function(g){var j,h=window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/meshrelay.ashx?id="+c.tunnelid;c.nodeid=g;c.connectstate=0;c.socket=new WebSocket(h);c.socket.onopen=c.xxOnSocketConnected;c.socket.onmessage=c.xxOnMessage;c.socket.onerror=function(k){console.error(k)};c.socket.onclose=c.xxOnSocketClosed;c.xxStateChange(1);c.meshserver.send({action:"msg",type:"tunnel",nodeid:c.nodeid,value:"*/meshrelay.ashx?id="+c.tunnelid})};c.xxOnSocketConnected=function(){if(c.debugmode==1){console.log("onSocketConnected")}c.xxStateChange(2)};c.xxOnControlCommand=function(j){var g;try{g=JSON.parse(j)}catch(h){return}if(g.ctrlChannel!="102938"){c.xxOnSocketData(j);return}if(c.webrtc!=null){if(g.type=="answer"){c.webrtc.setRemoteDescription(new RTCSessionDescription(g),function(){},c.xxCloseWebRTC)}else{if(g.type=="webrtc0"){c.webSwitchOk=true;d()}else{if(g.type=="webrtc1"){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc2"}')}else{if(g.type=="webrtc2"){}}}}}};c.sendCtrlMsg=function(h){if(c.ctrlMsgAllowed==true){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof h,h)}try{c.socket.send(h)}catch(g){}}};function d(){if((c.webSwitchOk==true)&&(c.webRtcActive==true)){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc0"}');c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc1"}');if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}}}c.xxOnMessage=function(k){if(c.State<3){if(k.data=="c"){try{c.socket.send(c.protocol)}catch(l){}c.xxStateChange(3);if(c.attemptWebRTC==true){var j=null;if(typeof RTCPeerConnection!=="undefined"){c.webrtc=new RTCPeerConnection(j)}else{if(typeof webkitRTCPeerConnection!=="undefined"){c.webrtc=new webkitRTCPeerConnection(j)}}if(c.webrtc!=null){c.webchannel=c.webrtc.createDataChannel("DataChannel",{});c.webchannel.onmessage=function(p){c.xxOnMessage({data:p.data})};c.webchannel.onopen=function(){c.webRtcActive=true;d()};c.webchannel.onclose=function(p){if(c.webRtcActive){c.Stop()}};c.webrtc.onicecandidate=function(p){if(p.candidate==null){try{c.socket.send(JSON.stringify(c.webrtcoffer))}catch(q){}}else{c.webrtcoffer.sdp+=("a="+p.candidate.candidate+"\r\n")}};c.webrtc.oniceconnectionstatechange=function(){if(c.webrtc!=null){if(c.webrtc.iceConnectionState=="disconnected"){c.Stop()}else{if(c.webrtc.iceConnectionState=="failed"){c.xxCloseWebRTC()}}}};c.webrtc.createOffer(function(p){c.webrtcoffer=p;c.webrtc.setLocalDescription(p,function(){},c.xxCloseWebRTC)},c.xxCloseWebRTC,{mandatory:{OfferToReceiveAudio:false,OfferToReceiveVideo:false}})}}return}}if(typeof k.data=="string"){c.xxOnControlCommand(k.data);return}if(typeof k.data=="object"){var m=new FileReader();if(m.readAsBinaryString){m.onload=function(p){c.xxOnSocketData(p.target.result)};m.readAsBinaryString(new Blob([k.data]))}else{if(m.readAsArrayBuffer){m.onloadend=function(p){c.xxOnSocketData(p.target.result)};m.readAsArrayBuffer(k.data)}else{var g="";var h=new Uint8Array(k.data);var o=h.byteLength;for(var n=0;n<o;n++){g+=String.fromCharCode(h[n])}c.xxOnSocketData(g)}}}else{c.xxOnSocketData(k.data)}};c.xxOnSocketData=function(j){if(!j||c.connectstate==-1){return}if(typeof j==="object"){var g="",h=new Uint8Array(j),l=h.byteLength;for(var k=0;k<l;k++){g+=String.fromCharCode(h[k])}j=g}else{if(typeof j!=="string"){return}}if((typeof args!="undefined")&&args.redirtrace){console.log("RedirRecv",typeof j,j.length,j)}return c.m.ProcessData(j)};c.sendText=function(g){if(typeof g!="string"){g=JSON.stringify(g)}c.send(encode_utf8(g))};c.send=function(l){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof l,l.length,l)}try{if(c.socket!=null&&c.socket.readyState==WebSocket.OPEN){if(typeof l=="string"){if(c.debugmode==1){var g=new Uint8Array(l.length),h=[];for(var k=0;k<l.length;++k){g[k]=l.charCodeAt(k);h.push(l.charCodeAt(k))}if(c.webRtcActive==true){c.webchannel.send(g.buffer)}else{c.socket.send(g.buffer)}}else{var g=new Uint8Array(l.length);for(var k=0;k<l.length;++k){g[k]=l.charCodeAt(k)}if(c.webRtcActive==true){c.webchannel.send(g.buffer)}else{c.socket.send(g.buffer)}}}else{if(c.webRtcActive==true){c.webchannel.send(l)}else{c.socket.send(l)}}}}catch(j){}};c.xxOnSocketClosed=function(){c.Stop(1)};c.xxStateChange=function(g){if(c.State==g){return}c.State=g;c.m.xxStateChange(c.State);if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}};c.xxCloseWebRTC=function(){if(c.webchannel!=null){try{c.webchannel.close()}catch(g){}c.webchannel=null}if(c.webrtc!=null){try{c.webrtc.close()}catch(g){}c.webrtc=null}c.webRtcActive=false};c.Stop=function(h){if(c.debugmode==1){console.log("stop",h)}c.xxCloseWebRTC();c.connectstate=-1;if(c.socket!=null){try{if(c.socket.readyState==1){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"close"}');c.socket.close()}}catch(g){}c.socket=null}c.xxStateChange(0)};return c};var CreateAgentRemoteDesktop=function(a,c){var b={};b.CanvasId=a;if(typeof a==="string"){b.CanvasId=Q(a)}b.Canvas=b.CanvasId.getContext("2d");b.scrolldiv=c;b.State=0;b.PendingOperations=[];b.tilesReceived=0;b.TilesDrawn=0;b.KillDraw=0;b.ipad=false;b.tabletKeyboardVisible=false;b.LastX=0;b.LastY=0;b.touchenabled=0;b.submenuoffset=0;b.touchtimer=null;b.TouchArray={};b.connectmode=0;b.connectioncount=0;b.rotation=0;b.protocol=2;b.debugmode=0;b.firstUpKeys=[];b.stopInput=false;b.sessionid=0;b.username;b.oldie=false;b.CompressionLevel=50;b.ScalingLevel=1024;b.FrameRateTimer=50;b.FirstDraw=false;b.ScreenWidth=960;b.ScreenHeight=700;b.width=960;b.height=960;b.onScreenSizeChange=null;b.onMessage=null;b.onConnectCountChanged=null;b.onDebugMessage=null;b.onTouchEnabledChanged=null;b.onDisplayinfo=null;b.Start=function(){b.State=0};b.Stop=function(){b.setRotation(0);b.UnGrabKeyInput();b.UnGrabMouseInput();b.touchenabled=0;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}b.Canvas.clearRect(0,0,b.CanvasId.width,b.CanvasId.height)};b.xxStateChange=function(d){if(b.State==d){return}b.State=d;switch(d){case 0:b.Stop();break;case 3:break}};b.send=function(d){b.parent.send(d)};b.ProcessPictureMsg=function(f,h,j){var g=new Image();g.xcount=b.tilesReceived++;var d=b.tilesReceived;g.src="data:image/jpeg;base64,"+btoa(f.substring(4,f.length));g.onload=function(){if(b.Canvas!=null&&b.KillDraw<d&&b.State!=0){b.PendingOperations.push([d,2,g,h,j]);while(b.DoPendingOperations()){}}};g.error=function(){console.log("DecodeTileError")}};b.DoPendingOperations=function(){if(b.PendingOperations.length==0){return false}for(var d=0;d<b.PendingOperations.length;d++){var f=b.PendingOperations[d];if(f[0]==(b.TilesDrawn+1)){if(f[1]==1){b.ProcessCopyRectMsg(f[2])}else{if(f[1]==2){b.Canvas.drawImage(f[2],b.rotX(f[3],f[4]),b.rotY(f[3],f[4]));delete f[2]}}b.PendingOperations.splice(d,1);delete f;b.TilesDrawn++;if(b.TilesDrawn==b.tilesReceived&&b.KillDraw<b.TilesDrawn){b.KillDraw=b.TilesDrawn=b.tilesReceived=0}return true}}if(b.oldie&&b.PendingOperations.length>0){b.TilesDrawn++}return false};b.ProcessCopyRectMsg=function(h){var j=((h.charCodeAt(0)&255)<<8)+(h.charCodeAt(1)&255);var k=((h.charCodeAt(2)&255)<<8)+(h.charCodeAt(3)&255);var d=((h.charCodeAt(4)&255)<<8)+(h.charCodeAt(5)&255);var f=((h.charCodeAt(6)&255)<<8)+(h.charCodeAt(7)&255);var l=((h.charCodeAt(8)&255)<<8)+(h.charCodeAt(9)&255);var g=((h.charCodeAt(10)&255)<<8)+(h.charCodeAt(11)&255);b.Canvas.drawImage(Canvas.canvas,j,k,l,g,d,f,l,g)};b.SendUnPause=function(){b.send(String.fromCharCode(0,8,0,5,0))};b.SendPause=function(){b.send(String.fromCharCode(0,8,0,5,1))};b.SendCompressionLevel=function(h,f,g,d){if(f){b.CompressionLevel=f}if(g){b.ScalingLevel=g}if(d){b.FrameRateTimer=d}b.send(String.fromCharCode(0,5,0,10,h,b.CompressionLevel)+b.shortToStr(b.ScalingLevel)+b.shortToStr(b.FrameRateTimer))};b.SendRefresh=function(){b.send(String.fromCharCode(0,6,0,4))};b.ProcessScreenMsg=function(f,d){b.Canvas.setTransform(1,0,0,1,0,0);b.rotation=0;b.FirstDraw=true;b.ScreenWidth=b.width=f;b.ScreenHeight=b.height=d;b.KillDraw=b.tilesReceived;while(b.PendingOperations.length>0){b.PendingOperations.shift()}b.SendCompressionLevel(1);b.SendUnPause();if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}};b.ProcessData=function(f){var d=0;while(d<f.length){d+=b.ProcessDataEx(f.substring(d))}};b.ProcessDataEx=function(o){if(o.length<4){return}var d=null,p=0,q=0,g=ReadShort(o,0),f=ReadShort(o,2);if((f!=o.length)&&(b.debugmode==1)){console.log(f,o.length,f==o.length)}if(g>=18){console.error("Invalid KVM command "+g+" of size "+f);console.log("Invalid KVM data",o.length,o,rstr2hex(o));return}if(f>o.length){console.error("KVM invalid command size",f,o.length);return}if(g==3||g==4||g==7){d=o.substring(4,f);p=((d.charCodeAt(0)&255)<<8)+(d.charCodeAt(1)&255);q=((d.charCodeAt(2)&255)<<8)+(d.charCodeAt(3)&255)}switch(g){case 3:if(b.FirstDraw){b.onResize()}b.ProcessPictureMsg(d,p,q);break;case 4:if(b.FirstDraw){b.onResize()}if(b.TilesDrawn==b.tilesReceived){b.ProcessCopyRectMsg(d)}else{b.PendingOperations.push([++tilesReceived,1,d])}break;case 7:b.ProcessScreenMsg(p,q);b.SendKeyMsgKC(b.KeyAction.UP,16);b.SendKeyMsgKC(b.KeyAction.UP,17);b.SendKeyMsgKC(b.KeyAction.UP,18);b.SendKeyMsgKC(b.KeyAction.UP,91);b.SendKeyMsgKC(b.KeyAction.UP,92);b.SendKeyMsgKC(b.KeyAction.UP,16);b.send(String.fromCharCode(0,14,0,4));break;case 11:var l=[],h=((o.charCodeAt(4)&255)<<8)+(o.charCodeAt(5)&255);if(h>0){var n=0,m=((o.charCodeAt(6+(h*2))&255)<<8)+(o.charCodeAt(7+(h*2))&255);for(var k=0;k<h;k++){var j=((o.charCodeAt(6+(k*2))&255)<<8)+(o.charCodeAt(7+(k*2))&255);if(j==65535){l.push("All Displays")}else{l.push("Display "+j)}if(j==m){n=k}}}if(b.onDisplayinfo!=null){b.onDisplayinfo(b,l,n)}break;case 12:break;case 14:b.touchenabled=1;b.TouchArray={};if(b.onTouchEnabledChanged!=null){b.onTouchEnabledChanged(b.touchenabled)}break;case 15:b.TouchArray={};break;case 16:b.connectioncount=ReadInt(o,4);if(b.onConnectCountChanged!=null){b.onConnectCountChanged(b.connectioncount,b)}break;case 17:if(b.onMessage!=null){b.onMessage(o.substring(4,f),b)}break}return f};b.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32};b.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5};b.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15};b.Alternate=0;b.SendKeyMsg=function(d,f){if(d==null){return}if(!f){var f=window.event}var g=f.keyCode;if(g==59){g=186}b.SendKeyMsgKC(d,g)};b.SendMessage=function(d){if(b.State==3){b.send(String.fromCharCode(0,17)+b.shortToStr(4+d.length)+d)}};b.SendKeyMsgKC=function(d,g){if(b.State!=3){return}if(typeof d=="object"){for(var f in d){b.SendKeyMsgKC(d[f][0],d[f][1])}}else{b.send(String.fromCharCode(0,b.InputType.KEY,0,6,(d-1),g))}};b.sendcad=function(){b.SendCtrlAltDelMsg()};b.SendCtrlAltDelMsg=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.CTRLALTDEL,0,4))}};b.SendEscKey=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.KEY,0,6,0,27,0,b.InputType.KEY,0,6,1,27))}};b.SendStartMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendCharmsMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.DOWN,67);b.SendKeyMsgKC(b.KeyAction.UP,67);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendTouchMsg1=function(f,d,g,h){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(14)+String.fromCharCode(1,f)+b.intToStr(d)+b.shortToStr(g)+b.shortToStr(h))}};b.SendTouchMsg2=function(g,d){var j="";var f;var l="TOUCHSEND: ";for(var h in b.TouchArray){if(h==g){f=d}else{if(b.TouchArray[h].f==1){f=65536|2|4;b.TouchArray[h].f=3;l+="START"+h}else{if(b.TouchArray[h].f==2){f=262144;l+="STOP"+h}else{f=2|4|131072}}}j+=String.fromCharCode(h)+b.intToStr(f)+b.shortToStr(b.TouchArray[h].x)+b.shortToStr(b.TouchArray[h].y);if(b.TouchArray[h].f==2){delete b.TouchArray[h]}}if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(5+j.length)+String.fromCharCode(2)+j)}if(Object.keys(b.TouchArray).length==0&&b.touchtimer!=null){clearInterval(b.touchtimer);b.touchtimer=null}};b.SendMouseMsg=function(d,h){if(b.State!=3){return}if(d!=null&&b.Canvas!=null){if(!h){var h=window.event}var l=(b.Canvas.canvas.height/b.CanvasId.clientHeight);var m=(b.Canvas.canvas.width/b.CanvasId.clientWidth);var k=b.GetPositionOfControl(b.Canvas.canvas);var n=((h.pageX-k[0])*m);var o=((h.pageY-k[1])*l);if(n>=0&&n<=b.Canvas.canvas.width&&o>=0&&o<=b.Canvas.canvas.height){var f=0;var g=0;if(d==b.KeyAction.UP||d==b.KeyAction.DOWN){if(h.which){((h.which==1)?(f=b.MouseButton.LEFT):((h.which==2)?(f=b.MouseButton.MIDDLE):(f=b.MouseButton.RIGHT)))}else{if(h.button){((h.button==0)?(f=b.MouseButton.LEFT):((h.button==1)?(f=b.MouseButton.MIDDLE):(f=b.MouseButton.RIGHT)))}}}else{if(d==b.KeyAction.SCROLL){if(h.detail){g=(-1*(h.detail*120))}else{if(h.wheelDelta){g=(h.wheelDelta*3)}}}}var j="";if(d==b.KeyAction.SCROLL){j=String.fromCharCode(0,b.InputType.MOUSE,0,12,0,((d==b.KeyAction.DOWN)?f:((f*2)&255)),((n/256)&255),(n&255),((o/256)&255),(o&255),((g/256)&255),(g&255))}else{j=String.fromCharCode(0,b.InputType.MOUSE,0,10,0,((d==b.KeyAction.DOWN)?f:((f*2)&255)),((n/256)&255),(n&255),((o/256)&255),(o&255))}if(b.Action==b.KeyAction.NONE){if(b.Alternate==0||b.ipad){b.send(j);b.Alternate=1}else{b.Alternate=0}}else{b.send(j)}}}};b.GetDisplayNumbers=function(){b.send(String.fromCharCode(0,11,0,4))};b.SetDisplay=function(d){b.send(String.fromCharCode(0,12,0,6,d>>8,d&255))};b.intToStr=function(d){return String.fromCharCode((d>>24)&255,(d>>16)&255,(d>>8)&255,d&255)};b.shortToStr=function(d){return String.fromCharCode((d>>8)&255,d&255)};b.onResize=function(){if(b.ScreenWidth==0||b.ScreenHeight==0){return}if(b.Canvas.canvas.width==b.ScreenWidth&&b.Canvas.canvas.height==b.ScreenHeight){return}if(b.FirstDraw){b.Canvas.canvas.width=b.ScreenWidth;b.Canvas.canvas.height=b.ScreenHeight;b.Canvas.fillRect(0,0,b.ScreenWidth,b.ScreenHeight);if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}}b.FirstDraw=false};b.xxMouseInputGrab=false;b.xxKeyInputGrab=false;b.xxMouseMove=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.NONE,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseUp=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseDown=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxDOMMouseScroll=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxMouseWheel=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxKeyUp=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyDown=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyPress=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.handleKeys=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyPress(d)};b.handleKeyUp=function(d){if(b.stopInput==true||desktop.State!=3){return false}if(b.firstUpKeys.length<5){b.firstUpKeys.push(d.keyCode);if((b.firstUpKeys.length==5)){var f=b.firstUpKeys.join(",");if((f=="16,17,91,91,16")||(f=="16,17,18,91,92")){b.stopInput=true}}}return b.xxKeyUp(d)};b.handleKeyDown=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyDown(d)};b.mousedown=function(d){if(b.stopInput==true){return false}return b.xxMouseDown(d)};b.mouseup=function(d){if(b.stopInput==true){return false}return b.xxMouseUp(d)};b.mousemove=function(d){if(b.stopInput==true){return false}return b.xxMouseMove(d)};b.mousewheel=function(d){if(b.stopInput==true){return false}return b.xxMouseWheel(d)};b.xxMsTouchEvent=function(d){if(d.originalEvent.pointerType==4){return}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}if(d.type=="MSPointerDown"||d.type=="MSPointerMove"||d.type=="MSPointerUp"){var f=0;var g=d.originalEvent.pointerId%256;var h=d.offsetX*(Canvas.canvas.width/b.CanvasId.clientWidth);var j=d.offsetY*(Canvas.canvas.height/b.CanvasId.clientHeight);if(d.type=="MSPointerDown"){f=65536|2|4}else{if(d.type=="MSPointerMove"){f=131072|2|4}else{if(d.type=="MSPointerUp"){f=262144}}}if(!b.TouchArray[g]){b.TouchArray[g]={x:h,y:j}}b.SendTouchMsg2(g,f);if(d.type=="MSPointerUp"){delete b.TouchArray[g]}}else{alert(d.type)}return true};b.xxTouchStart=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(KeyAction.DOWN,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(!b.TouchArray[g]){b.TouchArray[g]={x:(d.originalEvent.touches[f].pageX-h[0])*(Canvas.canvas.width/b.CanvasId.clientWidth),y:(d.originalEvent.touches[f].pageY-h[1])*(Canvas.canvas.height/b.CanvasId.clientHeight),f:1}}}if(Object.keys(b.TouchArray).length>0&&touchtimer==null){b.touchtimer=setInterval(function(){b.SendTouchMsg2(256,0)},50)}}};b.xxTouchMove=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(b.KeyAction.NONE,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].x=(d.originalEvent.touches[f].pageX-h[0])*(b.Canvas.canvas.width/b.CanvasId.clientWidth);b.TouchArray[g].y=(d.originalEvent.touches[f].pageY-h[1])*(b.Canvas.canvas.height/b.CanvasId.clientHeight)}}}};b.xxTouchEnd=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}d.which=1;d.pageX=LastX;d.pageY=LastY;b.SendMouseMsg(KeyAction.UP,d)}else{for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].f=2}}}};b.GrabMouseInput=function(){if(b.xxMouseInputGrab==true){return}var d=b.CanvasId;d.onmousemove=b.xxMouseMove;d.onmouseup=b.xxMouseUp;d.onmousedown=b.xxMouseDown;d.touchstart=b.xxTouchStart;d.touchmove=b.xxTouchMove;d.touchend=b.xxTouchEnd;d.MSPointerDown=b.xxMsTouchEvent;d.MSPointerMove=b.xxMsTouchEvent;d.MSPointerUp=b.xxMsTouchEvent;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=b.xxDOMMouseScroll}else{d.onmousewheel=b.xxMouseWheel}b.xxMouseInputGrab=true};b.UnGrabMouseInput=function(){if(b.xxMouseInputGrab==false){return}var d=b.CanvasId;d.onmousemove=null;d.onmouseup=null;d.onmousedown=null;d.touchstart=null;d.touchmove=null;d.touchend=null;d.MSPointerDown=null;d.MSPointerMove=null;d.MSPointerUp=null;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=null}else{d.onmousewheel=null}b.xxMouseInputGrab=false};b.GrabKeyInput=function(){if(b.xxKeyInputGrab==true){return}document.onkeyup=b.xxKeyUp;document.onkeydown=b.xxKeyDown;document.onkeypress=b.xxKeyPress;b.xxKeyInputGrab=true};b.UnGrabKeyInput=function(){if(b.xxKeyInputGrab==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;b.xxKeyInputGrab=false};b.GetPositionOfControl=function(d){var f=Array(2);f[0]=f[1]=0;while(d){f[0]+=d.offsetLeft;f[1]+=d.offsetTop;d=d.offsetParent}return f};b.crotX=function(d,f){if(b.rotation==0){return d}if(b.rotation==1){return f}if(b.rotation==2){return b.Canvas.canvas.width-d}if(b.rotation==3){return b.Canvas.canvas.height-f}};b.crotY=function(d,f){if(b.rotation==0){return f}if(b.rotation==1){return b.Canvas.canvas.width-d}if(b.rotation==2){return b.Canvas.canvas.height-f}if(b.rotation==3){return d}};b.rotX=function(d,f){if(b.rotation==0||b.rotation==1){return d}if(b.rotation==2){return d-b.Canvas.canvas.width}if(b.rotation==3){return d-b.Canvas.canvas.height}};b.rotY=function(d,f){if(b.rotation==0||b.rotation==3){return f}if(b.rotation==1){return f-b.Canvas.canvas.width}if(b.rotation==2){return f-b.Canvas.canvas.height}};b.tcanvas=null;b.setRotation=function(j){while(j<0){j+=4}var d=j%4;if(d==b.rotation){return true}var g=b.Canvas.canvas.width;var f=b.Canvas.canvas.height;if(b.rotation==1||b.rotation==3){g=b.Canvas.canvas.height;f=b.Canvas.canvas.width}if(b.tcanvas==null){b.tcanvas=document.createElement("canvas")}var h=b.tcanvas.getContext("2d");h.setTransform(1,0,0,1,0,0);h.canvas.width=g;h.canvas.height=f;h.rotate((b.rotation*-90)*Math.PI/180);if(b.rotation==0){h.drawImage(b.Canvas.canvas,0,0)}if(b.rotation==1){h.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,0)}if(b.rotation==2){h.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,-b.Canvas.canvas.height)}if(b.rotation==3){h.drawImage(b.Canvas.canvas,0,-b.Canvas.canvas.height)}if(b.rotation==0||b.rotation==2){b.Canvas.canvas.height=g;b.Canvas.canvas.width=f}if(b.rotation==1||b.rotation==3){b.Canvas.canvas.height=f;b.Canvas.canvas.width=g}b.Canvas.setTransform(1,0,0,1,0,0);b.Canvas.rotate((d*90)*Math.PI/180);b.rotation=d;b.Canvas.drawImage(b.tcanvas,b.rotX(0,0),b.rotY(0,0));b.ScreenWidth=b.Canvas.canvas.width;b.ScreenHeight=b.Canvas.canvas.height;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}return true};b.MuchTheSame=function(d,f){return(Math.abs(d-f)<4)};b.Debug=function(d){console.log(d)};b.getIEVersion=function(){var d=-1;if(navigator.appName=="Microsoft Internet Explorer"){var g=navigator.userAgent;var f=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");if(f.exec(g)!=null){d=parseFloat(RegExp.$1)}}return d};b.haltEvent=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};return b};var args;var powerStatetable=["","Powered","Sleep","Sleep","Sleep","Hibernating","Power off","Present"];var StatusStrs=["Disconnected","Connecting...","Setup...","Connected","Intel® AMT Connected"];var sort=0;var searchFocus=0;var mapSearchFocus=0;var userSearchFocus=0;var consoleFocus=0;var showRealNames=false;var meshserver=null;var meshes={};var meshcount=0;var nodes=[];var filetree={};var userinfo=null;var serverinfo=null;var events=[];var users=null;var wssessions=null;var nodeShortIdent=0;var desktop;var desktopsettings={encoding:2,showfocus:false,showmouse:true,showcad:true,quality:40,scaling:1024,framerate:50};var multidesktopsettings={quality:20,scaling:128,framerate:1000};var terminal;var files;var debugLevel=parseInt("{{{debuglevel}}}");var features=parseInt("{{{features}}}");var multiDesktop={};var multiDesktopFilter=null;var serverPublicNamePort="{{{serverDnsName}}}:{{{serverPublicPort}}}";var amtScanResults=null;var debugmode=false;var clickOnce=(((features&256)!=0)&&detectClickOnce());var attemptWebRTC=((features&128)!=0);var webPageFullScreen=getstore("webPageFullScreen",false);if(webPageFullScreen=="false"){webPageFullScreen=false}function startup(){if((features&32)==0){var f=null;try{f=top.location.toString().toLowerCase()}catch(b){}if(top!=self&&(f==null||top.active==false)){top.location=self.location;return}}toggleFullScreen();args=parseUriArgs();debugmode=(args.debug==1);if(args.webrtc!=null){attemptWebRTC=(args.webrtc==1)}QV("p13AutoConnect",debugmode);QV("autoconnectbutton2",debugmode);QV("autoconnectbutton1",debugmode);if(args.hide){var d=parseInt(args.hide);QV("masthead",!(d&1));QV("topbarmaster",!(d&2));QV("footer",!(d&4));QV("p10title",!(d&8));QV("p11title",!(d&8));QV("p12title",!(d&8));QV("p13title",!(d&8));QV("p14title",!(d&8));QV("p15title",!(d&8));QV("p16title",!(d&8))}p1updateInfo();document.onclick=function(c){hideContextMenu()};document.onkeypress=ondockeypress;document.onkeydown=ondockeydown;document.onkeyup=ondockeyup;window.onresize=center;center();meshserver=MeshServerCreateControl("{{{domainurl}}}");meshserver.onStateChanged=onStateChanged;meshserver.onMessage=onMessage;meshserver.Start();Q("sortselect").selectedIndex=sort=getstore("sort",0);Q("sizeselect").selectedIndex=getstore("viewsize",1);Q("SearchInput").value=getstore("search","");showRealNames=(getstore("showRealNames",0)==1);Q("RealNameCheckBox").checked=showRealNames;Q("viewselect").value=getstore("deviceView",1);Q("DeskControl").checked=(getstore("DeskControl",1)==1);onSortSelectChange();onSearchInputChanged();Q("p5filetable").addEventListener("drop",p5fileDragDrop,false);Q("p5filetable").addEventListener("dragover",p5fileDragOver,false);Q("p5filetable").addEventListener("dragleave",p5fileDragLeave,false);Q("p13filetable").addEventListener("drop",p13fileDragDrop,false);Q("p13filetable").addEventListener("dragover",p13fileDragOver,false);Q("p13filetable").addEventListener("dragleave",p13fileDragLeave,false);setInterval(updateDeviceTimeline,120000);var g=localStorage.getItem("desktopsettings");if(g!=null){desktopsettings=JSON.parse(g)}g=localStorage.getItem("multidesktopsettings");if(g!=null){multidesktopsettings=JSON.parse(g)}applyDesktopSettings();var h="";for(var a=1;a<27;a++){h+="<option value='"+a+"'>Ctrl-"+String.fromCharCode(64+a)+" ("+a+")</option>"}QH("specialkeylist",h)}function toggleFullScreen(a){if(a===1){webPageFullScreen=!webPageFullScreen;putstore("webPageFullScreen",webPageFullScreen)}if(webPageFullScreen==false){QS("container").width="960px";QS("container")["border-right"]="1px solid #b7b7b7";QS("container")["border-left"]="1px solid #b7b7b7";QS("container")["min-width"]="960px";QS("column_l").width="930px"}else{QS("container").width="100%";QS("container")["border-right"]="0";QS("container")["border-left"]="0";QS("container")["min-width"]="700px";QS("column_l").width="calc(100% - 30px)"}drawDeviceTimeline()}function getNodeFromId(b){for(var a in nodes){if(nodes[a]._id==b){return nodes[a]}}return null}function reload(){window.location.href=window.location.href}function onStateChanged(a,b){if(b==0){setDialogMode(0);go(0);powerTimeline=null;powerTimelineReq=null;powerTimelineNode=null;powerTimelineUpdate=null;deleteAllNotifications();hideContextMenu();QV("verifyEmailId2",false);QV("logoutControl",false);setTimeout(serverPoll,5000)}else{if(b==2){meshserver.send({action:"meshes"});meshserver.send({action:"nodes"});meshserver.send({action:"files"})}}}function serverPoll(){xdr=null;try{xdr=new XDomainRequest()}catch(a){}if(!xdr){xdr=new XMLHttpRequest()}xdr.open("HEAD",window.location.href);xdr.timeout=15000;xdr.onload=function(){reload()};xdr.onerror=xdr.ontimeout=function(){setTimeout(serverPoll,10000)};xdr.send()}function detectClickOnce(){for(var a in window.navigator.mimeTypes){if(window.navigator.mimeTypes[a].type=="application/x-ms-application"){return true}}var b=window.navigator.userAgent.toUpperCase();return(b.indexOf(".NET CLR 3.5")>=0)||(b.indexOf("(WINDOWS NT ")>=0)}function updateSiteAdmin(){var a="{{{noServerBackup}}}";var b=userinfo.siteadmin;if(a==1){b&=4294967290}QV("p2AccountActions",(features&4)==0);QV("p2ServerActions",b&5);QV("p2ServerActionsBackup",b&1);QV("p2ServerActionsRestore",b&4);QV("p2ServerActionsVersion",b&16);QV("MainMenuMyFiles",b&8);if(((b&8)==0)&&(xxcurrentView==5)){setDialogMode(0);go(1)}if(currentNode!=null){gotoDevice(currentNode._id,xxcurrentView,true)}if((userinfo.siteadmin&2)!=0){if(users==null){meshserver.send({action:"users"})}if(wssessions==null){meshserver.send({action:"wssessioncount"})}}else{users=null;wssessions=null;updateUsers();if(xxcurrentView==4||((xxcurrentView>=30)&&(xxcurrentView<40))){setDialogMode(0);go(1);currentUser=null}}meshserver.send({action:"events",limit:parseInt(p3limitdropdown.value)});QV("p2deleteall",userinfo.siteadmin==4294967295)}function onMessage(t,g){switch(g.action){case"serverinfo":serverinfo=g.serverinfo;break;case"userinfo":userinfo=g.userinfo;updateSiteAdmin();QV("verifyEmailId",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true));QV("verifyEmailId2",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true));break;case"users":users={};for(var f in g.users){users[g.users[f]._id]=g.users[f]}updateUsers();break;case"wssessioncount":wssessions=g.wssessions;updateUsers();break;case"meshes":meshes={};for(var f in g.meshes){meshes[g.meshes[f]._id]=g.meshes[f]}updateMeshes();updateDevices();break;case"files":filetree=setupBackPointers(g.filetree);updateFiles();d3updatefiles();break;case"nodes":nodes=[];for(var f in g.nodes){for(var h in g.nodes[f]){if(!meshes[f]){console.log("Invalid mesh (1): "+f);continue}g.nodes[f][h].namel=g.nodes[f][h].name.toLowerCase();if(g.nodes[f][h].rname){g.nodes[f][h].rnamel=g.nodes[f][h].rname.toLowerCase()}else{g.nodes[f][h].rnamel=g.nodes[f][h].namel}g.nodes[f][h].meshnamel=meshes[f].name.toLowerCase();g.nodes[f][h].meshid=f;g.nodes[f][h].state=(g.nodes[f][h].state)?(g.nodes[f][h].state):0;g.nodes[f][h].desc=g.nodes[f][h].desc;if(!g.nodes[f][h].icon){g.nodes[f][h].icon=1}g.nodes[f][h].ident=++nodeShortIdent;nodes.push(g.nodes[f][h])}}onSortSelectChange();onSearchInputChanged();updateDevices();refreshMap(false,true);if(xxcurrentView==0){if("{{viewmode}}"!=""){go(parseInt("{{viewmode}}"))}else{setDialogMode(0);go(1)}}if("{{currentNode}}"!=""){gotoDevice("{{currentNode}}",parseInt("{{viewmode}}"))}break;case"powertimeline":if(g.nodeid!=powerTimelineReq){break}powerTimelineNode=g.nodeid;powerTimeline=g.timeline;powerTimelineUpdate=Date.now()+300000;if(currentNode._id==g.nodeid){drawDeviceTimeline()}break;case"msg":if(g.nodeid!=null){var d=-1;for(var c in nodes){if(nodes[c]._id==g.nodeid){d=c;break}}if(d!=-1){if(g.type=="console"){p15consoleReceive(nodes[d],g.value)}else{if(g.type=="notify"){var h={text:g.value};if(g.nodeid!=null){h.nodeid=g.nodeid}if(g.tag!=null){h.tag=g.tag}addNotification(h)}else{if(g.type=="ps"){showDeskToolsProcesses(g)}}}}}else{if(g.type=="notify"){var h={text:g.value};if(g.tag!=null){h.tag=g.tag}addNotification(h)}}break;case"getnetworkinfo":if((currentNode._id==g.nodeid)&&(xxdialogMode==2)&&(xxdialogTag=="if"+g.nodeid)){if(g.netif==null){QH("d2netinfo","No network interface information available for this device.")}else{var w="<div style=width:100%;max-height:260px;overflow-x:hidden;overflow-y:auto;line-height:160%>";w+=addHtmlValue2("Last Updated",new Date(g.updateTime).toLocaleString());if(currentNode.publicip){w+=addHtmlValue2("Public IP address",currentNode.publicip)}for(var c in g.netif){var j=g.netif[c];w+="<hr />";if(j.name){w+=addHtmlValue2("Name","<b>"+EscapeHtml(j.name)+"</b>")}if(j.desc){w+=addHtmlValue2("Description",EscapeHtml(j.desc).replace("(R)","®").replace("(r)","®"))}if(j.dnssuffix){w+=addHtmlValue2("DNS suffix",EscapeHtml(j.dnssuffix))}if(j.mac){w+=addHtmlValue2("MAC address",EscapeHtml(j.mac.toUpperCase()))}if(j.v4addr){w+=addHtmlValue2("IPv4 address",EscapeHtml(j.v4addr))}if(j.v4mask){w+=addHtmlValue2("IPv4 mask",EscapeHtml(j.v4mask))}if(j.v4gateway){w+=addHtmlValue2("IPv4 gateway",EscapeHtml(j.v4gateway))}if(j.gatewaymac){w+=addHtmlValue2("Gateway MAC",EscapeHtml(j.gatewaymac))}}w+="</div>";QH("d2netinfo",w)}}break;case"serverversion":if((xxdialogMode==2)&&(xxdialogTag=="MeshCentralServerUpdate")){var w="<div style=width:100%;max-height:260px;overflow-x:hidden;overflow-y:auto;line-height:160%>";if(!g.current){g.current="Unknown"}if(!g.latest){g.latest="Unknown"}w+=addHtmlValue2("Current Version","<b>"+EscapeHtml(g.current)+"</b>");w+=addHtmlValue2("Latest Version","<b>"+EscapeHtml(g.latest)+"</b>");w+="</div>";if(g.current==g.latest){setDialogMode(2,"MeshCentral Version",1,null,w)}else{setDialogMode(2,"MeshCentral Version",3,server_showVersionDlgEx,w+"<br /><input id=d2updateCheck type=checkbox onclick=server_showVersionDlgUpdate() /> Check and click OK to start server self-update.");server_showVersionDlgUpdate()}}break;case"events":if((g.nodeid!=null)&&(g.nodeid==currentNode._id)){currentDeviceEvents=g.events;devevents_update()}else{if((g.user!=null)&&(g.user==currentUser.name)){currentUserEvents=g.events;userEvents_update()}else{events=g.events;events_update()}}break;case"getcookie":if(g.tag=="clickonce"){var a="{{{serverRedirPort}}}"==""?"{{{serverPublicPort}}}":"{{{serverRedirPort}}}";rdpurl="http://"+window.location.hostname+":"+a+"/clickonce/minirouter/MeshMiniRouter.application?WS=wss%3A%2F%2F"+window.location.hostname+"%2Fmeshrelay.ashx%3Fauth="+g.cookie+"&CH={{{webcerthash}}}&AP="+g.protocol+"&HOL=1";window.open(rdpurl,"_blank")}break;case"getNotes":var h=Q("d2devNotes");if(h&&(g.id==decodeURIComponent(h.attributes.noteid.value))){if(g.notes){QH("d2devNotes",decodeURIComponent(g.notes))}else{QH("d2devNotes","")}var s=h.attributes.ro.value=="true";if(s==false){h.removeAttribute("readonly");QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",true);focusTextBox("d2devNotes")}}break;case"event":if(!g.event.nolog){events.unshift(g.event);var b=parseInt(p3limitdropdown.value);while(events.length>b){events.pop()}events_update()}switch(g.event.action){case"accountcreate":case"accountchange":if(userinfo.name==g.event.account.name){var l=g.event.account.siteadmin?g.event.account.siteadmin:0;var p=userinfo.siteadmin?userinfo.siteadmin:0;if((g.event.account.quota!=userinfo.quota)||(((userinfo.siteadmin&8)==0)&&((g.event.account.siteadmin&8)!=0))){meshserver.send({action:"files"})}userinfo=g.event.account;if(p!=l){updateSiteAdmin()}QV("verifyEmailId",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true));QV("verifyEmailId2",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true))}if(users==null){break}users[g.event.account._id]=g.event.account;updateUsers();break;case"accountremove":if(users==null){break}delete users["user/{{{domain}}}/"+g.event.username.toLowerCase()];updateUsers();break;case"createmesh":if(g.event.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]!=null){meshes[g.event.meshid]={_id:g.event.meshid,name:g.event.name,mtype:g.event.mtype,desc:g.event.desc,links:g.event.links};updateMeshes();updateDevices();meshserver.send({action:"files"})}break;case"meshchange":if(meshes[g.event.meshid]==null){meshes[g.event.meshid]={_id:g.event.meshid,name:g.event.name,mtype:g.event.mtype,desc:g.event.desc,links:g.event.links};meshserver.send({action:"nodes"})}else{meshes[g.event.meshid].name=g.event.name;meshes[g.event.meshid].desc=g.event.desc;meshes[g.event.meshid].links=g.event.links;if(meshes[g.event.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]==null){if((xxcurrentView==20)&&(currentMesh==meshes[g.event.meshid])){go(2)}delete meshes[g.event.meshid];var k=[];for(var c in nodes){if(nodes[c].meshid!=g.event.meshid){k.push(nodes[c])}}nodes=k;if(xxcurrentView>=10&&xxcurrentView<20&¤tNode&¤tNode.meshid==g.event.meshid){setDialogMode(0);go(1)}}}updateMeshes();updateDevices();meshserver.send({action:"files"});if(xxcurrentView==20&¤tMesh._id==g.event.meshid){p20updateMesh()}break;case"deletemesh":if(meshes[g.event.meshid]){delete meshes[g.event.meshid];updateMeshes();meshserver.send({action:"files"})}var k=[];for(var c in nodes){if(nodes[c].meshid!=g.event.meshid){k.push(nodes[c])}}nodes=k;updateDevices();if(xxcurrentView>=20&&xxcurrentView<30&¤tMesh._id==g.event.meshid){setDialogMode(0);go(2)}if(xxcurrentView>=10&&xxcurrentView<20&¤tNode&¤tNode.meshid==g.event.meshid){setDialogMode(0);go(1)}break;case"addnode":var o=g.event.node;if(!meshes[o.meshid]){break}o.namel=o.name.toLowerCase();if(o.rname){o.rnamel=o.rname.toLowerCase()}else{o.rnamel=o.namel}o.meshnamel=meshes[o.meshid].name.toLowerCase();o.state=0;if(!o.icon){o.icon=1}o.ident=++nodeShortIdent;nodes.push(o);onSortSelectChange();onSearchInputChanged();updateDevices();updateMapMarkers();break;case"removenode":var d=-1;for(var c in nodes){if(nodes[c]._id==g.event.nodeid){d=c;break}}if(d!=-1){var o=nodes[d];if(currentNode==o){if(xxcurrentView>=10&&xxcurrentView<20){setDialogMode(0);go(1)}delete currentNode}nodes.splice(d,1);updateDevices();updateMapMarkers()}break;case"changenode":var d=-1;for(var c in nodes){if(nodes[c]._id==g.event.nodeid){d=c;break}}if(d!=-1){var o=nodes[d];o.name=g.event.node.name;o.rname=g.event.node.rname;o.host=g.event.node.host;o.desc=g.event.node.desc;o.publicip=g.event.node.publicip;o.iploc=g.event.node.iploc;o.wifiloc=g.event.node.wifiloc;o.gpsloc=g.event.node.gpsloc;o.tags=g.event.node.tags;o.userloc=g.event.node.userloc;if(g.event.node.agent!=null){if(o.agent==null){o.agent={}}if(g.event.node.agent.ver!=null){o.agent.ver=g.event.node.agent.ver}if(g.event.node.agent.id!=null){o.agent.id=g.event.node.agent.id}if(g.event.node.agent.caps!=null){o.agent.caps=g.event.node.agent.caps}if(g.event.node.agent.core!=null){o.agent.core=g.event.node.agent.core}else{if(o.agent.core){delete o.agent.core}}o.agent.tag=g.event.node.agent.tag}if(g.event.node.intelamt!=null){if(o.intelamt==null){o.intelamt={}}if(g.event.node.intelamt.host!=null){o.intelamt.user=g.event.node.intelamt.host}if(g.event.node.intelamt.user!=null){o.intelamt.user=g.event.node.intelamt.user}if(g.event.node.intelamt.tls!=null){o.intelamt.tls=g.event.node.intelamt.tls}if(g.event.node.intelamt.ver!=null){o.intelamt.ver=g.event.node.intelamt.ver}if(g.event.node.intelamt.state!=null){o.intelamt.state=g.event.node.intelamt.state}}o.namel=o.name.toLowerCase();if(o.rname){o.rnamel=o.rname.toLowerCase()}else{o.rnamel=o.namel}if(g.event.node.icon){o.icon=g.event.node.icon}onSortSelectChange(true);drawNotifications();refreshDevice(o._id);updateMapMarkers();if((currentNode==o)&&(xxdialogMode!=null)&&(xxdialogTag=="@xxmap")){p10showNodeLocationDialog()}}break;case"nodeconnect":var d=-1;for(var c in nodes){if(nodes[c]._id==g.event.nodeid){d=c;break}}if(d!=-1){var o=nodes[d];o.conn=g.event.conn;o.pwr=g.event.pwr;updateDevices();updateMapMarkers();refreshDevice(o._id)}break;case"wssessioncount":if(wssessions!=null){if(g.event.count==0&&wssessions["user/{{{domain}}}/"+g.event.username.toLowerCase()]){delete wssessions["user/{{{domain}}}/"+g.event.username.toLowerCase()]}else{wssessions["user/{{{domain}}}/"+g.event.username.toLowerCase()]=g.event.count}updateUsers()}break;case"clearevents":events=[];events_update();break;case"login":if(users!=null&&users["user/{{{domain}}}/"+g.event.username.toLowerCase()]){users["user/{{{domain}}}/"+g.event.username.toLowerCase()].login=g.event.time}break;case"scanamtdevice":if((xxdialogMode==null)||(!Q("dp1range"))||(Q("dp1range").value!=g.event.range)){return}var w="";if(g.event.results==null){w="<div style=width:100%;text-align:center;margin-top:12px>Unable to scan this address range.</div><div style=width:100%;text-align:center;margin-top:12px;color:gray;line-height:1.5>Sample IP range values<br />192.168.0.100<br />192.168.1.0/24<br />192.167.0.1-192.168.0.100</div>"}else{amtScanResults=g.event.results;for(var c in g.event.results){var q=g.event.results[c],u=q.hostname;if(u.length>20){u=u.substring(0,20)+"..."}var v='<b title="'+EscapeHtml(q.hostname)+'">'+EscapeHtml(u)+"</b> - v"+q.ver;if(q.state==2){if(q.tls==1){v+=" with TLS."}else{v+=" without TLS."}}else{v+=" not activated."}w+='<div style=width:100%;margin-bottom:2px;background-color:lightgray><div style=padding:4px><div style=display:inline-block;margin-right:5px><input class=DevScanCheckbox name=dp1checkbox tag="'+EscapeHtml(c)+'" type=checkbox onclick=addAmtScanToMeshCheckbox() /></div><div class=j1 style=display:inline-block></div><div style=display:inline-block;margin-left:5px;overflow-x:auto;white-space:nowrap>'+v+"</div></div></div>"}if(w==""){w="<div style=width:100%;text-align:center;margin-top:12px>Scan returned no results.</div><div style=width:100%;text-align:center;margin-top:12px;color:gray;line-height:1.5>Sample IP range values<br />192.168.0.100<br />192.168.1.0/24<br />192.167.0.1-192.168.0.100</div>"}}QH("dp1results",w);QE("dp1range",true);QE("dp1rangebutton",true);break;case"notify":var h={text:g.event.value};if(g.event.tag!=null){h.tag=g.event.tag}addNotification(h);break}break}}function onRealNameCheckBox(){showRealNames=Q("RealNameCheckBox").checked;putstore("showRealNames",showRealNames?1:0);onSortSelectChange();return}function onDeviceViewChange(){putstore("deviceView",Q("viewselect").value);putstore("viewsize",Q("sizeselect").value);updateDevices()}function ondockeypress(a){if(!xxdialogMode&&xxcurrentView==11&&desktop&&Q("DeskControl").checked){return desktop.m.handleKeys(a)}if(!xxdialogMode&&xxcurrentView==12&&terminal&&terminal.State==3){return terminal.m.TermHandleKeys(a)}if(!xxdialogMode&&xxcurrentView==15){return agentConsoleHandleKeys(a)}if(!xxdialogMode&&xxcurrentView==4){if(a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}var b=0;if(a.key){if(a.key.length===1&&userSearchFocus==0){Q("UserSearchInput").value=((Q("UserSearchInput").value+a.key));b=1}if(a.keyCode==8&&userSearchFocus==0){var c=Q("UserSearchInput").value;Q("UserSearchInput").value=c.substring(0,c.length-1);b=1}if(a.keyCode==27){Q("UserSearchInput").value="";b=1}}else{if(a.charCode!=0&&userSearchFocus==0){Q("UserSearchInput").value=((Q("UserSearchInput").value+String.fromCharCode(a.charCode)));b=1}}if(b>0){if(b==1){onUserSearchInputChanged()}return haltEvent(a)}}if(xxdialogMode||xxcurrentView!=1){return}if(a.ctrlKey==true&&a.charCode==96){showRealNames=!showRealNames;Q("RealNameCheckBox").value=showRealNames;putstore("showRealNames",showRealNames?1:0);onSortSelectChange();return}if(a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}if(Q("viewselect").value<3){var b=0;if(a.key){if(a.key.length===1&&searchFocus==0){Q("SearchInput").value=((Q("SearchInput").value+a.key));b=1}if(a.keyCode==8&&searchFocus==0){var c=Q("SearchInput").value;Q("SearchInput").value=c.substring(0,c.length-1);b=1}if(a.keyCode==27){Q("SearchInput").value="";b=1}}else{if(a.charCode!=0&&searchFocus==0){Q("SearchInput").value=((Q("SearchInput").value+String.fromCharCode(a.charCode)));b=1}}if(b>0){if(b==1){onSearchInputChanged()}return haltEvent(a)}}if(Q("viewselect").value==3){if(a.key){if(a.key.length===1&&mapSearchFocus==0){Q("mapSearchLocation").value=((Q("mapSearchLocation").value+a.key));b=1}if(a.keyCode==27){Q("mapSearchLocation").value="";mapCloseSearchWindow();b=1}if(a.keyCode==13){getSearchLocation()}}else{if(a.charCode!=0&&mapSearchFocus==0){Q("mapSearchLocation").value=((Q("mapSearchLocation").value+String.fromCharCode(a.charCode)));b=1}}}}function ondockeydown(a){if(!xxdialogMode&&xxcurrentView==11&&desktop&&Q("DeskControl").checked){return desktop.m.handleKeyDown(a)}if(!xxdialogMode&&xxcurrentView==12&&terminal&&terminal.State==3){return terminal.m.TermHandleKeyDown(a)}if(!xxdialogMode&&xxcurrentView==13&&a.keyCode==116&&p13filetree!=null){haltEvent(a);return false}if(!xxdialogMode&&xxcurrentView==15){return agentConsoleHandleKeys(a)}if(!xxdialogMode&&xxcurrentView==4){if(a.keyCode===8&&userSearchFocus==0){var c=Q("UserSearchInput").value;Q("UserSearchInput").value=(c.substring(0,c.length-1));b=1}if(a.keyCode===27){Q("UserSearchInput").value="";b=1}if(b>0){if(b==1){onSearchInputChanged()}return haltEvent(a)}}if(xxdialogMode||xxcurrentView!=1||a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}var b=0;if(Q("viewselect").value<3){if(a.keyCode===8&&searchFocus==0){var c=Q("SearchInput").value;Q("SearchInput").value=(c.substring(0,c.length-1));b=1}if(a.keyCode===27){Q("SearchInput").value="";b=1}if(b>0){if(b==1){onSearchInputChanged()}return haltEvent(a)}}if(Q("viewselect").value==3){if(a.keyCode===8&&mapSearchFocus==0){var c=Q("mapSearchLocation").value;Q("mapSearchLocation").value=(c.substring(0,c.length-1));b=1}if(a.keyCode===27){Q("mapSearchLocation").value="";mapCloseSearchWindow();b=1}}}function ondockeyup(a){if(!xxdialogMode&&xxcurrentView==11&&desktop&&Q("DeskControl").checked){return desktop.m.handleKeyUp(a)}if(!xxdialogMode&&xxcurrentView==12&&terminal&&terminal.State==3){return terminal.m.TermHandleKeyUp(a)}if(!xxdialogMode&&xxcurrentView==13&&a.keyCode==116&&p13filetree!=null){p13folderup(9999);haltEvent(a);return false}if(!xxdialogMode&&xxcurrentView==4){if((a.keyCode===8&&searchFocus==0)||a.keyCode===27){return haltEvent(a)}}if(xxdialogMode&&a.keyCode==27){dialogclose(0)}if(xxdialogMode||xxcurrentView!=0||a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}if(Q("viewselect").value<3){if((a.keyCode===8&&searchFocus==0)||a.keyCode===27){return haltEvent(a)}}if(Q("viewselect").value==3){if((a.keyCode===8&&mapSearchFocus==0)||a.keyCode===27){return haltEvent(a)}}}var updateDevicesTimer=null;function updateDevices(){if(updateDevicesTimer!=null){return}updateDevicesTimer=setTimeout(updateDevicesEx,200)}var deviceHeaderId=0;var deviceHeaderCount;var deviceHeaders={};var oldviewmode=0;function updateDevicesEx(){if(updateDevicesTimer!=null){clearTimeout(updateDevicesTimer);updateDevicesTimer=null}var H="",a=0,g=null,f=0,k={},L=Q("viewselect").value,q={},o={};QV("xdevices",L<4);QV("xdevicesmap",L==4);QV("devListToolbar",L<3);QV("kvmListToolbar",L==3);QV("devMapToolbar",L==4);QV("devListToolbarSize",L==3);QV("NoMeshesPanel",meshcount==0);QV("devListToolbarView",(meshcount!=0)&&(nodes.length>0));QV("devListToolbarSort",(meshcount!=0)&&(nodes.length>0)&&(L<4));if((meshcount==0)||(nodes.length==0)){L=1}if(L==4){setTimeout(function(){if(xxmap.map!=null){xxmap.map.updateSize()}},200)}else{deviceHeaderId=0;deviceHeaderCount={};deviceHeaderTotal=0;deviceHeaders={};deviceHeadersTitles={};var w=[];if(sort==0){nodes.sort(meshSort)}else{if(sort==1){nodes.sort(powerSort)}else{if(sort==2){if(showRealNames==true){nodes.sort(deviceHostSort)}else{nodes.sort(deviceSort)}}}}var d=[],l=document.getElementsByClassName("DeviceCheckbox"),b=0;for(var s=0;s<l.length;s++){if(l[s].checked){d.push(l[s].value)}}if((oldviewmode<3)&&(L==3)){multiDesktopFilter=d}else{if((oldviewmode==3)&&(L<3)){d=multiDesktopFilter}}for(var s in nodes){if(nodes[s].v==false){continue}var z=meshes[nodes[s].meshid],B=z.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(B==null){continue}var C=B.rights;if((L==3)&&(z.mtype==1)){continue}if(sort==0){if(nodes[s].meshid!=g){deviceHeaderSet();var n="";if(meshes[nodes[s].meshid].mtype==1){n="<span class=devHeaderx>, Intel® AMT only</span>"}if((L==1)&&(g!=null)){if(a==2){H+="<td><div style=width:301px></div></td>"}if(H!=""){H+="</tr></table>"}}H+="<div class=DevSt style=width:100%;padding-top:4px><span style=float:right>";H+=getMeshActions(z,C);H+='</span><span id=MxMESH style=cursor:pointer onclick=gotoMesh("'+nodes[s].meshid+'")>'+EscapeHtml(meshes[nodes[s].meshid].name)+"</span>"+n+"<span id=DevxHeader"+deviceHeaderId+" class=devHeaderx></span></div>";g=nodes[s].meshid;k[g]=1;a=0}}else{if(sort==1){var G=nodes[s].pwr?nodes[s].pwr:0;if(G!==g){deviceHeaderSet();if((L==1)&&(g!==null)){if(a==2){H+="<td><div style=width:301px></div></td>"}if(H!=""){H+="</tr></table>"}}H+="<div class=DevSt style=width:100%;padding-top:4px><span>"+PowerStateStr2(nodes[s].pwr)+"</span><span id=DevxHeader"+deviceHeaderId+' class="devHeaderx"></span></div>';g=G;a=0}}else{if(sort==2){if(g==null){g="1"}}}}f++;var K=EscapeHtml(nodes[s].name);if(K.length==0){K="<i>None</i>"}if((nodes[s].rname!=null)&&(nodes[s].rname.length>0)){K+=" / "+EscapeHtml(nodes[s].rname)}var D=EscapeHtml(nodes[s].name);if(showRealNames==true&&nodes[s].rname!=null){D=EscapeHtml(nodes[s].rname)}if(D.length==0){D="<i>None</i>"}var t=nodes[s].icon;var F=NodeStateStr(nodes[s]);if((!nodes[s].conn)||(nodes[s].conn==0)){t+=" gray"}if(L==1){H+='<div id=devs style=display:inline-block;width:301px;height:50px;padding-top:1px;padding-bottom:1px><div style=width:22px;height:50%;float:left;padding-top:12px><input class="'+nodes[s].meshid+' DeviceCheckbox" onclick=p1updateInfo() value=devid_'+nodes[s]._id+" type=checkbox></div><div style=height:100%;cursor:pointer onclick=gotoDevice('"+nodes[s]._id+"')><div class=\"i"+t+'" style=width:50px;float:left></div><div style=height:100%><div class=g1></div><div class=e2><div class=e1 title="'+K+'">'+D+"</div><div>"+F+"</div></div><div class=g2></div></div></div></div>"}else{if(L==2){H+="<tr><td><div id=devs class=bar18 style=height:18px;width:100%;font-size:medium>";H+='<div style=width:22px;float:left;background-color:white><input class="'+nodes[s].meshid+' DeviceCheckbox" onclick=p1updateInfo() value=devid_'+nodes[s]._id+" type=checkbox></div>";H+="<div style=float:left;height:18px;width:18px;background-color:white onclick=gotoDevice('"+nodes[s]._id+"')><div class=j"+t+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";H+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";H+='<div style=cursor:pointer;font-size:14px title="'+K+"\" onclick=gotoDevice('"+nodes[s]._id+"')><span style=float:right>"+F+"</span><span style=width:300px>"+D+"</span></div></div></td></tr>"}else{if((L==3)&&(nodes[s].conn&1)&&((C&8)!=0)){if((multiDesktopFilter.length==0)||(multiDesktopFilter.indexOf("devid_"+nodes[s]._id)>=0)){H+="<div id=devs style=display:inline-block;margin:1px;background-color:lightgray;border-radius:5px;position:relative><div style=padding:3px;cursor:pointer onclick=gotoDevice('"+nodes[s]._id+"',11)>";H+='<div class="j'+t+'" style=width:16px;float:left></div> '+D+"</div>";H+="<span onclick=gotoDevice('"+nodes[s]._id+"')></span><div id=xkvmid_"+nodes[s]._id.split("/")[2]+"><div id=skvmid_"+nodes[s]._id.split("/")[2]+' style="position:absolute;color:white;left:5px;top:27px;text-shadow:0px 0px 5px #000;z-index:1000;cursor:default" onclick=toggleKvmDevice(\''+nodes[s]._id+"')>Disconnected</div></div>";H+="</div>";w.push(nodes[s]._id)}}}}if((sort==3)&&(H!="")){if(nodes[s].tags){for(var v in nodes[s].tags){var J=nodes[s].tags[v];if(q[J]==null){q[J]=H;o[J]=1}else{q[J]+=H;o[J]+=1}if(L==3){break}}}H=""}deviceHeaderTotal++;if(typeof deviceHeaderCount[nodes[s].state]=="undefined"){deviceHeaderCount[nodes[s].state]=1}else{deviceHeaderCount[nodes[s].state]++}}if(sort==3){var p=[];for(var s in q){p.push(s)}p.sort(function(c,j){return c.toLowerCase().localeCompare(j.toLowerCase())});for(var v in p){var s=p[v];H+="<div class=DevSt style=width:100%;padding-top:4px><span>"+s+'</span><span class="devHeaderx">, '+o[s]+" device"+((o[s]>1)?"s":"")+"</span></div>"+q[s]}}if((H=="")&&(meshcount>0)&&(Q("SearchInput").value!="")){if(sort==3){H='<div style="margin:30px">No devices are included in any groups, click on a device\'s "Groups" to add to a group.</div>'}else{H='<div style="margin:30px">No devices matching this search.</div>'}}if((L==1)&&(a==2)){H+="<td><div style=width:301px></div></td>"}if((sort==0)&&(Q("SearchInput").value=="")&&(L<3)){for(var s in meshes){var y=meshes[s],A=y.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(A!=null){var C=A.rights;if(k[y._id]==null){if((g!="")&&(H!="")){H+="</tr></table>"}H+="<table style=width:100%;padding-top:4px cellpadding=0 cellspacing=0><tr><td colspan=3 class=DevSt><span style=float:right>";H+=getMeshActions(y,C);H+='</span><span id=MxMESH style=cursor:pointer onclick=gotoMesh("'+y._id+'")>'+EscapeHtml(y.name)+"</span></td></tr><tr>";if(y.mtype==1){H+="<td><div style=padding:10px><i>No Intel® AMT devices in this mesh";if((C&4)!=0){H+=', <a style=cursor:pointer onclick=addDeviceToMesh("'+y._id+'")>add one</a>'}}if(y.mtype==2){H+="<td><div style=padding:10px><i>No devices in this mesh";if((C&4)!=0){H+=', <a style=cursor:pointer onclick=addAgentToMesh("'+y._id+'")>add one</a>'}}H+=".</i></div></td>";g=y._id;f++}}}}H+="</tr></table><div style=height:1px></div>";H+="<div style=border-top-style:solid;border-top-width:1px;border-top-color:#DDDDDD;cursor:pointer;font-size:10px>";if((L<3)&&(sort==0)&&(meshcount>0)){H+='<a onclick=account_createMesh() title="Create a new group of computers." style=cursor:pointer>Add Mesh</a> '}H+='<a onclick=p10showMeshCmdDialog(0) style=cursor:pointer title="Download MeshCmd, a command line tool that performs many functions.">MeshCmd</a></div>';H+="</div>";QH("xdevices",H);deviceHeaderSet();var l=document.getElementsByClassName("DeviceCheckbox"),b=0;for(var s=0;s<l.length;s++){l[s].checked=(d.indexOf(l[s].value)>=0)}for(var s in deviceHeaders){QH(s,deviceHeaders[s])}for(var s in deviceHeadersTitles){Q(s).title=deviceHeadersTitles[s]}p1updateInfo();if(L==3){var M=[{x:180,y:101},{x:302,y:169},{x:454,y:255}][Q("sizeselect").selectedIndex];for(var s in multiDesktop){multiDesktop[s].xxdelete=true}for(var s in w){var u=w[s],I=u.split("/")[2],h=multiDesktop[u];if(h!=null){h.m.CanvasId.setAttribute("style","background-color:black;width:"+M.x+"px;height:"+M.y+"px");Q("xkvmid_"+I).appendChild(h.m.CanvasId);delete h.xxdelete;QH("skvmid_"+I,["Disconnected","Connecting...","Setup...","",""][((h.m.State==null)?h.m.state:h.m.State)])}else{var E=getNodeFromId(u);if((desktopNode==E)&&(desktop!=null)){var a=desktop.m.CanvasId;a.setAttribute("id","kvmid_"+I);a.setAttribute("style","background-color:black;width:"+M.x+"px;height:"+M.y+"px");a.setAttribute("onclick","toggleKvmDevice('"+u+"')");a.removeAttribute("onmousedown");a.removeAttribute("onmouseup");a.removeAttribute("onmousemove");Q("xkvmid_"+I).appendChild(a);QH("skvmid_"+I,["Disconnected","Connecting...","Setup...","",""][((desktop.m.State==null)?desktop.m.state:desktop.m.State)]);if(desktop.m.SendCompressionLevel){desktop.m.SendCompressionLevel(1,multidesktopsettings.quality,multidesktopsettings.scaling,multidesktopsettings.framerate)}desktop.shortid=I;desktop.onStateChanged=onMultiDesktopStateChange;multiDesktop[u]=desktop;desktop=desktopNode=currentNode=null;QH("DeskParent",'<canvas id="Desk" width="640" height="200" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>')}else{var a=document.createElement("canvas");a.setAttribute("id","kvmid_"+I);a.setAttribute("width",640);a.setAttribute("height",200);a.setAttribute("oncontextmenu","return false");a.setAttribute("style","background-color:black;width:"+M.x+"px;height:"+M.y+"px");a.setAttribute("onclick","toggleKvmDevice('"+u+"')");try{Q("xkvmid_"+I).appendChild(a)}catch(m){}if(Q("autoConnectDesktopCheckbox").checked==true){setTimeout(function(){connectMultiDesktop(E,1)},100)}}}}for(var s in multiDesktop){if(multiDesktop[s].xxdelete==true){multiDesktop[s].Stop();delete multiDesktop[s]}}}else{disconnectAllKvmFunction();Q("autoConnectDesktopCheckbox").checked=false}}oldviewmode=L}function toggleKvmDevice(d){var c=getNodeFromId(d),a=meshes[c.meshid],b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&8)!=0){if(c.conn&1){connectMultiDesktop(c,1)}}}function autoConnectDesktops(){if(Q("autoConnectDesktopCheckbox").checked==true){connectAllKvmFunction()}}function connectAllKvmFunction(){for(var a in nodes){if(multiDesktop[nodes[a]._id]==null){toggleKvmDevice(nodes[a]._id)}}}function disconnectAllKvmFunction(){for(var a in multiDesktop){multiDesktop[a].Stop()}multiDesktop={}}function onMultiDesktopStateChange(a,c){try{QH("skvmid_"+a.shortid,["Disconnected","Connecting...","Setup...","",""][c])}catch(b){}}function showMultiDesktopSettings(){QV("d7amtkvm",false);QV("d7meshkvm",true);d7bitmapquality.value=multidesktopsettings.quality;d7bitmapscaling.value=multidesktopsettings.scaling;if(multidesktopsettings.framerate){d7framelimiter.value=multidesktopsettings.framerate}else{d7framelimiter.value=1000}setDialogMode(7,"Remote Desktop Settings",3,showMultiDesktopSettingsChanged)}function showMultiDesktopSettingsChanged(){multidesktopsettings.quality=d7bitmapquality.value;multidesktopsettings.scaling=d7bitmapscaling.value;multidesktopsettings.framerate=d7framelimiter.value;localStorage.setItem("multidesktopsettings",JSON.stringify(multidesktopsettings));for(var a in multiDesktop){multiDesktop[a].m.SendCompressionLevel(1,multidesktopsettings.quality,multidesktopsettings.scaling,multidesktopsettings.framerate)}}function connectMultiDesktop(c,a){var d=c._id,f=d.split("/")[2];var b=multiDesktop[d];if(b==null){if(Q("kvmid_"+f)==null){return}if(a==2){if((c.intelamt.user==null)||(c.intelamt.user=="")){return}b=CreateAmtRedirect(CreateAmtRemoteDesktop("kvmid_"+f));b.shortid=f;b.onStateChanged=onMultiDesktopStateChange;b.m.bpp=1;b.m.useZRLE=true;b.m.showmouse=true;b.Start(d,16994,"*","*",0);b.contype=2;multiDesktop[d]=b}else{if(a==1){b=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("kvmid_"+f),serverPublicNamePort);b.shortid=f;b.attemptWebRTC=attemptWebRTC;b.onStateChanged=onMultiDesktopStateChange;b.m.CompressionLevel=multidesktopsettings.quality;b.m.ScalingLevel=multidesktopsettings.scaling;b.m.FrameRateTimer=multidesktopsettings.framerate;b.Start(d);b.contype=1;multiDesktop[d]=b}}}else{b.Stop();delete multiDesktop[d]}}function getMeshActions(a,b){if((b&4)==0){return""}var c="";if((features&1024)==0){c+=' <a style=cursor:pointer;font-size:10px title="Add a new Intel® AMT computer that is located on the internet." onclick=addCiraDeviceToMesh("'+a._id+'")>Add CIRA</a>'}if(a.mtype==1){if((features&1)==0){c+=' <a style=cursor:pointer;font-size:10px title="Add a new Intel® AMT computer that is located on the local network." onclick=addDeviceToMesh("'+a._id+'")>Add Local</a>';c+=' <a style=cursor:pointer;font-size:10px title="Add a new Intel® AMT computer by scanning the local network." onclick=addAmtScanToMesh("'+a._id+'")>Scan Network</a>'}}if(a.mtype==2){c+=' <a style=cursor:pointer;font-size:10px title="Add a new computer to this mesh by installing the mesh agent." onclick=addAgentToMesh("'+a._id+'")>Add Agent</a>';if(features&64){c+=' <a style=cursor:pointer;font-size:10px title="Invite someone to install the mesh agent." onclick=inviteAgentToMesh("'+a._id+'")>Invite</a>'}}return c}function addDeviceToMesh(b){if(xxdialogMode){return}var a=meshes[b];var c="Add a new Intel® AMT device to mesh "+EscapeHtml(a.name)+".<br /><br />";c+=addHtmlValue("Device Name","<input id=dp1devicename style=width:230px maxlength=32 autocomplete=off onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />");c+=addHtmlValue("Hostname",'<input id=dp1hostname style=width:230px maxlength=32 autocomplete=off placeholder="Same as device name" onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />');c+=addHtmlValue("Username",'<input id=dp1username style=width:230px maxlength=32 autocomplete=off placeholder="admin" onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />');c+=addHtmlValue("Password","<input id=dp1password type=password style=width:230px autocomplete=off maxlength=32 onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />");c+=addHtmlValue("Security","<select id=dp1tls style=width:236px><option value=0>No TLS security</option><option value=1>TLS security required</option></select>");setDialogMode(2,"Add Intel® AMT device",3,addDeviceToMeshEx,c,b);validateDeviceToMesh();Q("dp1devicename").focus()}function addAmtScanToMesh(a){if(xxdialogMode){return}var b="Enter a range of IP addresses to scan for Intel AMT devices.<br /><br />";b+=addHtmlValue("IP Range",'<input id=dp1range style=width:184px value="192.168.1.0/24" onkeyup=addAmtScanToMeshKeyUp(event) /><input id=dp1rangebutton type=button value=Scan onclick=addAmtScanToMeshButton()></input>');b+='<div id=dp1results style="width:100%;height:200px;background-color:white;border:1px gray solid;overflow-y:scroll"></div>';setDialogMode(2,"Scan for Intel® AMT devices",3,addAmtScanToMeshEx,b,a);QE("idx_dlgOkButton",false);QH("dp1results","<div style=width:100%;text-align:center;margin-top:12px;color:gray;line-height:1.5>Sample IP range values<br />192.168.0.100<br />192.168.1.0/24<br />192.167.0.1-192.168.0.100</div>");focusTextBox("dp1range")}function addAmtScanToMeshKeyUp(a){if(a.keyCode==13){haltEvent(a);addAmtScanToMeshButton()}}function addAmtScanToMeshEx(b,h){var d=document.getElementsByClassName("DevScanCheckbox"),c=0;for(var f=0;f<d.length;f++){if(d[f].checked){var g=d[f].getAttribute("tag");var a=amtScanResults[g];meshserver.send({action:"addamtdevice",meshid:h,devicename:g,hostname:a.hostname,amtusername:"",amtpassword:"",amttls:a.tls})}}}function addAmtScanToMeshButton(){QE("dp1range",false);QE("dp1rangebutton",false);QH("dp1results","<div style=width:100%;text-align:center;margin-top:12px>Scanning...</div>");meshserver.send({action:"scanamtdevice",range:Q("dp1range").value})}function addAmtScanToMeshCheckbox(){var b=document.getElementsByClassName("DevScanCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked){a++}}QE("idx_dlgOkButton",a>0)}function addCiraDeviceToMesh(b){if(xxdialogMode){return}var a=meshes[b];var c=b.split("/")[2].replace(/\@/g,"X").replace(/\$/g,"X");var f="<select id=dlgAddCiraSel onclick=dlgAddCiraSelClick() style=width:230px><option value=0>MeshCommander Script</option><option value=1>Manual Username/Password</option>";if((features&16)==0){f+="<option value=2>Manual Certificate</option></select>"}var d="";d+=addHtmlValue("Setup Method",f);d+="<hr>";d+="<div id=dlgAddCira0>To add a new Intel® AMT device to mesh "+EscapeHtml(a.name)+" with CIRA, download the following script files and use <a href='http://meshcommander.com' target='_blank'>MeshCommander</a> to run the script to configure computers.<br /><br />";d+=addHtmlValue("Setup CIRA",'<a href="mescript.ashx?type=1&meshid='+c.substring(0,16)+'" target="_blank">cira_setup.mescript</a>');d+=addHtmlValue("Cleanup CIRA",'<a href="mescript.ashx?type=2" target="_blank">cira_clean.mescript</a>');d+="</div>";d+="<div id=dlgAddCira1 style=display:none>To add a new Intel® AMT device to mesh "+EscapeHtml(a.name)+" with CIRA, load the following certificate as trusted root within Intel AMT";if(serverinfo.mpspass){d+=" and authenticate to the server using this username and password.<br /><br />"}else{d+=" and authenticate to the server using this username and any password.<br /><br />"}d+=addHtmlValue("Root Certificate",'<a href="MeshServerRootCert.cer" target="_blank">Root Certificate File</a>');d+=addHtmlValue("Username",'<input style=width:230px readonly value="'+c.substring(0,16)+'" />');if(serverinfo.mpspass){d+=addHtmlValue("Password",'<input style=width:230px readonly value="'+EscapeHtml(serverinfo.mpspass)+'" />')}if(serverinfo!=null){d+=addHtmlValue("MPS Server",'<input style=width:230px readonly value="'+EscapeHtml(serverinfo.mpsname)+":"+serverinfo.mpsport+'" />')}d+="</div>";if((features&16)==0){d+="<div id=dlgAddCira2 style=display:none>To add a new Intel® AMT device to mesh "+EscapeHtml(a.name)+" with CIRA, load the following certificate as trusted root within Intel AMT, authenticate using a client certificate with the following common name and connect to the following server.<br /><br />";d+=addHtmlValue("Root Certificate",'<a href="MeshServerRootCert.cer" target="_blank">Root Certificate File</a>');d+=addHtmlValue("Organization",'<input style=width:230px readonly value="'+c+'" />');if(serverinfo!=null){d+=addHtmlValue("MPS Server",'<input style=width:230px readonly value="'+EscapeHtml(serverinfo.mpsname)+":"+serverinfo.mpsport+'" />')}d+="</div>"}setDialogMode(2,"Add Intel® AMT CIRA device",1,null,d)}function dlgAddCiraSelClick(){var a=Q("dlgAddCiraSel").value;QV("dlgAddCira0",a==0);QV("dlgAddCira1",a==1);QV("dlgAddCira2",a==2)}function checkEmail(c){var d=c.split("@");var b=((d.length==2)&&(d[0].length>0)&&(d[1].split(".").length>1)&&(d[1].length>2));if(b==true){var f=d[1].split(".");for(var a in f){if(f[a].length==0){b=false}}}return b}function inviteAgentToMesh(b){if(xxdialogMode){return}var a=meshes[b];var c="Invite someone to install the mesh agent. An email with be sent with the link to the mesh agent installation for "+EscapeHtml(a.name)+".<br /><br />";c+=addHtmlValue("E-Mail","<input id=agentInviteEmail style=width:240px onkeyup=validateAgentInvite()></input>");setDialogMode(2,"Invite Mesh Agent",3,performAgentInvite,c,b);validateAgentInvite()}function validateAgentInvite(){QE("idx_dlgOkButton",checkEmail(Q("agentInviteEmail").value))}function performAgentInvite(a,b){meshserver.send({action:"inviteAgent",meshid:b,email:Q("agentInviteEmail").value})}function addAgentToMesh(b){if(xxdialogMode){return}var a=meshes[b],f="";f+=addHtmlValue("Operating System","<select id=aginsSelect onchange=addAgentToMeshClick() style=width:236px><option value=0>Windows</option><option value=1>Linux</option><option value=2>Windows (UnInstall)</option><option value=3>Linux (UnInstall)</option></select>")+"<hr>";f+="<div id=agins_windows>To add a new computer to mesh "+EscapeHtml(a.name)+", download the mesh agent and install it the computer to manage. This agent has server and mesh information embedded within it.<br /><br />";f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=3&meshid='+b.split("/")[2]+'" target="_blank" title="32bit version of the MeshAgent">Windows (.exe)</a>');f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=4&meshid='+b.split("/")[2]+'" target="_blank" title="64bit version of the MeshAgent">Windows x64 (.exe)</a>');if(debugmode==true){f+=addHtmlValue("Settings File",'<a href="meshsettings?id='+b.split("/")[2]+'" target="_blank">'+EscapeHtml(a.name)+" settings (.msh)</a>")}f+="</div>";f+="<div id=agins_linux style=display:none>To add a computer to "+EscapeHtml(a.name)+" run the following command. Root credentials will be needed.<br />";f+="<textarea id=agins_linux_area rows=2 cols=20 readonly=readonly style=width:100%;resize:none;height:120px;overflow:scroll;font-size:12px readonly></textarea>";f+="</div>";f+='<div id=agins_windows_un style=display:none>To remove a mesh agent, download the file below, run it and click "uninstall".<br /><br />';f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=3" target="_blank" title="32bit version of the MeshAgent">Windows (.exe)</a>');f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=3" target="_blank" title="64bit version of the MeshAgent">Windows x64 (.exe)</a>');f+="</div>";f+="<div id=agins_linux_un style=display:none>To remove a mesh agent, run the following command. Root credentials will be needed.<br />";f+="<textarea id=agins_linux_area_un rows=2 cols=20 readonly=readonly style=width:100%;resize:none;height:120px;overflow:scroll;font-size:12px readonly></textarea>";f+="</div>";setDialogMode(2,"Add Mesh Agent",9,null,f);var d=serverinfo.name;if((d=="un-configured")||((features&2)!=0)){d=window.location.hostname}if(serverinfo.https==true){var c=(serverinfo.port==443)?"":(":"+serverinfo.port);Q("agins_linux_area").value="wget -q https://"+d+c+"/meshagents?script=1 --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh https://"+d+c+" '"+b.split("/")[2]+"'\r\n";Q("agins_linux_area_un").value="wget -q https://"+d+c+"/meshagents?script=1 --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh uninstall\r\n"}else{var c=(serverinfo.port==80)?"":(":"+serverinfo.port);Q("agins_linux_area").value="wget -q http://"+d+c+"/meshagents?script=1 -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh http://"+d+c+" '"+b.split("/")[2]+"'\r\n";Q("agins_linux_area_un").value="wget -q http://"+d+c+"/meshagents?script=1 -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh uninstall\r\n"}Q("aginsSelect").focus()}function addAgentToMeshClick(){var a=Q("aginsSelect").value;QV("agins_windows",a==0);QV("agins_linux",a==1);QV("agins_windows_un",a==2);QV("agins_linux_un",a==3)}function validateDeviceToMesh(){QE("idx_dlgOkButton",(Q("dp1devicename").value.length>0)&&(passwordcheck(Q("dp1password").value)))}function addDeviceToMeshEx(b,d){var a=Q("dp1username").value;if(a==""){a="admin"}var c=Q("dp1hostname").value;if(c==""){c=Q("dp1devicename").value}meshserver.send({action:"addamtdevice",meshid:d,devicename:Q("dp1devicename").value,hostname:c,amtusername:a,amtpassword:Q("dp1password").value,amttls:Q("dp1tls").value})}function deviceHeaderSet(){if(deviceHeaderId==0){deviceHeaderId=1;return}deviceHeaders["DevxHeader"+deviceHeaderId]=", "+deviceHeaderTotal+((deviceHeaderTotal==1)?" node":" nodes");deviceHeaderId++;deviceHeaderCount={};deviceHeaderTotal=0}var powerStateStrings=["",'<span title="Device is powered on.">Powered</span>','<span title="Device is in sleep state (S1).">Sleeping</span>','<span title="Device is in sleep state (S2).">Sleeping</span>','<span title="Device is in deep sleep state (S3).">Deep Sleep</span>','<span title="Device is in hibernating state (S4).">Hibernating</span>','<span title="Device is in powered off state (S5).">Soft-Off</span>','<span title="Device is detected but power state could not be obtained.">Present</span>'];var powerStateStrings2=["","Device is powered","Device is in sleep state (S1)","Device is in sleep state (S2)","Device is in deep sleep state (S3)","Device is hibernating (S4)","Device is in soft-off state (S5)","Device is present, but power state cannot be determined"];var powerColorTable=["#00000000","black","blue","blue","lightblue","blueviolet","darkgreen","lightseagreen","lightseagreen"];function NodeStateStr(a){var b=[];if(a.state>0&&a.state<powerStatetable.length){state.push(powerStatetable[a.state])}if(a.conn){if((a.conn&1)!=0){b.push('<span title="Mesh agent is connected and ready for use.">Agent</span>')}if((a.conn&2)!=0){b.push('<span title="Intel® AMT CIRA is connected and ready for use.">CIRA</span>')}if((a.conn&4)!=0){b.push('<span title="Intel® AMT is routable.">Intel® AMT</span>')}if((a.conn&8)!=0){b.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>')}}if((a.pwr!=null)&&(a.pwr!=0)){b.push(powerStateStrings[a.pwr])}return b.join(", ")}function PowerStateStr(a){if(a<powerStatetable.length){return powerStatetable[a]}return""}function PowerStateStr2(a){if((a!=0)&&(a<powerStatetable.length)){return powerStatetable[a]}return"Unknown"}function selectallButtonFunction(){var b=document.getElementsByClassName("DeviceCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked===true){a++}}for(var c=0;c<b.length;c++){b[c].checked=(a==0)}p1updateInfo()}function p1updateInfo(){var b=document.getElementsByClassName("DeviceCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked===true){a++}}if(a>0){QE("GroupActionButton",true);Q("SelectAllButton").value="Select None";QV("cxmgroupsplit",true);QV("cxmdesktop",true)}else{QE("GroupActionButton",false);Q("SelectAllButton").value="Select All";QV("cxmgroupsplit",false);QV("cxmdesktop",false)}}function groupActionFunction(){var a="Select an operation to perform on all selected devices. Actions will be performed only with proper rights.<br /><br />";a+=addHtmlValue("Operation","<select id=d2groupop style=float:right;width:250px><option value=100>Wake-up devices</option><option value=4>Sleep devices</option><option value=3>Reset devices</option><option value=2>Power off devices</option><option value=101>Delete devices</option></select>");setDialogMode(2,"Group Action",3,groupActionFunctionEx,a)}function getCheckedDevices(){var f=[],b=document.getElementsByClassName("DeviceCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked){if(b[c].value){var d=b[c].value.substring(6);if(f.indexOf(d)==-1){f.push(d)}}}}return f}function groupActionFunctionEx(){var a=Q("d2groupop").value;if(a==100){meshserver.send({action:"wakedevices",nodeids:getCheckedDevices()})}else{if(a==101){var b="Confirm delete selected devices(s)?<br /><br />";b+="<input id=d2check type=checkbox onchange=d2groupActionFunctionDelEx() />Confirm";setDialogMode(2,"Delete Nodes",3,groupActionFunctionDelEx,b);QE("idx_dlgOkButton",false)}else{meshserver.send({action:"poweraction",nodeids:getCheckedDevices(),actiontype:a})}}}function d2groupActionFunctionDelEx(){QE("idx_dlgOkButton",Q("d2check").checked)}function groupActionFunctionDelEx(){meshserver.send({action:"removedevices",nodeids:getCheckedDevices()})}function onSortSelectChange(a){sort=document.getElementById("sortselect").selectedIndex;if(!a){putstore("sort",sort)}updateDevicesEx()}function meshSort(c,d){if(c.meshnamel>d.meshnamel){return 1}if(c.meshnamel<d.meshnamel){return -1}if(c.meshid==d.meshid){if(showRealNames==true){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}else{if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}}return 0}function powerSort(c,f){var d=c.pwr?c.pwr:0;var g=f.pwr?f.pwr:0;if(d>g){return -1}if(d<g){return 1}if(d==g){if(showRealNames==true){if(c.rnamel>f.rnamel){return 1}if(c.rnamel<f.rnamel){return -1}return 0}else{if(c.namel>f.namel){return 1}if(c.namel<f.namel){return -1}return 0}}return 0}function deviceSort(c,d){if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}function deviceHostSort(c,d){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}function onSearchFocus(a){searchFocus=a}function onMapSearchFocus(a){mapSearchFocus=a}function onUserSearchFocus(a){userSearchFocus=a}function onConsoleFocus(a){consoleFocus=a}function onSearchInputChanged(){var h=Q("SearchInput").value.toLowerCase().trim();putstore("search",h);if(h==""){for(var a in nodes){nodes[a].v=true}}else{try{var c=h.split(/\s+/).join("|"),f=new RegExp(c);for(var a in nodes){nodes[a].v=(f.test(nodes[a].name.toLowerCase()))||(nodes[a].rnamel!=null&&f.test(nodes[a].rnamel.toLowerCase()));if((nodes[a].v==false)&&nodes[a].tags){for(var g in nodes[a].tags){if(f.test(nodes[a].tags[g].toLowerCase())){nodes[a].v=true;break}else{nodes[a].v=false}}}}}catch(b){for(var a in nodes){nodes[a].v=true}}}updateDevices()}var contextelement=null;function handleContextMenu(c){hideContextMenu();var d=(window.pageXOffset!==null)?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft;var f=(window.pageYOffset!==null)?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;var b=document.elementFromPoint(c.pageX-d,c.pageY-f);if(b&&b!=null&&b.id=="MxMESH"){contextelement=b;var a=document.getElementById("meshContextMenu");a.style.left=c.pageX+"px";a.style.top=c.pageY+"px";a.style.display="block"}else{while(b&&b!=null&&b.id!="devs"){b=b.parentElement}if(!b||b==null){return true}contextelement=b;var a=document.getElementById("contextMenu");a.style.left=c.pageX+"px";a.style.top=c.pageY+"px";a.style.display="block"}return haltEvent(c)}function cmaction(a){var b=contextelement.children[1].attributes.onclick.value;b=b.substring(12,b.length-2);if(a==1){gotoDevice(b,10)}if(a==2){gotoDevice(b,12)}if(a==3){gotoDevice(b,11)}if(a==4){gotoDevice(b,13)}if(a==5){gotoDevice(b,16)}if(a==6){gotoDevice(b,15)}if(a==7){Q("viewselect").value=3;Q("viewselect").onchange();Q("autoConnectDesktopCheckbox").checked=true;Q("autoConnectDesktopCheckbox").onclick()}}function cmmeshaction(a){var d=contextelement.attributes.onclick.value.substring(32,(32+69));var b=document.getElementsByClassName("DeviceCheckbox");if(a==1){for(var c=0;c<b.length;c++){if((b[c].attributes)&&(b[c].attributes["class"]["value"].substring(0,69)==d)){b[c].checked=true}}}if(a==2){for(var c=0;c<b.length;c++){if((b[c].attributes)&&(b[c].attributes["class"]["value"].substring(0,69)==d)){b[c].checked=false}}}p1updateInfo()}function hideContextMenu(){QV("contextMenu",false);QV("meshContextMenu",false);contextelement=null}var xxmap={map:null,contextmenu:null,activeInteractions:[],showindex:0,markersSource:null,markersLayer:null,mapLayer:null,mapView:null,};function updateMapMarkers(g){if((xxmap!=null)&&(xxmap.map==null)){try{loadmap()}catch(b){console.error("loadmap() exception",b)}}if(xxmap==null){return}var a=null;for(var d in nodes){try{var f=map_parseNodeLoc(nodes[d]);var c=xxmap.markersSource.getFeatureById(nodes[d]._id);if((f!=null)&&((nodes[d].meshid==g)||(g==null))){lat=f[0];lon=f[1];var h=f[2];if(a==null){a=[lat,lon,lat,lon,0]}else{if(lat<a[0]){a[0]=lat}if(lon<a[1]){a[1]=lon}if(lat>a[2]){a[2]=lat}if(lon>a[3]){a[3]=lon}}if(c==null){addFeature(nodes[d]);a[4]=1}else{updateFeature(nodes[d],c);c.setStyle(markerStyle(nodes[d],f[2]))}}else{if(c){xxmap.markersSource.removeFeature(c)}}}catch(b){console.error("updateMapMarkers() exception",b,JSON.stringify(nodes[d]))}}return a}var map_cm_popup=new ol.Overlay({element:Q("xmap-info-window"),positioning:"bottom-center",stopEvent:false});var map_cm_editMarker={text:"Modify node location",callback:function(a){modifyMarkerloc(a.data)}};var map_cm_clearMarker={text:"Remove node location",callback:function(a){meshserver.send({action:"changedevice",nodeid:a.data.a,userloc:[]})}};var map_cm_saveMarker={text:"Save node location",callback:function(a){saveMarkerloc(a.data)}};var map_cm_nodemenu_items=[{text:"General information",callback:function(a){if(a.data!=null){gotoDevice(a.data,10)}}},{text:"Desktop",callback:function(a){if(a.data!=null){gotoDevice(a.data,11)}}},{text:"Terminal",callback:function(a){if(a.data!=null){gotoDevice(a.data,12)}}},{text:"Intel® AMT",callback:function(a){if(a.data!=null){gotoDevice(a.data,14)}}},"-",{text:"Zoom-in to extent",callback:function(b){var a=b.data.getGeometry().getCoordinates();zoomToLocation(a,19)}},{text:"Zoom-out to extent",callback:function(b){var a=b.data.getGeometry().getCoordinates();zoomToLocation(a,2)}}];var contextmenu_items=[{text:"Refresh",callback:function(){refreshMap(true,true)}},{text:"Zoom to fit extent",callback:function(){zoomToFitExtent()}},{text:"Center map here",callback:function(a){xxmap.mapView.animate({center:a.coordinate})}},{text:"Place node here",callback:function(a){placeNode(a.coordinate)}}];function stringToIntHash(c){var a=0,b;for(b=0;b<c.length;b++){a=((a<<5)-a)+c.charCodeAt(b);a|=0}return a}function map_parseNodeLoc(b){var a=null,c=0;if(b.iploc){a=b.iploc;c=1}if(b.wifiloc){a=b.wifiloc;c=2}if(b.gpsloc){a=b.gpsloc;c=3}if(b.userloc){a=b.userloc;c=4}if((a==null)||(typeof a!="string")){return}a=a.split(",");if(c==1){return[parseFloat(a[0])+(stringToIntHash(b._id.substring(0,20))/100000000000),parseFloat(a[1])+(stringToIntHash(b._id.substring(20))/100000000000),c]}else{return[parseFloat(a[0]),parseFloat(a[1]),c]}}function loadmap(){if(xxmap==null){return}try{xxmap.markersSource=new ol.source.Vector();xxmap.markersLayer=new ol.layer.Vector({source:xxmap.markersSource});xxmap.mapLayer=new ol.layer.Tile({source:new ol.source.OSM()});xxmap.mapView=new ol.View({center:ol.proj.transform([0,0],"EPSG:4326","EPSG:3857"),zoom:2,minZoom:2,maxZoom:20,extent:ol.proj.transformExtent([-100000,-69.55,100000,69.55],"EPSG:4326","EPSG:3857")});xxmap.map=new ol.Map({target:"xdevicesmap",layers:[xxmap.mapLayer,xxmap.markersLayer],view:xxmap.mapView});xxmap.map.addOverlay(map_cm_popup);xxmap.map.on("click",function(b){var c=xxmap.map.forEachFeatureAtPixel(b.pixel,function(g,h){return g});if(c){var f=c.getId();if(f!=null){gotoDevice(f,10)}else{var d=getCorrespondingFeature(c);gotoDevice(d.getId(),10)}}});xxmap.map.on("pointermove",function(c){var d=xxmap.map.forEachFeatureAtPixel(c.pixel,function(g,h){return g});if(d){xxmap.map.getTargetElement().style.cursor="pointer";var b=d.getGeometry().getCoordinates();map_cm_popup.setPosition(b);featid=d.getId();if(featid){QH("xmap-info-window",d.get("name"))}else{var f=getCorrespondingFeature(d);QH("xmap-info-window",f.get("name"))}}else{xxmap.map.getTargetElement().style.cursor="";QH("xmap-info-window","")}});contextmenu=new ContextMenu({width:160,defaultItems:false,items:contextmenu_items});contextmenu.on("open",function(b){var d=xxmap.map.forEachFeatureAtPixel(b.pixel,function(g,h){return g});xxmap.contextmenu.clear();if(d){var c=d.getId();if(c){addContextMenuItems(d)}else{var f=getCorrespondingFeature(d);if(f){addContextMenuItems(f)}else{xxmap.contextmenu.extend(contextmenu_items)}}}else{xxmap.contextmenu.extend(contextmenu_items)}});if(xxmap.contextmenu==null){xxmap.contextmenu=contextmenu}xxmap.map.addControl(xxmap.contextmenu)}catch(a){QV("viewselectmapoption",false);xxmap=null}}function addFeature(g,c,f){var a=getModifiedFeature(g._id);if(a){xxmap.markersSource.addFeature(a)}else{if(!c&&!f){var d=map_parseNodeLoc(g);c=d[0];f=d[1]}if(f>180){f=180-f;meshserver.send({action:"changedevice",nodeid:g._id,userloc:[c,f]})}if((c<90)&&(c>-90)&&(f<180)&&(f>-180)){var b=new ol.Feature({geometry:new ol.geom.Point(ol.proj.transform([f,c],"EPSG:4326","EPSG:3857")),name:g.name,status:g.conn,lat:c,lon:f});b.setId(g._id);b.setStyle(markerStyle(g));xxmap.markersSource.addFeature(b)}}}function removeFeature(b){var a=xxmap.markersSource.getFeatureById(b._id);if(a){xxmap.markersSource.removeFeature(a)}}function updateFeature(d,a){if(d.conn!=a.get("status")){a.set("status",d.conn);a.setStyle(markerStyle(d))}var b=map_parseNodeLoc(d);lat=b[0];lon=b[1];if((lat!=a.get("lat"))||(lon!=a.get("lon"))){a.set("lat",lat);a.set("lon",lon);var c=ol.proj.transform([parseFloat(lon),parseFloat(lat)],"EPSG:4326","EPSG:3857");a.getGeometry().setCoordinates(c)}if(d.name!=a.get("name")){a.set("name",d.name)}}function modifyMarkerloc(c){var b=c.getId();if(b){c.setStyle(markerStyle(getNodeFromId(c.a),4));if(!getActiveInteractions(c)){var a=new ol.interaction.Modify({features:new ol.Collection([c]),pixelTolerance:10});xxmap.activeInteractions.push({featureid:b,feature:c,interaction:a});xxmap.map.addInteraction(a)}}}function saveMarkerloc(d){var c=d.getId();if(c){var a=getActiveInteractions(d);if(a){xxmap.map.removeInteraction(a);removeInteraction(c);var b=d.getGeometry().getCoordinates();var f=ol.proj.transform(b,"EPSG:3857","EPSG:4326");if(f[0]>180){f[0]=180-f[0]}var g=[f[1],f[0]];meshserver.send({action:"changedevice",nodeid:c,userloc:g})}}}function markerStyle(b,d){if(d==null){d=0;if(b.iploc){d=1}if(b.wifiloc){d=2}if(b.gpsloc){d=3}if(b.userloc){d=4}}var f=["","-ip","-wifi","-gps","-user"];var a=connStateColor(b);var c=new ol.style.Style({image:new ol.style.Icon({color:a,anchor:[0.5,1],src:"images/mapmarker"+f[d]+".png"})});return[c]}function connStateColor(a){if(a.conn==1||a.conn==3||a.conn==5){return"#00ffdd"}return"#C70039"}function addContextMenuItems(a){if(getActiveInteractions(a)){map_cm_saveMarker.data=a;xxmap.contextmenu.push(map_cm_saveMarker)}else{map_cm_editMarker.data=a;xxmap.contextmenu.push(map_cm_editMarker);var b=getNodeFromId(a.a);if(b.userloc){map_cm_clearMarker.data=a;xxmap.contextmenu.push(map_cm_clearMarker)}}map_cm_nodemenu_items.forEach(function(c){if(c.text=="Zoom-in to extent"||c.text=="Zoom-out to extent"){c.data=a}else{c.data=a.getId()}});xxmap.contextmenu.extend(map_cm_nodemenu_items)}function getActiveInteractions(b){var a=b.getId();for(var c=0;c<xxmap.activeInteractions.length;c++){if(xxmap.activeInteractions[c].featureid==a){return xxmap.activeInteractions[c].interaction}}return false}function getModifiedFeature(a){if(a){for(var b=0;b<xxmap.activeInteractions.length;b++){if(xxmap.activeInteractions[b].featureid==a){return xxmap.activeInteractions[b].feature}}}return null}function removeInteraction(a){var c=-1;for(var b=0;b<xxmap.activeInteractions.length;b++){if(xxmap.activeInteractions[b].featureid===a){c=b;break}}if(c>=0){xxmap.activeInteractions.splice(c,1)}}function getCorrespondingFeature(f){var d=f.getGeometry().getCoordinates();for(var b=0;b<xxmap.activeInteractions.length;b++){var c=xxmap.activeInteractions[b].feature;var a=c.getGeometry().getCoordinates();if(a[0].toFixed(5)==d[0].toFixed(5)&&a[1].toFixed(5)==d[1].toFixed(5)){return c}}return null}function refreshMap(k,h){if(k){xxmap.map.setTarget(null);xxmap.map=null;xxmap.markersSource=null;xxmap.mapView=null;xxmap.mapLayer=null;xxmap.activeInteractions=[]}var a=updateMapMarkers();if((a!=null)&&(h||(a[4]==1))){var b=(a[0]+a[2])/2;var c=(a[1]+a[3])/2;var d=Math.max(Math.abs(a[0]-a[2]),Math.abs(a[1]-a[3]));var l=xxmap.map.getView();l.setCenter(ol.proj.transform([c,b],"EPSG:4326","EPSG:3857"));var f=360,g=-2;while(f>d){g++;f=f/2}l.setZoom(g)}}function placeNode(a){if(xxdialogMode){return}var c='<div style=margin-bottom:6px><label for=selectnode-search>Search</label>  <input type=text placeholder="Device name" id="selectnode-search" onchange=onPlaceNodeInputChange() onkeyup=onPlaceNodeInputChange() autocomplete=off style=width:120px></div><div id=placenode style="height:254px;overflow-y:auto;width:100%;margin:12px 1px 4px 1px;"><div id=noNodesMapPlace style=text-align:center;width:100%;display:none>No devices found.</div>';for(var b in nodes){c+="<div class=noselect id="+nodes[b]._id+"-rowid onclick=selectNodeToPlace(event,'"+nodes[b]._id+"') style=background-color:lightgray;margin-bottom:4px;border-radius:2px><input name=PlaceMapDeviceCheckbox id="+nodes[b]._id+"-checkid type=checkbox style=width:16px;display:inline />";c+="<div class=j"+nodes[b].icon+" style=width:16px;height:16px;margin-top:2px;margin-right:4px;display:inline-block></div><div style=width:16px;display:inline>"+nodes[b].name+"</div></div>"}setDialogMode(2,"Select a node to place",3,placeNodeEx,c+"</div>",a);onPlaceNodeInputChange()}function placeNodeEx(b,c){var d=document.getElementsByName("PlaceMapDeviceCheckbox");for(var g in d){if(d[g].checked){var h=getNodeFromId(d[g].id.substring(0,d[g].id.length-8));if(h){var f=xxmap.markersSource.getFeatureById(g);var j=ol.proj.transform(c,"EPSG:3857","EPSG:4326");var k=[j[1],j[0]];if(f){f.getGeometry().setCoordinates(c);var a=getActiveInteractions(f);if(a){saveMarkerloc(f)}else{meshserver.send({action:"changedevice",nodeid:h._id,userloc:k})}}else{meshserver.send({action:"changedevice",nodeid:h._id,userloc:k})}}}}}function onPlaceNodeInputChange(){updatePlaceNodeTable(Q("selectnode-search").value.trim().toLowerCase())}function updatePlaceNodeTable(d){var b=document.getElementsByName("PlaceMapDeviceCheckbox"),a=0;for(var c in nodes){var f=((nodes[c].namel.indexOf(d)>=0||d=="")||(nodes[c].rnamel!=null&&nodes[c].rnamel.indexOf(d)>=0));if(f){a++}QV(nodes[c]._id+"-rowid",f)}QV("noNodesMapPlace",a==0)}function selectNodeToPlace(b,f){if(b.target.name!="PlaceMapDeviceCheckbox"){var g=Q(f+"-checkid");g.checked=!g.checked}var c=document.getElementsByName("PlaceMapDeviceCheckbox"),a=0;for(var d in c){if(c[d].checked){a++}}QE("idx_dlgOkButton",a>0)}function addMeshOptions(a,b){}function meshOptionRmvMod(a,b){}function meshExists(){for(var a in meshes){if(meshes[a]){return true}}return false}function setMeshView(a){var c=Q("select-mesh");var b=c.selectedIndex;if(c[b].value==a){c[0].selected=true;onSelectMeshChange()}}function clearMeshOptions(){}function getSearchLocation(){try{var b=Q("mapSearchLocation").value.trim();if(b.length>0){var c=new XMLHttpRequest();c.onreadystatechange=function(){if(c.readyState==4&&c.status==200){formatSearchData(c.responseText)}};c.open("GET","https://nominatim.openstreetmap.org/search?q="+b+"&format=json",true);c.send()}}catch(a){}}function formatSearchData(c){try{QH("xmapSearchResults","");var d=JSON.parse(c),b=0,j='<div style="overflow-y:auto;width:100%;max-height:240px">';for(var h=0;h<d.length;h++){if(d[h].display_name&&d[h].boundingbox[0]&&d[h].boundingbox[1]&&d[h].boundingbox[2]&&d[h].boundingbox[3]){b++;var a=(h%2==0)?"F5F5F5":"EBEBEB";j+="<div style=cursor:pointer;padding:5px;background-color:#"+a+" onclick=mapGotoSelectedLocation(this)><div>"+d[h].display_name+"</div><div style=display:none>"+d[h].boundingbox[0]+"!#!"+d[h].boundingbox[1]+"!#!"+d[h].boundingbox[2]+"!#!"+d[h].boundingbox[3]+"</div></div>"}}j+="</div>";if(b==1){var g=[parseFloat(d[0].boundingbox[2]),parseFloat(d[0].boundingbox[0]),parseFloat(d[0].boundingbox[3]),parseFloat(d[0].boundingbox[1])];zoomToExtent(g)}else{if(b==0){j="<div style=width:200px>No location found.<div>"}QV("xmapSearchResultsDlg",true)}QH("xmapSearchResults",j)}catch(f){}}function mapGotoSelectedLocation(c){var d=c.children;var a=d[1].innerHTML.split("!#!");var b=[parseFloat(a[2]),parseFloat(a[0]),parseFloat(a[3]),parseFloat(a[1])];zoomToExtent(b);mapCloseSearchWindow()}function mapCloseSearchWindow(){QH("xmapSearchResults","");QV("xmapSearchResultsDlg",false)}function zoomToLocation(a,c){var b=xxmap.map.getView();b.setCenter(a);b.setZoom(c)}function zoomToFitExtent(){var b=xxmap.markersSource.getFeatures();if(b.length>0){var a=xxmap.markersSource.getExtent();xxmap.map.getView().fit(a,xxmap.map.getSize())}}function zoomToExtent(b){var a=ol.proj.transformExtent(b,ol.proj.get("EPSG:4326"),ol.proj.get("EPSG:3857"));xxmap.map.getView().fit(a,xxmap.map.getSize())}function refreshDevice(a){if(!currentNode||currentNode._id!=a){return}gotoDevice(a,xxcurrentView,true)}function getNodeRights(c){var b=getNodeFromId(c),a=meshes[b.meshid];return a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights}var currentNode;var powerTimelineNode=null;var powerTimelineReq=null;var powerTimelineUpdate=null;var powerTimeline=null;function getCurrentNode(){return currentNode}function gotoDevice(o,q,s){var n=getNodeFromId(o);var k=meshes[n.meshid];var l=k.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(!currentNode||currentNode._id!=n._id||s==true){currentNode=n;var m=EscapeHtml(n.name);if(m.length==0){m="<i>None</i>"}if((l&4)!=0){m='<span title="Click here to edit the server-side device name" onclick=showEditNodeValueDialog(0) style=cursor:pointer>'+m+' <img src="images/link5.png" /></span>'}QH("p10deviceName",m);QH("p11deviceName",m);QH("p12deviceName",m);QH("p13deviceName",m);QH("p14deviceName",m);QH("p15deviceName",m);QH("p16deviceName",m);var v="<table style=width:100%>";v+=addDeviceAttribute('<span title="The name of the administrative group this computer belong to">Mesh</span>','<a title="The name of the group this computer belong to" onclick=gotoMesh("'+n.meshid+'") style=cursor:pointer>'+EscapeHtml(meshes[n.meshid].name)+"</a>");if((n.rname!=null)&&(n.name!=n.rname)){v+=addDeviceAttribute('<span title="The name of this computer as set in the operating system">Name</span>','<span title="The name of this computer as set in the operating system">'+EscapeHtml(n.rname)+"</span>")}if((features&1)==0){if((l&4)!=0){if(n.host){v+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>"+EscapeHtml(n.host)+"</span>")}else{v+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer><i>None</i></span>")}}else{v+=addDeviceAttribute("Hostname",EscapeHtml(n.host))}}var g=n.desc?EscapeHtml(n.desc):"<i>None</i>";if((l&4)!=0){v+=addDeviceAttribute("Description","<span onclick=showEditNodeValueDialog(2) style=cursor:pointer>"+g+"</span>")}else{v+=addDeviceAttribute("Description",g)}var a=["Unknown","Windows 32bit console","Windows 64bit console","Windows 32bit service","Windows 64bit service","Linux 32bit","Linux 64bit","MIPS","XENx86","Android ARM","Linux ARM","OSX 32bit","Android x86","PogoPlug ARM","Android APK","Linux Poky x86-32bit","OSX 64bit","ChromeOS","Linux Poky x86-64bit","Linux NoKVM x86-32bit","Linux NoKVM x86-64bit","Windows MinCore console","Windows MinCore service","NodeJS","ARM-Linaro","ARMv6l / ARMv7l"];if((n.agent!=null)&&(n.agent.id!=null)&&(n.agent.ver!=null)){var t="";if(n.agent.id<=a.length){t=a[n.agent.id]}else{t=a[0]}if(n.agent.ver!=0){t+=" v"+n.agent.ver}v+=addDeviceAttribute("Mesh Agent",t)}if(n.intelamt!=null){var t="";var r={0:"Not Activated (Pre)",1:"Not Activated (In)",2:"Activated"};if(n.intelamt.ver!=null&&n.intelamt.state==null){t+="<i>Unknown State</i>, v"+n.intelamt.ver}else{if((n.intelamt.ver==null)&&(n.intelamt.state==2)){t+="<i>Activated</i>"}else{if((n.intelamt.ver==null)||(n.intelamt.state==null)){t+="<i>Unknown Version & State</i>"}else{t+=r[n.intelamt.state];if(n.intelamt.flags){if(n.intelamt.flags&2){t+=' <span title="Intel AMT is activated in Client Control Mode">CCM</span>'}else{if(n.intelamt.flags&4){t+=' <span title="Intel AMT is activated in Admin Control Mode">ACM</span>'}}}t+=(", v"+n.intelamt.ver)}}}if(n.intelamt.tls==1){t+=', <span title="Intel AMT is setup with TLS network security">TLS</span>'}if(n.intelamt.state==2){if(n.intelamt.user==null||n.intelamt.user==""){if((l&4)!=0){t+=', <i style=color:#FF0000;cursor:pointer title="Edit Intel® AMT credentials" onclick=editDeviceAmtSettings("'+n._id+'")>No Credentials</i>'}else{t+=", <i style=color:#FF0000>No Credentials</i>"}}t+=" ";if((l&4)!=0){t+='<img src=images/link4.png height=10 width=10 title="Edit Intel® AMT credentials" style=cursor:pointer onclick=editDeviceAmtSettings("'+n._id+'")>'}}v+=addDeviceAttribute("Intel® AMT",t)}if((n.agent!=null)&&(n.agent.tag!=null)&&(n.agent.tag!="mailto:")){var u=EscapeHtml(n.agent.tag);if(u.startsWith("mailto:")){u='<a href="'+u+'">'+u.substring(7)+"</a>"}v+=addDeviceAttribute("Agent Tag",u)}var c=n.conn;if(c&&c>1){var f=[];if((n.conn&1)!=0){f.push('<span title="Mesh agent is connected and ready for use.">Mesh Agent</span>')}if((n.conn&2)!=0){f.push('<span title="Intel® AMT CIRA is connected and ready for use.">Intel® AMT CIRA</span>')}if((n.conn&4)!=0){f.push('<span title="Intel® AMT is routable and ready for use.">Intel® AMT</span>')}if((n.conn&8)!=0){f.push('<span title="Mesh agent is reachable using another agent as relay.">Mesh Relay</span>')}v+=addDeviceAttribute("Connectivity",f.join(", "))}var h="<i>None</i>";if(n.tags!=null){h="";for(var j in n.tags){h+='<span style="background-color:lightgray;padding:3px;margin-right:4px;border-radius:5px">'+n.tags[j]+"</span>"}}v+=addDeviceAttribute("Groups","<span onclick=showEditNodeValueDialog(3) style=cursor:pointer>"+h+"</span>");v+="</table><br />";if((l&76)!=0){v+='<input type=button value=Actions title="Perform power actions on the device" onclick=deviceActionFunction() />'}v+='<input type=button value=Notes title="View notes about this device" onclick=showNotes('+((l&128)==0)+',"'+encodeURIComponent(n._id)+'") />';QH("p10html",v);drawDeviceTimeline();v="<div style=float:right;font-size:x-small>";if((l&4)!=0){v+='<a style=cursor:pointer onclick=p10showDeleteNodeDialog("'+n._id+'") title="Remove this device">Delete Device</a>'}v+="</div><div style=font-size:x-small>";if(k.mtype==2){v+='<a style=cursor:pointer onclick=p10showNodeNetInfoDialog("'+n._id+'") title="Show device network interface information">Interfaces</a> '}if(xxmap!=null){v+='<a style=cursor:pointer onclick=p10showNodeLocationDialog("'+n._id+'") title="Show device locations information">Location</a> '}if(((l&8)!=0)&&(k.mtype==2)){v+='<a style=cursor:pointer onclick=p10showMeshCmdDialog(1,"'+n._id+'") title="Traffic router used to connect to a device thru this server.">Router</a> '}if(((c&1)!=0)&&(clickOnce==true)&&(k.mtype==2)&&((l&8)!=0)){if((n.agent.id>0)&&(n.agent.id<5)){v+='<a style=cursor:pointer onclick=p10clickOnce("'+n._id+'","RDP2",3389) title="Requires Microsoft ClickOnce support in your browser.">RDP</a> '}if(n.agent.id>4){v+='<a style=cursor:pointer onclick=p10clickOnce("'+n._id+'","PSSH",22) title="Requires Microsoft ClickOnce support in your browser.">Putty</a> ';v+='<a style=cursor:pointer onclick=p10clickOnce("'+n._id+'","WSCP",22) title="Requires Microsoft ClickOnce support in your browser.">WinSCP</a> '}}v+="</div><br>";QH("p10html3",v);powerstate=PowerStateStr(n.state);if((c&1)!=0){if(powerstate.length>0){powerstate+="<br/>"}powerstate+='<span style=font-size:12px title="Agent connected">Agent connected</span>'}if((c&2)!=0){if(powerstate.length>0){powerstate+="<br/>"}powerstate+='<span style=font-size:12px title="Intel® AMT connected">Intel® AMT connected</span>'}if((c&4)!=0){if(powerstate.length>0){powerstate+="<br/>"}powerstate+='<span style=font-size:12px title="Intel® AMT detected">Intel® AMT detected</span>'}QH("MainComputerState",powerstate);Q("MainComputerImage").setAttribute("src","images/icons200-"+n.icon+"-1.png");Q("MainComputerImage").className=((!n.conn)||(n.conn==0)?"gray":"");setupTerminal();setupFiles();var d=((l&16)!=0);if(d){setupConsole()}else{if(q==15){q=10}}QV("MainDevDesktop",((k.mtype==1)||(n.agent==null)||(n.agent.caps==null)||((n.agent.caps&1)!=0))&&(l&8));QV("MainDevTerminal",((k.mtype==1)||(n.agent==null)||(n.agent.caps==null)||((n.agent.caps&2)!=0))&&(l&8));QV("MainDevFiles",((k.mtype==2)&&((n.agent==null)||(n.agent.caps==null)||((n.agent.caps&4)!=0)))&&(l&8));QV("MainDevAmt",(n.intelamt!=null)&&((n.intelamt.state==2)||(n.conn&2))&&(l&8));QV("MainDevConsole",(d&&(k.mtype==2)&&((n.agent==null)||(n.agent.caps==null)||((n.agent.caps&8)!=0)))&&(l&8));QV("p15uploadCore",(n.agent!=null)&&(n.agent.caps!=null)&&((n.agent.caps&16)!=0)&&(userinfo.siteadmin==4294967295));QH("p15coreName",((n.agent!=null)&&(n.agent.core!=null))?n.agent.core:"");var b=Q("p14iframe").contentWindow.getCurrentMeshNode();if((b!=null)&&(b._id!=currentNode._id)){Q("p14iframe").contentWindow.disconnect()}var p=((n.conn&6)!=0)?true:false;Q("p14iframe").contentWindow.setConnectionState(p);Q("p14iframe").contentWindow.setFrameHeight("650px");Q("p14iframe").contentWindow.setAuthCallback(updateAmtCredentials);QV("deskActionsBtn",(l&72)!=0);QV("termActionsBtn",(l&72)!=0);QV("filesActionsBtn",(l&72)!=0);if((powerTimelineNode!=currentNode._id)&&(powerTimelineReq!=currentNode._id)){QH("p10html2","");powerTimelineReq=currentNode._id;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}QV("DeskTools",false);showDeskToolsProcesses();refreshDeviceEvents()}setupDesktop();if(!q){q=10}go(q)}function showNotes(b,a){if(xxdialogMode){return}setDialogMode(2,"Notes",2,showNotesEx,"<textarea id=d2devNotes ro="+b+" noteid="+a+" readonly style=background-color:#fcf3cf;width:100%;height:200px;resize:none;overflow-y:scroll></textarea><span style=font-size:10px>Notes can be viewed and changed by other administrators.<span>",a);meshserver.send({action:"getNotes",id:decodeURIComponent(a)})}function showNotesEx(a,b){meshserver.send({action:"setNotes",id:decodeURIComponent(b),notes:encodeURIComponent(Q("d2devNotes").value)})}function deviceToastFunction(){if(xxdialogMode){return}setDialogMode(2,"Device Toast",3,deviceToastFunctionEx,"<textarea id=d2devToast style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>")}function deviceToastFunctionEx(){meshserver.send({action:"toast",nodeids:[currentNode._id],title:"MeshCentral",msg:Q("d2devToast").value})}function deviceActionFunction(){if(xxdialogMode){return}var a=meshes[currentNode.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var b="Select an operation to perform on this device.<br /><br />";var c="<select id=d2deviceop style=float:right;width:250px>";if((a&64)!=0){c+="<option value=100>Wake-up</option>"}if((a&8)!=0){c+="<option value=4>Sleep</option><option value=3>Reset</option><option value=2>Power off</option>"}c+="</select>";b+=addHtmlValue("Operation",c);setDialogMode(2,"Device Action",3,deviceActionFunctionEx,b)}function deviceActionFunctionEx(){var a=Q("d2deviceop").value;if(a==100){meshserver.send({action:"wakedevices",nodeids:[currentNode._id]})}else{meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:a})}}function updateAmtCredentials(a){var b=getNodeFromId(currentNode._id);if((a==true)||(b.intelamt.user==null)||(b.intelamt.user=="")){editDeviceAmtSettings(currentNode._id,updateAmtCredentialsEx)}else{Q("p14iframe").contentWindow.connectButtonfunctionEx()}}function updateAmtCredentialsEx(a,b){Q("p14iframe").contentWindow.connectButtonfunctionEx()}function updateDeviceTimeline(){if((meshserver.State!=2)||(powerTimelineNode==null)||(powerTimelineUpdate==null)||(currentNode==null)){return}if((powerTimelineNode==powerTimelineReq)&&(currentNode._id==powerTimelineNode)&&(powerTimelineUpdate<Date.now())){powerTimelineUpdate=null;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}}function drawDeviceTimeline(){if((currentNode==null)||(xxcurrentView<10)||(xxcurrentView>19)){return}var s=null,o=Date.now();if(currentNode._id==powerTimelineNode){s=powerTimeline}var f=new Date();f.setHours(0,0,0,0);f=new Date(f.getTime()-(1000*60*60*24*6));var u=f.getTime();var t=[];if(s!=null&&s.length>1){t.push([0,s[1],s[0]]);var c=s[1];for(var m=2;m<s.length;m+=2){var p=s[m],k=o;if(s.length>(m+1)){k=s[m+1]}t.push([c,c+k,p]);c=c+k}}var A="",b=1,h=new Date();var w=Q("masthead").offsetWidth-(160+9+9+14);h.setHours(0,0,0,0);for(var m=0;m<7;m++){var g="",q=h.getTime(),l=q+(1000*60*60*24);for(var n in t){var a=t[n];if(isTimeBlockInside(q,l,a[0],a[1])==true){var y=Math.max(q,a[0]);var r=Math.min(Math.min(l,a[1]),o);var z=Math.round(((r-y)*w)/86400000);if(z>0){var v=powerStateStrings2[a[2]]+" from "+new Date(y).toLocaleTimeString()+" to "+new Date(r).toLocaleTimeString()+".";g+='<div title="'+v+'" style=display:table-cell;width:'+z+"px;background-color:"+powerColor(a[2])+";height:16px></div>"}}}A+="<tr style="+(((b%2)==0)?"background-color:#DDD":"")+"><td><div> "+h.toLocaleDateString()+"<div></div></div></td><td><div>"+g+"</div></td></tr>";++b;h=new Date(h.getTime()-(1000*60*60*24))}QH("p10html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Power State</th></tr>'+A+"</tbody></table>")}function powerColor(a){if(a<powerColorTable.length){return powerColorTable[a]}return"yellow"}function isTimeBlockInside(d,c,b,a){if((b<d)&&(a>c)){return true}if((b>d)&&(b<c)){return true}if((a>d)&&(a<c)){return true}return false}function addDeviceAttribute(a,b){return"<tr><td class=style7 style=width:180px>"+a+"</td><td class=style9 style=max-width:400px;overflow:hidden>"+b+"</td></tr>"}function editDeviceAmtSettings(f,b){if(xxdialogMode){return}var g="",d=getNodeFromId(f),a=3,c=getNodeRights(f);if((c&4)==0){return}g+=addHtmlValue("Username",'<input id=dp10username style=width:230px maxlength=32 autocomplete=nope placeholder="admin" onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />');g+=addHtmlValue("Password","<input id=dp10password type=password style=width:230px autocomplete=nope maxlength=32 onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />");g+=addHtmlValue("Security","<select id=dp10tls style=width:236px><option value=0>No TLS security</option><option value=1>TLS security required</option></select>");if((d.intelamt.user!=null)&&(d.intelamt.user!="")){a=7}setDialogMode(2,"Edit Intel® AMT credentials",a,editDeviceAmtSettingsEx,g,{node:d,func:b});if((d.intelamt.user!=null)&&(d.intelamt.user!="")){Q("dp10username").value=d.intelamt.user}else{Q("dp10username").value="admin"}Q("dp10tls").value=d.intelamt.tls;validateDeviceAmtSettings()}function validateDeviceAmtSettings(){QE("idx_dlgOkButton",passwordcheck(Q("dp10password").value))}function editDeviceAmtSettingsEx(c,d){if(c==2){meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:"",pass:""}})}else{var b=Q("dp10username").value;if(b==""){b="admin"}var a=Q("dp10password").value;if(a==""){b=""}meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:b,pass:a,tls:Q("dp10tls").value}});d.node.intelamt.user=b;d.node.intelamt.tls=Q("dp10tls").value;if(d.func){setTimeout(d.func,300)}}}function p10showDeleteNodeDialog(a){if(xxdialogMode){return}var b='Are you sure you want to delete node "'+EscapeHtml(currentNode.name)+'"?<br /><br />';b+="<input id=p10check type=checkbox onchange=p10validateDeleteNodeDialog() />Confirm";setDialogMode(2,"Delete Node",3,p10showDeleteNodeDialogEx,b,a);p10validateDeleteNodeDialog()}function p10validateDeleteNodeDialog(){QE("idx_dlgOkButton",Q("p10check").checked)}function p10showDeleteNodeDialogEx(a,b){meshserver.send({action:"removedevices",nodeids:[b]})}function p10clickOnce(a,c,b){meshserver.send({action:"getcookie",nodeid:a,tcpport:b,tag:"clickonce",protocol:c})}var d2map=null;function p10showNodeLocationDialog(){if((xxdialogMode!=null)&&(xxdialogTag=="@xxmap")){setDialogMode(0)}else{if(xxdialogMode){return}}var m=[],n=["iploc","wifiloc","gpsloc","userloc"],a=null;for(var k in n){if(currentNode[n[k]]!=null){var j=currentNode[n[k]].split(","),h=parseFloat(j[0]),l=parseFloat(j[1]);if((h<90)&&(h>-90)&&(l<180)&&(l>-180)){var f=new ol.Feature({geometry:new ol.geom.Point(ol.proj.fromLonLat([l,h]))});f.setStyle(markerStyle(currentNode,parseInt(k)+1));m.push(f);if(a==null){a=[h,l,h,l,0]}else{if(h<a[0]){a[0]=h}if(l<a[1]){a[1]=l}if(h>a[2]){a[2]=h}if(l>a[3]){a[3]=l}}}}}var p=new ol.source.Vector({features:m});var o=new ol.layer.Vector({source:p});var q="<div id=d2map style=width:100%;height:300px></div>";setDialogMode(2,"Device Location",1,null,q,"@xxmap");var c=0,b=0,r=8;if(a!=null){var b=(a[0]+a[2])/2;var c=(a[1]+a[3])/2;var d=Math.max(Math.abs(a[0]-a[2]),Math.abs(a[1]-a[3]));var g=360,r=-2;while(g>d){r++;g=g/2}}if(m.length==1){r=8}d2map=new ol.Map({target:"d2map",interactions:ol.interaction.defaults({dragPan:false,mouseWheelZoom:false}),layers:[new ol.layer.Tile({source:new ol.source.OSM()}),o],view:new ol.View({center:ol.proj.fromLonLat([c,b]),zoom:r})})}function p10showNodeNetInfoDialog(){if(xxdialogMode){return}setDialogMode(2,"Network Interfaces",1,null,"<div id=d2netinfo>Loading...</div>","if"+currentNode._id);meshserver.send({action:"getnetworkinfo",nodeid:currentNode._id})}function p10showMeshCmdDialog(a,b){if(xxdialogMode){return}var d="<select id=aginsSelect onclick=meshCmdOsClick() style=width:236px>";d+="<option value=3>Windows (32bit)</option>";d+="<option value=4>Windows (64bit)</option>";d+="<option value=5>Linux x86 (32bit)</option>";d+="<option value=6>Linux x86 (64bit)</option>";d+="<option value=25>Linux ARM, Raspberry Pi (32bit)</option>";d+="</select>";var c="";if(a==0){c+="<div>MeshCmd is a command line tool that performs lots of different operations. The action file can optionally be downloaded and edited to provide server information and credentials.<br /><br />"}if(a==1){c+='<div>Download "meshcmd" with an action file to route traffic thru this server to this device. Make sure to edit meshaction.txt and add your account password or make any changes needed.<br /><br />'}c+=addHtmlValue("Operating System",d);c+=addHtmlValue("MeshCmd",'<a id=meshcmddownloadid href="meshagents?meshcmd=3" target="_blank"></a>');if(a==0){c+=addHtmlValue("Action File",'<a href="meshagents?meshaction=generic" target="_blank">MeshAction (.txt)</a>')}if(a==1){c+=addHtmlValue("Action File",'<a href="meshagents?meshaction=route&nodeid='+b+'" target="_blank">MeshAction (.txt)</a>')}c+="</div>";setDialogMode(2,["Download MeshCmd","Network Router"][a],9,null,c);meshCmdOsClick()}function meshCmdOsClick(){var a=Q("aginsSelect").value,b="";Q("meshcmddownloadid").href="meshagents?meshcmd="+a;if(a==3){b="MeshCmd (Win32 executable)"}if(a==4){b="MeshCmd (Win64 executable)"}if(a==5){b="MeshCmd (Linux x86, 32bit)"}if(a==6){b="MeshCmd (Linux x86, 64bit)"}if(a==25){b="MeshCmd (Linux ARM, 32bit)"}QH("meshcmddownloadid",b)}function p10showiconselector(){if(xxdialogMode){return}var a=meshes[currentNode.meshid];var b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&4)==0){return}var c="<br><div style=display:inline-block;width:40px></div>";c+="<div style=display:inline-block class=i1 onclick=p10setIcon(1)></div>";c+="<div style=display:inline-block class=i2 onclick=p10setIcon(2)></div>";c+="<div style=display:inline-block class=i3 onclick=p10setIcon(3)></div>";c+="<div style=display:inline-block class=i4 onclick=p10setIcon(4)></div>";c+="<div style=display:inline-block class=i5 onclick=p10setIcon(5)></div>";c+="<div style=display:inline-block class=i6 onclick=p10setIcon(6)></div><br><br>";setDialogMode(2,"Icon Selection",0,null,c);QV("id_dialogclose",true)}function p10setIcon(a){setDialogMode(0);meshserver.send({action:"changedevice",nodeid:currentNode._id,icon:a})}var showEditNodeValueDialog_modes=["Device Name","Hostname","Description","Groups"];var showEditNodeValueDialog_modes2=["name","host","desc","tags"];var showEditNodeValueDialog_modes3=["","","","Group1, Group2, Group3"];function showEditNodeValueDialog(a){if(xxdialogMode){return}var c=addHtmlValue(showEditNodeValueDialog_modes[a],'<input id=dp10devicevalue style=width:230px maxlength=64 placeholder="'+showEditNodeValueDialog_modes3[a]+'" onchange=p10editdevicevalueValidate('+a+",event) onkeyup=p10editdevicevalueValidate("+a+",event) />");setDialogMode(2,"Edit Device",3,showEditNodeValueDialogEx,c,a);var b=currentNode[showEditNodeValueDialog_modes2[a]];if(b==null){b=""}if(Array.isArray(b)){b=b.join(", ")}Q("dp10devicevalue").value=b;p10editdevicevalueValidate();Q("dp10devicevalue").focus()}function showEditNodeValueDialogEx(a,b){var c={action:"changedevice",nodeid:currentNode._id};c[showEditNodeValueDialog_modes2[b]]=Q("dp10devicevalue").value;meshserver.send(c)}function p10editdevicevalueValidate(b,a){var c=((b>1)||(Q("dp10devicevalue").value.length>0));QE("idx_dlgOkButton",c);if((a!=null)&&(c==true)&&(a.keyCode==13)){dialogclose(1)}}var desktopNode;function setupDesktop(){if((desktopNode!=currentNode)&&(desktop!=null)){desktop.Stop();delete desktop;desktopNode=null;desktop=null}if((desktopNode!=currentNode)||(desktop==null)){var b=multiDesktop[currentNode._id];if(b!=null){QH("DeskParent","");var a=b.m.CanvasId;a.setAttribute("id","Desk");a.setAttribute("style","width:100%;-ms-touch-action:none;margin-left:0px");a.setAttribute("onmousedown","dmousedown(event)");a.setAttribute("onmouseup","dmouseup(event)");a.setAttribute("onmousemove","dmousemove(event)");a.removeAttribute("onclick");Q("DeskParent").appendChild(a);desktop=b;if(desktop.m.SendCompressionLevel){desktop.m.SendCompressionLevel(1,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate)}desktop.onStateChanged=onDesktopStateChange;desktopNode=currentNode;onDesktopStateChange(desktop,desktop.State);delete multiDesktop[currentNode._id]}else{QH("DeskParent",'<canvas id=Desk width=640 height=200 style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');desktopNode=currentNode}Q("Desk").addEventListener("DOMMouseScroll",function(c){return dmousewheel(c)});Q("Desk").addEventListener("mousewheel",function(c){return dmousewheel(c)})}desktopNode=currentNode;updateDesktopButtons();if(!Q("Desk")["toBlob"]){QV("deskSaveBtn",false)}}function updateDesktopButtons(){var c=meshes[currentNode.meshid];var a=0;if(desktop!=null){a=desktop.State}QV("disconnectbutton1span",(a!=0));QV("connectbutton1span",(a==0)&&(c.mtype==2));QV("connectbutton1hspan",(a==0)&&((currentNode.intelamt!=null)&&(c.mtype==1||currentNode.intelamt.state==2)&&((currentNode.intelamt.ver!=null)||(c.mtype==1))));QV("d7amtkvm",(currentNode.intelamt!=null&&((currentNode.intelamt.ver!=null)||(c.mtype==1)))&&((a==0)||(desktop.contype==2)));QV("d7meshkvm",(c.mtype==2)&&((a==false)||(desktop.contype==1)));var d=((currentNode.conn&1)!=0);QE("connectbutton1",d);var b=((currentNode.conn&6)!=0);QE("connectbutton1h",b);QE("deskSaveBtn",a==3);QV("deskFocusBtn",(desktop!=null)&&(desktop.contype==2)&&(a!=0)&&(desktopsettings.showfocus));QE("DeskCAD",a==3);QE("DeskWD",a==3);QE("deskkeys",a==3);QV("DeskWD",(currentNode.agent)&&(currentNode.agent.id<5));QV("deskkeys",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToolsButton",d);QV("DeskToastButton",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToastButton",d);if(d==false){QV("DeskTools",false)}}var autoConnectDesktopTimer=null;function autoConnectDesktop(a){if(autoConnectDesktopTimer==null){autoConnectDesktopTimer=setInterval(connectDesktop,100)}else{clearInterval(autoConnectDesktopTimer);autoConnectDesktopTimer=null}}function connectDesktop(b,a){if(desktop==null){desktopNode=currentNode;if(a==2){if((desktopNode.intelamt.user==null)||(desktopNode.intelamt.user=="")){editDeviceAmtSettings(desktopNode._id,connectDesktop);return}desktop=CreateAmtRedirect(CreateAmtRemoteDesktop("Desk"));desktop.debugmode=debugmode;desktop.onStateChanged=onDesktopStateChange;desktop.m.bpp=(desktopsettings.encoding==1||desktopsettings.encoding==3)?1:2;desktop.m.useZRLE=(desktopsettings.encoding<3);desktop.m.showmouse=desktopsettings.showmouse;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id,16994,"*","*",0);desktop.contype=2}else{desktop=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("Desk"),serverPublicNamePort);desktop.debugmode=debugmode;desktop.m.debugmode=debugmode;desktop.attemptWebRTC=attemptWebRTC;desktop.onStateChanged=onDesktopStateChange;desktop.m.CompressionLevel=desktopsettings.quality;desktop.m.ScalingLevel=desktopsettings.scaling;desktop.m.FrameRateTimer=desktopsettings.framerate;desktop.m.onDisplayinfo=deskDisplayInfo;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id);desktop.contype=1}}else{desktop.Stop();delete desktop;desktopNode=desktop=null}}function onDesktopStateChange(c,a){var d=a;if((d==3)&&(c.contype==2)){d++}var b=StatusStrs[d];if((desktop!=null)&&(desktop.webRtcActive==true)){b+=", WebRTC"}QH("deskstatus",b);switch(a){case 0:desktop.Stop();delete desktop;desktopNode=desktop=null;QV("DeskFocus",false);QV("termdisplays",false);deskFocusBtn.value="All Focus";if(fullscreen==true){deskToggleFull()}break;case 2:break}updateDesktopButtons();deskAdjust();setTimeout(deskAdjust,50)}function showDesktopSettings(){if(xxdialogMode){return}applyDesktopSettings();updateDesktopButtons();setDialogMode(7,"Remote Desktop Settings",3,showDesktopSettingsChanged)}function showDesktopSettingsChanged(){desktopsettings.encoding=d7desktopmode.value;desktopsettings.showfocus=d7showfocus.checked;desktopsettings.showmouse=d7showcursor.checked;desktopsettings.quality=d7bitmapquality.value;desktopsettings.scaling=d7bitmapscaling.value;desktopsettings.framerate=d7framelimiter.value;localStorage.setItem("desktopsettings",JSON.stringify(desktopsettings));applyDesktopSettings();if(desktop){if(desktop.contype==1){if(desktop.State!=0){desktop.m.SendCompressionLevel(1,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate)}}if(desktop.contype==2){if(desktopsettings.showfocus==false){desktop.m.focusmode=0;deskFocusBtn.value="All Focus"}if(desktop.State!=0){desktop.Stop();setTimeout(function(){connectDesktop(null,2)},50)}}}}function applyDesktopSettings(){var c="",b=(features&512)?[90,70,50,40,30,20,10,5,1]:[50,40,30,20,10,5,1];for(var a in b){c+="<option value="+b[a]+">"+b[a]+"%</option>"}QH("d7bitmapquality",c);d7desktopmode.value=desktopsettings.encoding;d7showfocus.checked=desktopsettings.showfocus;d7showcursor.checked=desktopsettings.showmouse;d7bitmapquality.value=40;if(b.indexOf(parseInt(desktopsettings.quality))>=0){d7bitmapquality.value=desktopsettings.quality}d7bitmapscaling.value=desktopsettings.scaling;if(desktopsettings.framerate){d7framelimiter.value=desktopsettings.framerate}QV("deskFocusBtn",(desktop!=null)&&(desktop.contype==2)&&(desktop.state!=0)&&(desktopsettings.showfocus))}var fullscreen=false;function deskToggleFull(){fullscreen=!fullscreen;QV("mastheadx",!fullscreen);QV("masthead",!fullscreen);QV("topbar",!fullscreen);QV("p11deviceNameHeader",!fullscreen);QV("footer",!fullscreen);QV("column_l_bottomgap",!fullscreen);QV("idx_deskFullBtn2",fullscreen);QV("deskFullBtn",!fullscreen);if(fullscreen){QS("container").width="100%";QS("container")["border-right"]="0";QS("container")["border-left"]="0";QS("column_l").padding="0";QS("column_l").width="100%"}else{QS("container").width="960px";QS("container")["border-right"]="1px solid #b7b7b7";QS("container")["border-left"]="1px solid #b7b7b7";QS("column_l").padding="0 15px";QS("column_l").width="930px";toggleFullScreen()}deskAdjust()}function deskToggleFocus(){desktop.m.focusmode=(desktop.m.focusmode+64)%192;Q("deskFocusBtn").value=["All Focus","Small Focus","Large Focus"][desktop.m.focusmode/64]}function deskAdjust(){var c=(Math.max(document.documentElement.clientHeight,window.innerHeight||0)-(Q("deskarea1").clientHeight+Q("deskarea2").clientHeight+Q("Desk").clientHeight+Q("deskarea4").clientHeight+2))/2;if(fullscreen){document.documentElement.style.overflow="hidden";QS("deskarea3x").height=null;if(c<0){var a=(Math.max(document.documentElement.clientHeight,window.innerHeight||0)-(Q("deskarea1").clientHeight+Q("deskarea2").clientHeight+Q("deskarea4").clientHeight));var b=9999;if(desktop){b=(desktop.m.width/desktop.m.height)*a}QS("Desk")["max-height"]=a+"px";QS("Desk")["max-width"]=b+"px";c=0}else{QS("Desk")["max-height"]=null;QS("Desk")["max-width"]=null}QS("Desk")["margin-top"]=c+"px";QS("Desk")["margin-bottom"]=c+"px"}else{document.documentElement.style.overflow="auto";QS("deskarea3x").height=(desktop)?"40px":"400px";QS("Desk")["max-height"]=null;QS("Desk")["max-width"]=null;QS("Desk")["margin-top"]="0";QS("Desk")["margin-bottom"]="0"}}function deskSendKeys(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=Q("deskkeys").value;if(a==0){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65364,1],[65364,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,40],[desktop.m.KeyAction.UP,40],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==1){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65362,1],[65362,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,38],[desktop.m.KeyAction.UP,38],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==2){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[108,1],[108,0],[65511,0]])}else{desktop.sendCtrlMsg('{"action":"lock"}')}}else{if(a==3){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[109,1],[109,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==4){if(desktop.contype==2){desktop.m.sendkey([[65505,1],[65511,1],[109,1],[109,0],[65511,0],[65505,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN,16],[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91],[desktop.m.KeyAction.UP,16]])}}else{if(a==5){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.EXUP,91]])}}}}}}}}function sendCAD(){if(xxdialogMode||desktop==null||desktop.State!=3){return}desktop.m.sendcad()}function toggleDeskTools(){if(xxdialogMode){return}if(QS("DeskTools").display=="none"){QV("DeskTools",true);Q("DeskTools").nodeid=currentNode._id;refreshDeskTools()}else{QV("DeskTools",false)}}function refreshDeskTools(){QV("DeskToolsRefreshButton",false);setTimeout(refreshDeskToolsEx,500);meshserver.send({action:"msg",type:"ps",nodeid:currentNode._id})}function refreshDeskToolsEx(){QV("DeskToolsRefreshButton",true)}var deskTools={sort:1,msg:null};function sortProcess(a){deskTools.sort=a;showDeskToolsProcesses(deskTools.msg)}function sortProcessPid(c,d){if(c.p>d.p){return 1}if(c.p<d.p){return(-1)}return 0}function sortProcessName(c,d){if(c.d>d.d){return 1}if(c.d<d.d){return(-1)}return 0}function showDeskToolsProcesses(c){deskTools.msg=c;if(c==null){QH("DeskToolsProcesses","");return}if(Q("DeskTools").nodeid!=c.nodeid){return}var d=[],g=null;try{g=JSON.parse(c.value)}catch(a){}console.log(g);if(g!=null){for(var f in g){d.push({p:parseInt(f),c:g[f].cmd,d:g[f].cmd.toLowerCase(),u:g[f].user})}if(deskTools.sort==0){d.sort(sortProcessPid)}else{if(deskTools.sort==1){d.sort(sortProcessName)}}var h="";for(var b in d){if(d[b].p!=0){h+="<div class=deskToolsBar><div style=width:50px;float:left;text-align:right;padding-right:5px>"+d[b].p+'</div><a style=float:right;padding-right:5px;cursor:pointer title="Stop process" onclick=stopProcess('+d[b].p+',"'+d[b].c+'")><img width=10 height=10 src="images/trash.png"></a><div style=float:right;padding-right:5px>'+(d[b].u?d[b].u:"")+"</div><div>"+d[b].c+"</div></div>"}}QH("DeskToolsProcesses",h)}}function toggleKvmControl(){putstore("DeskControl",(Q("DeskControl").checked?1:0))}function deskSaveImage(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=new Date(),b="Desktop-"+currentNode.name+"-"+a.getFullYear()+"-"+("0"+(a.getMonth()+1)).slice(-2)+"-"+("0"+a.getDate()).slice(-2)+"-"+("0"+a.getHours()).slice(-2)+"-"+("0"+a.getMinutes()).slice(-2);Q("Desk")["toBlob"](function(c){saveAs(c,b+".jpg")})}function deskDisplayInfo(f,a,c,d){var g=Q("termdisplays").value;if(a.length>0){var b="";for(var h in a){b+="<option"+((g==a[h])?" selected":"")+">"+a[h]+"</option>"}QH("termdisplays",b)}QV("termdisplays",a.length>0)}function deskGetDisplayNumbers(a){desktop.m.GetDisplayNumbers()}function deskSetDisplay(b){var a=0,c=Q("termdisplays").value;if(c=="All Displays"){a=65535}else{a=parseInt(c.substring(8))}desktop.m.SetDisplay(a)}function dmousedown(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked){desktop.m.mousedown(a)}}function dmouseup(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked){desktop.m.mouseup(a)}}function dmousemove(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked){desktop.m.mousemove(a)}}function dmousewheel(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked&&desktop.m.mousewheel){desktop.m.mousewheel(a);haltEvent(a);return true}return false}function drotate(a){if(!xxdialogMode&&desktop!=null){desktop.m.setRotation(desktop.m.rotation+a);deskAdjust();deskAdjust()}}function stopProcess(a,b){setDialogMode(2,"Process Control",3,stopProcessEx,"Stop process #"+a+' "'+b+'"?',a)}function stopProcessEx(a,b){meshserver.send({action:"msg",type:"pskill",nodeid:currentNode._id,value:b});setTimeout(refreshDeskTools,300)}var terminalNode;function setupTerminal(){if((terminalNode!=currentNode)&&(terminal!=null)){terminal.Stop();delete terminal;terminal=null}terminalNode=currentNode;updateTerminalButtons()}function updateTerminalButtons(){var b=meshes[terminalNode.meshid];var d=((terminal!=null)&&(terminal.state!=0));QV("disconnectbutton2span",(d==true));QV("connectbutton2span",(d==false)&&(b.mtype==2));QV("connectbutton2hspan",(d==false)&&((terminalNode.intelamt!=null)&&(b.mtype==1||terminalNode.intelamt.state==2)&&((terminalNode.intelamt.ver!=null)||(b.mtype==1))));var c=((terminalNode.conn&1)!=0);QE("connectbutton2",c);var a=((terminalNode.conn&6)!=0);QE("connectbutton2h",a);QE("ctrlcbutton",d);QE("ctrlxbutton",d);QE("escbutton",d);QE("bsbutton",d);QE("pastebutton",d);QE("specialkeylist",d);QE("specialkeylistinput",d)}function onTerminalStateChange(d,a){var c=a;if((c==3)&&(d.contype==2)){c++}var b=StatusStrs[c];if(terminal.webRtcActive==true){b+=", WebRTC"}QH("termstatus",b);switch(a){case 0:d.m.TermResetScreen();d.m.TermDraw();if(terminal!=null){terminal.Stop();delete terminal;terminal=null}break;case 3:break}updateTerminalButtons()}var autoConnectTerminalTimer=null;function autoConnectTerminal(a){if(autoConnectTerminalTimer==null){autoConnectTerminalTimer=setInterval(connectTerminal,100)}else{clearInterval(autoConnectTerminalTimer);autoConnectTerminalTimer=null}}function connectTerminal(b,a){if(!terminal){if(a==2){if((terminalNode.intelamt.user==null)||(terminalNode.intelamt.user=="")){editDeviceAmtSettings(terminalNode._id,connectTerminal);return}terminal=CreateAmtRedirect(CreateAmtRemoteTerminal("Term"));terminal.debugmode=debugmode;terminal.onStateChanged=onTerminalStateChange;terminal.Start(terminalNode._id,16994,"*","*",0);terminal.contype=2;Q("id_ttypebutton").value=terminalEmulations[terminal.m.terminalEmulation]}else{terminal=CreateAgentRedirect(meshserver,CreateAmtRemoteTerminal("Term"),serverPublicNamePort);terminal.debugmode=debugmode;terminal.m.debugmode=debugmode;terminal.m.lineFeed=([1,2,3,4,21,22].indexOf(currentNode.agent.id)>=0)?"\r\n":"\r";terminal.attemptWebRTC=attemptWebRTC;terminal.onStateChanged=onTerminalStateChange;terminal.Start(terminalNode._id);terminal.contype=1;terminal.m.terminalEmulation=0;Q("id_ttypebutton").value=terminalEmulations[0]}}else{terminal.Stop();delete terminal;terminal=null}Q("connectbutton2").blur()}var terminalEmulations=["UTF8 Terminal","Extended ASCII","Intel ASCII"];function termToggleType(){if(!terminal||xxdialogMode){return}terminal.m.terminalEmulation=(terminal.m.terminalEmulation+1)%3;Q("id_ttypebutton").value=terminalEmulations[terminal.m.terminalEmulation];Q("id_ttypebutton").blur()}var fxEmulations=["Intel (F10 = ESC+[OM)","Alternate (F10 = ESC+0)","VT100+ (F10 = ESC+[OY)"];function termToggleFx(){if(!terminal||xxdialogMode){return}terminal.m.fxEmulation=(terminal.m.fxEmulation+1)%3;Q("id_tfxkeysbutton").value=fxEmulations[terminal.m.fxEmulation];Q("id_tfxkeysbutton").blur()}function termSendKey(b,a){if(!terminal||xxdialogMode){return}terminal.m.TermSendKey(b);Q(a).blur()}function showTermPasteDialog(){if(!terminal||xxdialogMode){return}Q("pastebutton").blur();setDialogMode(2,"Paste",3,showTermPasteDialogEx,'<textarea id=d2pasteText style="width:100%;height:184px;resize:none"></textarea>');Q("d2pasteText").focus()}function showTermPasteDialogEx(){if(!terminal){return}terminal.m.TermSendKeys(Q("d2pasteText").value)}function sendSpecialKey(){terminal.m.TermSendKey(Q("specialkeylist").value);Q("specialkeylist").blur();Q("specialkeylistinput").blur()}var filesNode;function setupFiles(){var b=(filesNode==currentNode);filesNode=currentNode;var a=((filesNode.conn&1)!=0)?true:false;QE("p13Connect",a);if(((b==false)||(a==false))&&files){files.Stop();delete files;files=null}}function onFilesStateChange(c,a){p13Connect.value=(a==0)?"Connect":"Disconnect";var b=StatusStrs[a];if(files.webRtcActive==true){b+=", WebRTC"}Q("p13Status").textContent=b;switch(a){case 0:QH("p13files","");p13filetree=null;p13filetreelocation=[];QH("p13currentpath","");QE("p13FolderUp",false);p13setActions();if(files!=null){files.Stop();delete files;files=null}break;case 3:p13targetpath="";files.sendText({action:"ls",reqid:1,path:""});break}}function CreateRemoteFiles(b){var a={protocol:5};a.onFileUpdate=b;a.xxStateChange=function(c){};a.ProcessData=function(c){a.onFileUpdate(c)};return a}var autoConnectFilesTimer=null;function autoConnectFiles(a){if(autoConnectFilesTimer==null){autoConnectFilesTimer=setInterval(connectFiles,100)}else{clearInterval(autoConnectFilesTimer);autoConnectFilesTimer=null}}function connectFiles(a){if(!files){files=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotFiles),serverPublicNamePort);files.attemptWebRTC=attemptWebRTC;files.onStateChanged=onFilesStateChange;files.Start(filesNode._id)}else{files.Stop();delete files;files=null}p13clipboard=p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview();p13oldlinkpath=null}var p13filetree=null;var p13targetpath=null;var p13filetreelocation=[];function p13gotFiles(b){if((b.length>0)&&(b.charCodeAt(0)!=123)){p13gotDownloadBinaryData(b);return}b=JSON.parse(decode_utf8(b));if(b.action=="download"){p13gotDownloadCommand(b);return}b.path=b.path.replace(/\//g,"\\");if((p13filetree!=null)&&(b.path==p13filetree.path)){var a=p13getCheckedNames();p13filetree=b;p13updateFiles(a)}else{var c=b.path.replace(/\//g,"\\"),d=p13targetpath.replace(/\//g,"\\");while((c.length>0)&&(c[0]=="\\")){c=c.substring(1)}while((d.length>0)&&(d[0]=="\\")){d=d.substring(1)}if((c==d)||((b.path=="\\")&&(p13targetpath==""))){p13filetree=b;p13updateFiles()}}}function p13getCheckedNames(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}return b}function p13updateFiles(b){var o="",p="",c="<a style=cursor:pointer onclick=p13folderup(0)>Root</a>",m="Root";var y=p13filetree.path.split("\\");p13filetreelocation=[];for(var q in y){if(y[q]!=""){p13filetreelocation.push(y[q])}}for(var q in p13filetreelocation){c+=" / <a style=cursor:pointer onclick=p13folderup("+(parseInt(q)+1)+")>"+p13filetreelocation[q]+"</a>"}var t=p13filetreelocation.join("/");var k=p13sort_files(p13filetree.dir);for(var q in k){var d=k[q],s=d.n,v;v=s;if(s.length>70){v='<span title="'+EscapeHtml(s)+'">'+EscapeHtml(s.substring(0,70))+"...</span>"}else{v=EscapeHtml(s)}s=EscapeHtml(s);var j="";if(d.d!=null){var g=new Date(d.d),j=(g.getMonth()+1)+"/"+(g.getDate())+"/"+g.getFullYear()+" "+g.toLocaleTimeString()+" "}var l="";if(d.s!=null){l=getFileSizeStr(d.s)}var n="";if(d.t<3){var u="",w="";n="<div class=filelist file=999><input file=999 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'> <span style=float:right title=\""+w+'">'+u+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p13folderset("'+encodeURIComponent(d.nx)+'")>'+v+"</a></span></div>"}else{var r=v;if(d.s>0){r='<a target="_blank" style=cursor:pointer onclick="p13downloadfile(\''+encodeURIComponent(t+"/"+s)+"','"+encodeURIComponent(s)+"',"+d.s+')">'+v+"</a>"}n="<div class=filelist file=3><input file=3 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'> <span class=fsize>"+j+"</span><span style=float:right>"+l+"</span><span><div class=fileIcon"+d.t+"></div>"+r+"</span></div>"}if(d.t<3){o+=n}else{p+=n}}QH("p13files",o+p);QH("p13currentpath",c);QE("p13FolderUp",p13filetreelocation.length!=0);if(b!=null){var a=document.getElementsByName("fd");for(var q=0;q<a.length;q++){if(b.indexOf(p13filetree.dir[a[q].value].n)>=0){a[q].checked=true}}}p13setActions()}function p13folderset(a){p13targetpath=joinPaths(p13filetree.path,p13filetree.dir[a].n).split("\\").join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}function p13folderup(a){if(a==null){p13filetreelocation.pop()}else{while(p13filetreelocation.length>a){p13filetreelocation.pop()}}p13targetpath=p13filetreelocation.join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}var p13sortorder;function p13sort_filename(c,d){if(c.ln>d.ln){return(1*p13sortorder)}if(c.ln<d.ln){return(-1*p13sortorder)}return 0}function p13sort_timestamp(c,d){if(c.d>d.d){return(1*p13sortorder)}if(c.d<d.d){return(-1*p13sortorder)}return 0}function p13sort_bysize(c,d){if(c.s==d.s){return p13sort_filename(c,d)}return(((c.s-d.s))*p13sortorder)}function p13sort_files(a){var c=[],d=Q("p13sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].s==null){a[b].s=0}if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}p13sortorder=1;if(d>3){p13sortorder=-1;d-=3}if(d==1){c.sort(p13sort_filename)}else{if(d==2){c.sort(p13sort_bysize)}else{if(d==3){c.sort(p13sort_timestamp)}}}return c}function p13setActions(){if(p13filetree==null){QE("p13DeleteFileButton",false);QE("p13NewFolderButton",false);QE("p13UploadButton",false);QE("p13RenameFileButton",false);QE("p13SelectAllButton",false);Q("p13SelectAllButton").value="Select All";QE("p13RefreshButton",false);QE("p13CutButton",false);QE("p13CopyButton",false);QE("p13PasteButton",false)}else{var a=p13getFileSelCount(),c=p13getFileCount(),b=p13getFileSelCount(false);var d=((currentNode.agent.id>0)&&(currentNode.agent.id<5));QE("p13DeleteFileButton",(a>0)&&((p13filetreelocation.length>0)||(d==false)));QE("p13NewFolderButton",((p13filetreelocation.length>0)||(d==false)));QE("p13UploadButton",((p13filetreelocation.length>0)||(d==false)));QE("p13RenameFileButton",(a==1)&&((p13filetreelocation.length>0)||(d==false)));QE("p13SelectAllButton",c>0);Q("p13SelectAllButton").value=(a>0?"Select None":"Select All");QE("p13RefreshButton",true);QE("p13CutButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13CopyButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13PasteButton",((p13filetreelocation.length>0)||(d==false))&&((p13clipboard!=null)&&(p13clipboard.length>0)))}}function p13getFileSelCount(d){var a=0;var b=document.getElementsByName("fd");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function p13getFileCount(){var a=0;var b=document.getElementsByName("fd");return b.length}function p13selectallfile(){var c=(p13getFileSelCount()==0),a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){a[b].checked=c}p13setActions()}function p13createfolder(){setDialogMode(2,"New Folder",3,p13createfolderEx,"<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />");focusTextBox("p13renameinput");p13fileNameCheck()}function p13createfolderEx(){files.sendText({action:"mkdir",reqid:1,path:p13filetreelocation.join("/")+"/"+Q("p13renameinput").value});p13folderup(999)}function p13deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p13deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p13deletefileEx(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}files.sendText({action:"rm",reqid:1,path:p13filetreelocation.join("/"),delfiles:b});p13folderup(999)}function p13renamefile(){var c,a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){if(a[b].checked){c=p13filetree.dir[a[b].value].n}}setDialogMode(2,"Rename",3,p13renamefileEx,'<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"rename",path:p13filetreelocation.join("/"),oldname:c});focusTextBox("p13renameinput");p13fileNameCheck()}function p13renamefileEx(a,c){c.newname=Q("p13renameinput").value;files.sendText(c);p13folderup(999)}function p13fileNameCheck(a){var b=isFilenameValid(Q("p13renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function p13uploadFile(){setDialogMode(2,"Upload File",3,p13uploadFileEx,"<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange=\"updateUploadDialogOk('p13uploadinput')\" />");updateUploadDialogOk("p13uploadinput")}function p13uploadFileEx(){p13doUploadFiles(Q("p13uploadinput").files)}var p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;function p13copyFile(b){var a=document.getElementsByName("fd");p13clipboard=[];p13clipboardCut=b,p13clipboardFolder=p13targetpath;for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p13clipboard.push(p13filetree.dir[a[c].value].n)}}p13updateClipview()}function p13pasteFile(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Confim "+(p13clipboardCut==0?"copy":"move")+" of "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p13pasteFileEx,a)}function p13pasteFileEx(){files.sendText({action:(p13clipboardCut==0?"copy":"move"),reqid:1,scpath:p13clipboardFolder,dspath:p13targetpath,names:p13clipboard});p13folderup(999);if(p13clipboardCut==1){p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;p13updateClipview()}}function p13updateClipview(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Holding "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" for "+(p13clipboardCut==0?"copy":"move")+", <a onclick=p13clearClip() style=cursor:pointer>Clear</a>."}QH("p13bottomstatus",a);p13setActions()}function p13clearClip(){p13clipboard=null;p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview()}function p13fileDragDrop(a){haltEvent(a);QV("p13bigfail",false);QV("p13bigok",false);if(a.dataTransfer==null||a.dataTransfer.files.length==0||p13filetree==null){return}p13doUploadFiles(a.dataTransfer.files)}var p13dragtimer=null;function p13fileDragOver(b){haltEvent(b);if(p13dragtimer!=null){clearTimeout(p13dragtimer);p13dragtimer=null}var a=(p13filetree!=null);QV("p13bigok",a);QV("p13bigfail",!a)}function p13fileDragLeave(a){haltEvent(a);if(a.target.id!="p13filetable"){QV("p13bigfail",false);QV("p13bigok",false)}else{p13dragtimer=setTimeout(function(){QV("p13bigfail",false);QV("p13bigok",false);p13dragtimer=null},10)}}var downloadFile;function p13downloadfile(a,b,c){if(xxdialogMode||downloadFile||!files){return}downloadFile={path:decodeURIComponent(a),file:decodeURIComponent(b),size:c,tsize:0,data:"",state:0,id:Math.random()};files.sendText({action:"download",sub:"start",id:downloadFile.id,path:downloadFile.path});setDialogMode(2,"Download File",10,p13downloadFileCancel,"<div>"+downloadFile.file+"</div><br /><progress id=d2progressBar style=width:100% value=0 max="+c+" />")}function p13downloadFileCancel(){setDialogMode(0);files.sendText({action:"download",sub:"cancel",id:downloadFile.id});downloadFile=null}function p13gotDownloadCommand(a){if((downloadFile==null)||(a.id!=downloadFile.id)){return}if(a.sub=="start"){downloadFile.state=1;files.sendText({action:"download",sub:"startack",id:downloadFile.id})}else{if(a.sub=="cancel"){downloadFile=null;setDialogMode(0)}}}function p13gotDownloadBinaryData(a){if(!downloadFile||downloadFile.state==0){return}if(a.length>4){downloadFile.tsize+=(a.length-4);downloadFile.data+=a.substring(4);Q("d2progressBar").value=downloadFile.tsize}if((ReadInt(a,0)&1)!=0){saveAs(data2blob(downloadFile.data),downloadFile.file);downloadFile=null;setDialogMode(0)}else{files.sendText({action:"download",sub:"ack",id:downloadFile.id})}}var uploadFile;function p13doUploadFiles(a){if(xxdialogMode){return}uploadFile={};uploadFile.xpath=p13filetreelocation.join("/");uploadFile.xfiles=a;uploadFile.xfilePtr=-1;setDialogMode(2,"Upload File",10,p13uploadFileCancel,"<div id=p13dfileName>Connecting...</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />");p13uploadReconnect()}function onFileUploadStateChange(b,a){switch(a){case 0:p13folderup(9999);break;case 3:p13uploadNextFile();break}}function p13uploadReconnect(){uploadFile.ws=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotUploadData),serverPublicNamePort);uploadFile.ws.attemptWebRTC=false;uploadFile.ws.ctrlMsgAllowed=false;uploadFile.ws.onStateChanged=onFileUploadStateChange;uploadFile.ws.Start(filesNode._id)}function p13uploadNextFile(){uploadFile.xfilePtr++;if(uploadFile.xfiles.length>uploadFile.xfilePtr){uploadFile.xptr=0;var a=uploadFile.xfiles[uploadFile.xfilePtr];QH("p13dfileName",a.name);Q("d2progressBar").max=a.size;Q("d2progressBar").value=0;uploadFile.xreader=new FileReader();uploadFile.xreader.onload=function(){uploadFile.xdata=uploadFile.xreader.result;uploadFile.ws.sendText(JSON.stringify({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:a.name,size:uploadFile.xdata.byteLength}))};uploadFile.xreader.readAsArrayBuffer(a)}else{p13uploadFileCancel()}}function p13uploadFileCancel(a,b){if(uploadFile!=null){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}uploadFile=null}setDialogMode(0)}function p13gotUploadData(b){var a=JSON.parse(b);if((uploadFile==null)||(parseInt(uploadFile.xfilePtr)!=parseInt(a.reqid))){return}if(a.action=="uploadstart"){p13uploadNextPart(false);for(var c=0;c<8;c++){p13uploadNextPart(true)}}else{if(a.action=="uploadack"){p13uploadNextPart(false)}else{if(a.action=="uploaderror"){p13uploadFileCancel()}}}}function p13uploadNextPart(c){var a=uploadFile.xdata;var f=uploadFile.xptr;var d=uploadFile.xptr+4096;if(d>a.byteLength){if(c==true){return}d=a.byteLength}if(f==a.byteLength){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}if(uploadFile.xfiles.length>uploadFile.xfilePtr+1){p13uploadReconnect()}else{p13uploadFileCancel()}}else{var b=a.slice(f,d);uploadFile.ws.send(b);uploadFile.xptr=d;Q("d2progressBar").value=d}}var currentDeviceEvents=null;function devevents_update(){var h="",a=null;for(var c in currentDeviceEvents){var b=currentDeviceEvents[c];var g=new Date(b.time);if(g.toLocaleDateString()!=a){if(a!=null){h+="</table>"}h+="<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>"+g.toLocaleDateString()+"</td></tr>";a=g.toLocaleDateString()}var d="si3";if(b.etype=="user"){d="m2"}if(b.etype=="server"){d="si3"}var f=b.msg.split("(R)").join("®");h+="<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>";h+="<div style=float:left;height:18px;width:18px;background-color:white><div class="+d+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";h+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";h+="<div style=font-size:14px><span style=width:300px>"+g.toLocaleTimeString()+" - "+f+"</span></div></div></td></tr>"}if(a!=null){h+="</table>"}if(h==""){h="<br><i>No Events Found</i><br><br>"}QH("p16events",h)}function refreshDeviceEvents(){meshserver.send({action:"events",nodeid:currentNode._id,limit:parseInt(p16limitdropdown.value)})}function agentConsoleHandleKeys(b){var d=0,a=Q("p15consoleText");if(b.key){if(b.keyCode==13&&consoleFocus==0){p15consoleSend(b);d=1}else{if(b.keyCode==8&&consoleFocus==0){var f=a.value;a.value=f.substring(0,f.length-1);d=1}else{if(b.keyCode==27){a.value="";d=1}else{if((b.keyCode==38)||(b.keyCode==40)){var c=consoleHistory.indexOf(a.value);if((b.keyCode==38)&&((consoleHistory.length-1)>c)){a.value=consoleHistory[c+1]}else{if((b.keyCode==40)&&(c>0)){a.value=consoleHistory[c-1]}else{if((b.keyCode==40)&&(c==0)){a.value=""}}}d=1}else{if(b.key.length===1){insertTextAtCursor(a,b.key);d=1}}}}}}else{if(b.charCode!=0&&consoleFocus==0){a.value=((a.value+String.fromCharCode(b.charCode)));d=1}}if(d>0){return haltEvent(b)}}function insertTextAtCursor(a,d){if(document.selection){a.focus();sel=document.selection.createRange();sel.text=d}else{if(a.selectionStart||a.selectionStart=="0"){var c=a.selectionStart,b=a.selectionEnd;a.value=a.value.substring(0,c)+d+a.value.substring(b,a.value.length);a.setSelectionRange(b+1,b+1)}else{a.value+=myValue}}}var consoleNode;function setupConsole(){var d=(consoleNode==currentNode);consoleNode=currentNode;var a=meshes[consoleNode.meshid];var b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&16)!=0){if(consoleNode.consoleText==null){consoleNode.consoleText=""}if(d==false){QH("p15agentConsoleText",consoleNode.consoleText);Q("p15agentConsole").scrollTop=Q("p15agentConsole").scrollHeight}var c=((consoleNode.conn&1)!=0)?true:false;QH("p15statetext",c?"Mesh Agent is online":"Mesh Agent is offline");QE("p15consoleText",c);QE("p15uploadCore",c)}else{QH("p15statetext","Access Denied");QE("p15consoleText",false);QE("p15uploadCore",false)}}function p15consoleClear(){QH("p15agentConsoleText","");Q("id_p15consoleClear").blur();consoleNode.consoleText=""}var consoleHistory=[];function p15consoleSend(a){if(a&&a.keyCode!=13){return}var d=Q("p15consoleText").value,c="<div style=color:green>> "+EscapeHtml(Q("p15consoleText").value)+"<br/></div>";Q("p15agentConsoleText").innerHTML+=c;consoleNode.consoleText+=c;Q("p15agentConsole").scrollTop=Q("p15agentConsole").scrollHeight;Q("p15consoleText").value="";meshserver.send({action:"msg",type:"console",nodeid:consoleNode._id,value:d});if(d.length>0){var b=consoleHistory.indexOf(d);if(b>=0){consoleHistory.splice(b,1)}consoleHistory.unshift(d);consoleHistory.splice(10)}}function p15consoleReceive(b,a){a="<div>"+a+"</div>";if(b.consoleText==null){b.consoleText=a}else{b.consoleText+=a}if(consoleNode==b){Q("p15agentConsoleText").innerHTML+=a;Q("p15agentConsole").scrollTop=Q("p15agentConsole").scrollHeight}}function p15uploadCore(a){if(xxdialogMode){return}if(a.shiftKey==true){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,path:"*"})}else{if(a.altKey==true){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id})}else{if(a.ctrlKey==true){p15uploadCore2()}else{setDialogMode(2,"Change Mesh Agent Core",3,p15uploadCoreEx,"<select id=d3coreMode style=float:right;width:260px><option value=1>Upload default server core</option><option value=2>Clear the core</option><option value=3>Upload a core file</option><option value=4>Soft disconnect agent</option><option value=5>Hard disconnect agent</option></select><div>Change Core</div>")}}}}function p15uploadCoreEx(){if(Q("d3coreMode").value==1){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,path:"*"})}else{if(Q("d3coreMode").value==2){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id})}else{if(Q("d3coreMode").value==3){p15uploadCore2()}else{if(Q("d3coreMode").value==4){meshserver.send({action:"agentdisconnect",nodeid:consoleNode._id,disconnectMode:1})}else{if(Q("d3coreMode").value==5){meshserver.send({action:"agentdisconnect",nodeid:consoleNode._id,disconnectMode:2})}}}}}}function p15uploadCore2(){if(xxdialogMode){return}Q("d3localmodeform").action="uploadmeshcorefile.ashx";Q("d3attrib").value=currentNode._id;setDialogMode(3,"Upload Mesh Agent Core",3,p15uploadCoreEx2);d3init()}function p15uploadCoreEx2(){var b=Q("d3uploadMode").value;if(b==1){Q("d3submit").click()}else{var a=d3getFileSel();if(a.length==1){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,path:d3filetreelocation.join("/")+"/"+a[0]})}}}function account_showVerifyEmail(){if(xxdialogMode||(userinfo.emailVerified==true)||(serverinfo.emailcheck!=true)){return}var a="Click ok to send a verification mail to:<br /><div style=padding:8px><b>"+EscapeHtml(userinfo.email)+"</b></div>Please wait a few minute to receive the verification.";setDialogMode(2,"Email Verification",3,account_showVerifyEmailEx,a)}function account_showVerifyEmailEx(){meshserver.send({action:"verifyemail",email:userinfo.email})}function account_showChangeEmail(){if(xxdialogMode){return}var a="Change your account e-mail address here.<br /><br />";a+=addHtmlValue("Email","<input id=dp2email style=width:230px maxlength=256 onchange=account_validateEmail() onkeyup=account_validateEmail(event) />");setDialogMode(2,"Email Address Change",3,account_changeEmail,a);if(userinfo.email!=null){Q("dp2email").value=userinfo.email}account_validateEmail();Q("dp2email").focus()}function account_validateEmail(a,b){QE("idx_dlgOkButton",validateEmail(Q("dp2email").value)&&(Q("dp2email").value!=userinfo.email));if((x==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function account_changeEmail(){meshserver.send({action:"changeemail",email:Q("dp2email").value})}function account_showDeleteAccount(){if(xxdialogMode){return}var a="To delete this account, type in the account password in both boxes below and hit ok.<br /><br />";a+="<form action='{{{domainurl}}}deleteaccount' method=post><table style=margin-left:80px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr></table><br /><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Delete Account",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_showChangePassword(){if(xxdialogMode){return}var a="Change your account password by entering the new password twice in the boxes below.<br /><br />";a+="<form action='{{{domainurl}}}changepassword' method=post><table style=margin-left:60px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /> <b><span id=dxPassWarn></span></b></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /></td>";a+="</tr><tr><td align=right>Password Hint:</td><td><input id=apasswordhint name=apasswordhint maxlength=250 type=text autocomplete=off /></td>";a+="</tr></table><br /><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Change Password",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_createMesh(){if(xxdialogMode){return}var a="Create a new mesh computer group using the options below.<br /><br />";a+=addHtmlValue("Mesh Name","<input id=dp2meshname style=width:230px maxlength=64 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate() />");a+=addHtmlValue("Mesh Type","<div style=width:230px;margin:0;padding:0><select id=dp2meshtype style=width:100% onchange=account_validateMeshCreate() ><option value=2>Mesh Agent Policy</option><option value=1>Intel® AMT Agent-less Policy</option></select></div>");a+=addHtmlValue("Description","<div style=width:230px;margin:0;padding:0><textarea id=dp2meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>");setDialogMode(2,"Create Mesh",3,account_createMeshEx,a);account_validateMeshCreate();Q("dp2meshname").focus()}function account_validateMeshCreate(){QE("idx_dlgOkButton",Q("dp2meshname").value.length>0)}function account_createMeshEx(a,b){meshserver.send({action:"createmesh",meshname:Q("dp2meshname").value,meshtype:Q("dp2meshtype").value,desc:Q("dp2meshdesc").value})}function account_validateDeleteAccount(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value))}function account_validateNewPassword(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value));var b="";if(Q("apassword1").value!=""){var a=checkPasswordStrength(Q("apassword1").value);if(a>=80){b="<span style=color:green>Strong<span>"}else{if(a>=60){b="<span style=color:blue>Good<span>"}else{b="<span style=color:red>Weak<span>"}}}QH("dxPassWarn",b)}function checkPasswordStrength(f){var g=0,d={},h=0,j={digits:/\d/.test(f),lower:/[a-z]/.test(f),upper:/[A-Z]/.test(f),nonWords:/\W/.test(f)};if(!f){return 0}for(var b=0;b<f.length;b++){d[f[b]]=(d[f[b]]||0)+1;g+=5/d[f[b]]}for(var a in j){h+=(j[a]==true)?1:0}return parseInt(g+(h-1)*10)}function updateMeshes(){var f="";var a=0,b=0;for(i in meshes){if(a>1){f+="</tr><tr>";a=0}a++;b++;var d=meshes[i].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var g="Partial Rights";if(d==4294967295){g="Full Administrator"}else{if(d==0){g="No Rights"}}f+="<div style=display:inline-block;width:431px;height:50px;padding-top:1px;padding-bottom:1px;float:left><div style=float:left;width:30px;height:100%></div><div style=height:100%;cursor:pointer onclick=gotoMesh('"+i+"')><div class=mi style=float:left;width:50px;height:50px></div><div style=height:100%><div class=g1></div><div class=e2 style=width:300px><div class=e1>"+EscapeHtml(meshes[i].name)+"</div><div>"+g+"</div></div><div class=g2 style=float:left></div></div></div></div>"}meshcount=b;QH("p2meshes",f);QV("p2noMeshFound",b==0)}function gotoMesh(a){currentMesh=meshes[a];p20updateMesh();go(20)}function server_showRestoreDlg(){if(xxdialogMode){return}var a="Restore the server using a backup, <span style=color:red>this will delete the existing server data</span>. Only do this if you know what you are doing.<br /><br />";a+='<form action="/restoreserver.ashx" enctype="multipart/form-data" method="post"><div>';a+='<input id=account_dlgFileInput type=file name=datafile style=width:100% accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()>';a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+="<input id=account_dlgOkButton type=submit value=OK style=float:right;width:80px onclick=dialogclose(1)>";a+="</div><br /><br /></form>";setDialogMode(2,"Restore Server",0,null,a);account_validateServerRestore()}function account_validateServerRestore(){QE("account_dlgOkButton",Q("account_dlgFileInput").files.length==1)}function server_showVersionDlg(){if(xxdialogMode){return}setDialogMode(2,"MeshCentral Version",1,null,"Loading...","MeshCentralServerUpdate");meshserver.send({action:"serverversion"})}function server_showVersionDlgUpdate(){QE("idx_dlgOkButton",Q("d2updateCheck").checked)}function server_showVersionDlgEx(){meshserver.send({action:"serverupdate"})}var currentMesh;function p20updateMesh(){if(currentMesh==null){return}QH("p20meshName",EscapeHtml(currentMesh.name));var f="Unknown #"+currentMesh.mtype;var d=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(currentMesh.mtype==1){f="Intel® AMT computer group (No Agent)"}if(currentMesh.mtype==2){f="Mesh agent computer group"}var l="";l+=addHtmlValue("Name",addLinkConditional(EscapeHtml(currentMesh.name),"p20editmesh(1)",(d&1)!=0));l+=addHtmlValue("Description",addLinkConditional(((currentMesh.desc&¤tMesh.desc!="")?EscapeHtml(currentMesh.desc):"<i>None</i>"),"p20editmesh(2)",(d&1)!=0));l+=addHtmlValue("Type",f);l+=addHtmlValue("Identifier",currentMesh._id.split("/")[2]);l+='<br><input type=button value=Notes title="View notes about this mesh" onclick=showNotes(false,"'+encodeURIComponent(currentMesh._id)+'") />';l+="<br style=clear:both><br>";var b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(b&&((b.rights&2)!=0)){l+="<a onclick=p20showAddMeshUserDialog() style=cursor:pointer;margin-right:10px><img src=images/icon-addnew.png border=0 height=12 width=12> Add User</a>"}if((d&4)!=0){if(currentMesh.mtype==1){l+='<a onclick=addCiraDeviceToMesh("'+currentMesh._id+'") style=cursor:pointer;margin-right:10px title="Add a new Intel® AMT computer that is located on the internet."><img src=images/icon-installmesh.png border=0 height=12 width=12> Install CIRA</a>';l+='<a onclick=addDeviceToMesh("'+currentMesh._id+'") style=cursor:pointer;margin-right:10px title="Add a new Intel® AMT computer that is located on the local network."><img src=images/icon-installmesh.png border=0 height=12 width=12> Install local</a>'}if(currentMesh.mtype==2){l+='<a onclick=addAgentToMesh("'+currentMesh._id+'") style=cursor:pointer;margin-right:10px title="Add a new computer to this mesh by installing the mesh agent."><img src=images/icon-addnew.png border=0 height=12 width=12> Install</a>'}}l+='<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>User Authorizations</th><th scope=col style=text-align:left></th></tr>';var a=1,j=[];for(var c in currentMesh.links){j.push({id:c,name:c.split("/")[2],rights:currentMesh.links[c].rights})}j.sort(function(m,n){if(m.name>n.name){return 1}if(m.name<n.name){return -1}return 0});for(var c in j){var k="",h="Partial Rights",g=j[c].rights;if(g==4294967295){h="Full Administrator"}else{if(g==0){h="No Rights"}}if((c!=userinfo._id)&&(d==4294967295||(((d&2)!=0)))){k='<a onclick=p20deleteUser(event,"'+encodeURIComponent(j[c].id)+'") title="Remote user rights to this mesh" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'}l+='<tr onclick=p20viewuser("'+encodeURIComponent(j[c].id)+'") style=cursor:pointer'+(((a%2)==0)?";background-color:#DDD":"")+'><td><div title="Mesh User" class=m2></div><div> '+j[c].name+"<div></div></div></td><td><div style=float:right>"+k+"</div><div>"+h+"</div></td></tr>";++a}l+="</tbody></table>";if(d==4294967295){l+="<div style=font-size:x-small;text-align:right><span><a onclick=p20showDeleteMeshDialog() style=cursor:pointer>Delete Mesh</a></span></div>"}QH("p20info",l)}function p20showDeleteMeshDialog(){if(xxdialogMode){return}var a='Are you sure you want to delete mesh "'+EscapeHtml(currentMesh.name)+'"? Deleting the mesh will also delete all information about computers within this mesh.<br /><br />';a+="<input id=p20check type=checkbox onchange=p20validateDeleteMeshDialog() />Confirm";setDialogMode(2,"Delete Mesh",3,p20showDeleteMeshDialogEx,a);p20validateDeleteMeshDialog()}function p20validateDeleteMeshDialog(){QE("idx_dlgOkButton",Q("p20check").checked)}function p20showDeleteMeshDialogEx(a,b){meshserver.send({action:"deletemesh",meshid:currentMesh._id,meshname:currentMesh.name})}function p20editmesh(a){if(xxdialogMode){return}var b=addHtmlValue("Mesh Name","<input id=dp20meshname style=width:230px maxlength=32 onchange=p20editmeshValidate() onkeyup=p20editmeshValidate() />");b+=addHtmlValue("Description","<div style=width:230px;margin:0;padding:0><textarea id=dp20meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>");setDialogMode(2,"Edit Mesh",3,p20editmeshEx,b);Q("dp20meshname").value=currentMesh.name;if(currentMesh.desc){Q("dp20meshdesc").value=currentMesh.desc}p20editmeshValidate();if(a==2){Q("dp20meshdesc").focus()}else{Q("dp20meshname").focus()}}function p20editmeshEx(){meshserver.send({action:"editmesh",meshid:currentMesh._id,meshname:Q("dp20meshname").value,desc:Q("dp20meshdesc").value})}function p20editmeshValidate(){QE("idx_dlgOkButton",Q("dp20meshname").value.length>0)}function p20showAddMeshUserDialog(){if(xxdialogMode){return}var a="Allow a user to manage the mesh and computers on this mesh<br /><br />";a+=addHtmlValue("User Name","<input id=dp20username style=width:230px maxlength=32 onchange=p20validateAddMeshUserDialog() onkeyup=p20validateAddMeshUserDialog() />");a+="<br><div>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>Full Administrator<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>Edit Mesh<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>Manage Mesh Users<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20managecomputers>Manage Mesh Computers<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remotecontrol>Remote Control<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshagentconsole>Mesh Agent Console<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshserverfiles>Server Files<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes<br>";a+="</div>";setDialogMode(2,"Add User to Mesh",3,p20showAddMeshUserDialogEx,a);p20validateAddMeshUserDialog();Q("dp20username").focus()}function p20validateAddMeshUserDialog(){var a=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;QE("idx_dlgOkButton",(Q("dp20username").value.length>0));QE("p20fulladmin",a==4294967295);QE("p20editmesh",(!Q("p20fulladmin").checked)&&(a==4294967295));QE("p20manageusers",!Q("p20fulladmin").checked);QE("p20managecomputers",!Q("p20fulladmin").checked);QE("p20remotecontrol",!Q("p20fulladmin").checked);QE("p20meshagentconsole",!Q("p20fulladmin").checked);QE("p20meshserverfiles",!Q("p20fulladmin").checked);QE("p20wakedevices",!Q("p20fulladmin").checked);QE("p20editnotes",!Q("p20fulladmin").checked)}function p20showAddMeshUserDialogEx(){var a=0;if(Q("p20fulladmin").checked==true){a=4294967295}else{if(Q("p20editmesh").checked==true){a+=1}if(Q("p20manageusers").checked==true){a+=2}if(Q("p20managecomputers").checked==true){a+=4}if(Q("p20remotecontrol").checked==true){a+=8}if(Q("p20meshagentconsole").checked==true){a+=16}if(Q("p20meshserverfiles").checked==true){a+=32}if(Q("p20wakedevices").checked==true){a+=64}if(Q("p20editnotes").checked==true){a+=128}}meshserver.send({action:"addmeshuser",meshid:currentMesh._id,meshname:currentMesh.name,username:Q("dp20username").value,meshadmin:a})}function p20viewuser(f){if(xxdialogMode){return}f=decodeURIComponent(f);var d="",b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights,c=currentMesh.links[f].rights;if(c==4294967295){d=", Full Administrator (all rights)"}else{if((c&1)!=0){d+=", Edit Mesh"}if((c&2)!=0){d+=", Manage Mesh Users"}if((c&4)!=0){d+=", Manage Mesh Computers"}if((c&8)!=0){d+=", Remote Control"}if((c&16)!=0){d+=", Agent Console"}if((c&32)!=0){d+=", Server Files"}if((c&64)!=0){d+=", Wake Devices"}if((c&128)!=0){d+=", Edit Notes"}}d=d.substring(2);if(d==""){d="No Rights"}var a=1,g=addHtmlValue("User Name",f.split("/")[2]);g+=addHtmlValue("Permissions",d);if((("user/{{{domain}}}/"+userinfo.name.toLowerCase())!=f)&&(b==4294967295||(((b&2)!=0)&&(c!=4294967295)))){a+=4}setDialogMode(2,"Mesh User",a,p20viewuserEx,g,f)}function p20viewuserEx(a,b){if(a!=2){return}setDialogMode(2,"Remote Mesh User",3,p20viewuserEx2,"Confirm removal of user "+b.split("/")[2]+"?",b)}function p20deleteUser(a,b){haltEvent(a);p20viewuserEx(2,decodeURIComponent(b))}function p20viewuserEx2(a,b){meshserver.send({action:"removemeshuser",meshid:currentMesh._id,meshname:currentMesh.name,userid:b})}var filetreelinkpath;var filetreelocation=[];function updateFiles(){QV("MainMenuMyFiles",((features&8)==0));if((features&8)!=0){return}var r="",s="",c="<a style=cursor:pointer onclick=p5folderup(0)>Root</a>",p="Root",A,l=filetree,n=1;var k=[],w=filetreelinkpath,b=[],a=document.getElementsByName("fc");for(var t=0;t<a.length;t++){if(a[t].checked){b.push(a[t].value)}}filetreelinkpath="";for(var t in filetreelocation){if((l.f!=null)&&(l.f[filetreelocation[t]]!=null)){k.push(filetreelocation[t]);p+=" / "+filetreelocation[t];if((n==1)){var D=filetreelocation[t].split("/");A=window.location+D[0]+"files/"+D[2];filetreelinkpath+=filetreelocation[t]}else{if(filetreelinkpath!=""){filetreelinkpath+="/"+filetreelocation[t];if(n>2){A+="/"+filetreelocation[t]}}}l=l.f[filetreelocation[t]];c+=" / <a style=cursor:pointer onclick=p5folderup("+n+")>"+(l.n!=null?l.n:filetreelocation[t])+"</a>";n++}else{break}}filetreelocation=k;var y=p.toLowerCase().startsWith("root / "+userinfo._id+" / public");var m=p5sort_files(l.f);for(var t in m){var d=m[t],v=d.n,C;C=v;if(v.length>70){C='<span title="'+EscapeHtml(v)+'">'+EscapeHtml(v.substring(0,70))+"...</span>"}else{C=EscapeHtml(v)}v=EscapeHtml(v);var j="";if(d.d!=null){var g=new Date(d.d),j=(g.getMonth()+1)+"/"+(g.getDate())+"/"+g.getFullYear()+" "+g.toLocaleTimeString()+" "}var o="";if(d.s!=null){o=getFileSizeStr(d.s)}var q="";if(d.t<3||d.t==4){var B=(d.t==1||d.t==4)?p5getQuotabar(d):"",E="";q="<div class=filelist file=999><input file=999 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+v+"'> <span style=float:right title=\""+E+'">'+B+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p5folderset("'+encodeURIComponent(d.nx)+'")>'+C+"</a></span></div>"}else{var u=C;var z="";if(y){z=' (<a style=cursor:pointer title="Display public link" onclick=\'p5showPublicLink("'+A+"/"+d.nx+"\")'>Link</a>)"}if(d.s>0){u='<a target="_blank" href="downloadfile.ashx?link='+encodeURIComponent(filetreelinkpath+"/"+d.nx)+'">'+C+"</a>"+z}q="<div class=filelist file=3><input file=3 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+d.nx+"'> <span class=fsize>"+j+"</span><span style=float:right>"+o+"</span><span><div class=fileIcon"+d.t+"></div>"+u+"</span></div>"}if(d.t<3){r+=q}else{s+=q}}QH("p5rightOfButtons",p5getQuotabar(l));QH("p5files",r+s);QH("p5currentpath",c);QE("p5FolderUp",filetreelocation.length!=0);QV("p5PublicShare",y);if(w==filetreelinkpath){a=document.getElementsByName("fc");for(var t=0;t<a.length;t++){a[t].checked=(b.indexOf(a[t].value)>=0)}}p5setActions()}function p5getQuotabar(a){while(a.t>1&&a.t!=4){a=a.parent}if((a.t!=1&&a.t!=4)||(a.maxbytes==null)){return""}var b=Math.floor(a.s/1024),c=Math.floor((a.maxbytes-a.s)/1024);return'<span title="'+b+"k in "+a.c+" file"+(a.c>1?"s":"")+". "+(Math.floor(a.maxbytes/1024))+'k maxinum">'+((c<0)?("Storage limit exceed"):(c+"k remaining"))+" <progress style=height:10px;width:100px value="+a.s+" max="+a.maxbytes+" /></span>"}function p5showPublicLink(a){setDialogMode(2,"Public Link",1,null,'<input type=text style=width:100% value="'+a+'" readonly />')}var sortorder;function p5sort_filename(c,d){if(c.ln>d.ln){return(1*sortorder)}if(c.ln<d.ln){return(-1*sortorder)}return 0}function p5sort_timestamp(c,d){if(c.d>d.d){return(1*sortorder)}if(c.d<d.d){return(-1*sortorder)}return 0}function p5sort_bysize(c,d){if(c.s==d.s){return p5sort_filename(c,d)}return(((c.s-d.s))*sortorder)}function p5sort_files(a){var c=[],d=Q("p5sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}sortorder=1;if(d>3){sortorder=-1;d-=3}if(d==1){c.sort(p5sort_filename)}else{if(d==2){c.sort(p5sort_bysize)}else{if(d==3){c.sort(p5sort_timestamp)}}}return c}function p5setActions(){var a=getFileSelCount(),c=getFileCount(),b=getFileSelCount(false);QE("p5DeleteFileButton",(a>0)&&(filetreelocation.length>0));QE("p5NewFolderButton",filetreelocation.length>0);QE("p5UploadButton",filetreelocation.length>0);QE("p5RenameFileButton",(a==1)&&(filetreelocation.length>0));QE("p5SelectAllButton",c>0);Q("p5SelectAllButton").value=(a>0?"Select None":"Select All");QE("p5CutButton",(b>0)&&(a==b));QE("p5CopyButton",(b>0)&&(a==b));QE("p5PasteButton",(p5clipboard!=null)&&(p5clipboard.length>0)&&(filetreelocation.length>0))}function getFileSelCount(d){var a=0;var b=document.getElementsByName("fc");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function getFileCount(){var a=0;var b=document.getElementsByName("fc");return b.length}function p5selectallfile(){var c=(getFileSelCount()==0),a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){a[b].checked=c}p5setActions()}function setupBackPointers(d){if(d.f!=null){var b=0,a=0;for(var c in d.f){setupBackPointers(d.f[c]);d.f[c].parent=d;if(d.f[c].s){b+=d.f[c].s}if(d.f[c].c){a+=d.f[c].c}if(d.f[c].t==3){a++}}d.s=b;d.c=a}return d}function getFileSizeStr(a){if(a==1){return"1 byte"}return""+a+" bytes"}function p5folderup(a){if(a==null){filetreelocation.pop()}else{while(filetreelocation.length>a){filetreelocation.pop()}}updateFiles()}function p5folderset(a){filetreelocation.push(decodeURIComponent(a));updateFiles()}function p5createfolder(){setDialogMode(2,"New Folder",3,p5createfolderEx,"<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% />");focusTextBox("p5renameinput");p5fileNameCheck()}function p5createfolderEx(){meshserver.send({action:"fileoperation",fileop:"createfolder",path:filetreelocation,newfolder:Q("p5renameinput").value})}function p5deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p5deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p5deletefileEx(){var b=[],a=document.getElementsByName("fc");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(a[c].value)}}meshserver.send({action:"fileoperation",fileop:"delete",path:filetreelocation,delfiles:b})}function p5renamefile(){var c,a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){if(a[b].checked){c=a[b].value}}setDialogMode(2,"Rename",3,p5renamefileEx,'<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"fileoperation",fileop:"rename",path:filetreelocation,oldname:c});focusTextBox("p5renameinput");p5fileNameCheck()}function p5renamefileEx(a,c){c.newname=Q("p5renameinput").value;meshserver.send(c)}function p5fileNameCheck(a){var b=isFilenameValid(Q("p5renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a.keyCode==13)){dialogclose(1)}}var isFilenameValid=(function(){var b=/^[^\\/:\*\?"<>\|]+$/,c=/^\./,d=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function a(f){return b.test(f)&&!c.test(f)&&!d.test(f)&&(f[0]!=".")}})();function p5uploadFile(){setDialogMode(2,"Upload File",3,p5uploadFileEx,'<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="'+encodeURIComponent(filetreelinkpath)+'" /><input type=file name=files id=p5uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p5uploadinput\')" /><input type=submit id=p5loginSubmit style=display:none /></form>');updateUploadDialogOk("p5uploadinput")}function p5uploadFileEx(){Q("p5loginSubmit").click()}function updateUploadDialogOk(a){QE("idx_dlgOkButton",Q(a).value!="")}var p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;function p5copyFile(b){var a=document.getElementsByName("fc");p5clipboard=[];p5clipboardCut=b,p5clipboardFolder=Clone(filetreelocation);for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p5clipboard.push(a[c].value)}}p5updateClipview()}function p5pasteFile(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Confim "+(p5clipboardCut==0?"copy":"move")+" of "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p5pasteFileEx,a)}function p5pasteFileEx(){meshserver.send({action:"fileoperation",fileop:(p5clipboardCut==0?"copy":"move"),scpath:p5clipboardFolder,path:filetreelocation,names:p5clipboard});p5folderup(999);if(p5clipboardCut==1){p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;p5updateClipview()}}function p5updateClipview(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Holding "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" for "+(p5clipboardCut==0?"copy":"move")+", <a onclick=p5clearClip() style=cursor:pointer>Clear</a>."}QH("p5bottomstatus",a);p5setActions()}function p5clearClip(){p5clipboard=null;p5clipboardFolder=null;p5clipboardCut=0;p5updateClipview()}function p5fileDragDrop(b){haltEvent(b);QV("bigfail",false);QV("bigok",false);if(b.dataTransfer==null||b.dataTransfer.files.length==0||filetreelocation.length==0){return}var f=[],j=[],k=[],a=[],h=b.dataTransfer.files.length;for(var d=0;d<b.dataTransfer.files.length;d++){var g=new FileReader(),c=b.dataTransfer.files[d];f.push(c.name);j.push(c.size);k.push(c.type);g.onload=function(l){a.push(l.target.result);if(--h==0){Q("p5fileDragName").value=f.join("*");Q("p5fileDragSize").value=j.join("*");Q("p5fileDragType").value=k.join("*");Q("p5fileDragData").value=a.join("*");Q("p5fileDragLink").value=encodeURIComponent(filetreelinkpath);Q("p5loginSubmit2").click()}};g.readAsDataURL(c)}}var p5dragtimer=null;function p5fileDragOver(b){haltEvent(b);if(p5dragtimer!=null){clearTimeout(p5dragtimer);p5dragtimer=null}var a=true;if(filetreelocation.length==0){a=false}QV("bigok",a);QV("bigfail",!a)}function p5fileDragLeave(a){haltEvent(a);if(a.target.id!="p5filetable"){QV("bigfail",false);QV("bigok",false)}else{p5dragtimer=setTimeout(function(){QV("bigfail",false);QV("bigok",false);p5dragtimer=null},10)}}function events_update(){var h="",a=null;for(var c in events){var b=events[c];var g=new Date(b.time);if(g.toLocaleDateString()!=a){if(a!=null){h+="</table>"}h+="<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>"+g.toLocaleDateString()+"</td></tr>";a=g.toLocaleDateString()}var d="si3";if(b.etype=="user"){d="m2"}if(b.etype=="server"){d="si3"}var f=b.msg.split("(R)").join("®");if(b.username&&b.username!=userinfo.name){f+=": "+b.username}h+="<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>";h+="<div style=float:left;height:18px;width:18px;background-color:white><div class="+d+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";h+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";h+="<div style=font-size:14px><span style=width:300px>"+g.toLocaleTimeString()+" - "+f+"</span></div></div></td></tr>"}if(a!=null){h+="</table>"}if(h==""){h="<br><i>No Events Found</i><br><br>"}QH("p3events",h)}function showDeleteAllEventsDialog(){if(xxdialogMode){return}var a="Delete all events in the server event log?<br /><br />";a+="<input id=p3check type=checkbox onchange=validateDeleteAllEventsDialog() />Confirm";setDialogMode(2,"Delete All Events",3,showDeleteAllEventsDialogEx,a);validateDeleteAllEventsDialog()}function validateDeleteAllEventsDialog(){QE("idx_dlgOkButton",Q("p3check").checked)}function showDeleteAllEventsDialogEx(a,b){meshserver.send({action:"clearevents"})}function refreshEvents(){meshserver.send({action:"events",limit:parseInt(p3limitdropdown.value)})}function updateUsers(){QV("MainMenuMyUsers",(users!=null)&&((features&4)==0));if((users==null)||((features&4)!=0)){QH("p3users","");return}var g=[],d=100,b=0;for(var c in users){g.push(c)}g.sort();var j=Q("UserSearchInput").value.toLowerCase();var k="<table style=width:100% cellpadding=0 cellspacing=0>",a=true;for(var c in g){var h=users[g[c]],f=null;if(wssessions!=null){f=wssessions[h._id]}if((f!=null)&&(h.name.toLowerCase().indexOf(j)>=0)){if(d>0){if(a){k+="<tr><td class=userTableHeader>Online Users";a=false}k+=addUserHtml(h,f);d--}else{b++}}}a=true;for(var c in g){var h=users[g[c]],f=null;if(wssessions!=null){f=wssessions[h._id]}if((f==null)&&(h.name.toLowerCase().indexOf(j)>=0)){if(d>0){if(a){k+="<tr><td class=userTableHeader>Offline Users";a=false}k+=addUserHtml(h,f);d--}else{b++}}}k+="</table>";if(b==1){k+="<br />1 more user not shown, use search box to look for users...<br />"}else{if(b>1){k+="<br />"+b+" more users not shown, use search box to look for users...<br />"}}if(d==100){k+="<br />No users found.<br />"}QH("p3users",k);if((currentUser!=null)&&(xxcurrentView==30)){gotoUser(encodeURIComponent(currentUser._id),true)}}function addUserHtml(h,g){var k="",b=" gray",c="m2",d="",f=(h.name!=userinfo.name);if(g!=null){b="";if(f){d+='<a onclick=showUserAlertDialog(event,"'+encodeURIComponent(h._id)+'")>'}if(g==1){d+="1 active session"}else{d+=g+" active sessions"}if(f){d+="</a>"}}else{if(h.login){d+='<span title="Last login: '+new Date(h.login).toLocaleString()+'">'+new Date(h.login).toLocaleDateString()+"</span>"}}if(d!=""){d+=", "}if(f){d+='<a onclick=showUserAdminDialog(event,"'+encodeURIComponent(h._id)+'")>'}if((h.siteadmin!=null)&&((h.siteadmin&32)!=0)&&(h.siteadmin!=4294967295)){d+="Locked, "}d+="<span title='Server Permissions'>";if((h.siteadmin==null)||(h.siteadmin==0)||(h.siteadmin==32)){d+="User"}else{if(h.siteadmin==8){d+="User with server files"}else{if(h.siteadmin==4294967295){d+="Administrator"}else{d+="Partial"}}}d+="</span>";if((h.quota!=null)&&((h.siteadmin&8)!=0)){d+=", "+(h.quota/1024)+" k"}if(f){d+="</a>"}var j=EscapeHtml(h.name),a="";if(serverinfo.emailcheck==true){a=((h.emailVerified!=true)?' <b style=color:red title="Email is not verified">🗴</b>':' <b style=color:green title="Email is verified">🗸</b>')}if(h.email!=null){j+=', <a onclick=doemail(event,"'+h.email+'")>'+h.email+"</a>"+a}k+='<tr><td style=cursor:pointer onclick=gotoUser("'+encodeURIComponent(h._id)+'")>';k+="<div class=bar style=height:24px;width:100%;font-size:medium>";k+='<div style=float:left;height:24px;width:24px;background-color:white><div class="'+c+b+'" style=width:16px;margin-top:4px;margin-left:2px;height:16px></div></div>';k+="<div class=g1 style=height:24px;float:left></div><div class=g2 style=height:24px;float:right></div>";k+="<div><span>"+j+"</span><span style=float:right>"+d+"</span></div></div>";return k}function showUserAlertDialog(a,b){if(xxdialogMode){return}haltEvent(a);setDialogMode(2,"Notify "+EscapeHtml(users[decodeURIComponent(b)].name),3,showUserAlertDialogEx,'Send a text notification to this user.<textarea id=d2notifyText maxlength=2048 style="width:100%;height:184px;resize:none"></textarea>',b);Q("d2notifyText").focus();return false}function showUserAlertDialogEx(a,b){meshserver.send({action:"notifyuser",userid:decodeURIComponent(b),msg:Q("d2notifyText").value})}function doemail(b,a){if(xxdialogMode){return}haltEvent(b);window.open("mailto:"+a);return false}function showCreateNewAccountDialog(){if(xxdialogMode){return}var a="";a+=addHtmlValue("Name","<input id=p4name style=width:230px maxlength=64 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Email","<input id=p4email style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Password","<input id=p4pass1 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Password","<input id=p4pass2 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");setDialogMode(2,"Create Account",3,showCreateNewAccountDialogEx,a);showCreateNewAccountDialogValidate();Q("p4name").focus()}function showCreateNewAccountDialogValidate(){if((Q("p4email").value.length>0)&&(validateEmail(Q("p4email").value))==false){QE("idx_dlgOkButton",false);return}QE("idx_dlgOkButton",(!Q("p4name")||((Q("p4name").value.length>0)&&(Q("p4name").value.indexOf(" ")==-1)))&&Q("p4pass1").value.length>0&&Q("p4pass1").value==Q("p4pass2").value)}function showCreateNewAccountDialogEx(){meshserver.send({action:"adduser",username:Q("p4name").value,email:Q("p4email").value,pass:Q("p4pass1").value})}function showUserAdminDialog(a,c){if(xxdialogMode){return}haltEvent(a);c=decodeURIComponent(c);var d="<div>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_fileaccess>Server Files, <input type=number onchange=showUserAdminDialogValidate() maxlength=10 style=width:80px;text-align:right id=ua_fileaccessquota>k max, blank for default<br><hr/>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_fulladmin>Full Administrator<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverbackup>Server Backup<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverrestore>Server Restore<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverupdate>Server Updates<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_manageusers>Manage Users<br>";d+="<hr/><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_lockedaccount>Lock Account<br>";d+="</div>";var b=users[c.toLowerCase()];setDialogMode(2,"Server Permissions",3,showUserAdminDialogEx,d,b);if(b.siteadmin&&b.siteadmin!=0){Q("ua_fulladmin").checked=(b.siteadmin==4294967295);Q("ua_serverbackup").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&1)!=0));Q("ua_manageusers").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&2)!=0));Q("ua_serverrestore").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&4)!=0));Q("ua_fileaccess").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&8)!=0));Q("ua_serverupdate").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&16)!=0));Q("ua_lockedaccount").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&32)!=0))}QE("ua_fulladmin",userinfo.siteadmin==4294967295);QE("ua_serverbackup",userinfo.siteadmin==4294967295);QE("ua_manageusers",userinfo.siteadmin==4294967295);QE("ua_serverrestore",userinfo.siteadmin==4294967295);QE("ua_fileaccess",userinfo.siteadmin==4294967295);QE("ua_serverupdate",userinfo.siteadmin==4294967295);Q("ua_fileaccessquota").value=(b.quota!=null)?(b.quota/1024):"";showUserAdminDialogValidate();return false}function showUserAdminDialogValidate(){if(userinfo.siteadmin==4294967295){QE("ua_serverbackup",!Q("ua_fulladmin").checked);QE("ua_manageusers",!Q("ua_fulladmin").checked);QE("ua_serverrestore",!Q("ua_fulladmin").checked);QE("ua_fileaccess",!Q("ua_fulladmin").checked);QE("ua_serverupdate",!Q("ua_fulladmin").checked);QE("ua_fileaccessquota",Q("ua_fileaccess").checked&&!Q("ua_fulladmin").checked)}}function showUserAdminDialogEx(a,d){var c=0,b=parseInt(Q("ua_fileaccessquota").value);if(Q("ua_fulladmin").checked==true){c=4294967295}else{if(Q("ua_serverbackup").checked==true){c+=1}if(Q("ua_manageusers").checked==true){c+=2}if(Q("ua_serverrestore").checked==true){c+=4}if(Q("ua_fileaccess").checked==true){c+=8}if(Q("ua_serverupdate").checked==true){c+=16}if(Q("ua_lockedaccount").checked==true){c+=32}}var f={action:"edituser",name:d.name,siteadmin:c};if(isNaN(b)==false){f.quota=(b*1024)}meshserver.send(f)}function onUserSearchInputChanged(){updateUsers()}var currentUser=null;function gotoUser(k,f){if(xxdialogMode&&!f){return}var j=currentUser=users[decodeURIComponent(k)];if(j==null){setDialogMode(0);go(4);return}QH("p30userName",j.name);QH("p31userName",j.name);var h=(j.name==userinfo.name),a=0;if(wssessions!=null&&wssessions[j._id]){a=wssessions[j._id]}Q("MainUserImage").classList.remove("gray");if(a==0){Q("MainUserImage").classList.add("gray")}var g="";if((j.siteadmin!=null)&&((j.siteadmin&32)!=0)&&(j.siteadmin!=4294967295)){g+="Locked account, "}if((j.siteadmin==null)||(j.siteadmin==0)||(j.siteadmin==32)){g+="No server rights"}else{if(j.siteadmin==8){g+="Access to server files"}else{if(j.siteadmin==4294967295){g+="Full administrator"}else{g+="Partial rights"}}}var l="<div style=min-height:80px><table style=width:100%>";var c=j.email?EscapeHtml(j.email):"<i>Not set</i>",d="";if(serverinfo.emailcheck){d=((j.emailVerified==true)?'<b style=color:green;cursor:pointer title="Email is verified">🗸</b> ':'<b style=color:red;cursor:pointer title="Email not verified">🗴</b> ')}l+=addDeviceAttribute("Email",d+'<a style=cursor:pointer onclick=p30showUserEmailChangeDialog(event,"'+k+'")>'+c+'</a> <a style=cursor:pointer onclick=doemail(event,"'+j.email+'")><img src="images/link1.png" /></a>');l+=addDeviceAttribute("Server Rights",'<a style=cursor:pointer onclick=showUserAdminDialog(event,"'+k+'")>'+g+"</a>");if(j.quota){l+=addDeviceAttribute("Server Quota",EscapeHtml(parseInt(j.quota)/1024)+" k")}l+=addDeviceAttribute("Creation",new Date(j.creation).toLocaleString());if(j.login){l+=addDeviceAttribute("Last Login",new Date(j.login).toLocaleString())}l+="</table></div><br />";l+='<input type=button value=Notes title="View notes about this user" onclick=showNotes(false,"'+k+'") />';if(!h&&(a>0)){l+='<input type=button value=Notify title="Send user notification" onclick=showUserAlertDialog(event,"'+k+'") />'}QH("p30html",l);drawUserTimeline();var b=true;if(j._id==userinfo._id){b=false}if(j.siteadmin&&j.siteadmin>0&&userinfo.siteadmin!=4294967295){b=false}l="<div style=float:right;font-size:x-small>";if(b){l+='<a style=cursor:pointer onclick=p30showDeleteUserDialog() title="Remove this user">Delete User</a>'}l+="</div><div style=font-size:x-small>";if(userinfo.siteadmin==4294967295){l+='<a style=cursor:pointer onclick=p30showUserChangePassDialog() title="Change the password for this user">Change Password</a>'}l+="</div><br>";QH("p30html3",l);l="";if(a==1){l="1 active session"}else{if(a>1){l=a+" active sessions"}}QH("MainUserState",l);go(30);QH("p31events","");refreshUsersEvents()}function p30showUserEmailChangeDialog(a){if(xxdialogMode){return}var b="";b+=addHtmlValue("Email","<input id=dp30email style=width:230px maxlength=32 onchange=p30validateEmail() onkeyup=p30validateEmail() />");if(serverinfo.emailcheck){b+=addHtmlValue("Status","<select id=dp30verified style=width:230px onchange=p30validateEmail()><option value=0>Not verified</option><option value=1>Verified</option></select>")}setDialogMode(2,"Change Email for "+EscapeHtml(currentUser.name),3,p30showUserEmailChangeDialogEx,b);Q("dp30email").focus();Q("dp30email").value=currentUser.email;if(serverinfo.emailcheck){Q("dp30verified").value=currentUser.emailVerified?1:0}p30validateEmail()}function p30validateEmail(){var a=Q("dp30email").value,b=a.split("@");b=(b.length==2)&&(b[0].length>0)&&(b[1].split(".").length>1)&&(b[1].length>2)&&(a.length<1024)&&((a!=userinfo.email)||((serverinfo.emailcheck==true)&&(Q("dp30verified").value!=(userinfo.emailVerified?1:0))));QE("idx_dlgOkButton",b)}function p30showUserEmailChangeDialogEx(){var a={action:"edituser",name:currentUser.name,email:Q("dp30email").value};if(serverinfo.emailcheck){a.emailVerified=(Q("dp30verified").value==1)}meshserver.send(a)}function p30showUserChangePassDialog(){if(xxdialogMode){return}var a="";a+=addHtmlValue("Password","<input id=p4pass1 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Password","<input id=p4pass2 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");setDialogMode(2,"Change Password for "+EscapeHtml(currentUser.name),3,p30showUserChangePassDialogEx,a);showCreateNewAccountDialogValidate();Q("p4pass1").focus()}function p30showUserChangePassDialogEx(){if(Q("p4pass1").value==Q("p4pass2").value){meshserver.send({action:"changeuserpass",user:currentUser.name,pass:Q("p4pass1").value})}}function p30showDeleteUserDialog(){if(xxdialogMode){return}setDialogMode(2,"Delete User "+EscapeHtml(currentUser.name),3,p30showDeleteUserDialogEx,"Confirm deletion of user "+EscapeHtml(currentUser.name)+"?")}function p30showDeleteUserDialogEx(){meshserver.send({action:"deleteuser",userid:currentUser._id,username:currentUser.name})}function drawUserTimeline(){var s=null,o=Date.now();s=[];var f=new Date();f.setHours(0,0,0,0);f=new Date(f.getTime()-(1000*60*60*24*6));var u=f.getTime();var t=[];if(s!=null&&s.length>1){t.push([0,s[1],s[0]]);var c=s[1];for(var m=2;m<s.length;m+=2){var p=s[m],k=o;if(s.length>(m+1)){k=s[m+1]}t.push([c,c+k,p]);c=c+k}}var z="",b=1,h=new Date();h.setHours(0,0,0,0);for(var m=0;m<7;m++){var g="",q=h.getTime(),l=q+(1000*60*60*24);for(var n in t){var a=t[n];if(isTimeBlockInside(q,l,a[0],a[1])==true){var w=Math.max(q,a[0]);var r=Math.min(Math.min(l,a[1]),o);var y=Math.round((r-w)/112794);if(y>0){var v=powerStateStrings2[a[2]]+" from "+new Date(w).toLocaleTimeString()+" to "+new Date(r).toLocaleTimeString()+".";g+='<div title="'+v+'" style=display:table-cell;width:'+y+"px;background-color:"+powerColor(a[2])+";height:16px></div>"}}}z+="<tr style="+(((b%2)==0)?"background-color:#DDD":"")+"><td><div> "+h.toLocaleDateString()+"<div></div></div></td><td><div>"+g+"</div></td></tr>";++b;h=new Date(h.getTime()-(1000*60*60*24))}QH("p30html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>'+z+"</tbody></table>")}var currentUserEvents=null;function userEvents_update(){var h="",a=null;for(var c in currentUserEvents){var b=currentUserEvents[c];var g=new Date(b.time);if(g.toLocaleDateString()!=a){if(a!=null){h+="</table>"}h+="<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>"+g.toLocaleDateString()+"</td></tr>";a=g.toLocaleDateString()}var d="si3";if(b.etype=="user"){d="m2"}if(b.etype=="server"){d="si3"}var f=b.msg.split("(R)").join("®");if(b.username&&b.username!=userinfo.name){f+=": "+b.username}h+="<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>";h+="<div style=float:left;height:18px;width:18px;background-color:white><div class="+d+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";h+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";h+="<div style=font-size:14px><span style=width:300px>"+g.toLocaleTimeString()+" - "+f+"</span></div></div></td></tr>"}if(a!=null){h+="</table>"}if(h==""){h="<br><i>No Events Found</i><br><br>"}QH("p31events",h)}function refreshUsersEvents(){meshserver.send({action:"events",limit:parseInt(p31limitdropdown.value),user:currentUser.name})}function d3init(){Q("d3localFile").value="";d3modechange()}function d3modechange(){var a=Q("d3uploadMode").value;QV("d3localmode",a==1);QV("d3servermode",a==2);if(a==1){d3setActions()}else{d3updatefiles()}}var d3filetreelinkpath;var d3filetreelocation=[];function d3updatefiles(){if(Q("d3uploadMode").value==1){return}var n="",o="",g=filetree,k=1;var c=[],s=d3filetreelinkpath,b=[],a=document.getElementsByName("fc");for(var p=0;p<a.length;p++){if(a[p].checked){b.push(a[p].value)}}d3filetreelinkpath="";for(var p in d3filetreelocation){if((g.f!=null)&&(g.f[d3filetreelocation[p]]!=null)){c.push(d3filetreelocation[p]);if((k==1)){var u=d3filetreelocation[p].split("/");publicPath=window.location+u[0]+"files/"+u[2];if(d3filetreelocation[p]===userinfo._id){d3filetreelinkpath+="self"}else{d3filetreelinkpath+=(u[0]+"/"+u[2])}}else{if(d3filetreelinkpath!=""){d3filetreelinkpath+="/"+d3filetreelocation[p];if(k>2){publicPath+="/"+d3filetreelocation[p]}}}g=g.f[d3filetreelocation[p]];k++}else{break}}d3filetreelocation=c;var j=p5sort_files(g.f);for(var p in j){var d=j[p],r=d.n,t;t=r;if(r.length>70){t='<span title="'+EscapeHtml(r)+'">'+EscapeHtml(r.substring(0,70))+"...</span>"}else{t=EscapeHtml(r)}r=EscapeHtml(r);var l="";if(d.s!=null){l=getFileSizeStr(d.s)}var m="";if(d.t<3){var v="";m='<div class=filelist file=999><span style=float:right title="'+v+'"></span><span><div class=fileIcon'+d.t+'></div> <a style=cursor:pointer onclick=d3folderset("'+encodeURIComponent(d.nx)+'")>'+t+"</a></span></div>"}else{var q=t;m="<div class=filelist file=3><input style=float:left name=fcx class=fcb type=checkbox onchange=d3setActions() value='"+d.nx+"'> <span style=float:right>"+l+"</span><span><div class=fileIcon"+d.t+"></div>"+q+"</span></div>"}if(d.t<3){n+=m}else{o+=m}}QH("d3serverfiles",n+o);QE("p3FolderUp",d3filetreelocation.length>0);d3setActions()}function d3folderset(a){d3filetreelocation.push(decodeURIComponent(a));d3updatefiles()}function d3folderup(a){if(a==null){d3filetreelocation.pop()}else{while(d3filetreelocation.length>a){d3filetreelocation.pop()}}d3updatefiles()}function d3getFileSel(){var a=[];var b=document.getElementsByName("fcx");for(var c=0;c<b.length;c++){if(b[c].checked){a.push(b[c].value)}}return a}function d3setActions(){var a=Q("d3uploadMode").value;if(a==1){QE("idx_dlgOkButton",Q("d3localFile").value.length>0)}else{QE("idx_dlgOkButton",d3getFileSel().length==1)}}var notifications=[];function clickNotificationIcon(a){if(a==true){QV("notifiyBox",true)}else{if(a==false){QV("notifiyBox",false)}else{QV("notifiyBox",QS("notifiyBox")["display"]=="none")}}drawNotifications()}function setNotificationCount(a){if(parseInt(Q("notificationCount").innerHTML)==a){return}QH("notificationCount",a);QS("notificationCount")["background-color"]=(a==0)?"lightblue":"orange";QV("notificationCount",a>0)}function drawNotifications(){var j="";if(notifications.length==0){j="<div style=margin:5px>There are currently no notifications</div>"}else{for(var c in notifications){var g=notifications[c];var k="";var a=new Date(g.time);var f=0;if(g.nodeid!=null){var h=getNodeFromId(g.nodeid);if(h!=null){f=h.icon;k="<b>"+h.name+"</b>: "}}j+='<div title="Occured at '+a.toLocaleString()+'" id="notifyx'+g.id+'" class=notification style="cursor:pointer;border-top:1px solid '+((j=="")?"transparent":"orange")+'"><div class=j'+f+' onclick="notificationSelected('+g.id+')" style=margin:5px;float:left></div><div onclick="notificationDelete('+g.id+')" class=unselectable title="Clear this notification" style=margin:5px;float:right;color:orange><b>X</b></div><div onclick="notificationSelected('+g.id+')" style=margin:5px>'+k+g.text+"</div></div>"}}var b="";if(notifications.length>1){b='<div id="notifyRemoveAll" onclick="deleteAllNotifications()" style="cursor:pointer;border-top:1px solid orange;margin:5px;color:orange;text-align:right;padding-right:3px">Clear all</div>'}QH("notifiyBox",'<div class=customScroll style="max-height:170px;overflow-y:auto;margin:5px">'+j+"</div>"+b)}function notificationSelected(b){var c=-1;for(var a in notifications){if(notifications[a].id==b){c=a}}if(c!=-1){var d=notifications[c];if(d.nodeid!=null){if(d.tag=="desktop"){gotoDevice(d.nodeid,12)}else{if(d.tag=="terminal"){gotoDevice(d.nodeid,11)}else{if(d.tag=="files"){gotoDevice(d.nodeid,13)}else{if(d.tag=="intelamt"){gotoDevice(d.nodeid,14)}else{if(d.tag=="console"){gotoDevice(d.nodeid,15)}else{gotoDevice(d.nodeid,10)}}}}}}}}function notificationDelete(b){var c=-1;e=Q("notifyx"+b);if(e!=null){for(var a in notifications){if(notifications[a].id==b){c=a}}if(c!=-1){notifications.splice(c,1);e.parentNode.removeChild(e);setNotificationCount(notifications.length);if(notifications.length==0){QV("notifiyBox",false)}if(notifications.length==1){QV("notifyRemoveAll",false)}if((notifications.length>0)&&(c==0)){var d=notifications[0];QS("notifyx"+d.id)["border-top"]="1px solid transparent"}}}}function addNotification(a){if(a.time==null){a.time=Date.now()}if(a.id==null){a.id=Math.random()}notifications.unshift(a);setNotificationCount(notifications.length);Q("chimes").play();clickNotificationIcon(true)}function deleteAllNotifications(){notifications=[];setNotificationCount(0);drawNotifications();QV("notifiyBox",false)}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;var xxcurrentView=0;function setDialogMode(k,l,a,g,d,j){xxdialogMode=k;xxdialogFunc=g;xxdialogButtons=a;xxdialogTag=j;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgDeleteButton",a&4);QV("idx_dlgButtonBar",a&7);if(l){QH("id_dialogtitle",l)}for(var h=1;h<24;h++){QV("dialog"+h,h==k)}QV("dialog",k);if(d){if(k==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(g){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||g)&&c){c(g,d)}}function center(){QS("dialog").left=((((getDocWidth()-400)/2))+"px");deskAdjust();drawDeviceTimeline()}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function go(b){if(xxdialogMode||xxcurrentView==b){return}for(var a=0;a<32;a++){QV("p"+a,a==b)}xxcurrentView=b;QV("topbar",b!=0);if(b>=10&&b<20){QS("MainMenuMyDevices").backgroundColor="#606060"}else{QS("MainMenuMyDevices").backgroundColor=((b==1)?"#003366":"#808080")}if(b>=20&&b<30){QS("MainMenuMyAccount").backgroundColor="#606060"}else{QS("MainMenuMyAccount").backgroundColor=((b==2)?"#003366":"#808080")}QS("MainMenuMyEvents").backgroundColor=((b==3)?"#003366":"#808080");if(b>=30&&b<40){QS("MainMenuMyUsers").backgroundColor="#606060"}else{QS("MainMenuMyUsers").backgroundColor=((b==4)?"#003366":"#808080")}QS("MainMenuMyFiles").backgroundColor=((b==5)?"#003366":"#808080");QV("MainSubMenuSpan",b>=10&&b<20);QS("MainDev").backgroundColor=((b==10)?"#003366":"#808080");QS("MainDevDesktop").backgroundColor=((b==11)?"#003366":"#808080");QS("MainDevTerminal").backgroundColor=((b==12)?"#003366":"#808080");QS("MainDevFiles").backgroundColor=((b==13)?"#003366":"#808080");QS("MainDevEvents").backgroundColor=((b==16)?"#003366":"#808080");QS("MainDevAmt").backgroundColor=((b==14)?"#003366":"#808080");QS("MainDevConsole").backgroundColor=((b==15)?"#003366":"#808080");QV("MeshSubMenuSpan",b>=20&&b<30);QS("MeshGeneral").backgroundColor=((b==20)?"#003366":"#808080");QV("UserSubMenuSpan",b>=30&&b<40);QS("UserGeneral").backgroundColor=((b==30)?"#003366":"#808080");QS("UserEvents").backgroundColor=((b==31)?"#003366":"#808080");if(b==1){updateDevicesEx()}}function joinPaths(){var c=[];for(var a in arguments){var b=arguments[a];if((b!=null)&&(b!="")){while(b.endsWith("/")||b.endsWith("\\")){b=b.substring(0,b.length-1)}while(b.startsWith("/")||b.startsWith("\\")){b=b.substring(1)}c.push(b)}}return c.join("/")}function putstore(b,c){try{if(typeof(localStorage)==="undefined"){return}localStorage.setItem(b,c)}catch(a){}}function getstore(b,d){try{if(typeof(localStorage)==="undefined"){return d}var c=localStorage.getItem(b);if((c==null)||(c==null)){return d}return c}catch(a){return d}}function addLink(b,a){return"<a style=cursor:pointer;color:darkblue;text-decoration:none onclick='"+a+"'>♦ "+b+"</a>"}function addLinkConditional(d,b,a){if(a){return addLink(d,b)}return d}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function addOption(c,d,a){var b=document.createElement("option");b.text=d;b.value=a;Q(c).add(b)}function passwordcheck(a){var b=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()]).{8,}/;return b.test(a)}function methodcheck(a){if(a&&a!=null&&a.Body&&a.Body.ReturnValueStr!="SUCCESS"){messagebox("Call Error",a.Header.Method+": "+a.Body.ReturnValueStr.replace("_"," "));return true}return false}function TableStart(){return"<table cellpadding=0 cellspacing=0 style=width:100%;border-radius:8px><tr><td width=200px><p><td>"}function TableStart2(){return"<table cellpadding=0 cellspacing=0 style=width:100%;border-radius:8px><tr><td><p><td>"}function TableEntry(a,b){return"<tr><td><p>"+a+"<td>"+b}function FullTable(c,a){var b=TableStart();for(i in c){if(i&&c[i]){b+=TableEntry(i,c[i])}}return b+TableEnd(a)}function TableEnd(a){return"<tr><td colspan=2><p>"+(a?a:"")+"</table>"}function AddButton(b,a){return"<input type=button value='"+b+"' onclick='"+a+"' style=margin:4px>"}function AddButton2(b,a){return"<input type=button value='"+b+"' onclick='"+a+"'>"}function AddRefreshButton(a){return"<input type=button name=refreshbtn value=Refresh onclick='refreshButtons(false);"+a+"' style=margin:4px "+(refreshButtonsState==false?"disabled":"")+">"}function MoreStart(){return'<a style=cursor:pointer;color:blue id=morexxx1 onclick=QV("morexxx1",false);QV("morexxx2",true)>▼ More</a><div id=morexxx2 style=display:none><br><hr>'}function MoreEnd(){return'<a style=cursor:pointer;color:blue onclick=QV("morexxx2",false);QV("morexxx1",true)>▲ Less</a></div>'}function getSelectedOptions(f){var d=[],c;for(var a=0,b=f.options.length;a<b;a++){c=f.options[a];if(c.selected){d.push(c.value)}}return d}function getInstance(b,c){for(var a in b){if(b[a]["InstanceID"]==c){return b[a]}}return null}function getItem(b,c,d){for(var a in b){if(b[a][c]==d){return b[a]}}return null}function guidToStr(a){return a.substring(6,8)+a.substring(4,6)+a.substring(2,4)+a.substring(0,2)+"-"+a.substring(10,12)+a.substring(8,10)+"-"+a.substring(14,16)+a.substring(12,14)+"-"+a.substring(16,20)+"-"+a.substring(20)}function getUrlVars(){var d,a,f=[],b=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(var c=0;c<b.length;c++){d=b[c].indexOf("=");if(d>0){f[b[c].substring(0,d)]=b[c].substring(d+1,b[c].length)}}return f}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function addHtmlValue(a,b){return"<table><td style=width:120px>"+a+"<td><b>"+b+"</b></table>"}function addHtmlValue2(a,b){return"<div><div style=display:inline-block;float:right>"+b+"</div><div style=display:inline-block>"+a+"</div></div>"}function parseUriArgs(){var a,c={},b=window.document.location.href.split(/[\?&|\=]/);b.splice(0,1);for(d in b){switch(d%2){case 0:a=b[d];break;case 1:c[a]=b[d];var d=parseInt(c[a]);if(d==c[a]){c[a]=d}break}}return c}function focusTextBox(a){setTimeout(function(){Q(a).selectionStart=Q(a).selectionEnd=65535;Q(a).focus()},0)}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)};</script></body></html>
\ No newline at end of file
views/default-mobile-min.handlebars
new
+1
@@ -0,0 +1 @@
1
+<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script> <title>MeshCentral - Login</title> <style> a{color:#036;text-decoration:underline;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}.i1{background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;border:none;}.i2{background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;border:none;}.i3{background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;border:none;}.i4{background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;border:none;}.i5{background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;border:none;}.i6{background:url(../images/icons50.png) -250px 0px;height:50px;width:50px;border:none;}.m0{background:url(../images/images16.png) -32px 0px;height:16px;width:16px;border:none;float:left;}.m1{background:url(../images/images16.png) -16px 0px;height:16px;width:16px;border:none;float:left;}.m2{background:url(../images/images16.png) -96px 0px;height:16px;width:16px;border:none;float:left;}.m3{background:url(../images/images16.png) -112px 0px;height:16px;width:16px;border:none;float:left;}.gray{ filter:gray; -webkit-filter:grayscale(100%) opacity(60%); }.DevSt{padding-left:5px;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#DDDDDD;}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;background-color:white;clear:both;}</style> </head> <body onload="if (typeof(startup) !== 'undefined') startup();" style="overflow-y:hidden;margin:0;padding:0;border:0;color:black;font-size:13px;font-family:\'Trebuchet MS\', Arial, Helvetica, sans-serif"> <div id="container"> <div id="mastheadx"></div> <div id="masthead" style="background-color:#036;background-repeat:no-repeat;height:50px;width:100%;overflow:hidden"> <div style="width:calc(100% - 50px);overflow:hidden"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:10px;padding-top:6px"> <strong><font style="font-size:36px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:10px"> <strong><font style="font-size:12px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> </div> <img class="noselect" style="position:absolute;right:0;top:10px;bottom:50px;color:#c8c8c8;font-size:44px;margin-right:8px;cursor:pointer" onclick="topMenu()" src="/images/3bars-30.png" width="30" height="30"> </div> <div id="page_content" style="overflow-y:scroll;position:absolute;bottom:32px;top:50px;width:100%"> <div id="column_l" style="width:100%;padding:0;position:absolute;bottom:0px;top:0px"> <div id="p0" style="display:none;width:100%;height:100%"> <div style="display:flex;align-items:center;width:100%;height:100%"> <div id="p0message" style="text-align:center;width:100%">Server disconnected, <href onclick="reload()" style="cursor:pointer"><u>click to reconnect</u></href>.</div> </div> </div> <div id="p1" style="display:none;width:100%;height:100%"> <div style="display:flex;align-items:center;width:100%;height:100%"> <div id="p1message" style="text-align:center;width:100%"></div> </div> </div> <div id="p2" style="display:none"> <div id="xdevices"></div> </div> <div id="p3" style="display:none;position:absolute;bottom:0;top:0;width:100%"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div> </td> <td> <img src="/images/user-50.png" width="50" height="50"> </td> <td> <div style="margin-left:5px"> <strong style="font-size:large"><span id="p3userName"></span></strong><br> </div> </td> </tr> </table> <div id="p3info" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%"> <div style="margin-left:8px"> <div id="p3AccountActions"> <p><strong>Account actions</strong></p> <div style="margin-left:9px;margin-bottom:8px"> <div style="margin-top:5px"><span id="verifyEmailId" style="display:none"><a onclick="account_showVerifyEmail()" style="cursor:pointer">Verify email</a></span></div> <div style="margin-top:5px"><a onclick="account_showChangeEmail()" style="cursor:pointer">Change email address</a></div> <div style="margin-top:5px"><a onclick="account_showChangePassword()" style="cursor:pointer">Change password</a></div> <div style="margin-top:5px"><a onclick="account_showDeleteAccount()" style="cursor:pointer">Delete account</a></div> </div> </div> <br style="clear:both"> <strong>Meshes</strong> ( <a onclick="account_createMesh()" style="cursor:pointer"><img height="12" src="images/icon-addnew.png" width="12" border="0"> New</a> ) <br><br> <div id="p3meshes"></div> <div id="p3noMeshFound" style="margin-left:9px;display:none">No meshes. <a onclick="account_createMesh()" style="cursor:pointer"><strong>Get started here!</strong></a></div> <br style="clear:both"> </div> </div> </div> <div id="p5" style="display:none"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div> </td> <td> <img src="/images/user-50.png" width="50" height="50"> </td> <td> <div style="margin-left:5px"> <strong style="font-size:large">My Files</strong><br> </div> </td> </tr> </table> <div id="p5myfiles" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%"> <table id="p5toolbar" style="width:100%;height:78px" cellpadding="0" cellspacing="0"> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5FolderUp" disabled="disabled" onclick="p5folderup()" value="Up"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5SelectAllButton" disabled="disabled" onclick="p5selectallfile()" value="SelectAll" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5RenameFileButton" disabled="disabled" value="Rename" onclick="p5renamefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5DeleteFileButton" disabled="disabled" value="Delete" onclick="p5deletefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5NewFolderButton" disabled="disabled" value="Folder" onclick="p5createfolder()" onkeypress="return false" onkeydown="return false"> </div> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5UploadButton" disabled="disabled" value="Upload" onclick="p5uploadFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5CutButton" disabled="disabled" value="Cut" onclick="p5copyFile(1)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5CopyButton" disabled="disabled" value="Copy" onclick="p5copyFile(0)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5PasteButton" disabled="disabled" value="Paste" onclick="p5pasteFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5RefreshButton" value="Refresh" onclick="p5refreshFiles()" onkeypress="return false" onkeydown="return false"> </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <table style="width:100%"> <tr> <td id="p5currentpath" style="overflow:hidden;padding-left:4px;padding-top:2px"></td> <td style="text-align:right;padding-right:4px"> <select id="p5sortdropdown" onchange="updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </td> </tr> </table> </td> </tr> </table> <div id="p5filetable" style="width:100%;height:calc(100% - 133px);overflow:auto;-webkit-user-select:none"> <span id="p5files"></span> </div> <table id="p5toolbarBottom" style="width:100%;height:22px;position:absolute;bottom:0px;background-color:#D3D9D6" cellpadding="0" cellspacing="0"> <tr> <td style="text-align:left;padding:3px"> <span id="p5bottomstatus"></span></td> <td id="p5rightOfButtons" style="text-align:right;padding:3px"></td> </tr> </table> </div> </div> <div id="p10" style="display:none;position:absolute;bottom:0;top:0;width:100%;overflow:hidden"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;position:absolute;top:0"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div> </td> <td> <a id="MainComputerImage" style="cursor:pointer" onclick="p10showiconselector()"></a> </td> <td> <div style="margin-left:5px"> <strong><span id="p10deviceName"></span></strong><br> <span id="MainComputerState"></span> </div> </td> </tr> </table> <div id="p10general" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%"> <div id="p10html" style="margin-left:8px;margin-right:8px"></div> <div id="p10html2"></div> <div id="p10html3"></div> </div> <div id="p10desktop" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%;display:none"> <div id="deskarea1" style="position:absolute;top:0px;width:100%;height:25px"> <div style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <span id="p14power"></span> </div> <div style="margin-left:3px"> <input type="button" id="connectbutton1" value="Connect" onclick="connectDesktop(event,1)" onkeypress="return false" onkeydown="return false" disabled="disabled"> <input type="button" id="connectbutton1h" value="HW Connect" onclick="connectDesktop(event,2)" onkeypress="return false" onkeydown="return false" disabled="disabled"> <input type="button" id="disconnectbutton1" value="Disconnect" onclick="connectDesktop(event,0)" onkeypress="return false" onkeydown="return false"> <span id="deskstatus">Disconnected</span> </div> </div> </div> <div id="deskarea3" style="position:absolute;top:25px;width:100%;height:calc(100% - 50px)"> <div id="deskarea3x" style="background:black;text-align:center;height:100%;position:relative"> <div id="DeskParent" style="height:100%"> <canvas id="Desk" width="640" height="200" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" onmousewheel="dmousewheel(event)"></canvas> </div> <div id="DeskTools" style="position:absolute;width:400px;height:100%;background-color:gray;top:0;right:0;border-left:2px solid lightgray;display:none"> <a id="DeskToolsRefreshButton" style="float:right;padding:3px;cursor:pointer" onclick="refreshDeskTools()">Refresh</a> <div id="DeskToolsBar" style="position:absolute;padding:3px;border-radius:3px 3px 0px 0px;top:5px;left:4px;bottom:26px;background-color:lightgray;cursor:pointer">Processes</div> <div style="position:absolute;top:26px;left:4px;right:4px;bottom:4px;background-color:lightgray;text-align:left"> <div style="border-bottom:1px solid darkgray;padding:3px"><a style="width:50px;padding-right:5px;float:left;cursor:pointer" title="Sort by process id" onclick="sortProcess(0)">PID</a><a style="cursor:pointer" title="Sort by name" onclick="sortProcess(1)">Name</a></div> <div id="DeskToolsProcesses" style="overflow-y:scroll;position:absolute;top:24px;bottom:0px;width:100%"></div> </div> </div> </div> </div> <div id="deskarea4" style="position:absolute;bottom:0px;width:100%;height:25px"> <div style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <select id="termdisplays" style="display:none" onchange="deskSetDisplay(event)" onclick="deskGetDisplayNumbers(event)"></select> <input id="DeskToastButton" type="button" value="Toast" title="Display a notification message on the remote computer" onkeypress="return false" onkeydown="return false" onclick="deviceToastFunction()"> </div> <div> <input id="deskActionsBtn" type="button" style="margin-left:3px" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()"> <input type="button" value="Settings..." title="Edit remote desktop settings" onkeypress="return false" onkeydown="return false" onclick="showDesktopSettings()"> <input type="button" title="Change the power state of the remote machine" onkeypress="return false" onkeydown="return false" value="Power Actions..." onclick="showPowerActionDlg()" style="display:none"> <input id="DeskCAD" type="button" value="Ctrl-Alt-Del" onkeypress="return false" onkeydown="return false" onclick="sendCAD()"> </div> </div> </div> </div> <div id="p10files" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%;display:none"> <table id="p13toolbar" style="width:100%;height:111px" cellpadding="0" cellspacing="0"> <tr> <td style="background-color:#C0C0C0;border-bottom:2px solid black;padding:2px"> <div style="float:right;text-align:right"> <input id="filesActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:2px"> </div> <div style="margin-left:2px"> <input id="p13AutoConnect" value="AutoConnect" onclick="autoConnectFiles(event)" onkeypress="return false" onkeydown="return false" type="button" style="display:none"> <input id="p13Connect" value="Connect" onclick="connectFiles(event)" onkeypress="return false" onkeydown="return false" type="button"> <span id="p13Status">Disconnected</span> </div> </td> </tr> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13FolderUp" disabled="disabled" onclick="p13folderup()" value="Up"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13SelectAllButton" disabled="disabled" onclick="p13selectallfile()" value="SelectAll" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13RenameFileButton" disabled="disabled" value="Rename" onclick="p13renamefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13DeleteFileButton" disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13NewFolderButton" disabled="disabled" value="Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false"> </div> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13UploadButton" disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13CutButton" disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13CopyButton" disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13PasteButton" disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13RefreshButton" disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false"> </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <table style="width:100%"> <tr> <td id="p13currentpath" style="overflow:hidden;padding-left:4px;padding-top:2px"></td> <td style="text-align:right;padding-right:4px"> <select id="p13sortdropdown" onchange="p13updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </td> </tr> </table> </td> </tr> </table> <div id="p13filetable" style="width:100%;height:calc(100% - 133px);overflow:auto;-webkit-user-select:none"> <span id="p13files"></span> </div> <table id="p13toolbarBottom" style="width:100%;height:22px;position:absolute;bottom:0px" cellpadding="0" cellspacing="0"> <tr><td style="text-align:left;padding:3px;text-align:center;background-color:#D3D9D6"> <span id="p13bottomstatus"></span></td></tr> </table> </div> </div> <div id="p20" style="display:none;position:absolute;bottom:0;top:0;width:100%"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div> </td> <td onclick="p20editmesh(1)"> <img src="/images/meshicon50.png" width="50" height="50"> </td> <td onclick="p20editmesh(1)"> <div style="margin-left:5px"> <strong style="font-size:large"><span id="p20meshName"></span></strong><br> </div> </td> </tr> </table> <div id="p20info" style="margin-left:8px;margin-right:8px"></div> </div> </div> </div> <div id="footer" style="height:32px;width:100%;text-align:center;background-color:#113962;position:absolute;bottom:0px"> <table id="footerMenu" cellpadding="0" cellspacing="0" style="height:32px;width:100%;color:white;cursor:pointer;table-layout:fixed"></table> </div> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:90px;width:300px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:20px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> </div> </div> <div id="topMenu" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:0px 0px 5px 5px;position:fixed;top:50px;right:5px;width:170px;display:none"> <div style="padding:12px;border-top:1px solid gray;color:black;cursor:pointer" onclick="topMenu(2)">My Files</div> <div style="padding:12px;border-top:1px solid gray;color:black;cursor:pointer" onclick="topMenu(1)">My Account</div> <a href="/logout"><div style="padding:12px;border-top:1px solid gray;color:black;cursor:pointer">Logout</div></a> </div> <iframe name="fileUploadFrame" style="display:none"></iframe> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g," ")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function ObjectToStringEx2(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),e;while(e=b.shift()){c+=String.fromCharCode("0x"+e)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"®").replace(/\(TM\)/g,"™")}var MeshServerCreateControl=function(a){var b={};b.State=0;b.connectstate=0;b.pingTimer=null;b.xxStateChange=function(c){if(b.State==c){return}b.State=c;if(b.onStateChanged){b.onStateChanged(b,b.State)}};b.Start=function(){b.connectstate=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+a+"control.ashx");b.socket.onopen=function(){b.connectstate=1;b.xxStateChange(2)};b.socket.onmessage=b.xxOnMessage;b.socket.onclose=function(){b.Stop()};b.xxStateChange(1);if(b.pingTimer!=null){clearInterval(b.pingTimer)}b.pingTimer=setInterval(function(){b.send({action:"ping"})},29000)};b.Stop=function(){b.connectstate=0;if(b.socket){b.socket.close();delete b.socket}if(b.pingTimer!=null){clearInterval(b.pingTimer);b.pingTimer=null}b.xxStateChange(0)};b.xxOnMessage=function(c){var d;try{d=JSON.parse(c.data)}catch(c){return}if(d.action=="pong"){return}if(b.onMessage){b.onMessage(b,d)}};b.send=function(c){if(b.socket!=null&&b.connectstate==1){b.socket.send(JSON.stringify(c))}};return b};var CreateAgentRedirect=function(a,b,e){var c={};c.m=b;b.parent=c;c.meshserver=a;c.State=0;c.nodeid=null;c.socket=null;c.connectstate=-1;c.tunnelid=Math.random().toString(36).substring(2);c.protocol=b.protocol;c.onStateChanged=null;c.ctrlMsgAllowed=true;c.attemptWebRTC=false;c.webRtcActive=false;c.webSwitchOk=false;c.webchannel=null;c.webrtc=null;c.debugmode=0;c.Start=function(f){var h,g=window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/meshrelay.ashx?id="+c.tunnelid;c.nodeid=f;c.connectstate=0;c.socket=new WebSocket(g);c.socket.onopen=c.xxOnSocketConnected;c.socket.onmessage=c.xxOnMessage;c.socket.onerror=function(j){console.error(j)};c.socket.onclose=c.xxOnSocketClosed;c.xxStateChange(1);c.meshserver.send({action:"msg",type:"tunnel",nodeid:c.nodeid,value:"*/meshrelay.ashx?id="+c.tunnelid})};c.xxOnSocketConnected=function(){if(c.debugmode==1){console.log("onSocketConnected")}c.xxStateChange(2)};c.xxOnControlCommand=function(h){var f;try{f=JSON.parse(h)}catch(g){return}if(f.ctrlChannel!="102938"){c.xxOnSocketData(h);return}if(c.webrtc!=null){if(f.type=="answer"){c.webrtc.setRemoteDescription(new RTCSessionDescription(f),function(){},c.xxCloseWebRTC)}else{if(f.type=="webrtc0"){c.webSwitchOk=true;d()}else{if(f.type=="webrtc1"){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc2"}')}else{if(f.type=="webrtc2"){}}}}}};c.sendCtrlMsg=function(g){if(c.ctrlMsgAllowed==true){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof g,g)}try{c.socket.send(g)}catch(f){}}};function d(){if((c.webSwitchOk==true)&&(c.webRtcActive==true)){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc0"}');c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc1"}');if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}}}c.xxOnMessage=function(k){if(c.State<3){if(k.data=="c"){try{c.socket.send(c.protocol)}catch(l){}c.xxStateChange(3);if(c.attemptWebRTC==true){var j=null;if(typeof RTCPeerConnection!=="undefined"){c.webrtc=new RTCPeerConnection(j)}else{if(typeof webkitRTCPeerConnection!=="undefined"){c.webrtc=new webkitRTCPeerConnection(j)}}if(c.webrtc!=null){c.webchannel=c.webrtc.createDataChannel("DataChannel",{});c.webchannel.onmessage=function(f){c.xxOnMessage({data:f.data})};c.webchannel.onopen=function(){c.webRtcActive=true;d()};c.webchannel.onclose=function(f){if(c.webRtcActive){c.Stop()}};c.webrtc.onicecandidate=function(f){if(f.candidate==null){try{c.socket.send(JSON.stringify(c.webrtcoffer))}catch(p){}}else{c.webrtcoffer.sdp+=("a="+f.candidate.candidate+"\r\n")}};c.webrtc.oniceconnectionstatechange=function(){if(c.webrtc!=null){if(c.webrtc.iceConnectionState=="disconnected"){c.Stop()}else{if(c.webrtc.iceConnectionState=="failed"){c.xxCloseWebRTC()}}}};c.webrtc.createOffer(function(f){c.webrtcoffer=f;c.webrtc.setLocalDescription(f,function(){},c.xxCloseWebRTC)},c.xxCloseWebRTC,{mandatory:{OfferToReceiveAudio:false,OfferToReceiveVideo:false}})}}return}}if(typeof k.data=="string"){c.xxOnControlCommand(k.data);return}if(typeof k.data=="object"){var m=new FileReader();if(m.readAsBinaryString){m.onload=function(f){c.xxOnSocketData(f.target.result)};m.readAsBinaryString(new Blob([k.data]))}else{if(m.readAsArrayBuffer){m.onloadend=function(f){c.xxOnSocketData(f.target.result)};m.readAsArrayBuffer(k.data)}else{var g="";var h=new Uint8Array(k.data);var o=h.byteLength;for(var n=0;n<o;n++){g+=String.fromCharCode(h[n])}c.xxOnSocketData(g)}}}else{c.xxOnSocketData(k.data)}};c.xxOnSocketData=function(h){if(!h||c.connectstate==-1){return}if(typeof h==="object"){var f="",g=new Uint8Array(h),k=g.byteLength;for(var j=0;j<k;j++){f+=String.fromCharCode(g[j])}h=f}else{if(typeof h!=="string"){return}}if((typeof args!="undefined")&&args.redirtrace){console.log("RedirRecv",typeof h,h.length,h)}return c.m.ProcessData(h)};c.sendText=function(f){if(typeof f!="string"){f=JSON.stringify(f)}c.send(encode_utf8(f))};c.send=function(k){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof k,k.length,k)}try{if(c.socket!=null&&c.socket.readyState==WebSocket.OPEN){if(typeof k=="string"){if(c.debugmode==1){var f=new Uint8Array(k.length),g=[];for(var j=0;j<k.length;++j){f[j]=k.charCodeAt(j);g.push(k.charCodeAt(j))}if(c.webRtcActive==true){c.webchannel.send(f.buffer)}else{c.socket.send(f.buffer)}}else{var f=new Uint8Array(k.length);for(var j=0;j<k.length;++j){f[j]=k.charCodeAt(j)}if(c.webRtcActive==true){c.webchannel.send(f.buffer)}else{c.socket.send(f.buffer)}}}else{if(c.webRtcActive==true){c.webchannel.send(k)}else{c.socket.send(k)}}}}catch(h){}};c.xxOnSocketClosed=function(){c.Stop(1)};c.xxStateChange=function(f){if(c.State==f){return}c.State=f;c.m.xxStateChange(c.State);if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}};c.xxCloseWebRTC=function(){if(c.webchannel!=null){try{c.webchannel.close()}catch(f){}c.webchannel=null}if(c.webrtc!=null){try{c.webrtc.close()}catch(f){}c.webrtc=null}c.webRtcActive=false};c.Stop=function(g){if(c.debugmode==1){console.log("stop",g)}c.xxCloseWebRTC();c.connectstate=-1;if(c.socket!=null){try{if(c.socket.readyState==1){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"close"}');c.socket.close()}}catch(f){}c.socket=null}c.xxStateChange(0)};return c};var CreateAgentRemoteDesktop=function(a,c){var b={};b.CanvasId=a;if(typeof a==="string"){b.CanvasId=Q(a)}b.Canvas=b.CanvasId.getContext("2d");b.scrolldiv=c;b.State=0;b.PendingOperations=[];b.tilesReceived=0;b.TilesDrawn=0;b.KillDraw=0;b.ipad=false;b.tabletKeyboardVisible=false;b.LastX=0;b.LastY=0;b.touchenabled=0;b.submenuoffset=0;b.touchtimer=null;b.TouchArray={};b.connectmode=0;b.connectioncount=0;b.rotation=0;b.protocol=2;b.debugmode=0;b.firstUpKeys=[];b.stopInput=false;b.sessionid=0;b.username;b.oldie=false;b.CompressionLevel=50;b.ScalingLevel=1024;b.FrameRateTimer=50;b.FirstDraw=false;b.ScreenWidth=960;b.ScreenHeight=700;b.width=960;b.height=960;b.onScreenSizeChange=null;b.onMessage=null;b.onConnectCountChanged=null;b.onDebugMessage=null;b.onTouchEnabledChanged=null;b.onDisplayinfo=null;b.Start=function(){b.State=0};b.Stop=function(){b.setRotation(0);b.UnGrabKeyInput();b.UnGrabMouseInput();b.touchenabled=0;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}b.Canvas.clearRect(0,0,b.CanvasId.width,b.CanvasId.height)};b.xxStateChange=function(d){if(b.State==d){return}b.State=d;switch(d){case 0:b.Stop();break;case 3:break}};b.send=function(d){b.parent.send(d)};b.ProcessPictureMsg=function(e,g,h){var f=new Image();f.xcount=b.tilesReceived++;var d=b.tilesReceived;f.src="data:image/jpeg;base64,"+btoa(e.substring(4,e.length));f.onload=function(){if(b.Canvas!=null&&b.KillDraw<d&&b.State!=0){b.PendingOperations.push([d,2,f,g,h]);while(b.DoPendingOperations()){}}};f.error=function(){console.log("DecodeTileError")}};b.DoPendingOperations=function(){if(b.PendingOperations.length==0){return false}for(var d=0;d<b.PendingOperations.length;d++){var e=b.PendingOperations[d];if(e[0]==(b.TilesDrawn+1)){if(e[1]==1){b.ProcessCopyRectMsg(e[2])}else{if(e[1]==2){b.Canvas.drawImage(e[2],b.rotX(e[3],e[4]),b.rotY(e[3],e[4]));delete e[2]}}b.PendingOperations.splice(d,1);delete e;b.TilesDrawn++;if(b.TilesDrawn==b.tilesReceived&&b.KillDraw<b.TilesDrawn){b.KillDraw=b.TilesDrawn=b.tilesReceived=0}return true}}if(b.oldie&&b.PendingOperations.length>0){b.TilesDrawn++}return false};b.ProcessCopyRectMsg=function(g){var h=((g.charCodeAt(0)&255)<<8)+(g.charCodeAt(1)&255);var j=((g.charCodeAt(2)&255)<<8)+(g.charCodeAt(3)&255);var d=((g.charCodeAt(4)&255)<<8)+(g.charCodeAt(5)&255);var e=((g.charCodeAt(6)&255)<<8)+(g.charCodeAt(7)&255);var k=((g.charCodeAt(8)&255)<<8)+(g.charCodeAt(9)&255);var f=((g.charCodeAt(10)&255)<<8)+(g.charCodeAt(11)&255);b.Canvas.drawImage(Canvas.canvas,h,j,k,f,d,e,k,f)};b.SendUnPause=function(){b.send(String.fromCharCode(0,8,0,5,0))};b.SendPause=function(){b.send(String.fromCharCode(0,8,0,5,1))};b.SendCompressionLevel=function(g,e,f,d){if(e){b.CompressionLevel=e}if(f){b.ScalingLevel=f}if(d){b.FrameRateTimer=d}b.send(String.fromCharCode(0,5,0,10,g,b.CompressionLevel)+b.shortToStr(b.ScalingLevel)+b.shortToStr(b.FrameRateTimer))};b.SendRefresh=function(){b.send(String.fromCharCode(0,6,0,4))};b.ProcessScreenMsg=function(e,d){b.Canvas.setTransform(1,0,0,1,0,0);b.rotation=0;b.FirstDraw=true;b.ScreenWidth=b.width=e;b.ScreenHeight=b.height=d;b.KillDraw=b.tilesReceived;while(b.PendingOperations.length>0){b.PendingOperations.shift()}b.SendCompressionLevel(1);b.SendUnPause();if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}};b.ProcessData=function(e){var d=0;while(d<e.length){d+=b.ProcessDataEx(e.substring(d))}};b.ProcessDataEx=function(n){if(n.length<4){return}var d=null,o=0,p=0,f=ReadShort(n,0),e=ReadShort(n,2);if((e!=n.length)&&(b.debugmode==1)){console.log(e,n.length,e==n.length)}if(f>=18){console.error("Invalid KVM command "+f+" of size "+e);console.log("Invalid KVM data",n.length,n,rstr2hex(n));return}if(e>n.length){console.error("KVM invalid command size",e,n.length);return}if(f==3||f==4||f==7){d=n.substring(4,e);o=((d.charCodeAt(0)&255)<<8)+(d.charCodeAt(1)&255);p=((d.charCodeAt(2)&255)<<8)+(d.charCodeAt(3)&255)}switch(f){case 3:if(b.FirstDraw){b.onResize()}b.ProcessPictureMsg(d,o,p);break;case 4:if(b.FirstDraw){b.onResize()}if(b.TilesDrawn==b.tilesReceived){b.ProcessCopyRectMsg(d)}else{b.PendingOperations.push([++tilesReceived,1,d])}break;case 7:b.ProcessScreenMsg(o,p);b.SendKeyMsgKC(b.KeyAction.UP,16);b.SendKeyMsgKC(b.KeyAction.UP,17);b.SendKeyMsgKC(b.KeyAction.UP,18);b.SendKeyMsgKC(b.KeyAction.UP,91);b.SendKeyMsgKC(b.KeyAction.UP,92);b.SendKeyMsgKC(b.KeyAction.UP,16);b.send(String.fromCharCode(0,14,0,4));break;case 11:var k=[],g=((n.charCodeAt(4)&255)<<8)+(n.charCodeAt(5)&255);if(g>0){var m=0,l=((n.charCodeAt(6+(g*2))&255)<<8)+(n.charCodeAt(7+(g*2))&255);for(var j=0;j<g;j++){var h=((n.charCodeAt(6+(j*2))&255)<<8)+(n.charCodeAt(7+(j*2))&255);if(h==65535){k.push("All Displays")}else{k.push("Display "+h)}if(h==l){m=j}}}if(b.onDisplayinfo!=null){b.onDisplayinfo(b,k,m)}break;case 12:break;case 14:b.touchenabled=1;b.TouchArray={};if(b.onTouchEnabledChanged!=null){b.onTouchEnabledChanged(b.touchenabled)}break;case 15:b.TouchArray={};break;case 16:b.connectioncount=ReadInt(n,4);if(b.onConnectCountChanged!=null){b.onConnectCountChanged(b.connectioncount,b)}break;case 17:if(b.onMessage!=null){b.onMessage(n.substring(4,e),b)}break}return e};b.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32};b.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5};b.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15};b.Alternate=0;b.SendKeyMsg=function(d,e){if(d==null){return}if(!e){var e=window.event}var f=e.keyCode;if(f==59){f=186}b.SendKeyMsgKC(d,f)};b.SendMessage=function(d){if(b.State==3){b.send(String.fromCharCode(0,17)+b.shortToStr(4+d.length)+d)}};b.SendKeyMsgKC=function(d,f){if(b.State!=3){return}if(typeof d=="object"){for(var e in d){b.SendKeyMsgKC(d[e][0],d[e][1])}}else{b.send(String.fromCharCode(0,b.InputType.KEY,0,6,(d-1),f))}};b.sendcad=function(){b.SendCtrlAltDelMsg()};b.SendCtrlAltDelMsg=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.CTRLALTDEL,0,4))}};b.SendEscKey=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.KEY,0,6,0,27,0,b.InputType.KEY,0,6,1,27))}};b.SendStartMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendCharmsMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.DOWN,67);b.SendKeyMsgKC(b.KeyAction.UP,67);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendTouchMsg1=function(e,d,f,g){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(14)+String.fromCharCode(1,e)+b.intToStr(d)+b.shortToStr(f)+b.shortToStr(g))}};b.SendTouchMsg2=function(f,d){var h="";var e;var j="TOUCHSEND: ";for(var g in b.TouchArray){if(g==f){e=d}else{if(b.TouchArray[g].f==1){e=65536|2|4;b.TouchArray[g].f=3;j+="START"+g}else{if(b.TouchArray[g].f==2){e=262144;j+="STOP"+g}else{e=2|4|131072}}}h+=String.fromCharCode(g)+b.intToStr(e)+b.shortToStr(b.TouchArray[g].x)+b.shortToStr(b.TouchArray[g].y);if(b.TouchArray[g].f==2){delete b.TouchArray[g]}}if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(5+h.length)+String.fromCharCode(2)+h)}if(Object.keys(b.TouchArray).length==0&&b.touchtimer!=null){clearInterval(b.touchtimer);b.touchtimer=null}};b.SendMouseMsg=function(d,g){if(b.State!=3){return}if(d!=null&&b.Canvas!=null){if(!g){var g=window.event}var k=(b.Canvas.canvas.height/b.CanvasId.clientHeight);var l=(b.Canvas.canvas.width/b.CanvasId.clientWidth);var j=b.GetPositionOfControl(b.Canvas.canvas);var m=((g.pageX-j[0])*l);var n=((g.pageY-j[1])*k);if(m>=0&&m<=b.Canvas.canvas.width&&n>=0&&n<=b.Canvas.canvas.height){var e=0;var f=0;if(d==b.KeyAction.UP||d==b.KeyAction.DOWN){if(g.which){((g.which==1)?(e=b.MouseButton.LEFT):((g.which==2)?(e=b.MouseButton.MIDDLE):(e=b.MouseButton.RIGHT)))}else{if(g.button){((g.button==0)?(e=b.MouseButton.LEFT):((g.button==1)?(e=b.MouseButton.MIDDLE):(e=b.MouseButton.RIGHT)))}}}else{if(d==b.KeyAction.SCROLL){if(g.detail){f=(-1*(g.detail*120))}else{if(g.wheelDelta){f=(g.wheelDelta*3)}}}}var h="";if(d==b.KeyAction.SCROLL){h=String.fromCharCode(0,b.InputType.MOUSE,0,12,0,((d==b.KeyAction.DOWN)?e:((e*2)&255)),((m/256)&255),(m&255),((n/256)&255),(n&255),((f/256)&255),(f&255))}else{h=String.fromCharCode(0,b.InputType.MOUSE,0,10,0,((d==b.KeyAction.DOWN)?e:((e*2)&255)),((m/256)&255),(m&255),((n/256)&255),(n&255))}if(b.Action==b.KeyAction.NONE){if(b.Alternate==0||b.ipad){b.send(h);b.Alternate=1}else{b.Alternate=0}}else{b.send(h)}}}};b.GetDisplayNumbers=function(){b.send(String.fromCharCode(0,11,0,4))};b.SetDisplay=function(d){b.send(String.fromCharCode(0,12,0,6,d>>8,d&255))};b.intToStr=function(d){return String.fromCharCode((d>>24)&255,(d>>16)&255,(d>>8)&255,d&255)};b.shortToStr=function(d){return String.fromCharCode((d>>8)&255,d&255)};b.onResize=function(){if(b.ScreenWidth==0||b.ScreenHeight==0){return}if(b.Canvas.canvas.width==b.ScreenWidth&&b.Canvas.canvas.height==b.ScreenHeight){return}if(b.FirstDraw){b.Canvas.canvas.width=b.ScreenWidth;b.Canvas.canvas.height=b.ScreenHeight;b.Canvas.fillRect(0,0,b.ScreenWidth,b.ScreenHeight);if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}}b.FirstDraw=false};b.xxMouseInputGrab=false;b.xxKeyInputGrab=false;b.xxMouseMove=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.NONE,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseUp=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseDown=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxDOMMouseScroll=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxMouseWheel=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxKeyUp=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyDown=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyPress=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.handleKeys=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyPress(d)};b.handleKeyUp=function(d){if(b.stopInput==true||desktop.State!=3){return false}if(b.firstUpKeys.length<5){b.firstUpKeys.push(d.keyCode);if((b.firstUpKeys.length==5)){var f=b.firstUpKeys.join(",");if((f=="16,17,91,91,16")||(f=="16,17,18,91,92")){b.stopInput=true}}}return b.xxKeyUp(d)};b.handleKeyDown=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyDown(d)};b.mousedown=function(d){if(b.stopInput==true){return false}return b.xxMouseDown(d)};b.mouseup=function(d){if(b.stopInput==true){return false}return b.xxMouseUp(d)};b.mousemove=function(d){if(b.stopInput==true){return false}return b.xxMouseMove(d)};b.mousewheel=function(d){if(b.stopInput==true){return false}return b.xxMouseWheel(d)};b.xxMsTouchEvent=function(d){if(d.originalEvent.pointerType==4){return}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}if(d.type=="MSPointerDown"||d.type=="MSPointerMove"||d.type=="MSPointerUp"){var e=0;var f=d.originalEvent.pointerId%256;var g=d.offsetX*(Canvas.canvas.width/b.CanvasId.clientWidth);var h=d.offsetY*(Canvas.canvas.height/b.CanvasId.clientHeight);if(d.type=="MSPointerDown"){e=65536|2|4}else{if(d.type=="MSPointerMove"){e=131072|2|4}else{if(d.type=="MSPointerUp"){e=262144}}}if(!b.TouchArray[f]){b.TouchArray[f]={x:g,y:h}}b.SendTouchMsg2(f,e);if(d.type=="MSPointerUp"){delete b.TouchArray[f]}}else{alert(d.type)}return true};b.xxTouchStart=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(KeyAction.DOWN,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(!b.TouchArray[g]){b.TouchArray[g]={x:(d.originalEvent.touches[f].pageX-h[0])*(Canvas.canvas.width/b.CanvasId.clientWidth),y:(d.originalEvent.touches[f].pageY-h[1])*(Canvas.canvas.height/b.CanvasId.clientHeight),f:1}}}if(Object.keys(b.TouchArray).length>0&&touchtimer==null){b.touchtimer=setInterval(function(){b.SendTouchMsg2(256,0)},50)}}};b.xxTouchMove=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(b.KeyAction.NONE,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].x=(d.originalEvent.touches[f].pageX-h[0])*(b.Canvas.canvas.width/b.CanvasId.clientWidth);b.TouchArray[g].y=(d.originalEvent.touches[f].pageY-h[1])*(b.Canvas.canvas.height/b.CanvasId.clientHeight)}}}};b.xxTouchEnd=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}d.which=1;d.pageX=LastX;d.pageY=LastY;b.SendMouseMsg(KeyAction.UP,d)}else{for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].f=2}}}};b.GrabMouseInput=function(){if(b.xxMouseInputGrab==true){return}var d=b.CanvasId;d.onmousemove=b.xxMouseMove;d.onmouseup=b.xxMouseUp;d.onmousedown=b.xxMouseDown;d.touchstart=b.xxTouchStart;d.touchmove=b.xxTouchMove;d.touchend=b.xxTouchEnd;d.MSPointerDown=b.xxMsTouchEvent;d.MSPointerMove=b.xxMsTouchEvent;d.MSPointerUp=b.xxMsTouchEvent;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=b.xxDOMMouseScroll}else{d.onmousewheel=b.xxMouseWheel}b.xxMouseInputGrab=true};b.UnGrabMouseInput=function(){if(b.xxMouseInputGrab==false){return}var d=b.CanvasId;d.onmousemove=null;d.onmouseup=null;d.onmousedown=null;d.touchstart=null;d.touchmove=null;d.touchend=null;d.MSPointerDown=null;d.MSPointerMove=null;d.MSPointerUp=null;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=null}else{d.onmousewheel=null}b.xxMouseInputGrab=false};b.GrabKeyInput=function(){if(b.xxKeyInputGrab==true){return}document.onkeyup=b.xxKeyUp;document.onkeydown=b.xxKeyDown;document.onkeypress=b.xxKeyPress;b.xxKeyInputGrab=true};b.UnGrabKeyInput=function(){if(b.xxKeyInputGrab==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;b.xxKeyInputGrab=false};b.GetPositionOfControl=function(d){var e=Array(2);e[0]=e[1]=0;while(d){e[0]+=d.offsetLeft;e[1]+=d.offsetTop;d=d.offsetParent}return e};b.crotX=function(d,e){if(b.rotation==0){return d}if(b.rotation==1){return e}if(b.rotation==2){return b.Canvas.canvas.width-d}if(b.rotation==3){return b.Canvas.canvas.height-e}};b.crotY=function(d,e){if(b.rotation==0){return e}if(b.rotation==1){return b.Canvas.canvas.width-d}if(b.rotation==2){return b.Canvas.canvas.height-e}if(b.rotation==3){return d}};b.rotX=function(d,e){if(b.rotation==0||b.rotation==1){return d}if(b.rotation==2){return d-b.Canvas.canvas.width}if(b.rotation==3){return d-b.Canvas.canvas.height}};b.rotY=function(d,e){if(b.rotation==0||b.rotation==3){return e}if(b.rotation==1){return e-b.Canvas.canvas.width}if(b.rotation==2){return e-b.Canvas.canvas.height}};b.tcanvas=null;b.setRotation=function(h){while(h<0){h+=4}var d=h%4;if(d==b.rotation){return true}var f=b.Canvas.canvas.width;var e=b.Canvas.canvas.height;if(b.rotation==1||b.rotation==3){f=b.Canvas.canvas.height;e=b.Canvas.canvas.width}if(b.tcanvas==null){b.tcanvas=document.createElement("canvas")}var g=b.tcanvas.getContext("2d");g.setTransform(1,0,0,1,0,0);g.canvas.width=f;g.canvas.height=e;g.rotate((b.rotation*-90)*Math.PI/180);if(b.rotation==0){g.drawImage(b.Canvas.canvas,0,0)}if(b.rotation==1){g.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,0)}if(b.rotation==2){g.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,-b.Canvas.canvas.height)}if(b.rotation==3){g.drawImage(b.Canvas.canvas,0,-b.Canvas.canvas.height)}if(b.rotation==0||b.rotation==2){b.Canvas.canvas.height=f;b.Canvas.canvas.width=e}if(b.rotation==1||b.rotation==3){b.Canvas.canvas.height=e;b.Canvas.canvas.width=f}b.Canvas.setTransform(1,0,0,1,0,0);b.Canvas.rotate((d*90)*Math.PI/180);b.rotation=d;b.Canvas.drawImage(b.tcanvas,b.rotX(0,0),b.rotY(0,0));b.ScreenWidth=b.Canvas.canvas.width;b.ScreenHeight=b.Canvas.canvas.height;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}return true};b.MuchTheSame=function(d,e){return(Math.abs(d-e)<4)};b.Debug=function(d){console.log(d)};b.getIEVersion=function(){var d=-1;if(navigator.appName=="Microsoft Internet Explorer"){var f=navigator.userAgent;var e=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");if(e.exec(f)!=null){d=parseFloat(RegExp.$1)}}return d};b.haltEvent=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};return b};function AmtStackCreateService(s){var r=new Object();r.wsman=s;r.pfx=["http://intel.com/wbem/wscim/1/amt-schema/1/","http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/","http://intel.com/wbem/wscim/1/ips-schema/1/"];r.PendingEnums=[];r.PendingBatchOperations=0;r.ActiveEnumsCount=0;r.MaxActiveEnumsCount=1;r.onProcessChanged=null;var m=0;var l=0;r.GetPendingActions=function(){return(r.PendingEnums.length*2)+(r.ActiveEnumsCount)+r.wsman.comm.PendingAjax.length+r.wsman.comm.ActiveAjaxCount+r.PendingBatchOperations};function q(){var t=r.GetPendingActions();if(m<t){m=t}if(r.onProcessChanged!=null&&l!=t){l=t;r.onProcessChanged(t,m)}if(t==0){m=0}}r.Subscribe=function(v,u,C,t,B,z,A,w,D,y){r.wsman.ExecSubscribe(r.CompleteName(v),u,C,function(G,F,E,H){q();t(r,v,E,H,B)},0,z,A,w,D,y);q()};r.UnSubscribe=function(u,t,y,v,w){r.wsman.ExecUnSubscribe(r.CompleteName(u),function(B,A,z,C){q();t(r,u,z,C,y)},0,v,w);q()};r.Get=function(u,t,w,v){r.wsman.ExecGet(r.CompleteName(u),function(A,z,y,B){q();t(r,u,y,B,w)},0,v);q()};r.Put=function(u,w,t,z,v,y){r.wsman.ExecPut(r.CompleteName(u),w,function(C,B,A,D){q();t(r,u,A,D,z)},0,v,y);q()};r.Create=function(u,w,t,y,v){r.wsman.ExecCreate(r.CompleteName(u),w,function(B,A,z,C){q();t(r,u,z,C,y)},0,v);q()};r.Delete=function(u,w,t,y,v){r.wsman.ExecDelete(r.CompleteName(u),w,function(B,A,z,C){q();t(r,u,z,C,y)},0,v);q()};r.Exec=function(w,v,t,u,A,y,z){r.wsman.ExecMethod(r.CompleteName(w),v,t,function(D,C,B,E){q();u(r,w,r.CompleteExecResponse(B),E,A)},0,y,z);q()};r.ExecWithXml=function(w,v,t,u,A,y,z){r.wsman.ExecMethodXml(r.CompleteName(w),v,execArgumentsToXml(t),function(D,C,B,E){q();u(r,w,r.CompleteExecResponse(B),E,A)},0,y,z);q()};r.Enum=function(u,t,w,v){if(r.ActiveEnumsCount<r.MaxActiveEnumsCount){r.ActiveEnumsCount++;r.wsman.ExecEnum(r.CompleteName(u),function(B,z,y,C,A){q();d(u,y,t,z,C,A)},w,v)}else{r.PendingEnums.push([u,t,w,v])}q()};function d(v,y,t,z,A,B,w){if(A!=200){t(r,v,null,A,B);c(1);return}if(y==null||y.Header.Method!="EnumerateResponse"||!y.Body.EnumerationContext){t(r,v,null,603,B);c(1);return}var u=y.Body.EnumerationContext;r.wsman.ExecPull(z,u,function(E,D,C,F){b(v,C,t,D,[],F,B,w)})}function b(z,B,t,C,w,D,E,A){if(D!=200){t(r,z,null,D,E);c(1);return}if(B==null||B.Header.Method!="PullResponse"){t(r,z,null,604,E);c(1);return}for(var v in B.Body.Items){if(B.Body.Items[v] instanceof Array){for(var y in B.Body.Items[v]){w.push(B.Body.Items[v][y])}}else{w.push(B.Body.Items[v])}}if(B.Body.EnumerationContext){var u=B.Body.EnumerationContext;r.wsman.ExecPull(C,u,function(H,G,F,I){b(z,F,t,G,w,I,E,1)})}else{c(1);t(r,z,w,D,E);q()}}function c(t){r.ActiveEnumsCount-=t;if(r.ActiveEnumsCount>=r.MaxActiveEnumsCount||r.PendingEnums.length==0){return}var u=r.PendingEnums.shift();r.Enum(u[0],u[1],u[2]);c(0)}r.BatchEnum=function(t,w,u,z,v,y){r.PendingBatchOperations+=(w.length*2);a(t,Clone(w),u,z,{},v,y);q()};function a(t,z,u,C,B,v,A){r.PendingBatchOperations-=2;var y=z.shift(),w=r.Enum;if(y[0]=="*"){w=r.Get;y=y.substring(1)}w(y,function(F,D,E,G,H){H[2][D]={response:(E==null?null:E.Body),responses:E,status:G};if(H[1].length==0||G==401||(v!=true&&G!=200&&G!=400)){r.PendingBatchOperations-=(z.length*2);q();u(r,t,H[2],G,C)}else{q();a(t,z,u,C,H[2],A)}},[t,z,B],A);q()}r.BatchGet=function(t,v,u,y,w){g({name:t,names:v,callback:u,current:0,responses:{},tag:y,pri:w});q()};function g(t){if(t.names.length<=t.current){t.callback(r,t.name,t.responses,200,t.tag)}else{r.wsman.ExecGet(r.CompleteName(t.names[t.current]),function(w,v,u,y){f(t,u,y)},t.pri);t.current++}q()}function f(t,u,v){if(u==null||v!=200){t.callback(r,t.name,null,v,t.tag)}else{t.responses[u.Header.Method]=u;g(t)}}r.CompleteName=function(t){if(t.indexOf("AMT_")==0){return r.pfx[0]+t}if(t.indexOf("CIM_")==0){return r.pfx[1]+t}if(t.indexOf("IPS_")==0){return r.pfx[2]+t}};r.CompleteExecResponse=function(t){if(t&&t!=null&&t.Body&&t.Body.ReturnValue){t.Body.ReturnValueStr=r.AmtStatusToStr(t.Body.ReturnValue)}return t};r.RequestPowerStateChange=function(u,t){r.CIM_PowerManagementService_RequestPowerStateChange(u,'<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="CreationClassName">CIM_ComputerSystem</Selector><Selector Name="Name">ManagedSystem</Selector></SelectorSet></ReferenceParameters>',null,null,t)};r.SetBootConfigRole=function(u,t){r.CIM_BootService_SetBootConfigRole('<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="InstanceID">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>',u,t)};r.CancelAllQueries=function(t){r.wsman.CancelAllQueries(t)};r.AMT_AgentPresenceWatchdog_RegisterAgent=function(t){r.Exec("AMT_AgentPresenceWatchdog","RegisterAgent",{},t)};r.AMT_AgentPresenceWatchdog_AssertPresence=function(u,t){r.Exec("AMT_AgentPresenceWatchdog","AssertPresence",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdog_AssertShutdown=function(u,t){r.Exec("AMT_AgentPresenceWatchdog","AssertShutdown",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdog_AddAction=function(z,y,w,u,t,v,C,A,B){r.Exec("AMT_AgentPresenceWatchdog","AddAction",{OldState:z,NewState:y,EventOnTransition:w,ActionSd:u,ActionEac:t},v,C,A,B)};r.AMT_AgentPresenceWatchdog_DeleteAllActions=function(t,w,u,v){r.Exec("AMT_AgentPresenceWatchdog","DeleteAllActions",{},t,w,u,v)};r.AMT_AgentPresenceWatchdogAction_GetActionEac=function(t){r.Exec("AMT_AgentPresenceWatchdogAction","GetActionEac",{},t)};r.AMT_AgentPresenceWatchdogVA_RegisterAgent=function(t){r.Exec("AMT_AgentPresenceWatchdogVA","RegisterAgent",{},t)};r.AMT_AgentPresenceWatchdogVA_AssertPresence=function(u,t){r.Exec("AMT_AgentPresenceWatchdogVA","AssertPresence",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdogVA_AssertShutdown=function(u,t){r.Exec("AMT_AgentPresenceWatchdogVA","AssertShutdown",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdogVA_AddAction=function(z,y,w,u,t,v){r.Exec("AMT_AgentPresenceWatchdogVA","AddAction",{OldState:z,NewState:y,EventOnTransition:w,ActionSd:u,ActionEac:t},v)};r.AMT_AgentPresenceWatchdogVA_DeleteAllActions=function(t,u){r.Exec("AMT_AgentPresenceWatchdogVA","DeleteAllActions",{_method_dummy:t},u)};r.AMT_AuditLog_ClearLog=function(t){r.Exec("AMT_AuditLog","ClearLog",{},t)};r.AMT_AuditLog_RequestStateChange=function(u,v,t){r.Exec("AMT_AuditLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_AuditLog_ReadRecords=function(u,t,v){r.Exec("AMT_AuditLog","ReadRecords",{StartIndex:u},t,v)};r.AMT_AuditLog_SetAuditLock=function(w,u,v,t){r.Exec("AMT_AuditLog","SetAuditLock",{LockTimeoutInSeconds:w,Flag:u,Handle:v},t)};r.AMT_AuditLog_ExportAuditLogSignature=function(u,t){r.Exec("AMT_AuditLog","ExportAuditLogSignature",{SigningMechanism:u},t)};r.AMT_AuditLog_SetSigningKeyMaterial=function(y,w,v,u,t){r.Exec("AMT_AuditLog","SetSigningKeyMaterial",{SigningMechanismType:y,SigningKey:w,LengthOfCertificates:v,Certificates:u},t)};r.AMT_AuditPolicyRule_SetAuditPolicy=function(v,t,w,y,u){r.Exec("AMT_AuditPolicyRule","SetAuditPolicy",{Enable:v,AuditedAppID:t,EventID:w,PolicyType:y},u)};r.AMT_AuditPolicyRule_SetAuditPolicyBulk=function(v,t,w,y,u){r.Exec("AMT_AuditPolicyRule","SetAuditPolicyBulk",{Enable:v,AuditedAppID:t,EventID:w,PolicyType:y},u)};r.AMT_AuthorizationService_AddUserAclEntryEx=function(w,v,y,t,z,u){r.Exec("AMT_AuthorizationService","AddUserAclEntryEx",{DigestUsername:w,DigestPassword:v,KerberosUserSid:y,AccessPermission:t,Realms:z},u)};r.AMT_AuthorizationService_EnumerateUserAclEntries=function(u,t){r.Exec("AMT_AuthorizationService","EnumerateUserAclEntries",{StartIndex:u},t)};r.AMT_AuthorizationService_GetUserAclEntryEx=function(u,t,v){r.Exec("AMT_AuthorizationService","GetUserAclEntryEx",{Handle:u},t,v)};r.AMT_AuthorizationService_UpdateUserAclEntryEx=function(y,w,v,z,t,A,u){r.Exec("AMT_AuthorizationService","UpdateUserAclEntryEx",{Handle:y,DigestUsername:w,DigestPassword:v,KerberosUserSid:z,AccessPermission:t,Realms:A},u)};r.AMT_AuthorizationService_RemoveUserAclEntry=function(u,t){r.Exec("AMT_AuthorizationService","RemoveUserAclEntry",{Handle:u},t)};r.AMT_AuthorizationService_SetAdminAclEntryEx=function(v,u,t){r.Exec("AMT_AuthorizationService","SetAdminAclEntryEx",{Username:v,DigestPassword:u},t)};r.AMT_AuthorizationService_GetAdminAclEntry=function(t){r.Exec("AMT_AuthorizationService","GetAdminAclEntry",{},t)};r.AMT_AuthorizationService_GetAdminAclEntryStatus=function(t){r.Exec("AMT_AuthorizationService","GetAdminAclEntryStatus",{},t)};r.AMT_AuthorizationService_GetAdminNetAclEntryStatus=function(t){r.Exec("AMT_AuthorizationService","GetAdminNetAclEntryStatus",{},t)};r.AMT_AuthorizationService_SetAclEnabledState=function(v,u,t,w){r.Exec("AMT_AuthorizationService","SetAclEnabledState",{Handle:v,Enabled:u},t,w)};r.AMT_AuthorizationService_GetAclEnabledState=function(u,t,v){r.Exec("AMT_AuthorizationService","GetAclEnabledState",{Handle:u},t,v)};r.AMT_EndpointAccessControlService_RequestStateChange=function(u,v,t){r.Exec("AMT_EndpointAccessControlService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_EndpointAccessControlService_GetPosture=function(u,t){r.Exec("AMT_EndpointAccessControlService","GetPosture",{PostureType:u},t)};r.AMT_EndpointAccessControlService_GetPostureHash=function(u,t){r.Exec("AMT_EndpointAccessControlService","GetPostureHash",{PostureType:u},t)};r.AMT_EndpointAccessControlService_UpdatePostureState=function(u,t){r.Exec("AMT_EndpointAccessControlService","UpdatePostureState",{UpdateType:u},t)};r.AMT_EndpointAccessControlService_GetEacOptions=function(t){r.Exec("AMT_EndpointAccessControlService","GetEacOptions",{},t)};r.AMT_EndpointAccessControlService_SetEacOptions=function(u,v,t){r.Exec("AMT_EndpointAccessControlService","SetEacOptions",{EacVendors:u,PostureHashAlgorithm:v},t)};r.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy=function(u,t){r.Exec("AMT_EnvironmentDetectionSettingData","SetSystemDefensePolicy",{Policy:u},t)};r.AMT_EnvironmentDetectionSettingData_EnableVpnRouting=function(u,t){r.Exec("AMT_EnvironmentDetectionSettingData","EnableVpnRouting",{Enable:u},t)};r.AMT_EthernetPortSettings_SetLinkPreference=function(u,v,t){r.Exec("AMT_EthernetPortSettings","SetLinkPreference",{LinkPreference:u,Timeout:v},t)};r.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats=function(u,t){r.Exec("AMT_HeuristicPacketFilterStatistics","ResetSelectedStats",{SelectedStatistics:u},t)};r.AMT_KerberosSettingData_GetCredentialCacheState=function(t){r.Exec("AMT_KerberosSettingData","GetCredentialCacheState",{},t)};r.AMT_KerberosSettingData_SetCredentialCacheState=function(u,t){r.Exec("AMT_KerberosSettingData","SetCredentialCacheState",{Enable:u},t)};r.AMT_MessageLog_CancelIteration=function(u,t){r.Exec("AMT_MessageLog","CancelIteration",{IterationIdentifier:u},t)};r.AMT_MessageLog_RequestStateChange=function(u,v,t){r.Exec("AMT_MessageLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_MessageLog_ClearLog=function(t){r.Exec("AMT_MessageLog","ClearLog",{},t)};r.AMT_MessageLog_GetRecords=function(u,v,t,w){r.Exec("AMT_MessageLog","GetRecords",{IterationIdentifier:u,MaxReadRecords:v},t,w)};r.AMT_MessageLog_GetRecord=function(u,v,t){r.Exec("AMT_MessageLog","GetRecord",{IterationIdentifier:u,PositionToNext:v},t)};r.AMT_MessageLog_PositionAtRecord=function(u,v,w,t){r.Exec("AMT_MessageLog","PositionAtRecord",{IterationIdentifier:u,MoveAbsolute:v,RecordNumber:w},t)};r.AMT_MessageLog_PositionToFirstRecord=function(t,u){r.Exec("AMT_MessageLog","PositionToFirstRecord",{},t,u)};r.AMT_MessageLog_FreezeLog=function(u,t){r.Exec("AMT_MessageLog","FreezeLog",{Freeze:u},t)};r.AMT_PublicKeyManagementService_AddCRL=function(v,u,t){r.Exec("AMT_PublicKeyManagementService","AddCRL",{Url:v,SerialNumbers:u},t)};r.AMT_PublicKeyManagementService_ResetCRLList=function(t,u){r.Exec("AMT_PublicKeyManagementService","ResetCRLList",{_method_dummy:t},u)};r.AMT_PublicKeyManagementService_AddCertificate=function(u,t){r.Exec("AMT_PublicKeyManagementService","AddCertificate",{CertificateBlob:u},t)};r.AMT_PublicKeyManagementService_AddTrustedRootCertificate=function(u,t){r.Exec("AMT_PublicKeyManagementService","AddTrustedRootCertificate",{CertificateBlob:u},t)};r.AMT_PublicKeyManagementService_AddKey=function(u,t){r.Exec("AMT_PublicKeyManagementService","AddKey",{KeyBlob:u},t)};r.AMT_PublicKeyManagementService_GeneratePKCS10Request=function(v,u,w,t){r.Exec("AMT_PublicKeyManagementService","GeneratePKCS10Request",{KeyPair:v,DNName:u,Usage:w},t)};r.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx=function(u,w,v,t){r.Exec("AMT_PublicKeyManagementService","GeneratePKCS10RequestEx",{KeyPair:u,SigningAlgorithm:w,NullSignedCertificateRequest:v},t)};r.AMT_PublicKeyManagementService_GenerateKeyPair=function(u,v,t){r.Exec("AMT_PublicKeyManagementService","GenerateKeyPair",{KeyAlgorithm:u,KeyLength:v},t)};r.AMT_RedirectionService_RequestStateChange=function(u,t){r.Exec("AMT_RedirectionService","RequestStateChange",{RequestedState:u},t)};r.AMT_RedirectionService_TerminateSession=function(u,t){r.Exec("AMT_RedirectionService","TerminateSession",{SessionType:u},t)};r.AMT_RemoteAccessService_AddMpServer=function(t,z,B,u,w,C,A,y,v){r.Exec("AMT_RemoteAccessService","AddMpServer",{AccessInfo:t,InfoFormat:z,Port:B,AuthMethod:u,Certificate:w,Username:C,Password:A,CN:y},v)};r.AMT_RemoteAccessService_AddRemoteAccessPolicyRule=function(w,y,u,v,t){r.Exec("AMT_RemoteAccessService","AddRemoteAccessPolicyRule",{Trigger:w,TunnelLifeTime:y,ExtendedData:u,MpServer:v},t)};r.AMT_RemoteAccessService_CloseRemoteAccessConnection=function(t,u){r.Exec("AMT_RemoteAccessService","CloseRemoteAccessConnection",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_CommitChanges=function(t,u){r.Exec("AMT_SetupAndConfigurationService","CommitChanges",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_Unprovision=function(u,t){r.Exec("AMT_SetupAndConfigurationService","Unprovision",{ProvisioningMode:u},t)};r.AMT_SetupAndConfigurationService_PartialUnprovision=function(t,u){r.Exec("AMT_SetupAndConfigurationService","PartialUnprovision",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection=function(t,u){r.Exec("AMT_SetupAndConfigurationService","ResetFlashWearOutProtection",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod=function(u,t){r.Exec("AMT_SetupAndConfigurationService","ExtendProvisioningPeriod",{Duration:u},t)};r.AMT_SetupAndConfigurationService_SetMEBxPassword=function(u,t){r.Exec("AMT_SetupAndConfigurationService","SetMEBxPassword",{Password:u},t)};r.AMT_SetupAndConfigurationService_SetTLSPSK=function(u,v,t){r.Exec("AMT_SetupAndConfigurationService","SetTLSPSK",{PID:u,PPS:v},t)};r.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord=function(t){r.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecord",{},t)};r.AMT_SetupAndConfigurationService_GetUuid=function(t){r.Exec("AMT_SetupAndConfigurationService","GetUuid",{},t)};r.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents=function(t){r.Exec("AMT_SetupAndConfigurationService","GetUnprovisionBlockingComponents",{},t)};r.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2=function(t){r.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecordV2",{},t)};r.AMT_SystemDefensePolicy_GetTimeout=function(t){r.Exec("AMT_SystemDefensePolicy","GetTimeout",{},t)};r.AMT_SystemDefensePolicy_SetTimeout=function(u,t){r.Exec("AMT_SystemDefensePolicy","SetTimeout",{Timeout:u},t)};r.AMT_SystemDefensePolicy_UpdateStatistics=function(u,w,t,z,v,y){r.Exec("AMT_SystemDefensePolicy","UpdateStatistics",{NetworkInterface:u,ResetOnRead:w},t,z,v,y)};r.AMT_SystemPowerScheme_SetPowerScheme=function(t,u,v){r.Exec("AMT_SystemPowerScheme","SetPowerScheme",{},t,v,0,{InstanceID:u})};r.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch=function(t,u){r.Exec("AMT_TimeSynchronizationService","GetLowAccuracyTimeSynch",{},t,u)};r.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch=function(u,w,y,t,v){r.Exec("AMT_TimeSynchronizationService","SetHighAccuracyTimeSynch",{Ta0:u,Tm1:w,Tm2:y},t,v)};r.AMT_UserInitiatedConnectionService_RequestStateChange=function(u,v,t){r.Exec("AMT_UserInitiatedConnectionService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_WebUIService_RequestStateChange=function(u,v,t){r.Exec("AMT_WebUIService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_WiFiPortConfigurationService_AddWiFiSettings=function(y,z,w,v,t,u){r.ExecWithXml("AMT_WiFiPortConfigurationService","AddWiFiSettings",{WiFiEndpoint:y,WiFiEndpointSettingsInput:z,IEEE8021xSettingsInput:w,ClientCredential:v,CACredential:t},u)};r.AMT_WiFiPortConfigurationService_UpdateWiFiSettings=function(y,z,w,v,t,u){r.ExecWithXml("AMT_WiFiPortConfigurationService","UpdateWiFiSettings",{WiFiEndpointSettings:y,WiFiEndpointSettingsInput:z,IEEE8021xSettingsInput:w,ClientCredential:v,CACredential:t},u)};r.AMT_WiFiPortConfigurationService_DeleteAllITProfiles=function(t,u){r.Exec("AMT_WiFiPortConfigurationService","DeleteAllITProfiles",{_method_dummy:t},u)};r.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles=function(t,u){r.Exec("AMT_WiFiPortConfigurationService","DeleteAllUserProfiles",{_method_dummy:t},u)};r.CIM_Account_RequestStateChange=function(u,v,t){r.Exec("CIM_Account","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_AccountManagementService_CreateAccount=function(v,t,u){r.Exec("CIM_AccountManagementService","CreateAccount",{System:v,AccountTemplate:t},u)};r.CIM_BootConfigSetting_ChangeBootOrder=function(u,t){r.Exec("CIM_BootConfigSetting","ChangeBootOrder",{Source:u},t)};r.CIM_BootService_SetBootConfigRole=function(t,v,u){r.Exec("CIM_BootService","SetBootConfigRole",{BootConfigSetting:t,Role:v},u,0,1)};r.CIM_Card_ConnectorPower=function(u,v,t){r.Exec("CIM_Card","ConnectorPower",{Connector:u,PoweredOn:v},t)};r.CIM_Card_IsCompatible=function(u,t){r.Exec("CIM_Card","IsCompatible",{ElementToCheck:u},t)};r.CIM_Chassis_IsCompatible=function(u,t){r.Exec("CIM_Chassis","IsCompatible",{ElementToCheck:u},t)};r.CIM_Fan_SetSpeed=function(u,t){r.Exec("CIM_Fan","SetSpeed",{DesiredSpeed:u},t)};r.CIM_KVMRedirectionSAP_RequestStateChange=function(u,v,t){r.Exec("CIM_KVMRedirectionSAP","RequestStateChange",{RequestedState:u},t)};r.CIM_MediaAccessDevice_LockMedia=function(u,t){r.Exec("CIM_MediaAccessDevice","LockMedia",{Lock:u},t)};r.CIM_MediaAccessDevice_SetPowerState=function(u,v,t){r.Exec("CIM_MediaAccessDevice","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_MediaAccessDevice_Reset=function(t){r.Exec("CIM_MediaAccessDevice","Reset",{},t)};r.CIM_MediaAccessDevice_EnableDevice=function(u,t){r.Exec("CIM_MediaAccessDevice","EnableDevice",{Enabled:u},t)};r.CIM_MediaAccessDevice_OnlineDevice=function(u,t){r.Exec("CIM_MediaAccessDevice","OnlineDevice",{Online:u},t)};r.CIM_MediaAccessDevice_QuiesceDevice=function(u,t){r.Exec("CIM_MediaAccessDevice","QuiesceDevice",{Quiesce:u},t)};r.CIM_MediaAccessDevice_SaveProperties=function(t){r.Exec("CIM_MediaAccessDevice","SaveProperties",{},t)};r.CIM_MediaAccessDevice_RestoreProperties=function(t){r.Exec("CIM_MediaAccessDevice","RestoreProperties",{},t)};r.CIM_MediaAccessDevice_RequestStateChange=function(u,v,t){r.Exec("CIM_MediaAccessDevice","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_PhysicalFrame_IsCompatible=function(u,t){r.Exec("CIM_PhysicalFrame","IsCompatible",{ElementToCheck:u},t)};r.CIM_PhysicalPackage_IsCompatible=function(u,t){r.Exec("CIM_PhysicalPackage","IsCompatible",{ElementToCheck:u},t)};r.CIM_PowerManagementService_RequestPowerStateChange=function(v,u,w,y,t){r.Exec("CIM_PowerManagementService","RequestPowerStateChange",{PowerState:v,ManagedElement:u,Time:w,TimeoutPeriod:y},t,0,1)};r.CIM_PowerSupply_SetPowerState=function(u,v,t){r.Exec("CIM_PowerSupply","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_PowerSupply_Reset=function(t){r.Exec("CIM_PowerSupply","Reset",{},t)};r.CIM_PowerSupply_EnableDevice=function(u,t){r.Exec("CIM_PowerSupply","EnableDevice",{Enabled:u},t)};r.CIM_PowerSupply_OnlineDevice=function(u,t){r.Exec("CIM_PowerSupply","OnlineDevice",{Online:u},t)};r.CIM_PowerSupply_QuiesceDevice=function(u,t){r.Exec("CIM_PowerSupply","QuiesceDevice",{Quiesce:u},t)};r.CIM_PowerSupply_SaveProperties=function(t){r.Exec("CIM_PowerSupply","SaveProperties",{},t)};r.CIM_PowerSupply_RestoreProperties=function(t){r.Exec("CIM_PowerSupply","RestoreProperties",{},t)};r.CIM_PowerSupply_RequestStateChange=function(u,v,t){r.Exec("CIM_PowerSupply","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_Processor_SetPowerState=function(u,v,t){r.Exec("CIM_Processor","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_Processor_Reset=function(t){r.Exec("CIM_Processor","Reset",{},t)};r.CIM_Processor_EnableDevice=function(u,t){r.Exec("CIM_Processor","EnableDevice",{Enabled:u},t)};r.CIM_Processor_OnlineDevice=function(u,t){r.Exec("CIM_Processor","OnlineDevice",{Online:u},t)};r.CIM_Processor_QuiesceDevice=function(u,t){r.Exec("CIM_Processor","QuiesceDevice",{Quiesce:u},t)};r.CIM_Processor_SaveProperties=function(t){r.Exec("CIM_Processor","SaveProperties",{},t)};r.CIM_Processor_RestoreProperties=function(t){r.Exec("CIM_Processor","RestoreProperties",{},t)};r.CIM_Processor_RequestStateChange=function(u,v,t){r.Exec("CIM_Processor","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_RecordLog_ClearLog=function(t){r.Exec("CIM_RecordLog","ClearLog",{},t)};r.CIM_RecordLog_RequestStateChange=function(u,v,t){r.Exec("CIM_RecordLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_RedirectionService_RequestStateChange=function(u,v,t){r.Exec("CIM_RedirectionService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_Sensor_SetPowerState=function(u,v,t){r.Exec("CIM_Sensor","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_Sensor_Reset=function(t){r.Exec("CIM_Sensor","Reset",{},t)};r.CIM_Sensor_EnableDevice=function(u,t){r.Exec("CIM_Sensor","EnableDevice",{Enabled:u},t)};r.CIM_Sensor_OnlineDevice=function(u,t){r.Exec("CIM_Sensor","OnlineDevice",{Online:u},t)};r.CIM_Sensor_QuiesceDevice=function(u,t){r.Exec("CIM_Sensor","QuiesceDevice",{Quiesce:u},t)};r.CIM_Sensor_SaveProperties=function(t){r.Exec("CIM_Sensor","SaveProperties",{},t)};r.CIM_Sensor_RestoreProperties=function(t){r.Exec("CIM_Sensor","RestoreProperties",{},t)};r.CIM_Sensor_RequestStateChange=function(u,v,t){r.Exec("CIM_Sensor","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_StatisticalData_ResetSelectedStats=function(u,t){r.Exec("CIM_StatisticalData","ResetSelectedStats",{SelectedStatistics:u},t)};r.CIM_Watchdog_KeepAlive=function(t){r.Exec("CIM_Watchdog","KeepAlive",{},t)};r.CIM_Watchdog_SetPowerState=function(u,v,t){r.Exec("CIM_Watchdog","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_Watchdog_Reset=function(t){r.Exec("CIM_Watchdog","Reset",{},t)};r.CIM_Watchdog_EnableDevice=function(u,t){r.Exec("CIM_Watchdog","EnableDevice",{Enabled:u},t)};r.CIM_Watchdog_OnlineDevice=function(u,t){r.Exec("CIM_Watchdog","OnlineDevice",{Online:u},t)};r.CIM_Watchdog_QuiesceDevice=function(u,t){r.Exec("CIM_Watchdog","QuiesceDevice",{Quiesce:u},t)};r.CIM_Watchdog_SaveProperties=function(t){r.Exec("CIM_Watchdog","SaveProperties",{},t)};r.CIM_Watchdog_RestoreProperties=function(t){r.Exec("CIM_Watchdog","RestoreProperties",{},t)};r.CIM_Watchdog_RequestStateChange=function(u,v,t){r.Exec("CIM_Watchdog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_WiFiPort_SetPowerState=function(u,v,t){r.Exec("CIM_WiFiPort","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_WiFiPort_Reset=function(t){r.Exec("CIM_WiFiPort","Reset",{},t)};r.CIM_WiFiPort_EnableDevice=function(u,t){r.Exec("CIM_WiFiPort","EnableDevice",{Enabled:u},t)};r.CIM_WiFiPort_OnlineDevice=function(u,t){r.Exec("CIM_WiFiPort","OnlineDevice",{Online:u},t)};r.CIM_WiFiPort_QuiesceDevice=function(u,t){r.Exec("CIM_WiFiPort","QuiesceDevice",{Quiesce:u},t)};r.CIM_WiFiPort_SaveProperties=function(t){r.Exec("CIM_WiFiPort","SaveProperties",{},t)};r.CIM_WiFiPort_RestoreProperties=function(t){r.Exec("CIM_WiFiPort","RestoreProperties",{},t)};r.CIM_WiFiPort_RequestStateChange=function(u,v,t){r.Exec("CIM_WiFiPort","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.IPS_HostBasedSetupService_Setup=function(y,z,w,u,A,v,t){r.Exec("IPS_HostBasedSetupService","Setup",{NetAdminPassEncryptionType:y,NetworkAdminPassword:z,McNonce:w,Certificate:u,SigningAlgorithm:A,DigitalSignature:v},t)};r.IPS_HostBasedSetupService_AddNextCertInChain=function(w,u,v,t){r.Exec("IPS_HostBasedSetupService","AddNextCertInChain",{NextCertificate:w,IsLeafCertificate:u,IsRootCertificate:v},t)};r.IPS_HostBasedSetupService_AdminSetup=function(w,y,v,z,u,t){r.Exec("IPS_HostBasedSetupService","AdminSetup",{NetAdminPassEncryptionType:w,NetworkAdminPassword:y,McNonce:v,SigningAlgorithm:z,DigitalSignature:u},t)};r.IPS_HostBasedSetupService_UpgradeClientToAdmin=function(v,w,u,t){r.Exec("IPS_HostBasedSetupService","UpgradeClientToAdmin",{McNonce:v,SigningAlgorithm:w,DigitalSignature:u},t)};r.IPS_HostBasedSetupService_DisableClientControlMode=function(t,u){r.Exec("IPS_HostBasedSetupService","DisableClientControlMode",{_method_dummy:t},u)};r.IPS_KVMRedirectionSettingData_TerminateSession=function(t){r.Exec("IPS_KVMRedirectionSettingData","TerminateSession",{},t)};r.IPS_OptInService_StartOptIn=function(t){r.Exec("IPS_OptInService","StartOptIn",{},t)};r.IPS_OptInService_CancelOptIn=function(t){r.Exec("IPS_OptInService","CancelOptIn",{},t)};r.IPS_OptInService_SendOptInCode=function(u,t){r.Exec("IPS_OptInService","SendOptInCode",{OptInCode:u},t)};r.IPS_OptInService_StartService=function(t){r.Exec("IPS_OptInService","StartService",{},t)};r.IPS_OptInService_StopService=function(t){r.Exec("IPS_OptInService","StopService",{},t)};r.IPS_OptInService_RequestStateChange=function(u,v,t){r.Exec("IPS_OptInService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.IPS_ProvisioningRecordLog_RequestStateChange=function(u,v,t){r.Exec("IPS_ProvisioningRecordLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.IPS_ProvisioningRecordLog_ClearLog=function(t,u){r.Exec("IPS_ProvisioningRecordLog","ClearLog",{_method_dummy:t},u)};r.IPS_SecIOService_RequestStateChange=function(u,v,t){r.Exec("IPS_SecIOService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AmtStatusToStr=function(t){if(r.AmtStatusCodes[t]){return r.AmtStatusCodes[t]}else{return"UNKNOWN_ERROR"}};r.AmtStatusCodes={0:"SUCCESS",1:"INTERNAL_ERROR",2:"NOT_READY",3:"INVALID_PT_MODE",4:"INVALID_MESSAGE_LENGTH",5:"TABLE_FINGERPRINT_NOT_AVAILABLE",6:"INTEGRITY_CHECK_FAILED",7:"UNSUPPORTED_ISVS_VERSION",8:"APPLICATION_NOT_REGISTERED",9:"INVALID_REGISTRATION_DATA",10:"APPLICATION_DOES_NOT_EXIST",11:"NOT_ENOUGH_STORAGE",12:"INVALID_NAME",13:"BLOCK_DOES_NOT_EXIST",14:"INVALID_BYTE_OFFSET",15:"INVALID_BYTE_COUNT",16:"NOT_PERMITTED",17:"NOT_OWNER",18:"BLOCK_LOCKED_BY_OTHER",19:"BLOCK_NOT_LOCKED",20:"INVALID_GROUP_PERMISSIONS",21:"GROUP_DOES_NOT_EXIST",22:"INVALID_MEMBER_COUNT",23:"MAX_LIMIT_REACHED",24:"INVALID_AUTH_TYPE",25:"AUTHENTICATION_FAILED",26:"INVALID_DHCP_MODE",27:"INVALID_IP_ADDRESS",28:"INVALID_DOMAIN_NAME",29:"UNSUPPORTED_VERSION",30:"REQUEST_UNEXPECTED",31:"INVALID_TABLE_TYPE",32:"INVALID_PROVISIONING_STATE",33:"UNSUPPORTED_OBJECT",34:"INVALID_TIME",35:"INVALID_INDEX",36:"INVALID_PARAMETER",37:"INVALID_NETMASK",38:"FLASH_WRITE_LIMIT_EXCEEDED",39:"INVALID_IMAGE_LENGTH",40:"INVALID_IMAGE_SIGNATURE",41:"PROPOSE_ANOTHER_VERSION",42:"INVALID_PID_FORMAT",43:"INVALID_PPS_FORMAT",44:"BIST_COMMAND_BLOCKED",45:"CONNECTION_FAILED",46:"CONNECTION_TOO_MANY",47:"RNG_GENERATION_IN_PROGRESS",48:"RNG_NOT_READY",49:"CERTIFICATE_NOT_READY",1024:"DISABLED_BY_POLICY",2048:"NETWORK_IF_ERROR_BASE",2049:"UNSUPPORTED_OEM_NUMBER",2050:"UNSUPPORTED_BOOT_OPTION",2051:"INVALID_COMMAND",2052:"INVALID_SPECIAL_COMMAND",2053:"INVALID_HANDLE",2054:"INVALID_PASSWORD",2055:"INVALID_REALM",2056:"STORAGE_ACL_ENTRY_IN_USE",2057:"DATA_MISSING",2058:"DUPLICATE",2059:"EVENTLOG_FROZEN",2060:"PKI_MISSING_KEYS",2061:"PKI_GENERATING_KEYS",2062:"INVALID_KEY",2063:"INVALID_CERT",2064:"CERT_KEY_NOT_MATCH",2065:"MAX_KERB_DOMAIN_REACHED",2066:"UNSUPPORTED",2067:"INVALID_PRIORITY",2068:"NOT_FOUND",2069:"INVALID_CREDENTIALS",2070:"INVALID_PASSPHRASE",2072:"NO_ASSOCIATION",2075:"AUDIT_FAIL",2076:"BLOCKING_COMPONENT",2081:"USER_CONSENT_REQUIRED",4096:"APP_INTERNAL_ERROR",4097:"NOT_INITIALIZED",4098:"LIB_VERSION_UNSUPPORTED",4099:"INVALID_PARAM",4100:"RESOURCES",4101:"HARDWARE_ACCESS_ERROR",4102:"REQUESTOR_NOT_REGISTERED",4103:"NETWORK_ERROR",4104:"PARAM_BUFFER_TOO_SHORT",4105:"COM_NOT_INITIALIZED_IN_THREAD",4106:"URL_REQUIRED"};r.GetMessageLog=function(t,u){r.AMT_MessageLog_PositionToFirstRecord(j,[t,u,[]])};function j(v,t,u,w,y){if(w!=200||u.Body.ReturnValue!="0"){y[0](r,null,y[2]);return}r.AMT_MessageLog_GetRecords(u.Body.IterationIdentifier,390,k,y)}function k(D,A,C,E,G){if(E!=200||C.Body.ReturnValue!="0"){G[0](r,null,G[2]);return}var y,z,I,v,u=G[2],F=new Date(),H,B=C.Body.RecordArray;if(typeof B==="string"){C.Body.RecordArray=[C.Body.RecordArray]}for(y in B){v=null;try{v=window.atob(B[y])}catch(w){}if(v!=null){H=ReadIntX(v,0);if((H>0)&&(H<4294967295)){I={DeviceAddress:v.charCodeAt(4),EventSensorType:v.charCodeAt(5),EventType:v.charCodeAt(6),EventOffset:v.charCodeAt(7),EventSourceType:v.charCodeAt(8),EventSeverity:v.charCodeAt(9),SensorNumber:v.charCodeAt(10),Entity:v.charCodeAt(11),EntityInstance:v.charCodeAt(12),EventData:[],Time:new Date((H+(F.getTimezoneOffset()*60))*1000)};for(z=13;z<21;z++){I.EventData.push(v.charCodeAt(z))}I.EntityStr=n[I.Entity];I.Desc=h(I.EventSensorType,I.EventOffset,I.EventData,I.Entity);if(!I.EntityStr){I.EntityStr="Unknown"}u.push(I)}}}if(C.Body.NoMoreRecords!=true){r.AMT_MessageLog_GetRecords(C.Body.IterationIdentifier,390,k,[G[0],u,G[2]])}else{G[0](r,u,G[2])}}var e="Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split("|");var o="Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split("|");var p="Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split("|");var n="Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split("|");r.RealmNames="||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split("|");r.WatchdogCurrentStates={1:"Not Started",2:"Stopped",4:"Running",8:"Expired",16:"Suspended"};function h(w,v,u,t){if(w==15){if(u[0]==235){return"Invalid Data"}if(v==0){return o[u[1]]}return p[u[1]]}if(w==18&&u[0]==170){return"Agent watchdog "+char2hex(u[4])+char2hex(u[3])+char2hex(u[2])+char2hex(u[1])+"-"+char2hex(u[6])+char2hex(u[5])+"-... changed to "+r.WatchdogCurrentStates[u[7]]}if(w==6){return"Authentication failed "+(u[1]+(u[2]<<8))+" times. The system may be under attack."}if(w==30){return"No bootable media"}if(w==32){return"Operating system lockup or power interrupt"}if(w==35){return"System boot failure"}if(w==37){return"System firmware started (at least one CPU is properly executing)."}return"Unknown Sensor Type #"+w}return r}var md5_k=[];for(var i=0;i<64;){md5_k[i]=0|(Math.abs(Math.sin(++i))*4294967296)}function hex_md5(o){var f,g,k,n,q=[],p=unescape(encodeURI(o)),e=p.length,l=[f=1732584193,g=-271733879,~f,~g],m=0;for(;m<=e;){q[m>>2]|=(p.charCodeAt(m)||128)<<8*(m++%4)}q[o=(e+8>>6)*16+14]=e*8;m=0;for(;m<o;m+=16){e=l;n=0;for(;n<64;){e=[k=e[3],((f=e[1]|0)+((k=((e[0]+[f&(g=e[2])|~f&k,k&f|~k&g,f^g^k,g^(f|~k)][e=n>>4])+(md5_k[n]+(q[[n,5*n+1,3*n+5,7*n][e]%16+m]|0))))<<(e=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*e+n++%4])|k>>>32-e)),f,g]}for(n=4;n;){l[--n]=l[n]+e[n]}}o="";for(;n<32;){o+=((l[n>>3]>>((1^n++&7)*4))&15).toString(16)}return o}function rstr_md5(a){return hex2rstr(hex_md5(a))}function execArgumentsToXml(c){if(c===undefined||c===null){return null}var d="";for(var b in c){var a=c[b];if(!a){continue}if(a.__parameterType==="reference"){d+=referenceToXml(b,a)}else{d+=instanceToXml(b,a)}}return d}function instanceToXml(d,c){if(c===undefined||c===null){return null}var b=!!c.__namespace;var h=b?"<q:":"<";var a=b?"</q:":"</";var e=b?(' xmlns:q="'+c.__namespace+'"'):"";var g="<r:"+d+e+">";for(var f in c){if(!c.hasOwnProperty(f)||f.indexOf("__")===0){continue}if(typeof c[f]==="function"||Array.isArray(c[f])){continue}if(typeof c[f]==="object"){console.error("only convert one level down...")}else{g+=h+f+">"+c[f].toString()+a+f+">"}}g+="</r:"+d+">";return g}function referenceToXml(b,a){if(a===undefined||a===null){return null}var c="<r:"+b+"><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>"+a.__resourceUri+"</w:ResourceURI><w:SelectorSet>";for(var d in a){if(!a.hasOwnProperty(d)||d.indexOf("__")===0){continue}if(typeof a[d]==="function"||typeof a[d]==="object"||Array.isArray(a[d])){continue}c+='<w:Selector Name="'+d+'">'+a[d].toString()+"</w:Selector>"}c+="</w:SelectorSet></a:ReferenceParameters></r:"+b+">";return c}function GetSidString(c){var b="S-"+c.charCodeAt(0)+"-"+c.charCodeAt(7);for(var a=2;a<(c.length/4);a++){b+="-"+ReadIntX(c,a*4)}return b}function GetSidByteArray(d){if(!d||d==null){return null}var c=d.split("-");if(c.length<4||(c[0]!="s"&&c[0]!="S")){return null}for(var a=1;a<c.length;a++){var e=parseInt(c[a]);if(e!=c[a]){return null}c[a]=e}var b=String.fromCharCode(c[1])+String.fromCharCode(c.length-3)+ShortToStr(Math.floor(c[2]/Math.pow(2,32)))+IntToStr((c[2])&65535);for(var a=3;a<c.length;a++){b+=IntToStrX(c[a])}return b}var CreateAmtRedirect=function(a){var b={};b.m=a;a.parent=b;b.State=0;b.socket=null;b.host=null;b.port=0;b.user=null;b.pass=null;b.authuri="/RedirectionService";b.tlsv1only=0;b.inDataCount=0;b.connectstate=0;b.protocol=a.protocol;b.debugmode=0;b.amtaccumulator="";b.amtsequence=1;b.amtkeepalivetimer=null;b.onStateChanged=null;b.Start=function(c,e,g,d,f){b.host=c;b.port=e;b.user=g;b.pass=d;b.connectstate=0;b.inDataCount=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+c+"&port="+e+"&tls="+f+((g=="*")?"&serverauth=1":"")+((typeof d==="undefined")?("&serverauth=1&user="+g):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed;b.xxStateChange(1)};b.xxOnSocketConnected=function(){if(b.debugmode==1){console.log("onSocketConnected")}b.xxStateChange(2);if(b.protocol==1){b.xxSend(b.RedirectStartSol)}if(b.protocol==2){b.xxSend(b.RedirectStartKvm)}if(b.protocol==3){b.xxSend(b.RedirectStartIder)}};b.xxOnMessage=function(g){if(b.debugmode==1){console.log("Recv",g.data)}b.inDataCount++;if(typeof g.data=="object"){var h=new FileReader();if(h.readAsBinaryString){h.onload=function(f){b.xxOnSocketData(f.target.result)};h.readAsBinaryString(new Blob([g.data]))}else{if(h.readAsArrayBuffer){h.onloadend=function(f){b.xxOnSocketData(f.target.result)};h.readAsArrayBuffer(g.data)}else{var c="";var d=new Uint8Array(g.data);var k=d.byteLength;for(var j=0;j<k;j++){c+=String.fromCharCode(d[j])}b.xxOnSocketData(c)}}}else{b.xxOnSocketData(g.data)}};b.xxOnSocketData=function(o){if(!o||b.connectstate==-1){return}if(typeof o==="object"){var g="";var j=new Uint8Array(o);var t=j.byteLength;for(var s=0;s<t;s++){g+=String.fromCharCode(j[s])}o=g}else{if(typeof o!=="string"){return}}if((b.protocol==2||b.protocol==3)&&b.connectstate==1){return b.m.ProcessData(o)}b.amtaccumulator+=o;while(b.amtaccumulator.length>=1){var k=0;switch(b.amtaccumulator.charCodeAt(0)){case 17:if(b.amtaccumulator.length<4){return}var H=b.amtaccumulator.charCodeAt(1);switch(H){case 0:if(b.amtaccumulator.length<13){return}var y=b.amtaccumulator.charCodeAt(12);if(b.amtaccumulator.length<13+y){return}b.xxSend(String.fromCharCode(19,0,0,0,0,0,0,0,0));k=(13+y);break;default:b.Stop(1);break}break;case 20:if(b.amtaccumulator.length<9){return}var e=ReadIntX(b.amtaccumulator,5);if(b.amtaccumulator.length<9+e){return}var G=b.amtaccumulator.charCodeAt(1);var f=b.amtaccumulator.charCodeAt(4);var c=[];for(s=0;s<e;s++){c.push(b.amtaccumulator.charCodeAt(9+s))}var d=b.amtaccumulator.substring(9,9+e);k=9+e;if(f==0){if(c.indexOf(4)>=0){b.xxSend(String.fromCharCode(19,0,0,0,4)+IntToStrX(b.user.length+b.authuri.length+8)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0,0))}else{if(c.indexOf(3)>=0){b.xxSend(String.fromCharCode(19,0,0,0,3)+IntToStrX(b.user.length+b.authuri.length+7)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0))}else{if(c.indexOf(1)>=0){b.xxSend(String.fromCharCode(19,0,0,0,1)+IntToStrX(b.user.length+b.pass.length+2)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(b.pass.length)+b.pass)}else{b.Stop(2)}}}}else{if((f==3||f==4)&&G==1){var n=0;var C=d.charCodeAt(n);var B=d.substring(n+1,n+1+C);n+=(C+1);var w=d.charCodeAt(n);var v=d.substring(n+1,n+1+w);n+=(w+1);var A=0;var z=null;var l=b.xxRandomNonce(32);var F="00000002";var q="";if(f==4){A=d.charCodeAt(n);z=d.substring(n+1,n+1+A);n+=(A+1);q=F+":"+l+":"+z+":"}var p=hex_md5(hex_md5(b.user+":"+B+":"+b.pass)+":"+v+":"+q+hex_md5("POST:"+b.authuri));var I=b.user.length+B.length+v.length+b.authuri.length+l.length+F.length+p.length+7;if(f==4){I+=(z.length+1)}var h=String.fromCharCode(19,0,0,0,f)+IntToStrX(I)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(B.length)+B+String.fromCharCode(v.length)+v+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(l.length)+l+String.fromCharCode(F.length)+F+String.fromCharCode(p.length)+p;if(f==4){h+=(String.fromCharCode(z.length)+z)}b.xxSend(h)}else{if(G==0){if(b.protocol==1){var u=10000;var K=100;var J=0;var E=10000;var D=100;var r=0;b.xxSend(String.fromCharCode(32,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(u)+ShortToStrX(K)+ShortToStrX(J)+ShortToStrX(E)+ShortToStrX(D)+ShortToStrX(r)+IntToStrX(0))}if(b.protocol==2){b.xxSend(String.fromCharCode(64,0,0,0,0,0,0,0))}if(b.protocol==3){b.connectstate=1;b.xxStateChange(3)}}else{b.Stop(3)}}}break;case 33:if(b.amtaccumulator.length<23){break}k=23;b.xxSend(String.fromCharCode(39,0,0,0)+IntToStrX(b.amtsequence++)+String.fromCharCode(0,0,27,0,0,0));if(b.protocol==1){b.amtkeepalivetimer=setInterval(b.xxSendAmtKeepAlive,2000)}b.connectstate=1;b.xxStateChange(3);break;case 41:if(b.amtaccumulator.length<10){break}k=10;break;case 42:if(b.amtaccumulator.length<10){break}var m=(10+((b.amtaccumulator.charCodeAt(9)&255)<<8)+(b.amtaccumulator.charCodeAt(8)&255));if(b.amtaccumulator.length<m){break}b.m.ProcessData(b.amtaccumulator.substring(10,m));k=m;break;case 43:if(b.amtaccumulator.length<8){break}k=8;break;case 65:if(b.amtaccumulator.length<8){break}b.connectstate=1;b.m.Start();if(b.amtaccumulator.length>8){b.m.ProcessData(b.amtaccumulator.substring(8))}k=b.amtaccumulator.length;break;default:console.log("Unknown Intel AMT command: "+b.amtaccumulator.charCodeAt(0)+" acclen="+b.amtaccumulator.length);b.Stop(4);return}if(k==0){return}b.amtaccumulator=b.amtaccumulator.substring(k)}};b.xxSend=function(e){if(b.socket!=null&&b.socket.readyState==WebSocket.OPEN){if(b.debugmode==1){console.log("Send",e)}var c=new Uint8Array(e.length);for(var d=0;d<e.length;++d){c[d]=e.charCodeAt(d)}b.socket.send(c.buffer)}};b.send=function(c){if(b.socket==null||b.connectstate!=1){return}if(b.protocol==1){b.xxSend(String.fromCharCode(40,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(c.length)+c)}else{b.xxSend(c)}};b.xxSendAmtKeepAlive=function(){if(b.socket==null){return}b.xxSend(String.fromCharCode(43,0,0,0)+IntToStrX(b.amtsequence++))};b.xxRandomNonceX="abcdef0123456789";b.xxRandomNonce=function(d){var e="";for(var c=0;c<d;c++){e+=b.xxRandomNonceX.charAt(Math.floor(Math.random()*b.xxRandomNonceX.length))}return e};b.xxOnSocketClosed=function(){if(b.debugmode==1){console.log("onSocketClosed")}if((b.inDataCount==0)&&(b.tlsv1only==0)){b.tlsv1only=1;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+b.host+"&port="+b.port+"&tls="+b.tls+"&tls1only=1"+((b.user=="*")?"&serverauth=1":"")+((typeof pass==="undefined")?("&serverauth=1&user="+b.user):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed}else{b.Stop(5)}};b.xxStateChange=function(c){if(b.State==c){return}b.State=c;b.m.xxStateChange(b.State);if(b.onStateChanged!=null){b.onStateChanged(b,b.State)}};b.Stop=function(c){if(b.debugmode==1){console.log("onSocketStop",c)}b.xxStateChange(0);b.connectstate=-1;b.amtaccumulator="";if(b.socket!=null){b.socket.close();b.socket=null}if(b.amtkeepalivetimer!=null){clearInterval(b.amtkeepalivetimer);b.amtkeepalivetimer=null}};b.RedirectStartSol=String.fromCharCode(16,0,0,0,83,79,76,32);b.RedirectStartKvm=String.fromCharCode(16,1,0,0,75,86,77,82);b.RedirectStartIder=String.fromCharCode(16,0,0,0,73,68,69,82);return b};var CreateAmtRemoteDesktop=function(j,l){var k={};k.canvasid=j;k.CanvasId=Q(j);k.scrolldiv=l;k.canvas=Q(j).getContext("2d");k.protocol=2;k.state=0;k.acc="";k.ScreenWidth=960;k.ScreenHeight=700;k.width=0;k.height=0;k.rwidth=0;k.rheight=0;k.bpp=2;k.useZRLE=true;k.showmouse=true;k.buttonmask=0;k.spare=null;k.sparew=0;k.spareh=0;k.sparew2=0;k.spareh2=0;k.sparecache={};k.ZRLEfirst=1;k.onScreenSizeChange=null;k.frameRateDelay=0;k.Debug=function(m){console.log(m)};k.xxStateChange=function(m){if(m==0){k.canvas.fillStyle="#000000";k.canvas.fillRect(0,0,k.width,k.height);k.canvas.canvas.width=k.rwidth=k.width=640;k.canvas.canvas.height=k.rheight=k.height=400;QS(k.canvasid).cursor="auto"}else{if(!k.showmouse){QS(k.canvasid).cursor="none"}}};k.ProcessData=function(p){if(!p){return}k.acc+=p;while(k.acc.length>0){var n=0;if(k.state==0&&k.acc.length>=12){n=12;k.state=1;k.send("RFB 003.008\n")}else{if(k.state==1&&k.acc.length>=1){n=k.acc.charCodeAt(0)+1;k.send(String.fromCharCode(1));k.state=2}else{if(k.state==2&&k.acc.length>=4){n=4;if(ReadInt(k.acc,0)!=0){return k.Stop()}k.send(String.fromCharCode(1));k.state=3}else{if(k.state==3&&k.acc.length>=24){var z=ReadInt(k.acc,20);if(k.acc.length<24+z){return}n=24+z;k.canvas.canvas.width=k.rwidth=k.width=k.ScreenWidth=ReadShort(k.acc,0);k.canvas.canvas.height=k.rheight=k.height=k.ScreenHeight=ReadShort(k.acc,2);var C="";if(k.useZRLE){C+=IntToStr(16)}C+=IntToStr(0);k.send(String.fromCharCode(2,0)+ShortToStr((C.length/4)+1)+C+IntToStr(-223));if(k.bpp==1){k.send(String.fromCharCode(0,0,0,0,8,8,0,1)+ShortToStr(7)+ShortToStr(7)+ShortToStr(3)+String.fromCharCode(5,2,0,0,0,0))}k.state=4;k.parent.xxStateChange(3);g();if(k.onScreenSizeChange!=null){k.onScreenSizeChange(k,k.ScreenWidth,k.ScreenHeight)}}else{if(k.state==4){var m=k.acc.charCodeAt(0);if(m==2){n=1}else{if(m==0){if(k.acc.length<4){return}k.state=100+ReadShort(k.acc,2);n=4}}}else{if(k.state>100&&k.acc.length>=12){var E=ReadShort(k.acc,0),G=ReadShort(k.acc,2),D=ReadShort(k.acc,4),v=ReadShort(k.acc,6),B=D*v,u=ReadInt(k.acc,8);if(u<17){if(D<1||D>64||v<1||v>64){console.log("Invalid tile size ("+D+","+v+"), disconnecting.");return k.Stop()}if(k.sparew!=D||k.spareh!=v){k.sparew=k.sparew2=D;k.spareh=k.spareh2=v;var F=k.sparew2+"x"+k.spareh2;k.spare=k.sparecache[F];if(!k.spare){k.sparecache[F]=k.spare=k.canvas.createImageData(k.sparew2,k.spareh2)}}}if(u==4294967073){k.canvas.canvas.width=k.rwidth=k.width=D;k.canvas.canvas.height=k.rheight=k.height=v;k.send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(k.width)+ShortToStr(k.height));n=12;if(k.onScreenSizeChange!=null){k.onScreenSizeChange(k,k.ScreenWidth,k.ScreenHeight)}}else{if(u==0){var A=12,o=12+(B*k.bpp);if(k.acc.length<o){return}n=o;for(var w=0;w<B;w++){h(k.acc.charCodeAt(A++)+((k.bpp==2)?(k.acc.charCodeAt(A++)<<8):0),w)}f(k.spare,E,G)}else{if(u==16){if(k.acc.length<16){return}var q=ReadInt(k.acc,12);if(k.acc.length<(16+q)){return}var A=16,r=5,t=0;if(q>5&&k.acc.charCodeAt(A)==0&&ReadShortX(k.acc,A+1)==(q-r)){a(k.acc,A+5,E,G,D,v,B,q)}n=16+q}else{k.Debug("Unknown Encoding: "+u);return k.Stop()}}}if(--k.state==100){k.state=4;if(k.frameRateDelay==0){g()}else{setTimeout(g,k.frameRateDelay)}}}}}}}}if(n==0){return}k.acc=k.acc.substring(n)}};function a(o,w,G,H,F,q,C,p){var D=o.charCodeAt(w++),t,E,B,u={},z=0,A=0,r;if(D==0){for(r=0;r<C;r++){h(o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0),r)}f(k.spare,G,H)}else{if(D==1){E=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0);k.canvas.fillStyle="rgb("+((k.bpp==1)?((E&224)+","+((E&28)<<3)+","+b((E&3)<<6)):(((E>>8)&248)+","+((E>>3)&252)+","+((E&31)<<3)))+")";k.canvas.fillRect(G,H,F,q)}else{if(D>1&&D<17){var n=4,m=15;for(r=0;r<D;r++){u[r]=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0)}if(D==2){n=1;m=1}else{if(D<=4){n=2;m=3}}while(z<C&&w<o.length){E=o.charCodeAt(w++);for(r=(8-n);r>=0;r-=n){h(u[(E>>r)&m],z++)}}f(k.spare,G,H)}else{if(D==128){while(z<C&&w<o.length){E=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0);A=1;do{A+=(B=o.charCodeAt(w++))}while(B==255);while(--A>=0){h(E,z++)}}f(k.spare,G,H)}else{if(D>129){for(r=0;r<(D-128);r++){u[r]=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0)}while(z<C&&w<o.length){A=1;t=o.charCodeAt(w++);E=u[t%128];if(t>127){do{A+=(B=o.charCodeAt(w++))}while(B==255)}while(--A>=0){h(E,z++)}}f(k.spare,G,H)}}}}}}function f(m,n,o){k.canvas.putImageData(m,n,o)}function h(o,m){var n=m*4;if(k.bpp==1){k.spare.data[n++]=o&224;k.spare.data[n++]=(o&28)<<3;k.spare.data[n++]=b((o&3)<<6)}else{k.spare.data[n++]=(o>>8)&248;k.spare.data[n++]=(o>>3)&252;k.spare.data[n++]=(o&31)<<3}k.spare.data[n]=255}function b(m){return(m>127)?(m+32):m}function g(){k.send(String.fromCharCode(3,1,0,0,0,0)+ShortToStr(k.rwidth)+ShortToStr(k.rheight))}k.Start=function(){k.state=0;k.acc="";k.ZRLEfirst=1;for(var m in k.sparecache){delete k.sparecache[m]}};k.Stop=function(){k.UnGrabMouseInput();k.UnGrabKeyInput();k.parent.Stop()};k.send=function(m){k.parent.send(m)};function c(m,n){if(!n){n=window.event}var o=n.keyCode,p=o;if(n.shiftKey==false&&o>=65&&o<=90){p=o+32}if(o>=112&&o<=124){p=o+65358}if(o==8){p=65288}if(o==9){p=65289}if(o==13){p=65293}if(o==16){p=65505}if(o==17){p=65507}if(o==18){p=65513}if(o==27){p=65307}if(o==33){p=65365}if(o==34){p=65366}if(o==35){p=65367}if(o==36){p=65360}if(o==37){p=65361}if(o==38){p=65362}if(o==39){p=65363}if(o==40){p=65364}if(o==45){p=65379}if(o==46){p=65535}if(o>=96&&o<=105){p=o-48}if(o==106){p=42}if(o==107){p=43}if(o==109){p=45}if(o==110){p=46}if(o==111){p=47}if(o==186){p=59}if(o==187){p=61}if(o==188){p=44}if(o==189){p=45}if(o==190){p=46}if(o==191){p=47}if(o==192){p=96}if(o==219){p=91}if(o==220){p=92}if(o==221){p=93}if(o==222){p=39}k.sendkey(p,m);return k.haltEvent(n)}k.sendkey=function(o,m){if(typeof o=="object"){for(var n in o){k.sendkey(o[n][0],o[n][1])}}else{k.send(String.fromCharCode(4,m,0,0)+IntToStr(o))}};k.SendCtrlAltDelMsg=function(){k.sendcad()};k.sendcad=function(){k.sendkey([[65507,1],[65513,1],[65535,1],[65535,0],[65513,0],[65507,0]])};var e=false;var d=false;k.GrabMouseInput=function(){if(e==true){return}var m=k.canvas.canvas;m.onmouseup=k.mouseup;m.onmousedown=k.mousedown;m.onmousemove=k.mousemove;e=true};k.UnGrabMouseInput=function(){if(e==false){return}var m=k.canvas.canvas;m.onmousemove=null;m.onmouseup=null;m.onmousedown=null;e=false};k.GrabKeyInput=function(){if(d==true){return}document.onkeyup=k.handleKeyUp;document.onkeydown=k.handleKeyDown;document.onkeypress=k.handleKeys;d=true};k.UnGrabKeyInput=function(){if(d==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;d=false};k.handleKeys=function(m){return k.haltEvent(m)};k.handleKeyUp=function(m){return c(0,m)};k.handleKeyDown=function(m){return c(1,m)};k.haltEvent=function(m){if(m.preventDefault){m.preventDefault()}if(m.stopPropagation){m.stopPropagation()}return false};k.mousedown=function(m){k.buttonmask|=(1<<m.button);return k.mousemove(m)};k.mouseup=function(m){k.buttonmask&=(65535-(1<<m.button));return k.mousemove(m)};k.mousemove=function(m){if(k.state!=4){return true}var n=k.getPositionOfControl(Q(k.canvasid));k.mx=(m.pageX-n[0])*(k.canvas.canvas.height/Q(k.canvasid).offsetHeight);k.my=((m.pageY-n[1]+(l?l.scrollTop:0))*(k.canvas.canvas.width/Q(k.canvasid).offsetWidth));k.send(String.fromCharCode(5,k.buttonmask)+ShortToStr(k.mx)+ShortToStr(k.my));return k.haltEvent(m)};k.getPositionOfControl=function(m){var n=Array(2);n[0]=n[1]=0;while(m){n[0]+=m.offsetLeft;n[1]+=m.offsetTop;m=m.offsetParent}return n};return k};var ZLIB=(ZLIB||{});if(typeof ZLIB.common_initialized==="undefined"){ZLIB.Z_NO_FLUSH=0;ZLIB.Z_PARTIAL_FLUSH=1;ZLIB.Z_SYNC_FLUSH=2;ZLIB.Z_FULL_FLUSH=3;ZLIB.Z_FINISH=4;ZLIB.Z_BLOCK=5;ZLIB.Z_TREES=6;ZLIB.Z_OK=0;ZLIB.Z_STREAM_END=1;ZLIB.Z_NEED_DICT=2;ZLIB.Z_ERRNO=(-1);ZLIB.Z_STREAM_ERROR=(-2);ZLIB.Z_DATA_ERROR=(-3);ZLIB.Z_MEM_ERROR=(-4);ZLIB.Z_BUF_ERROR=(-5);ZLIB.Z_VERSION_ERROR=(-6);ZLIB.Z_DEFLATED=8;ZLIB.z_stream=function(){this.next_in=0;this.avail_in=0;this.total_in=0;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg=null;this.state=null;this.data_type=0;this.adler=0;this.input_data="";this.output_data="";this.error=0;this.checksum_function=null};ZLIB.gz_header=function(){this.text=0;this.time=0;this.xflags=0;this.os=255;this.extra=null;this.extra_len=0;this.extra_max=0;this.name=null;this.name_max=0;this.comment=null;this.comm_max=0;this.hcrc=0;this.done=0};ZLIB.common_initialized=true}if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-inflate.js")}(function(){var n=15;var G=0;var D=1;var am=2;var af=3;var A=4;var B=5;var ac=6;var h=7;var F=8;var p=9;var o=10;var an=11;var ao=12;var aj=13;var k=14;var j=15;var al=16;var W=17;var f=18;var S=19;var R=20;var T=21;var q=22;var r=23;var aa=24;var Y=25;var d=26;var V=27;var u=28;var a=29;var ab=30;var ak=31;var z=852;var y=592;var w=(z+y);var g=0;var X=1;var t=2;var N=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0];var O=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,203,69];var L=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0];var M=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];ZLIB.inflate_copyright=" inflate 1.2.6 Copyright 1995-2012 Mark Adler ";function K(aR,aV){var aM=15;var aU=aR.next;var at=(aV==t?aR.distbits:aR.lenbits);var aX=aR.work;var aH=aR.lens;var aI=(aV==t?aR.nlen:0);var aS=aR.codes;var au;if(aV==X){au=aR.nlen}else{if(aV==t){au=aR.ndist}else{au=19}}var aG;var aT;var aN,aL;var aQ;var aw;var ax;var aF;var aW;var aD;var aE;var aB;var aJ;var aK;var aC;var aO;var aq;var ar;var az;var aA;var ay;var av=new Array(aM+1);var aP=new Array(aM+1);for(aG=0;aG<=aM;aG++){av[aG]=0}for(aT=0;aT<au;aT++){av[aH[aI+aT]]++}aQ=at;for(aL=aM;aL>=1;aL--){if(av[aL]!=0){break}}if(aQ>aL){aQ=aL}if(aL==0){aC={op:64,bits:1,val:0};aS[aU++]=aC;aS[aU++]=aC;if(aV==t){aR.distbits=1}else{aR.lenbits=1}aR.next=aU;return 0}for(aN=1;aN<aL;aN++){if(av[aN]!=0){break}}if(aQ<aN){aQ=aN}aF=1;for(aG=1;aG<=aM;aG++){aF<<=1;aF-=av[aG];if(aF<0){return -1}}if(aF>0&&(aV==g||aL!=1)){aR.next=aU;return -1}aP[1]=0;for(aG=1;aG<aM;aG++){aP[aG+1]=aP[aG]+av[aG]}for(aT=0;aT<au;aT++){if(aH[aI+aT]!=0){aX[aP[aH[aI+aT]]++]=aT}}switch(aV){case g:aq=az=aX;ar=0;aA=0;ay=19;break;case X:aq=N;ar=-257;az=O;aA=-257;ay=256;break;default:aq=L;az=M;ar=0;aA=0;ay=-1}aD=0;aT=0;aG=aN;aO=aU;aw=aQ;ax=0;aJ=-1;aW=1<<aQ;aK=aW-1;if((aV==X&&aW>=z)||(aV==t&&aW>=y)){aR.next=aU;return 1}for(;;){aC={op:0,bits:aG-ax,val:0};if(aX[aT]<ay){aC.val=aX[aT]}else{if(aX[aT]>ay){aC.op=az[aA+aX[aT]];aC.val=aq[ar+aX[aT]]}else{aC.op=32+64}}aE=1<<(aG-ax);aB=1<<aw;aN=aB;do{aB-=aE;aS[aO+(aD>>>ax)+aB]=aC}while(aB!=0);aE=1<<(aG-1);while(aD&aE){aE>>>=1}if(aE!=0){aD&=aE-1;aD+=aE}else{aD=0}aT++;if(--(av[aG])==0){if(aG==aL){break}aG=aH[aI+aX[aT]]}if(aG>aQ&&(aD&aK)!=aJ){if(ax==0){ax=aQ}aO+=aN;aw=aG-ax;aF=(1<<aw);while(aw+ax<aL){aF-=av[aw+ax];if(aF<=0){break}aw++;aF<<=1}aW+=1<<aw;if((aV==X&&aW>=z)||(aV==t&&aW>=y)){aR.next=aU;return 1}aJ=aD&aK;aS[aU+aJ]={op:aw,bits:aQ,val:aO-aU}}}if(aD!=0){aS[aO+aD]={op:64,bits:aG-ax,val:0}}aR.next=aU+aW;if(aV==t){aR.distbits=aQ}else{aR.lenbits=aQ}return 0}function H(aN,aL){var aM;var aC;var aI;var aD;var aK;var aq;var ax;var aR;var aO;var aQ;var aP;var aB;var ar;var at;var aE;var au;var aH;var aw;var aA;var aJ;var aF;var av;var az=-1;var ay=-1;aM=aN.state;aC=aN.input_data;aI=aN.next_in;aD=aI+aN.avail_in-5;aK=aN.next_out;aq=aK-(aL-aN.avail_out);ax=aK+(aN.avail_out-257);aR=aM.wsize;aO=aM.whave;aQ=aM.wnext;aP=aM.window;aB=aM.hold;ar=aM.bits;at=aM.codes;aE=aM.lencode;au=aM.distcode;aH=(1<<aM.lenbits)-1;aw=(1<<aM.distbits)-1;loop:do{if(ar<15){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8;aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}aA=at[aE+(aB&aH)];dolen:while(true){aJ=aA.bits;aB>>>=aJ;ar-=aJ;aJ=aA.op;if(aJ==0){aN.output_data+=String.fromCharCode(aA.val);aK++}else{if(aJ&16){aF=aA.val;aJ&=15;if(aJ){if(ar<aJ){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}aF+=aB&((1<<aJ)-1);aB>>>=aJ;ar-=aJ}if(ar<15){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8;aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}aA=at[au+(aB&aw)];dodist:while(true){aJ=aA.bits;aB>>>=aJ;ar-=aJ;aJ=aA.op;if(aJ&16){av=aA.val;aJ&=15;if(ar<aJ){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8;if(ar<aJ){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}}av+=aB&((1<<aJ)-1);aB>>>=aJ;ar-=aJ;aJ=aK-aq;if(av>aJ){aJ=av-aJ;if(aJ>aO){if(aM.sane){aN.msg="invalid distance too far back";aM.mode=a;break loop}}az=0;ay=-1;if(aQ==0){az+=aR-aJ;if(aJ<aF){aF-=aJ;aN.output_data+=aP.substring(az,az+aJ);aK+=aJ;aJ=0;az=-1;ay=aK-av}}else{az+=aQ-aJ;if(aJ<aF){aF-=aJ;aN.output_data+=aP.substring(az,az+aJ);aK+=aJ;az=-1;ay=aK-av}}}else{az=-1;ay=aK-av}if(az>=0){aN.output_data+=aP.substring(az,az+aF);aK+=aF;az+=aF}else{var aG=aF;if(aG>aK-ay){aG=aK-ay}aN.output_data+=aN.output_data.substring(ay,ay+aG);aK+=aG;aF-=aG;ay+=aG;aK+=aF;while(aF>2){aN.output_data+=aN.output_data.charAt(ay++);aN.output_data+=aN.output_data.charAt(ay++);aN.output_data+=aN.output_data.charAt(ay++);aF-=3}if(aF){aN.output_data+=aN.output_data.charAt(ay++);if(aF>1){aN.output_data+=aN.output_data.charAt(ay++)}}}}else{if((aJ&64)==0){aA=at[au+(aA.val+(aB&((1<<aJ)-1)))];continue dodist}else{aN.msg="invalid distance code";aM.mode=a;break loop}}break dodist}}else{if((aJ&64)==0){aA=at[aE+(aA.val+(aB&((1<<aJ)-1)))];continue dolen}else{if(aJ&32){aM.mode=an;break loop}else{aN.msg="invalid literal/length code";aM.mode=a;break loop}}}}break dolen}}while(aI<aD&&aK<ax);aF=ar>>>3;aI-=aF;ar-=aF<<3;aB&=(1<<ar)-1;aN.next_in=aI;aN.next_out=aK;aN.avail_in=(aI<aD?5+(aD-aI):5-(aI-aD));aN.avail_out=(aK<ax?257+(ax-aK):257-(aK-ax));aM.hold=aB;aM.bits=ar}function ae(at){var ar;var aq=new Array(at);for(ar=0;ar<at;ar++){aq[ar]=0}return aq}function E(at,ar,aq){return(at&&(ar in at))?at[ar]:aq}function e(){return 0}function J(){var ar;this.mode=0;this.last=0;this.wrap=0;this.havedict=0;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=0;this.distcode=0;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=0;this.lens=ae(320);this.work=ae(288);this.codes=new Array(w);var aq={op:0,bits:0,val:0};for(ar=0;ar<w;ar++){this.codes[ar]=aq}this.sane=0;this.back=0;this.was=0}ZLIB.inflateResetKeep=function(ar){var aq;if(!ar||!ar.state){return ZLIB.Z_STREAM_ERROR}aq=ar.state;ar.total_in=ar.total_out=aq.total=0;ar.msg=null;if(aq.wrap){ar.adler=aq.wrap&1}aq.mode=G;aq.last=0;aq.havedict=0;aq.dmax=32768;aq.head=null;aq.hold=0;aq.bits=0;aq.lencode=0;aq.distcode=0;aq.next=0;aq.sane=1;aq.back=-1;return ZLIB.Z_OK};ZLIB.inflateReset=function(ar,at){var au;var aq;if(!ar||!ar.state){return ZLIB.Z_STREAM_ERROR}aq=ar.state;if(typeof at==="undefined"){at=n}if(at<0){au=0;at=-at}else{au=(at>>>4)+1;if(at<48){at&=15}}if(au==1&&(typeof ZLIB.adler32==="function")){ar.checksum_function=ZLIB.adler32}else{if(au==2&&(typeof ZLIB.crc32==="function")){ar.checksum_function=ZLIB.crc32}else{ar.checksum_function=e}}if(at&&(at<8||at>15)){return ZLIB.Z_STREAM_ERROR}if(aq.window&&aq.wbits!=at){aq.window=null}aq.wrap=au;aq.wbits=at;aq.wsize=0;aq.whave=0;aq.wnext=0;return ZLIB.inflateResetKeep(ar)};ZLIB.inflateInit=function(ar){var aq=new ZLIB.z_stream();aq.state=new J();ZLIB.inflateReset(aq,ar);return aq};ZLIB.inflatePrime=function(at,aq,au){var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;if(aq<0){ar.hold=0;ar.bits=0;return ZLIB.Z_OK}if(aq>16||ar.bits+aq>32){return ZLIB.Z_STREAM_ERROR}au&=(1<<aq)-1;ar.hold+=au<<ar.bits;ar.bits+=aq;return ZLIB.Z_OK};var U=null;var s=null;function C(ar){var aq;if(!U){U=[{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:192},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:160},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:224},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:144},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:208},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:176},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:240},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:200},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:168},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:232},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:152},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:216},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:184},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:248},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:196},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:164},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:228},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:148},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:212},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:180},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:244},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:204},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:172},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:236},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:156},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:220},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:188},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:252},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:194},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:162},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:226},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:146},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:210},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:178},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:242},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:202},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:170},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:234},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:154},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:218},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:186},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:250},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:198},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:166},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:230},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:150},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:214},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:182},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:246},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:206},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:174},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:238},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:158},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:222},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:190},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:254},{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:193},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:161},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:225},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:145},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:209},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:177},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:241},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:201},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:169},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:233},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:153},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:217},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:185},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:249},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:197},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:165},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:229},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:149},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:213},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:181},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:245},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:205},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:173},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:237},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:157},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:221},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:189},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:253},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:195},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:163},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:227},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:147},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:211},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:179},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:243},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:203},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:171},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:235},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:155},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:219},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:187},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:251},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:199},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:167},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:231},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:151},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:215},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:183},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:247},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:207},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:175},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:239},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:159},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:223},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:191},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:255}]}if(!s){s=[{op:16,bits:5,val:1},{op:23,bits:5,val:257},{op:19,bits:5,val:17},{op:27,bits:5,val:4097},{op:17,bits:5,val:5},{op:25,bits:5,val:1025},{op:21,bits:5,val:65},{op:29,bits:5,val:16385},{op:16,bits:5,val:3},{op:24,bits:5,val:513},{op:20,bits:5,val:33},{op:28,bits:5,val:8193},{op:18,bits:5,val:9},{op:26,bits:5,val:2049},{op:22,bits:5,val:129},{op:64,bits:5,val:0},{op:16,bits:5,val:2},{op:23,bits:5,val:385},{op:19,bits:5,val:25},{op:27,bits:5,val:6145},{op:17,bits:5,val:7},{op:25,bits:5,val:1537},{op:21,bits:5,val:97},{op:29,bits:5,val:24577},{op:16,bits:5,val:4},{op:24,bits:5,val:769},{op:20,bits:5,val:49},{op:28,bits:5,val:12289},{op:18,bits:5,val:13},{op:26,bits:5,val:3073},{op:22,bits:5,val:193},{op:64,bits:5,val:0}]}ar.lencode=0;ar.distcode=512;for(aq=0;aq<512;aq++){ar.codes[aq]=U[aq]}for(aq=0;aq<32;aq++){ar.codes[aq+512]=s[aq]}ar.lenbits=9;ar.distbits=5}function ap(at){var ar=at.state;var aq=at.output_data.length;if(ar.window===null){ar.window=""}if(ar.wsize==0){ar.wsize=1<<ar.wbits}if(aq>=ar.wsize){ar.window=at.output_data.substring(aq-ar.wsize)}else{if(ar.whave+aq<ar.wsize){ar.window+=at.output_data}else{ar.window=ar.window.substring(ar.whave-(ar.wsize-aq))+at.output_data}}ar.whave=ar.window.length;if(ar.whave<ar.wsize){ar.wnext=ar.whave}else{ar.wnext=0}return 0}function l(ar,at){var aq=[at&255,(at>>>8)&255];ar.state.check=ar.checksum_function(ar.state.check,aq,0,2)}function m(ar,at){var aq=[at&255,(at>>>8)&255,(at>>>16)&255,(at>>>24)&255];ar.state.check=ar.checksum_function(ar.state.check,aq,0,4)}function Z(ar,aq){aq.strm=ar;aq.left=ar.avail_out;aq.next=ar.next_in;aq.have=ar.avail_in;aq.hold=ar.state.hold;aq.bits=ar.state.bits;return aq}function ah(aq){var ar=aq.strm;ar.next_in=aq.next;ar.avail_out=aq.left;ar.avail_in=aq.have;ar.state.hold=aq.hold;ar.state.bits=aq.bits}function P(aq){aq.hold=0;aq.bits=0}function ag(aq){if(aq.have==0){return false}aq.have--;aq.hold+=(aq.strm.input_data.charCodeAt(aq.next++)&255)<<aq.bits;aq.bits+=8;return true}function ad(ar,aq){while(ar.bits<aq){if(!ag(ar)){return false}}return true}function b(ar,aq){return ar.hold&((1<<aq)-1)}function v(ar,aq){ar.hold>>>=aq;ar.bits-=aq}function c(aq){aq.hold>>>=aq.bits&7;aq.bits-=aq.bits&7}function ai(aq){return((aq>>>24)&255)+((aq>>>8)&65280)+((aq&65280)<<8)+((aq&255)<<24)}var I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];ZLIB.inflate=function(aD,at){var aC;var aB;var aq,az;var ar;var av=-1;var au=-1;var aw;var ax;var ay;var aA;if(!aD||!aD.state||(!aD.input_data&&aD.avail_in!=0)){return ZLIB.Z_STREAM_ERROR}aC=aD.state;if(aC.mode==an){aC.mode=ao}aB={};Z(aD,aB);aq=aB.have;az=aB.left;aA=ZLIB.Z_OK;inf_leave:for(;;){switch(aC.mode){case G:if(aC.wrap==0){aC.mode=ao;break}if(!ad(aB,16)){break inf_leave}if((aC.wrap&2)&&aB.hold==35615){aC.check=aD.checksum_function(0,null,0,0);l(aD,aB.hold);P(aB);aC.mode=D;break}aC.flags=0;if(aC.head!==null){aC.head.done=-1}if(!(aC.wrap&1)||((b(aB,8)<<8)+(aB.hold>>>8))%31){aD.msg="incorrect header check";aC.mode=a;break}if(b(aB,4)!=ZLIB.Z_DEFLATED){aD.msg="unknown compression method";aC.mode=a;break}v(aB,4);ay=b(aB,4)+8;if(aC.wbits==0){aC.wbits=ay}else{if(ay>aC.wbits){aD.msg="invalid window size";aC.mode=a;break}}aC.dmax=1<<ay;aD.adler=aC.check=aD.checksum_function(0,null,0,0);aC.mode=aB.hold&512?p:an;P(aB);break;case D:if(!ad(aB,16)){break inf_leave}aC.flags=aB.hold;if((aC.flags&255)!=ZLIB.Z_DEFLATED){aD.msg="unknown compression method";aC.mode=a;break}if(aC.flags&57344){aD.msg="unknown header flags set";aC.mode=a;break}if(aC.head!==null){aC.head.text=(aB.hold>>>8)&1}if(aC.flags&512){l(aD,aB.hold)}P(aB);aC.mode=am;case am:if(!ad(aB,32)){break inf_leave}if(aC.head!==null){aC.head.time=aB.hold}if(aC.flags&512){m(aD,aB.hold)}P(aB);aC.mode=af;case af:if(!ad(aB,16)){break inf_leave}if(aC.head!==null){aC.head.xflags=aB.hold&255;aC.head.os=aB.hold>>>8}if(aC.flags&512){l(aD,aB.hold)}P(aB);aC.mode=A;case A:if(aC.flags&1024){if(!ad(aB,16)){break inf_leave}aC.length=aB.hold;if(aC.head!==null){aC.head.extra_len=aB.hold}if(aC.flags&512){l(aD,aB.hold)}P(aB);aC.head.extra=""}else{if(aC.head!==null){aC.head.extra=null}}aC.mode=B;case B:if(aC.flags&1024){ar=aC.length;if(ar>aB.have){ar=aB.have}if(ar){if(aC.head!==null&&aC.head.extra!==null){ay=aC.head.extra_len-aC.length;aC.head.extra+=aD.input_data.substring(aB.next,aB.next+(ay+ar>aC.head.extra_max?aC.head.extra_max-ay:ar))}if(aC.flags&512){aC.check=aD.checksum_function(aC.check,aD.input_data,aB.next,ar)}aB.have-=ar;aB.next+=ar;aC.length-=ar}if(aC.length){break inf_leave}}aC.length=0;aC.mode=ac;case ac:if(aC.flags&2048){if(aB.have==0){break inf_leave}if(aC.head!==null&&aC.head.name===null){aC.head.name=""}ar=0;do{ay=aD.input_data.charAt(aB.next+ar);ar++;if(ay==="\0"){break}if(aC.head!==null&&aC.length<aC.head.name_max){aC.head.name+=ay;aC.length++}}while(ar<aB.have);if(aC.flags&512){aC.check=aD.checksum_function(aC.check,aD.input_data,aB.next,ar)}aB.have-=ar;aB.next+=ar;if(ay!=="\0"){break inf_leave}}else{if(aC.head!==null){aC.head.name=null}}aC.length=0;aC.mode=h;case h:if(aC.flags&4096){if(aB.have==0){break inf_leave}ar=0;if(aC.head!==null&&aC.head.comment===null){aC.head.comment=""}do{ay=aD.input_data.charAt(aB.next+ar);ar++;if(ay==="\0"){break}if(aC.head!==null&&aC.length<aC.head.comm_max){aC.head.comment+=ay;aC.length++}}while(ar<aB.have);if(aC.flags&512){aC.check=aD.checksum_function(aC.check,aD.input_data,aB.next,ar)}aB.have-=ar;aB.next+=ar;if(ay!=="\0"){break inf_leave}}else{if(aC.head!==null){aC.head.comment=null}}aC.mode=F;case F:if(aC.flags&512){if(!ad(aB,16)){break inf_leave}if(aB.hold!=(aC.check&65535)){aD.msg="header crc mismatch";aC.mode=a;break}P(aB)}if(aC.head!==null){aC.head.hcrc=(aC.flags>>>9)&1;aC.head.done=1}aD.adler=aC.check=aD.checksum_function(0,null,0,0);aC.mode=an;break;case p:if(!ad(aB,32)){break inf_leave}aD.adler=aC.check=ai(aB.hold);P(aB);aC.mode=o;case o:if(aC.havedict==0){ah(aB);return ZLIB.Z_NEED_DICT}aD.adler=aC.check=aD.checksum_function(0,null,0,0);aC.mode=an;case an:if(at==ZLIB.Z_BLOCK||at==ZLIB.Z_TREES){break inf_leave}case ao:if(aC.last){c(aB);aC.mode=d;break}if(!ad(aB,3)){break inf_leave}aC.last=b(aB,1);v(aB,1);switch(b(aB,2)){case 0:aC.mode=aj;break;case 1:C(aC);aC.mode=S;if(at==ZLIB.Z_TREES){v(aB,2);break inf_leave}break;case 2:aC.mode=al;break;case 3:aD.msg="invalid block type";aC.mode=a}v(aB,2);break;case aj:c(aB);if(!ad(aB,32)){break inf_leave}if((aB.hold&65535)!=(((aB.hold>>>16)&65535)^65535)){aD.msg="invalid stored block lengths";aC.mode=a;break}aC.length=aB.hold&65535;P(aB);aC.mode=k;if(at==ZLIB.Z_TREES){break inf_leave}case k:aC.mode=j;case j:ar=aC.length;if(ar){if(ar>aB.have){ar=aB.have}if(ar>aB.left){ar=aB.left}if(ar==0){break inf_leave}aD.output_data+=aD.input_data.substring(aB.next,aB.next+ar);aD.next_out+=ar;aB.have-=ar;aB.next+=ar;aB.left-=ar;aC.length-=ar;break}aC.mode=an;break;case al:if(!ad(aB,14)){break inf_leave}aC.nlen=b(aB,5)+257;v(aB,5);aC.ndist=b(aB,5)+1;v(aB,5);aC.ncode=b(aB,4)+4;v(aB,4);if(aC.nlen>286||aC.ndist>30){aD.msg="too many length or distance symbols";aC.mode=a;break}aC.have=0;aC.mode=W;case W:while(aC.have<aC.ncode){if(!ad(aB,3)){break inf_leave}var aE=b(aB,3);aC.lens[I[aC.have++]]=aE;v(aB,3)}while(aC.have<19){aC.lens[I[aC.have++]]=0}aC.next=0;aC.lencode=0;aC.lenbits=7;aA=K(aC,g);if(aA){aD.msg="invalid code lengths set";aC.mode=a;break}aC.have=0;aC.mode=f;case f:while(aC.have<aC.nlen+aC.ndist){for(;;){aw=aC.codes[aC.lencode+b(aB,aC.lenbits)];if(aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}if(aw.val<16){v(aB,aw.bits);aC.lens[aC.have++]=aw.val}else{if(aw.val==16){if(!ad(aB,aw.bits+2)){break inf_leave}v(aB,aw.bits);if(aC.have==0){aD.msg="invalid bit length repeat";aC.mode=a;break}ay=aC.lens[aC.have-1];ar=3+b(aB,2);v(aB,2)}else{if(aw.val==17){if(!ad(aB,aw.bits+3)){break inf_leave}v(aB,aw.bits);ay=0;ar=3+b(aB,3);v(aB,3)}else{if(!ad(aB,aw.bits+7)){break inf_leave}v(aB,aw.bits);ay=0;ar=11+b(aB,7);v(aB,7)}}if(aC.have+ar>aC.nlen+aC.ndist){aD.msg="invalid bit length repeat";aC.mode=a;break}while(ar--){aC.lens[aC.have++]=ay}}}if(aC.mode==a){break}if(aC.lens[256]==0){aD.msg="invalid code -- missing end-of-block";aC.mode=a;break}aC.next=0;aC.lencode=aC.next;aC.lenbits=9;aA=K(aC,X);if(aA){aD.msg="invalid literal/lengths set";aC.mode=a;break}aC.distcode=aC.next;aC.distbits=6;aA=K(aC,t);if(aA){aD.msg="invalid distances set";aC.mode=a;break}aC.mode=S;if(at==ZLIB.Z_TREES){break inf_leave}case S:aC.mode=R;case R:if(aB.have>=6&&aB.left>=258){ah(aB);H(aD,az);Z(aD,aB);if(aC.mode==an){aC.back=-1}break}aC.back=0;for(;;){aw=aC.codes[aC.lencode+b(aB,aC.lenbits)];if(aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}if(aw.op&&(aw.op&240)==0){ax=aw;for(;;){aw=aC.codes[aC.lencode+ax.val+(b(aB,ax.bits+ax.op)>>>ax.bits)];if(ax.bits+aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}v(aB,ax.bits);aC.back+=ax.bits}v(aB,aw.bits);aC.back+=aw.bits;aC.length=aw.val;if(aw.op==0){aC.mode=Y;break}if(aw.op&32){aC.back=-1;aC.mode=an;break}if(aw.op&64){aD.msg="invalid literal/length code";aC.mode=a;break}aC.extra=aw.op&15;aC.mode=T;case T:if(aC.extra){if(!ad(aB,aC.extra)){break inf_leave}aC.length+=b(aB,aC.extra);v(aB,aC.extra);aC.back+=aC.extra}aC.was=aC.length;aC.mode=q;case q:for(;;){aw=aC.codes[aC.distcode+b(aB,aC.distbits)];if(aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}if((aw.op&240)==0){ax=aw;for(;;){aw=aC.codes[aC.distcode+ax.val+(b(aB,ax.bits+ax.op)>>>ax.bits)];if((ax.bits+aw.bits)<=aB.bits){break}if(!ag(aB)){break inf_leave}}v(aB,ax.bits);aC.back+=ax.bits}v(aB,aw.bits);aC.back+=aw.bits;if(aw.op&64){aD.msg="invalid distance code";aC.mode=a;break}aC.offset=aw.val;aC.extra=aw.op&15;aC.mode=r;case r:if(aC.extra){if(!ad(aB,aC.extra)){break inf_leave}aC.offset+=b(aB,aC.extra);v(aB,aC.extra);aC.back+=aC.extra}aC.mode=aa;case aa:if(aB.left==0){break inf_leave}ar=az-aB.left;if(aC.offset>ar){ar=aC.offset-ar;if(ar>aC.whave){if(aC.sane){aD.msg="invalid distance too far back";aC.mode=a;break}}if(ar>aC.wnext){ar-=aC.wnext;av=aC.wsize-ar;au=-1}else{av=aC.wnext-ar;au=-1}if(ar>aC.length){ar=aC.length}}else{av=-1;au=aD.next_out-aC.offset;ar=aC.length}if(ar>aB.left){ar=aB.left}aB.left-=ar;aC.length-=ar;if(av>=0){aD.output_data+=aC.window.substring(av,av+ar);aD.next_out+=ar;ar=0}else{aD.next_out+=ar;do{aD.output_data+=aD.output_data.charAt(au++)}while(--ar)}if(aC.length==0){aC.mode=R}break;case Y:if(aB.left==0){break inf_leave}aD.output_data+=String.fromCharCode(aC.length);aD.next_out++;aB.left--;aC.mode=R;break;case d:if(aC.wrap){if(!ad(aB,32)){break inf_leave}az-=aB.left;aD.total_out+=az;aC.total+=az;if(az){aD.adler=aC.check=aD.checksum_function(aC.check,aD.output_data,aD.output_data.length-az,az)}az=aB.left;if((aC.flags?aB.hold:ai(aB.hold))!=aC.check){aD.msg="incorrect data check";aC.mode=a;break}P(aB)}aC.mode=V;case V:if(aC.wrap&&aC.flags){if(!ad(aB,32)){break inf_leave}if(aB.hold!=(aC.total&4294967295)){aD.msg="incorrect length check";aC.mode=a;break}P(aB)}aC.mode=u;case u:aA=ZLIB.Z_STREAM_END;break inf_leave;case a:aA=ZLIB.Z_DATA_ERROR;break inf_leave;case ab:return ZLIB.Z_MEM_ERROR;case ak:default:return ZLIB.Z_STREAM_ERROR}}inf_leave:ah(aB);if(aC.wsize||(az!=aD.avail_out&&aC.mode<a&&(aC.mode<d||at!=ZLIB.Z_FINISH))){if(ap(aD)){aC.mode=ab;return ZLIB.Z_MEM_ERROR}}aq-=aD.avail_in;az-=aD.avail_out;aD.total_in+=aq;aD.total_out+=az;aC.total+=az;if(aC.wrap&&az){aD.adler=aC.check=aD.checksum_function(aC.check,aD.output_data,0,aD.output_data.length)}aD.data_type=aC.bits+(aC.last?64:0)+(aC.mode==an?128:0)+(aC.mode==S||aC.mode==k?256:0);if(((aq==0&&az==0)||at==ZLIB.Z_FINISH)&&aA==ZLIB.Z_OK){aA=ZLIB.Z_BUF_ERROR}return aA};ZLIB.inflateEnd=function(ar){var aq;if(!ar||!ar.state){return ZLIB.Z_STREAM_ERROR}aq=ar.state;aq.window=null;ar.state=null;return ZLIB.Z_OK};ZLIB.z_stream.prototype.inflate=function(au,av){var at;var aq;var ar=16384;this.input_data=au;this.next_in=E(av,"next_in",0);this.avail_in=E(av,"avail_in",au.length-this.next_in);at=E(av,"flush",ZLIB.Z_SYNC_FLUSH);aq=E(av,"avail_out",-1);var aw="";do{this.avail_out=(aq>=0?aq:ar);this.output_data="";this.next_out=0;this.error=ZLIB.inflate(this,at);if(aq>=0){return this.output_data}aw+=this.output_data;if(this.avail_out>0){break}}while(this.error==ZLIB.Z_OK);return aw};ZLIB.z_stream.prototype.inflateReset=function(aq){return ZLIB.inflateReset(this,aq)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-adler32.js")}(function(){var c=65521;var d=5552;function b(e,f,j,g){var k;var h;k=(e>>>16)&65535;e&=65535;if(g==1){e+=f.charCodeAt(j)&255;if(e>=c){e-=c}k+=e;if(k>=c){k-=c}return e|(k<<16)}if(f===null){return 1}if(g<16){while(g--){e+=f.charCodeAt(j++)&255;k+=e}if(e>=c){e-=c}k%=c;return e|(k<<16)}while(g>=d){g-=d;h=d>>4;do{e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e}while(--h);e%=c;k%=c}if(g){while(g>=16){g-=16;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e}while(g--){e+=f.charCodeAt(j++)&255;k+=e}e%=c;k%=c}return e|(k<<16)}function a(e,f,j,g){var k;var h;k=(e>>>16)&65535;e&=65535;if(g==1){e+=f[j];if(e>=c){e-=c}k+=e;if(k>=c){k-=c}return e|(k<<16)}if(f===null){return 1}if(g<16){while(g--){e+=f[j++];k+=e}if(e>=c){e-=c}k%=c;return e|(k<<16)}while(g>=d){g-=d;h=d>>4;do{e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e}while(--h);e%=c;k%=c}if(g){while(g>=16){g-=16;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e}while(g--){e+=f[j++];k+=e}e%=c;k%=c}return e|(k<<16)}ZLIB.adler32=function(e,f,h,g){if(typeof f==="string"){return b(e,f,h,g)}else{return a(e,f,h,g)}};ZLIB.adler32_combine=function(e,f,g){var j;var k;var h;if(g<0){return 4294967295}g%=c;h=g;j=e&65535;k=h*j;k%=c;j+=(f&65535)+c-1;k+=((e>>16)&65535)+((f>>16)&65535)+c-h;if(j>=c){j-=c}if(j>=c){j-=c}if(k>=(c<<1)){k-=(c<<1)}if(k>=c){k-=c}return j|(k<<16)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-crc32.js")}(function(){var a=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];function c(h,g,k,j){if(g==null){return 0}h=h^4294967295;while(j>=8){h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);j-=8}if(j){do{h=a[(h^g.charCodeAt(k++))&255]^(h>>>8)}while(--j)}return h^4294967295}function b(h,g,k,j){if(g==null){return 0}h=h^4294967295;while(j>=8){h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);j-=8}if(j){do{h=a[(h^g[k++])&255]^(h>>>8)}while(--j)}return h^4294967295}ZLIB.crc32=function(h,g,k,j){if(typeof g==="string"){return c(h,g,k,j)}else{return b(h,g,k,j)}};var d=32;function f(g,k){var j;var h=0;j=0;while(k){if(k&1){j^=g[h]}k>>=1;h++}return j}function e(j,g){var h;for(h=0;h<d;h++){j[h]=f(g,g[h])}}ZLIB.crc32_combine=function(g,h,k){var l;var o;var j;var m;if(k<=0){return g}j=new Array(d);m=new Array(d);m[0]=3988292384;o=1;for(l=1;l<d;l++){m[l]=o;o<<=1}e(j,m);e(m,j);do{e(j,m);if(k&1){g=f(j,g)}k>>=1;if(k==0){break}e(m,j);if(k&1){g=f(m,g)}k>>=1}while(k!=0);g^=h;return g}}());var debugLevel=parseInt("{{{debuglevel}}}");var features=parseInt("{{{features}}}");var meshserver=null;var xdr=null;var serverinfo=null;var nodes=[];var filetree={};var userinfo=null;var serverinfo=null;var users=null;var nodeShortIdent=0;var serverPublicNamePort="{{{serverDnsName}}}:{{{serverPublicPort}}}";var debugmode=false;var attemptWebRTC=((features&128)!=0);var StatusStrs=["Disconnected","Connecting...","Setup...","Connected","Intel® AMT Connected"];var files;function startup(){if((features&32)==0){var b=null;try{b=top.location.toString().toLowerCase()}catch(a){}if(top!=self&&(b==null||top.active==false)){top.location=self.location;return}}window.onresize=center;center();QH("p1message","Connecting...");go(1);meshserver=MeshServerCreateControl("{{{domainurl}}}");meshserver.onStateChanged=onStateChanged;meshserver.onMessage=onMessage;meshserver.Start();var c=localStorage.getItem("desktopsettings");if(c!=null){desktopsettings=JSON.parse(c)}applyDesktopSettings()}function onStateChanged(a,b){if(b==0){setDialogMode(0);go(0);setTimeout(serverPoll,5000)}else{if(b==2){meshserver.send({action:"meshes"});meshserver.send({action:"nodes"});meshserver.send({action:"files"});if(xxcurrentView<2){go(2)}}}}function serverPoll(){xdr=null;try{xdr=new XDomainRequest()}catch(a){}if(!xdr){xdr=new XMLHttpRequest()}xdr.open("HEAD",window.location.href);xdr.timeout=15000;xdr.onload=function(){reload()};xdr.onerror=xdr.ontimeout=function(){setTimeout(serverPoll,10000)};xdr.send()}function onMessage(h,d){switch(d.action){case"serverinfo":serverinfo=d.serverinfo;break;case"userinfo":userinfo=d.userinfo;QH("p3userName",userinfo.name);break;case"users":users={};for(var c in d.users){users[d.users[c]._id]=d.users[c]}updateUsers();break;case"wssessioncount":wssessions=d.wssessions;updateUsers();break;case"meshes":meshes={};for(var c in d.meshes){meshes[d.meshes[c]._id]=d.meshes[c]}updateMeshes();updateDevices();break;case"files":filetree=setupBackPointers(d.filetree);updateFiles();break;case"nodes":nodes=[];for(var c in d.nodes){for(var e in d.nodes[c]){if(!meshes[c]){console.log("Invalid mesh (1): "+c);continue}d.nodes[c][e].namel=d.nodes[c][e].name.toLowerCase();if(d.nodes[c][e].rname){d.nodes[c][e].rnamel=d.nodes[c][e].rname.toLowerCase()}else{d.nodes[c][e].rnamel=d.nodes[c][e].namel}d.nodes[c][e].meshnamel=meshes[c].name.toLowerCase();d.nodes[c][e].meshid=c;d.nodes[c][e].state=(d.nodes[c][e].state)?(d.nodes[c][e].state):0;d.nodes[c][e].desc=d.nodes[c][e].desc;if(!d.nodes[c][e].icon){d.nodes[c][e].icon=1}d.nodes[c][e].ident=++nodeShortIdent;nodes.push(d.nodes[c][e])}}updateDevices();if(xxcurrentView==0){if("{{viewmode}}"!=""){go(parseInt("{{viewmode}}"))}else{setDialogMode(0);go(1)}}if("{{currentNode}}"!=""){gotoDevice("{{currentNode}}",parseInt("{{viewmode}}"))}break;case"powertimeline":if(d.nodeid!=powerTimelineReq){break}powerTimelineNode=d.nodeid;powerTimeline=d.timeline;powerTimelineUpdate=Date.now()+300000;if(currentNode._id==d.nodeid){drawDeviceTimeline()}break;case"event":switch(d.event.action){case"createmesh":if(d.event.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]!=null){meshes[d.event.meshid]={_id:d.event.meshid,name:d.event.name,mtype:d.event.mtype,desc:d.event.desc,links:d.event.links};updateMeshes();updateDevices();meshserver.send({action:"files"})}break;case"meshchange":if(meshes[d.event.meshid]==null){meshes[d.event.meshid]={_id:d.event.meshid,name:d.event.name,mtype:d.event.mtype,desc:d.event.desc,links:d.event.links};meshserver.send({action:"nodes"})}else{meshes[d.event.meshid].name=d.event.name;meshes[d.event.meshid].desc=d.event.desc;meshes[d.event.meshid].links=d.event.links;if(meshes[d.event.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]==null){if((xxcurrentView==20)&&(currentMesh==meshes[d.event.meshid])){go(2)}delete meshes[d.event.meshid];var f=[];for(var a in nodes){if(nodes[a].meshid!=d.event.meshid){f.push(nodes[a])}}nodes=f;if(xxcurrentView>=10&&xxcurrentView<20&¤tNode&¤tNode.meshid==d.event.meshid){setDialogMode(0);go(1)}}}updateMeshes();updateDevices();meshserver.send({action:"files"});if(xxcurrentView==20&¤tMesh._id==d.event.meshid){p20updateMesh()}break;case"deletemesh":if(meshes[d.event.meshid]){delete meshes[d.event.meshid];updateMeshes();meshserver.send({action:"files"})}var f=[];for(var a in nodes){if(nodes[a].meshid!=d.event.meshid){f.push(nodes[a])}}nodes=f;updateDevices();if(xxcurrentView>=20&&xxcurrentView<30&¤tMesh._id==d.event.meshid){setDialogMode(0);go(2)}if(xxcurrentView>=10&&xxcurrentView<20&¤tNode&¤tNode.meshid==d.event.meshid){setDialogMode(0);go(1)}break;case"addnode":var g=d.event.node;if(!meshes[g.meshid]){break}g.namel=g.name.toLowerCase();if(g.rname){g.rnamel=g.rname.toLowerCase()}else{g.rnamel=g.namel}g.meshnamel=meshes[g.meshid].name.toLowerCase();g.state=0;if(!g.icon){g.icon=1}g.ident=++nodeShortIdent;nodes.push(g);updateDevices();break;case"removenode":var b=-1;for(var a in nodes){if(nodes[a]._id==d.event.nodeid){b=a;break}}if(b!=-1){var g=nodes[b];if(currentNode==g){if(xxcurrentView>=10&&xxcurrentView<20){setDialogMode(0);go(1)}delete currentNode}nodes.splice(b,1);updateDevices();updateMapMarkers()}break;case"changenode":var b=-1;for(var a in nodes){if(nodes[a]._id==d.event.nodeid){b=a;break}}if(b!=-1){var g=nodes[b];g.name=d.event.node.name;g.rname=d.event.node.rname;g.host=d.event.node.host;g.desc=d.event.node.desc;g.publicip=d.event.node.publicip;g.iploc=d.event.node.iploc;g.wifiloc=d.event.node.wifiloc;g.gpsloc=d.event.node.gpsloc;g.tags=d.event.node.tags;g.userloc=d.event.node.userloc;if(d.event.node.agent!=null){if(g.agent==null){g.agent={}}if(d.event.node.agent.ver!=null){g.agent.ver=d.event.node.agent.ver}if(d.event.node.agent.id!=null){g.agent.id=d.event.node.agent.id}if(d.event.node.agent.caps!=null){g.agent.caps=d.event.node.agent.caps}if(d.event.node.agent.core!=null){g.agent.core=d.event.node.agent.core}else{if(g.agent.core){delete g.agent.core}}g.agent.tag=d.event.node.agent.tag}if(d.event.node.intelamt!=null){if(g.intelamt==null){g.intelamt={}}if(d.event.node.intelamt.host!=null){g.intelamt.user=d.event.node.intelamt.host}if(d.event.node.intelamt.user!=null){g.intelamt.user=d.event.node.intelamt.user}if(d.event.node.intelamt.tls!=null){g.intelamt.tls=d.event.node.intelamt.tls}if(d.event.node.intelamt.ver!=null){g.intelamt.ver=d.event.node.intelamt.ver}if(d.event.node.intelamt.state!=null){g.intelamt.state=d.event.node.intelamt.state}}g.namel=g.name.toLowerCase();if(g.rname){g.rnamel=g.rname.toLowerCase()}else{g.rnamel=g.namel}if(d.event.node.icon){g.icon=d.event.node.icon}refreshDevice(g._id);updateDevices()}break;case"nodeconnect":var b=-1;for(var a in nodes){if(nodes[a]._id==d.event.nodeid){b=a;break}}if(b!=-1){var g=nodes[b];g.conn=d.event.conn;g.pwr=d.event.pwr;updateDevices()}break;case"clearevents":break;case"login":if(users!=null&&users["user/{{{domain}}}/"+d.event.username.toLowerCase()]){users["user/{{{domain}}}/"+d.event.username.toLowerCase()].login=d.event.time}break;case"notify":break}break}}function topMenu(a){if((xxdialogMode!=null)&&(xxdialogMode!=0)&&(xxdialogMode!=999)){return}if(a===undefined){var b=(QS("topMenu").display=="none");if(b==true){if((xxdialogMode==0)||(xxdialogMode==null)){QV("topMenu",true);xxdialogMode=999}}else{QV("topMenu",false);xxdialogMode=0}}else{QV("topMenu",false);xxdialogMode=0;if((a==1)&&(xxcurrentView!=3)){goForward("account")}if((a==2)&&(xxcurrentView!=5)){goForward("files")}}}var backStack=[];function goBack(){if(xxdialogMode){return}if(backStack.length>0){backStack.pop()}goStack()}function goForward(a){if(xxdialogMode){return}backStack.push(a);goStack()}function goStack(){if(backStack.length==0){go(2);return}var a=backStack[backStack.length-1],b=a.split("/")[0];if(b=="node"){setupDeviceMenu(0);gotoDevice(a)}if(b=="mesh"){gotoMesh(a)}if(b=="account"){go(3)}if(b=="devices"){go(2)}if(b=="files"){go(5)}}function updateFooterMenu(b){while(b!=null&&b.length<3){b.push({n:""})}var d="",c="";if(b!=null){for(var a in b){d+='<td style="cursor:pointer'+((c=="")?"":";border-left:solid 1px white")+'" onclick="'+b[a].f+'">'+b[a].n;c=b[a].n}}QH("footerMenu","<tr>"+d)}function account_showVerifyEmail(){if(xxdialogMode||(userinfo.emailVerified==true)||(serverinfo.emailcheck!=true)){return}var a="Click ok to send a verification mail to:<br /><div style=padding:8px><b>"+EscapeHtml(userinfo.email)+"</b></div>Please wait a few minute to receive the verification.";setDialogMode(2,"Email Verification",3,account_showVerifyEmailEx,a)}function account_showVerifyEmailEx(){meshserver.send({action:"verifyemail",email:userinfo.email})}function account_showChangeEmail(){if(xxdialogMode){return}var a=addHtmlValue("Email","<input id=dp3email style=width:170px maxlength=256 onchange=account_validateEmail() onkeyup=account_validateEmail(event) />");setDialogMode(2,"Email Address Change",3,account_changeEmail,a);if(userinfo.email!=null){Q("dp3email").value=userinfo.email}account_validateEmail();Q("dp3email").focus()}function account_validateEmail(a,b){QE("idx_dlgOkButton",validateEmail(Q("dp3email").value)&&(Q("dp3email").value!=userinfo.email));if((x==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function account_changeEmail(){meshserver.send({action:"changeemail",email:Q("dp3email").value})}function account_showDeleteAccount(){if(xxdialogMode){return}var a="<form action='{{{domainurl}}}deleteaccount' method=post><table style=margin-left:10px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr></table><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Delete Account",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_showChangePassword(){if(xxdialogMode){return}var a="<form action='{{{domainurl}}}changepassword' method=post><table style=margin-left:10px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /> <b><span id=dxPassWarn></span></b></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /></td>";a+="</tr><tr><td align=right>Hint:</td><td><input id=apasswordhint name=apasswordhint maxlength=250 type=text autocomplete=off /></td>";a+="</tr></table><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Change Password",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_createMesh(){if(xxdialogMode){return}var a=addHtmlValue("Name","<input id=dp3meshname style=width:170px maxlength=64 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate() />");a+=addHtmlValue("Type","<div style=width:170px;margin:0;padding:0><select id=dp3meshtype style=width:100% onchange=account_validateMeshCreate() ><option value=2>Mesh Agent Policy</option><option value=1>Intel® AMT Agent-less Policy</option></select></div>");a+=addHtmlValue("Description","<div style=width:170px;margin:0;padding:0><textarea id=dp3meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>");setDialogMode(2,"Create Mesh",3,account_createMeshEx,a);account_validateMeshCreate();Q("dp3meshname").focus()}function account_validateMeshCreate(){QE("idx_dlgOkButton",Q("dp3meshname").value.length>0)}function account_createMeshEx(a,b){meshserver.send({action:"createmesh",meshname:Q("dp3meshname").value,meshtype:Q("dp3meshtype").value,desc:Q("dp3meshdesc").value})}function account_validateDeleteAccount(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value))}function account_validateNewPassword(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value));var b="";if(Q("apassword1").value!=""){var a=checkPasswordStrength(Q("apassword1").value);if(a>=80){b="<span style=color:green>Strong<span>"}else{if(a>=60){b="<span style=color:blue>Good<span>"}else{b="<span style=color:red>Weak<span>"}}}QH("dxPassWarn",b)}function checkPasswordStrength(e){var f=0,d={},g=0,h={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e){return 0}for(var b=0;b<e.length;b++){d[e[b]]=(d[e[b]]||0)+1;f+=5/d[e[b]]}for(var a in h){g+=(h[a]==true)?1:0}return parseInt(f+(g-1)*10)}function updateMeshes(){var c="",a=0;for(i in meshes){a++;var b=meshes[i].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var d="Partial Rights";if(b==4294967295){d="Full Administrator"}else{if(b==0){d="No Rights"}}c+="<div style=cursor:pointer onclick=goForward('"+i+"')>";c+='<div style="float:left;margin-left:4px"><img src="/images/meshicon50.png" width=50 height=50 /></div>';c+='<div style="width:auto;height:40px;background-color:lightgray;margin-top:5px;margin-bottom:5px;margin-left:60px;padding-top:5px;padding-bottom:5px;border-radius:8px 0px 0px 8px">';c+="<div><div style=padding-left:12px;padding-top:2px><b>"+EscapeHtml(meshes[i].name)+"</b></div><div style=padding-left:12px;padding-top:3px;color:gray>"+d+"</div></div>";c+="</div></div>"}meshcount=a;QH("p3meshes",c);QV("p3noMeshFound",a==0)}function gotoMesh(a){currentMesh=meshes[a];if(currentMesh==null){goBack()}p20updateMesh();go(20)}function server_showRestoreDlg(){if(xxdialogMode){return}var a="Restore the server using a backup, <span style=color:red>this will delete the existing server data</span>. Only do this if you know what you are doing.<br /><br />";a+='<form action="/restoreserver.ashx" enctype="multipart/form-data" method="post"><div>';a+='<input id=account_dlgFileInput type=file name=datafile style=width:100% accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()>';a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+="<input id=account_dlgOkButton type=submit value=OK style=float:right;width:80px onclick=dialogclose(1)>";a+="</div><br /><br /></form>";setDialogMode(2,"Restore Server",0,null,a);account_validateServerRestore()}function account_validateServerRestore(){QE("account_dlgOkButton",Q("account_dlgFileInput").files.length==1)}function server_showVersionDlg(){if(xxdialogMode){return}setDialogMode(2,"MeshCentral Version",1,null,"Loading...","MeshCentralServerUpdate");meshserver.send({action:"serverversion"})}function server_showVersionDlgUpdate(){QE("idx_dlgOkButton",Q("d2updateCheck").checked)}function server_showVersionDlgEx(){meshserver.send({action:"serverupdate"})}var filetreelinkpath;var filetreelocation=[];function p5refreshFiles(){meshserver.send({action:"files"})}function updateFiles(){QV("MainMenuMyFiles",((features&8)==0));if((features&8)!=0){return}var o="",p="",c="<a style=cursor:pointer onclick=p5folderup(0)>Root</a>",m="Root",w,g=filetree,k=1;var e=[],t=filetreelinkpath,b=[],a=document.getElementsByName("fc");for(var q=0;q<a.length;q++){if(a[q].checked){b.push(a[q].value)}}filetreelinkpath="";for(var q in filetreelocation){if((g.f!=null)&&(g.f[filetreelocation[q]]!=null)){e.push(filetreelocation[q]);m+=" / "+filetreelocation[q];if((k==1)){var A=filetreelocation[q].split("/");w=window.location+A[0]+"files/"+A[2];filetreelinkpath+=filetreelocation[q]}else{if(filetreelinkpath!=""){filetreelinkpath+="/"+filetreelocation[q];if(k>2){w+="/"+filetreelocation[q]}}}g=g.f[filetreelocation[q]];c+=" / <a style=cursor:pointer onclick=p5folderup("+k+")>"+(g.n!=null?g.n:filetreelocation[q])+"</a>";k++}else{break}}filetreelocation=e;var u=m.toLowerCase().startsWith("root / "+userinfo._id+" / public");var j=p5sort_files(g.f);for(var q in j){var d=j[q],s=d.n,z;z=s;if(s.length>40){z='<span title="'+EscapeHtml(s)+'">'+EscapeHtml(s.substring(0,40))+"...</span>"}else{z=EscapeHtml(s)}s=EscapeHtml(s);var l="";if(d.s!=null){l=getFileSizeStr(d.s)}var n="";if(d.t<3||d.t==4){var y=(d.t==1||d.t==4)?p5getQuotabar(d):"",B="";n="<div class=filelist file=999><input file=999 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+s+"'> <span style=float:right;padding-right:4px title=\""+B+'">'+y+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p5folderset("'+encodeURIComponent(d.nx)+'")>'+z+"</a></span></div>"}else{var r=z;var v="";if(u){v=' (<a style=cursor:pointer title="Display public link" onclick=\'p5showPublicLink("'+w+"/"+d.nx+"\")'>Link</a>)"}if(d.s>0){r='<a target="_blank" href="downloadfile.ashx?link='+encodeURIComponent(filetreelinkpath+"/"+d.nx)+'">'+z+"</a>"+v}n="<div class=filelist file=3><input file=3 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+d.nx+"'> <span style=float:right;padding-right:4px>"+l+"</span><span><div class=fileIcon"+d.t+"></div>"+r+"</span></div>"}if(d.t<3){o+=n}else{p+=n}}QH("p5rightOfButtons",p5getQuotabar(g));QH("p5files",o+p);QH("p5currentpath",c);QE("p5FolderUp",filetreelocation.length!=0);QV("p5PublicShare",u);if(t==filetreelinkpath){a=document.getElementsByName("fc");for(var q=0;q<a.length;q++){a[q].checked=(b.indexOf(a[q].value)>=0)}}p5setActions()}function p5getQuotabar(a){while(a.t>1&&a.t!=4){a=a.parent}if((a.t!=1&&a.t!=4)||(a.maxbytes==null)){return""}var b=Math.floor(a.s/1024),c=Math.floor((a.maxbytes-a.s)/1024);return'<span title="'+b+"k in "+a.c+" file"+(a.c>1?"s":"")+". "+(Math.floor(a.maxbytes/1024))+'k maxinum">'+((c<0)?("Storage limit exceed"):(c+"k remaining"))+" <progress style=height:10px;width:100px value="+a.s+" max="+a.maxbytes+" /></span>"}function p5showPublicLink(a){setDialogMode(2,"Public Link",1,null,'<input type=text style=width:100% value="'+a+'" readonly />')}var sortorder;function p5sort_filename(c,d){if(c.ln>d.ln){return(1*sortorder)}if(c.ln<d.ln){return(-1*sortorder)}return 0}function p5sort_timestamp(c,d){if(c.d>d.d){return(1*sortorder)}if(c.d<d.d){return(-1*sortorder)}return 0}function p5sort_bysize(c,d){if(c.s==d.s){return p5sort_filename(c,d)}return(((c.s-d.s))*sortorder)}function p5sort_files(a){var c=[],d=Q("p5sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}sortorder=1;if(d>3){sortorder=-1;d-=3}if(d==1){c.sort(p5sort_filename)}else{if(d==2){c.sort(p5sort_bysize)}else{if(d==3){c.sort(p5sort_timestamp)}}}return c}function p5setActions(){var a=getFileSelCount(),c=getFileCount(),b=getFileSelCount(false);QE("p5DeleteFileButton",(a>0)&&(filetreelocation.length>0));QE("p5NewFolderButton",filetreelocation.length>0);QE("p5UploadButton",filetreelocation.length>0);QE("p5RenameFileButton",(a==1)&&(filetreelocation.length>0));QE("p5SelectAllButton",c>0);Q("p5SelectAllButton").value=(a>0?"None":"All");QE("p5CutButton",(b>0)&&(a==b));QE("p5CopyButton",(b>0)&&(a==b));QE("p5PasteButton",(p5clipboard!=null)&&(p5clipboard.length>0)&&(filetreelocation.length>0))}function getFileSelCount(d){var a=0;var b=document.getElementsByName("fc");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function getFileCount(){var a=0;var b=document.getElementsByName("fc");return b.length}function p5selectallfile(){var c=(getFileSelCount()==0),a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){a[b].checked=c}p5setActions()}function setupBackPointers(d){if(d.f!=null){var b=0,a=0;for(var c in d.f){setupBackPointers(d.f[c]);d.f[c].parent=d;if(d.f[c].s){b+=d.f[c].s}if(d.f[c].c){a+=d.f[c].c}if(d.f[c].t==3){a++}}d.s=b;d.c=a}return d}function getFileSizeStr(a){if(a==1){return"1 byte"}return""+a+" bytes"}function p5folderup(a){if(a==null){filetreelocation.pop()}else{while(filetreelocation.length>a){filetreelocation.pop()}}updateFiles()}function p5folderset(a){filetreelocation.push(decodeURIComponent(a));updateFiles()}function p5createfolder(){setDialogMode(2,"New Folder",3,p5createfolderEx,"<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% />");focusTextBox("p5renameinput");p5fileNameCheck()}function p5createfolderEx(){meshserver.send({action:"fileoperation",fileop:"createfolder",path:filetreelocation,newfolder:Q("p5renameinput").value})}function p5deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p5deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p5deletefileEx(){var b=[],a=document.getElementsByName("fc");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(a[c].value)}}meshserver.send({action:"fileoperation",fileop:"delete",path:filetreelocation,delfiles:b})}function p5renamefile(){var c,a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){if(a[b].checked){c=a[b].value}}setDialogMode(2,"Rename",3,p5renamefileEx,'<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"fileoperation",fileop:"rename",path:filetreelocation,oldname:c});focusTextBox("p5renameinput");p5fileNameCheck()}function p5renamefileEx(a,c){c.newname=Q("p5renameinput").value;meshserver.send(c)}function p5fileNameCheck(a){var b=isFilenameValid(Q("p5renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a.keyCode==13)){dialogclose(1)}}var isFilenameValid=(function(){var b=/^[^\\/:\*\?"<>\|]+$/,c=/^\./,d=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function a(e){return b.test(e)&&!c.test(e)&&!d.test(e)&&(e[0]!=".")}})();function p5uploadFile(){setDialogMode(2,"Upload File",3,p5uploadFileEx,'<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="'+encodeURIComponent(filetreelinkpath)+'" /><input type=file name=files id=p5uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p5uploadinput\')" /><input type=submit id=p5loginSubmit style=display:none /></form>');updateUploadDialogOk("p5uploadinput")}function p5uploadFileEx(){Q("p5loginSubmit").click()}function updateUploadDialogOk(a){QE("idx_dlgOkButton",Q(a).value!="")}var p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;function p5copyFile(b){var a=document.getElementsByName("fc");p5clipboard=[];p5clipboardCut=b,p5clipboardFolder=Clone(filetreelocation);for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p5clipboard.push(a[c].value)}}p5updateClipview()}function p5pasteFile(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Confim "+(p5clipboardCut==0?"copy":"move")+" of "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p5pasteFileEx,a)}function p5pasteFileEx(){meshserver.send({action:"fileoperation",fileop:(p5clipboardCut==0?"copy":"move"),scpath:p5clipboardFolder,path:filetreelocation,names:p5clipboard});p5folderup(999);if(p5clipboardCut==1){p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;p5updateClipview()}}function p5updateClipview(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Holding "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" for "+(p5clipboardCut==0?"copy":"move")+", <a onclick=p5clearClip() style=cursor:pointer>Clear</a>."}QH("p5bottomstatus",a);p5setActions()}function p5clearClip(){p5clipboard=null;p5clipboardFolder=null;p5clipboardCut=0;p5updateClipview()}function p5fileDragDrop(b){haltEvent(b);QV("bigfail",false);QV("bigok",false);if(b.dataTransfer==null||b.dataTransfer.files.length==0||filetreelocation.length==0){return}var f=[],j=[],k=[],a=[],h=b.dataTransfer.files.length;for(var d=0;d<b.dataTransfer.files.length;d++){var g=new FileReader(),c=b.dataTransfer.files[d];f.push(c.name);j.push(c.size);k.push(c.type);g.onload=function(e){a.push(e.target.result);if(--h==0){Q("p5fileDragName").value=f.join("*");Q("p5fileDragSize").value=j.join("*");Q("p5fileDragType").value=k.join("*");Q("p5fileDragData").value=a.join("*");Q("p5fileDragLink").value=encodeURIComponent(filetreelinkpath);Q("p5loginSubmit2").click()}};g.readAsDataURL(c)}}var p5dragtimer=null;function p5fileDragOver(b){haltEvent(b);if(p5dragtimer!=null){clearTimeout(p5dragtimer);p5dragtimer=null}var a=true;if(filetreelocation.length==0){a=false}QV("bigok",a);QV("bigfail",!a)}function p5fileDragLeave(a){haltEvent(a);if(a.target.id!="p5filetable"){QV("bigfail",false);QV("bigok",false)}else{p5dragtimer=setTimeout("QV('bigfail',false);QV('bigok',false);p5dragtimer=null;",200)}}var updateDevicesTimer=null;function updateDevices(){if(updateDevicesTimer!=null){return}updateDevicesTimer=setTimeout(updateDevicesEx,200)}var sort=0;var deviceHeaderId=0;var deviceHeaderCount;var deviceHeaders={};var showRealNames=false;var deviceHeaderTotal=0;var deviceHeaders={};var deviceHeadersTitles={};function updateDevicesEx(){var t="",a=0,d=null,b=0,e={},h={},g={};deviceHeaderId=0;deviceHeaderCount={};deviceHeaderTotal=0;deviceHeaders={};deviceHeadersTitles={};var d;if(sort==0){nodes.sort(meshSort)}else{if(sort==1){nodes.sort(powerSort)}else{if(sort==2){if(showRealNames==true){nodes.sort(deviceHostSort)}else{nodes.sort(deviceSort)}}}}for(var j in nodes){if(nodes[j].v==false){continue}var m=meshes[nodes[j].meshid],o=m.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(o==null){continue}var p=o.rights;if(sort==0){nodes.sort(meshSort);if(nodes[j].meshid!=d){deviceHeaderSet();var f="";if(meshes[nodes[j].meshid].mtype==1){f="<span style=color:lightgray>, Intel® AMT only</span>"}if(d!=null){if(a==2){t+="<td><div style=width:301px></div></td>"}if(t!=""){t+="</tr></table>"}}t+="<div class=DevSt style=padding-top:4px><span style=float:right>";t+='</span><span id=MxMESH style=cursor:pointer onclick=goForward("'+nodes[j].meshid+'")>'+EscapeHtml(meshes[nodes[j].meshid].name)+"</span>"+f+"<span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>";d=nodes[j].meshid;e[d]=1;a=0}}else{if(sort==1){if(nodes[j].pwr!==d){deviceHeaderSet();if(d!==null){if(a==2){t+="<td><div style=width:301px></div></td>"}if(t!=""){t+="</tr></table>"}}t+="<div class=DevSt style=width:100%;padding-top:4px><span>"+PowerStateStr2(nodes[j].pwr)+"</span><span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>";d=nodes[j].pwr;a=0}}else{if(sort==2){if(d==null){d="1"}}}}b++;var u=EscapeHtml(nodes[j].name);if(u.length==0){u="<i>None</i>"}if((nodes[j].rname!=null)&&(nodes[j].rname.length>0)){u+=" / "+EscapeHtml(nodes[j].rname)}var q=EscapeHtml(nodes[j].name);if(showRealNames==true&&nodes[j].rname!=null){q=EscapeHtml(nodes[j].rname)}if(q.length==0){q="<i>None</i>"}var k=nodes[j].icon,s=NodeStateStr(nodes[j]);if((!nodes[j].conn)||(nodes[j].conn==0)){k+=" gray"}t+="<div style=cursor:pointer onclick=goForward('"+nodes[j]._id+"')>";t+='<div class="i'+k+'" style="float:left;margin-left:4px"></div>';t+='<div style="width:auto;height:40px;background-color:lightgray;margin-top:5px;margin-bottom:5px;margin-left:60px;padding-top:5px;padding-bottom:5px;border-radius:8px 0px 0px 8px">';t+="<div><div style=padding-left:12px;padding-top:2px><b>"+q+"</b></div><div style=padding-left:12px;padding-top:3px;color:gray>"+s+"</div></div>";t+="</div></div>";deviceHeaderTotal++;if(typeof deviceHeaderCount[nodes[j].state]=="undefined"){deviceHeaderCount[nodes[j].state]=1}else{deviceHeaderCount[nodes[j].state]++}}if(sort==0){for(var j in meshes){var l=meshes[j],n=l.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(n!=null){var p=n.rights;if(e[l._id]==null){if((d!="")&&(t!="")){t+="</tr></table>"}t+="<div><div colspan=3 class=DevSt><span style=float:right>";t+='</span><span id=MxMESH style=cursor:pointer onclick=goForward("'+l._id+'")>'+EscapeHtml(l.name)+"</span></div>";if(l.mtype==1){t+="<div style=padding:10px><i>No Intel® AMT devices in this mesh"}if(l.mtype==2){t+="<div style=padding:10px><i>No devices in this mesh"}t+=".</i></div></div>";d=l._id;b++}}}}QH("xdevices",t);deviceHeaderSet();for(var j in deviceHeaders){QH(j,deviceHeaders[j])}for(var j in deviceHeadersTitles){Q(j).title=deviceHeadersTitles[j]}}var powerStatetable=["","Powered","Sleep","Sleep","Sleep","Hibernating","Power off","Present"];var powerStateStrings=["",'<span title="Device is powered on.">Powered</span>','<span title="Device is in sleep state (S1).">Sleeping</span>','<span title="Device is in sleep state (S2).">Sleeping</span>','<span title="Device is in deep sleep state (S3).">Deep Sleep</span>','<span title="Device is in hibernating state (S4).">Hibernating</span>','<span title="Device is in powered off state (S5).">Soft-Off</span>','<span title="Device is detected but power state could not be obtained.">Present</span>'];var powerStateStrings2=["","Device is powered","Device is in sleep state (S1)","Device is in sleep state (S2)","Device is in deep sleep state (S3)","Device is hibernating (S4)","Device is in soft-off state (S5)","Device is present, but power state cannot be determined"];var powerColorTable=["#00000000","black","blue","blue","lightblue","blueviolet","darkgreen","lightseagreen","lightseagreen"];function NodeStateStr(a){var b=[];if(a.state>0&&a.state<powerStatetable.length){state.push(powerStatetable[a.state])}if(a.conn){if((a.conn&1)!=0){b.push('<span title="Mesh agent is connected and ready for use.">Agent</span>')}if((a.conn&2)!=0){b.push('<span title="Intel® AMT CIRA is connected and ready for use.">CIRA</span>')}if((a.conn&4)!=0){b.push('<span title="Intel® AMT is routable.">Intel® AMT</span>')}if((a.conn&8)!=0){b.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>')}}if((a.pwr!=null)&&(a.pwr!=0)){b.push(powerStateStrings[a.pwr])}return b.join(", ")}function PowerStateStr(a){if(a<powerStatetable.length){return powerStatetable[a]}return""}function PowerStateStr2(a){if((a!=0)&&(a<powerStatetable.length)){return powerStatetable[a]}return"Unknown"}function onSortSelectChange(a){sort=document.getElementById("sortselect").selectedIndex;if(!a){putstore("sort",sort)}updateDevicesEx()}function deviceHeaderSet(){if(deviceHeaderId==0){deviceHeaderId=1;return}deviceHeaders["DevxHeader"+deviceHeaderId]=", "+deviceHeaderTotal+((deviceHeaderTotal==1)?" node":" nodes");var a="";for(x in deviceHeaderCount){if(a.length>0){a+=", "}a+=deviceHeaderCount[x]+" "+PowerStateStr2(x)}deviceHeadersTitles["DevxHeader"+deviceHeaderId]=a;deviceHeaderId++;deviceHeaderCount={};deviceHeaderTotal=0}function meshSort(c,d){if(c.meshnamel>d.meshnamel){return 1}if(c.meshnamel<d.meshnamel){return -1}if(c.meshid==d.meshid){if(showRealNames==true){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}else{if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}}return 0}function powerSort(c,e){var d=c.pwr?c.pwr:0;var f=e.pwr?e.pwr:0;if(d==f){if(showRealNames==true){if(c.rnamel>e.rnamel){return 1}if(c.rnamel<e.rnamel){return -1}return 0}else{if(c.namel>e.namel){return 1}if(c.namel<e.namel){return -1}return 0}}if(d>f){return 1}if(d<f){return -1}return 0}function deviceSort(c,d){if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}function deviceHostSort(c,d){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}function refreshDevice(a){if(!currentNode||currentNode._id!=a){return}gotoDevice(a,xxcurrentView,true)}function getNodeRights(c){var b=getNodeFromId(c),a=meshes[b.meshid];return a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights}var currentDevicePanel=0;var currentNode;var powerTimelineNode=null;var powerTimelineReq=null;var powerTimelineUpdate=null;var powerTimeline=null;function getCurrentNode(){return currentNode}function gotoDevice(l,m,o){var k=getNodeFromId(l);if(k==null){goBack()}var g=meshes[k.meshid];if(g==null){goBack()}var h=g.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(!currentNode||currentNode._id!=k._id||o==true){currentNode=k;var j=EscapeHtml(k.name);if(j.length==0){j="<i>None</i>"}if((h&4)!=0){j="<span onclick=showEditNodeValueDialog(0) style=cursor:pointer>"+j+"</span>"}QH("p10deviceName",j);var r="<table style=width:100%>";r+=addDeviceAttribute('<span title="The name of the administrative group this computer belong to">Mesh</span>','<a title="The name of the group this computer belong to" onclick=goForward("'+k.meshid+'") style=cursor:pointer>'+EscapeHtml(meshes[k.meshid].name)+"</a>");if(k.rname!=null){r+=addDeviceAttribute('<span title="The name of this computer as set in the operating system">Name</span>','<span title="The name of this computer as set in the operating system">'+EscapeHtml(k.rname)+"</span>")}if((g.mtype==1)||(k.name!=k.host)){if((h&4)!=0){if(k.host){r+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>"+EscapeHtml(k.host)+"</span>")}else{r+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer><i>None</i></span>")}}else{r+=addDeviceAttribute("Hostname",EscapeHtml(k.host))}}var d=k.desc?EscapeHtml(k.desc):"<i>None</i>";if((h&4)!=0){r+=addDeviceAttribute("Description","<span onclick=showEditNodeValueDialog(2) style=cursor:pointer>"+d+"</span>")}else{r+=addDeviceAttribute("Description",d)}var a=["Unknown","Windows 32bit console","Windows 64bit console","Windows 32bit service","Windows 64bit service","Linux 32bit","Linux 64bit","MIPS","XENx86","Android ARM","Linux ARM","OSX 32bit","Android x86","PogoPlug ARM","Android APK","Linux Poky x86-32bit","OSX 64bit","ChromeOS","Linux Poky x86-64bit","Linux NoKVM x86-32bit","Linux NoKVM x86-64bit","Windows MinCore console","Windows MinCore service","NodeJS","ARM-Linaro","ARMv6l / ARMv7l"];if((k.agent!=null)&&(k.agent.id!=null)&&(k.agent.ver!=null)){var p="";if(k.agent.id<=a.length){p=a[k.agent.id]}else{p=a[0]}if(k.agent.ver!=0){p+=" v"+k.agent.ver}r+=addDeviceAttribute("Mesh Agent",p)}if(k.intelamt!=null){var p="";var n={0:"Not Activated (Pre)",1:"Not Activated (In)",2:"Activated"};if(k.intelamt.ver!=null&&k.intelamt.state==null){p+="<i>Unknown State</i>, v"+k.intelamt.ver}else{if((k.intelamt.ver==null)&&(k.intelamt.state==2)){p+="<i>Activated</i>"}else{if((k.intelamt.ver==null)||(k.intelamt.state==null)){p+="<i>Unknown Version & State</i>"}else{p+=n[k.intelamt.state];if(k.intelamt.flags){if(k.intelamt.flags&2){p=' <span title="Intel AMT is activated in Client Control Mode">CCM</span>'}else{if(k.intelamt.flags&4){p=' <span title="Intel AMT is activated in Admin Control Mode">ACM</span>'}}}p+=(", v"+k.intelamt.ver)}}}if(k.intelamt.tls==1){p+=', <span title="Intel AMT is setup with TLS network security">TLS</span>'}if(k.intelamt.state==2){if(k.intelamt.user==null||k.intelamt.user==""){if((h&4)!=0){p+=', <i style=color:#FF0000;cursor:pointer title="Edit Intel® AMT credentials" onclick=editDeviceAmtSettings("'+k._id+'")>No Credentials</i>'}else{p+=", <i style=color:#FF0000>No Credentials</i>"}}p+=" ";if((h&4)!=0){p+='<img src=images/link4.png height=10 width=10 title="Edit Intel® AMT credentials" style=cursor:pointer onclick=editDeviceAmtSettings("'+k._id+'")>'}}r+=addDeviceAttribute("Intel® AMT",p)}if((k.agent!=null)&&(k.agent.tag!=null)&&(k.agent.tag!="mailto:")){var q=EscapeHtml(k.agent.tag);if(q.startsWith("mailto:")){q='<a href="'+q+'">'+q.substring(7)+"</a>"}r+=addDeviceAttribute("Agent Tag",q)}var b=k.conn;if(b&&b>1){var c=[];if((k.conn&1)!=0){c.push('<span title="Mesh agent is connected and ready for use.">Mesh Agent</span>')}if((k.conn&2)!=0){c.push('<span title="Intel® AMT CIRA is connected and ready for use.">Intel® AMT CIRA</span>')}if((k.conn&4)!=0){c.push('<span title="Intel® AMT is routable and ready for use.">Intel® AMT</span>')}if((k.conn&8)!=0){c.push('<span title="Mesh agent is reachable using another agent as relay.">Mesh Relay</span>')}r+=addDeviceAttribute("Connectivity",c.join(", "))}var e="<i>None</i>";if(k.tags!=null){e="";for(var f in k.tags){e+='<span style="background-color:lightgray;padding:3px;margin-right:4px;border-radius:5px">'+k.tags[f]+"</span>"}}r+=addDeviceAttribute("Groups","<span onclick=showEditNodeValueDialog(3) style=cursor:pointer>"+e+"</span>");r+="</table><br />";if((h&76)!=0){r+='<input type=button value=Actions title="Perform power actions on the device" onclick=deviceActionFunction() />'}QH("p10html",r);setupFiles();r="<div style=float:right;font-size:x-small;margin-right:10px>";if((h&4)!=0){r+='<a style=cursor:pointer onclick=p10showDeleteNodeDialog("'+k._id+'") title="Remove this device">Delete Device</a>'}r+="</div><div style=font-size:x-small>";r+="</div><br>";QH("p10html3",r);powerstate=PowerStateStr(k.state);if((b&1)!=0){if(powerstate.length>0){powerstate+=", "}powerstate+='<span style=font-size:10px title="Agent connected">Mesh Agent</span>'}if((b&2)!=0){if(powerstate.length>0){powerstate+=", "}powerstate+='<span style=font-size:10px title="Intel® AMT connected">Intel® AMT connected</span>'}else{if((b&4)!=0){if(powerstate.length>0){powerstate+=", "}powerstate+='<span style=font-size:10px title="Intel® AMT detected">Intel® AMT detected</span>'}}QH("MainComputerState",powerstate);QH("MainComputerImage",'<div class="i'+k.icon+'"></div>');if((powerTimelineNode!=currentNode._id)&&(powerTimelineReq!=currentNode._id)){QH("p10html2","");powerTimelineReq=currentNode._id;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}}setupDesktop();if(!m){m=10}go(m);setupDeviceMenu()}function deviceToastFunction(){if(xxdialogMode){return}setDialogMode(2,"Device Toast",3,deviceToastFunctionEx,"<textarea id=d2devToast style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>")}function deviceToastFunctionEx(){meshserver.send({action:"toast",nodeids:[currentNode._id],title:"MeshCentral",msg:Q("d2devToast").value})}function setupDeviceMenu(c,b){if(c!=null){currentDevicePanel=c}QV("p10general",currentDevicePanel==0);QV("p10desktop",currentDevicePanel==1);QV("p10files",currentDevicePanel==2);var a=[];if(currentDevicePanel!=0){a.push({n:"General",f:"setupDeviceMenu(0)"})}if(currentDevicePanel!=1){a.push({n:"Desktop",f:"setupDeviceMenu(1)"})}if((currentDevicePanel!=2)&&((currentNode!=null)&&(currentNode.mtype==2))){a.push({n:"Files",f:"setupDeviceMenu(2)"})}updateFooterMenu(a)}function deviceActionFunction(){if(xxdialogMode){return}var a=meshes[currentNode.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var b="Select an operation to perform on this device.<br /><br />";var c="<select id=d2deviceop style=float:right;width:170px>";if((a&64)!=0){c+="<option value=100>Wake-up</option>"}if((a&8)!=0){c+="<option value=4>Sleep</option><option value=3>Reset</option><option value=2>Power off</option>"}c+="</select>";b+=addHtmlValue("Operation",c);setDialogMode(2,"Device Action",3,deviceActionFunctionEx,b)}function deviceActionFunctionEx(){var a=Q("d2deviceop").value;if(a==100){meshserver.send({action:"wakedevices",nodeids:[currentNode._id]})}else{meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:a})}}function updateDeviceTimeline(){if((meshserver.State!=2)||(powerTimelineNode==null)||(powerTimelineUpdate==null)||(currentNode==null)){return}if((powerTimelineNode==powerTimelineReq)&&(currentNode._id==powerTimelineNode)&&(powerTimelineUpdate<Date.now())){powerTimelineUpdate=null;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}}function drawDeviceTimeline(){var r=null,n=Date.now();if(currentNode._id==powerTimelineNode){r=powerTimeline}var e=new Date();e.setHours(0,0,0,0);e=new Date(e.getTime()-(1000*60*60*24*6));var t=e.getTime();var s=[];if(r!=null&&r.length>1){s.push([0,r[1],r[0]]);var c=r[1];for(var l=2;l<r.length;l+=2){var o=r[l],h=n;if(r.length>(l+1)){h=r[l+1]}s.push([c,c+h,o]);c=c+h}}var z="",b=1,g=new Date();var v=Q("masthead").offsetWidth-(90+9+9+14);g.setHours(0,0,0,0);for(var l=0;l<7;l++){var f="",p=g.getTime(),k=p+(1000*60*60*24);for(var m in s){var a=s[m];if(isTimeBlockInside(p,k,a[0],a[1])==true){var w=Math.max(p,a[0]);var q=Math.min(Math.min(k,a[1]),n);var y=Math.round(((q-w)*v)/86400000);if(y>0){var u=powerStateStrings2[a[2]]+" from "+new Date(w).toLocaleTimeString()+" to "+new Date(q).toLocaleTimeString()+".";f+='<div title="'+u+'" style=display:table-cell;width:'+y+"px;background-color:"+powerColor(a[2])+";height:16px></div>"}}}z+="<tr style="+(((b%2)==0)?"background-color:#DDD":"")+"><td><div> "+g.toLocaleDateString()+"<div></div></div></td><td><div>"+f+"</div></td></tr>";++b;g=new Date(g.getTime()-(1000*60*60*24))}QH("p10html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse;width:calc(100% - 18px);margin:9px" border=0 cellpadding=2 cellspacing=0><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:90px>Day</th><th scope=col style=text-align:center>Power State</th></tr>'+z+"</tbody></table>")}function powerColor(a){if(a<powerColorTable.length){return powerColorTable[a]}return"yellow"}function isTimeBlockInside(d,c,b,a){if((b<d)&&(a>c)){return true}if((b>d)&&(b<c)){return true}if((a>d)&&(a<c)){return true}return false}function addDeviceAttribute(a,b){return"<tr><td style=width:100px;color:gray>"+a+"</td><td style=overflow:hidden>"+b+"</td></tr>"}function editDeviceAmtSettings(e,b){if(xxdialogMode){return}var f="",d=getNodeFromId(e),a=3,c=getNodeRights(e);if((c&4)==0){return}f+=addHtmlValue("Username",'<input id=dp10username style=width:170px maxlength=32 autocomplete=nope placeholder="admin" onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />');f+=addHtmlValue("Password","<input id=dp10password type=password style=width:170px autocomplete=nope maxlength=32 onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />");f+=addHtmlValue("Security","<select id=dp10tls style=width:176px><option value=0>No TLS security</option><option value=1>TLS security required</option></select>");if((d.intelamt.user!=null)&&(d.intelamt.user!="")){a=7}setDialogMode(2,"Edit Intel® AMT credentials",a,editDeviceAmtSettingsEx,f,{node:d,func:b});if((d.intelamt.user!=null)&&(d.intelamt.user!="")){Q("dp10username").value=d.intelamt.user}else{Q("dp10username").value="admin"}Q("dp10tls").value=d.intelamt.tls;validateDeviceAmtSettings()}function validateDeviceAmtSettings(){QE("idx_dlgOkButton",passwordcheck(Q("dp10password").value))}function editDeviceAmtSettingsEx(c,d){if(c==2){meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:"",pass:""}})}else{var b=Q("dp10username").value;if(b==""){b="admin"}var a=Q("dp10password").value;if(a==""){b=""}meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:b,pass:a,tls:Q("dp10tls").value}});d.node.intelamt.user=b;d.node.intelamt.tls=Q("dp10tls").value;if(d.func){setTimeout(d.func,300)}}}function p10showDeleteNodeDialog(a){if(xxdialogMode){return}setDialogMode(2,"Delete Node",3,p10showDeleteNodeDialogEx,'Delete "'+EscapeHtml(currentNode.name)+'"?<br /><br /><input id=p10check type=checkbox onchange=p10validateDeleteNodeDialog() />Confirm',a);p10validateDeleteNodeDialog()}function p10validateDeleteNodeDialog(){QE("idx_dlgOkButton",Q("p10check").checked)}function p10showDeleteNodeDialogEx(a,b){meshserver.send({action:"removedevices",nodeids:[b]})}function p10showiconselector(){if(xxdialogMode){return}var a=meshes[currentNode.meshid];var b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&4)==0){return}var c="<table align=center><td>";c+="<div style=display:inline-block class=i1 onclick=p10setIcon(1)></div>";c+="<div style=display:inline-block class=i2 onclick=p10setIcon(2)></div>";c+="<div style=display:inline-block class=i3 onclick=p10setIcon(3)></div><br>";c+="<div style=display:inline-block class=i4 onclick=p10setIcon(4)></div>";c+="<div style=display:inline-block class=i5 onclick=p10setIcon(5)></div>";c+="<div style=display:inline-block class=i6 onclick=p10setIcon(6)></div></table>";setDialogMode(2,"Icon Selection",0,null,c);QV("id_dialogclose",true)}function p10setIcon(a){setDialogMode(0);meshserver.send({action:"changedevice",nodeid:currentNode._id,icon:a})}var showEditNodeValueDialog_modes=["Device Name","Hostname","Description","Groups"];var showEditNodeValueDialog_modes2=["name","host","desc","tags"];var showEditNodeValueDialog_modes3=["","","","Group1, Group2, Group3"];function showEditNodeValueDialog(a){if(xxdialogMode){return}var c=addHtmlValue(showEditNodeValueDialog_modes[a],'<input id=dp10devicevalue style=width:170px maxlength=64 placeholder="'+showEditNodeValueDialog_modes3[a]+'" onchange=p10editdevicevalueValidate('+a+",event) onkeyup=p10editdevicevalueValidate("+a+",event) />");setDialogMode(2,"Edit Device",3,showEditNodeValueDialogEx,c,a);var b=currentNode[showEditNodeValueDialog_modes2[a]];if(b==null){b=""}if(Array.isArray(b)){b=b.join(", ")}Q("dp10devicevalue").value=b;p10editdevicevalueValidate();Q("dp10devicevalue").focus()}function showEditNodeValueDialogEx(a,b){var c={action:"changedevice",nodeid:currentNode._id};c[showEditNodeValueDialog_modes2[b]]=Q("dp10devicevalue").value;meshserver.send(c)}function p10editdevicevalueValidate(b,a){var c=((b>1)||(Q("dp10devicevalue").value.length>0));QE("idx_dlgOkButton",c);if((a!=null)&&(c==true)&&(a.keyCode==13)){dialogclose(1)}}var desktop;var desktopNode;var desktopsettings={encoding:2,showfocus:false,showmouse:true,showcad:true,quality:40,scaling:1024,framerate:50};function setupDesktop(){if((desktopNode!=currentNode)&&(desktop!=null)){desktop.Stop();delete desktop;desktopNode=null;desktop=null}if((desktopNode!=currentNode)||(desktop==null)){QH("DeskParent",'<canvas id=Desk width=640 height=200 style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');desktopNode=currentNode;Q("Desk").addEventListener("DOMMouseScroll",function(a){return dmousewheel(a)});Q("Desk").addEventListener("mousewheel",function(a){return dmousewheel(a)})}desktopNode=currentNode;updateDesktopButtons();if(!Q("Desk")["toBlob"]){QV("deskSaveBtn",false)}}function updateDesktopButtons(){var c=meshes[currentNode.meshid];var a=0;if(desktop!=null){a=desktop.State}QV("disconnectbutton1",(a!=0));QV("connectbutton1",(a==0)&&(c.mtype==2));QV("connectbutton1h",(a==0)&&((currentNode.intelamt!=null)&&(c.mtype==1||currentNode.intelamt.state==2)&&((currentNode.intelamt.ver!=null)||(c.mtype==1))));QV("d7amtkvm",(currentNode.intelamt!=null&&((currentNode.intelamt.ver!=null)||(c.mtype==1)))&&((a==0)||(desktop.contype==2)));QV("d7meshkvm",(c.mtype==2)&&((a==false)||(desktop.contype==1)));var d=((currentNode.conn&1)!=0);QE("connectbutton1",d);var b=((currentNode.conn&6)!=0);QE("connectbutton1h",b);QE("DeskCAD",a==3);QE("DeskWD",a==3);QE("deskkeys",a==3);QV("DeskWD",(currentNode.agent)&&(currentNode.agent.id<5));QV("deskkeys",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToolsButton",d);QV("DeskToastButton",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToastButton",d);if(d==false){QV("DeskTools",false)}}function connectDesktop(b,a){if(desktop==null){desktopNode=currentNode;if(a==2){if((desktopNode.intelamt.user==null)||(desktopNode.intelamt.user=="")){editDeviceAmtSettings(desktopNode._id,connectDesktop);return}desktop=CreateAmtRedirect(CreateAmtRemoteDesktop("Desk"));desktop.debugmode=debugmode;desktop.onStateChanged=onDesktopStateChange;desktop.m.bpp=(desktopsettings.encoding==1||desktopsettings.encoding==3)?1:2;desktop.m.useZRLE=(desktopsettings.encoding<3);desktop.m.showmouse=desktopsettings.showmouse;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id,16994,"*","*",0);desktop.contype=2}else{desktop=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("Desk"),serverPublicNamePort);desktop.debugmode=debugmode;desktop.m.debugmode=debugmode;desktop.attemptWebRTC=attemptWebRTC;desktop.onStateChanged=onDesktopStateChange;desktop.m.CompressionLevel=desktopsettings.quality;desktop.m.ScalingLevel=desktopsettings.scaling;desktop.m.FrameRateTimer=desktopsettings.framerate;desktop.m.onDisplayinfo=deskDisplayInfo;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id);desktop.contype=1}}else{desktop.Stop();delete desktop;desktopNode=desktop=null}}function onDesktopStateChange(c,a){var d=a;if((d==3)&&(c.contype==2)){d++}var b=StatusStrs[d];if((desktop!=null)&&(desktop.webRtcActive==true)){b+=", WebRTC"}QH("deskstatus",b);switch(a){case 0:desktop.Stop();delete desktop;desktopNode=desktop=null;QV("termdisplays",false);if(fullscreen==true){deskToggleFull()}break;case 2:break}updateDesktopButtons();deskAdjust();setTimeout(deskAdjust,50)}function showDesktopSettings(){if(xxdialogMode){return}applyDesktopSettings();updateDesktopButtons();setDialogMode(7,"Remote Desktop Settings",3,showDesktopSettingsChanged)}function showDesktopSettingsChanged(){desktopsettings.encoding=d7desktopmode.value;desktopsettings.showfocus=d7showfocus.checked;desktopsettings.showmouse=d7showcursor.checked;desktopsettings.quality=d7bitmapquality.value;desktopsettings.scaling=d7bitmapscaling.value;desktopsettings.framerate=d7framelimiter.value;localStorage.setItem("desktopsettings",JSON.stringify(desktopsettings));applyDesktopSettings();if(desktop){if(desktop.contype==1){if(desktop.State!=0){desktop.m.SendCompressionLevel(1,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate)}}if(desktop.contype==2){if(desktop.State!=0){desktop.Stop();setTimeout(function(){connectDesktop(null,2)},50)}}}}function applyDesktopSettings(){}var fullscreen=false;function deskAdjust(){var c=(Q("DeskParent").clientHeight-Q("Desk").clientHeight)/2;if(c<0){var a=Q("DeskParent").clientHeight,b=9999;if(desktop){b=(desktop.m.width/desktop.m.height)*a}QS("Desk")["max-height"]=a+"px";QS("Desk")["max-width"]=b+"px";c=0}else{QS("Desk")["max-height"]=null;QS("Desk")["max-width"]=null}QS("Desk")["margin-top"]=c+"px";QS("Desk")["margin-bottom"]=c+"px"}function deskSendKeys(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=Q("deskkeys").value;if(a==0){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65364,1],[65364,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,40],[desktop.m.KeyAction.UP,40],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==1){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65362,1],[65362,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,38],[desktop.m.KeyAction.UP,38],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==2){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[108,1],[108,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,76],[desktop.m.KeyAction.UP,76],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==3){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[109,1],[109,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==4){if(desktop.contype==2){desktop.m.sendkey([[65505,1],[65511,1],[109,1],[109,0],[65511,0],[65505,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN,16],[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91],[desktop.m.KeyAction.UP,16]])}}}}}}}function sendCAD(){if(xxdialogMode||desktop==null||desktop.State!=3){return}desktop.m.sendcad()}function toggleDeskTools(){if(xxdialogMode){return}if(QS("DeskTools").display=="none"){QV("DeskTools",true);Q("DeskTools").nodeid=currentNode._id;refreshDeskTools()}else{QV("DeskTools",false)}}function refreshDeskTools(){QV("DeskToolsRefreshButton",false);setTimeout(refreshDeskToolsEx,500);meshserver.send({action:"msg",type:"ps",nodeid:currentNode._id})}function refreshDeskToolsEx(){QV("DeskToolsRefreshButton",true)}var deskTools={sort:1,msg:null};function sortProcess(a){deskTools.sort=a;showDeskToolsProcesses(deskTools.msg)}function sortProcessPid(c,d){if(c.p>d.p){return 1}if(c.p<d.p){return(-1)}return 0}function sortProcessName(c,d){if(c.d>d.d){return 1}if(c.d<d.d){return(-1)}return 0}function showDeskToolsProcesses(c){deskTools.msg=c;if(c==null){QH("DeskToolsProcesses","");return}if(Q("DeskTools").nodeid!=c.nodeid){return}var d=[],g=null;try{g=JSON.parse(c.value)}catch(a){}console.log(g);if(g!=null){for(var f in g){d.push({p:parseInt(f),c:g[f].cmd,d:g[f].cmd.toLowerCase(),u:g[f].user})}if(deskTools.sort==0){d.sort(sortProcessPid)}else{if(deskTools.sort==1){d.sort(sortProcessName)}}var h="";for(var b in d){if(d[b].p!=0){h+="<div class=deskToolsBar><div style=width:50px;float:left;text-align:right;padding-right:5px>"+d[b].p+'</div><a style=float:right;padding-right:5px;cursor:pointer title="Stop process" onclick=stopProcess('+d[b].p+',"'+d[b].c+'")><img width=10 height=10 src="images/trash.png"></a><div style=float:right;padding-right:5px>'+(d[b].u?d[b].u:"")+"</div><div>"+d[b].c+"</div></div>"}}QH("DeskToolsProcesses",h)}}function deskSaveImage(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=new Date(),b="Desktop-"+currentNode.name+"-"+a.getFullYear()+"-"+("0"+(a.getMonth()+1)).slice(-2)+"-"+("0"+a.getDate()).slice(-2)+"-"+("0"+a.getHours()).slice(-2)+"-"+("0"+a.getMinutes()).slice(-2);Q("Desk")["toBlob"](function(c){saveAs(c,b+".jpg")})}function deskDisplayInfo(e,a,c,d){var f=Q("termdisplays").value;if(a.length>0){var b="";for(var g in a){b+="<option"+((f==a[g])?" selected":"")+">"+a[g]+"</option>"}QH("termdisplays",b)}QV("termdisplays",a.length>0)}function deskGetDisplayNumbers(a){desktop.m.GetDisplayNumbers()}function deskSetDisplay(b){var a=0,c=Q("termdisplays").value;if(c=="All Displays"){a=65535}else{a=parseInt(c.substring(8))}desktop.m.SetDisplay(a)}function dmousedown(a){if(!xxdialogMode&&desktop!=null){desktop.m.mousedown(a)}}function dmouseup(a){if(!xxdialogMode&&desktop!=null){desktop.m.mouseup(a)}}function dmousemove(a){if(!xxdialogMode&&desktop!=null){desktop.m.mousemove(a)}}function dmousewheel(a){if(!xxdialogMode&&desktop!=null&&desktop.m.mousewheel){desktop.m.mousewheel(a);haltEvent(a);return true}return false}function drotate(a){if(!xxdialogMode&&desktop!=null){desktop.m.setRotation(desktop.m.rotation+a);deskAdjust();deskAdjust()}}function stopProcess(a,b){setDialogMode(2,"Process Control",3,stopProcessEx,"Stop process #"+a+' "'+b+'"?',a)}function stopProcessEx(a,b){meshserver.send({action:"msg",type:"pskill",nodeid:currentNode._id,value:b});setTimeout(refreshDeskTools,300)}var filesNode;function setupFiles(){var b=(filesNode==currentNode);filesNode=currentNode;var a=((filesNode.conn&1)!=0)?true:false;QE("p13Connect",a);if(((b==false)||(a==false))&&files){files.Stop();delete files;files=null}}function onFilesStateChange(c,a){p13Connect.value=(a==0)?"Connect":"Disconnect";var b=StatusStrs[a];if(files.webRtcActive==true){b+=", WebRTC"}Q("p13Status").textContent=b;switch(a){case 0:QH("p13files","");p13filetree=null;p13filetreelocation=[];QH("p13currentpath","");QE("p13FolderUp",false);p13setActions();if(files!=null){files.Stop();delete files;files=null}break;case 3:p13targetpath="";files.sendText({action:"ls",reqid:1,path:""});break}}function CreateRemoteFiles(b){var a={protocol:5};a.onFileUpdate=b;a.xxStateChange=function(c){};a.ProcessData=function(c){a.onFileUpdate(c)};return a}var autoConnectFilesTimer=null;function autoConnectFiles(a){if(autoConnectFilesTimer==null){autoConnectFilesTimer=setInterval(connectFiles,100)}else{clearInterval(autoConnectFilesTimer);autoConnectFilesTimer=null}}function connectFiles(a){if(!files){files=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotFiles),serverPublicNamePort);files.attemptWebRTC=attemptWebRTC;files.onStateChanged=onFilesStateChange;files.Start(filesNode._id)}else{files.Stop();delete files;files=null}p13clipboard=p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview();p13oldlinkpath=null}var p13filetree=null;var p13targetpath=null;var p13filetreelocation=[];function p13gotFiles(b){if((b.length>0)&&(b.charCodeAt(0)!=123)){p13gotDownloadBinaryData(b);return}b=JSON.parse(decode_utf8(b));if(b.action=="download"){p13gotDownloadCommand(b);return}b.path=b.path.replace(/\//g,"\\");if((p13filetree!=null)&&(b.path==p13filetree.path)){var a=p13getCheckedNames();p13filetree=b;p13updateFiles(a)}else{var c=b.path.replace(/\//g,"\\"),d=p13targetpath.replace(/\//g,"\\");while((c.length>0)&&(c[0]=="\\")){c=c.substring(1)}while((d.length>0)&&(d[0]=="\\")){d=d.substring(1)}if((c==d)||((b.path=="\\")&&(p13targetpath==""))){p13filetree=b;p13updateFiles()}}}function p13getCheckedNames(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}return b}function p13updateFiles(b){var l="",m="",c="<a style=cursor:pointer onclick=p13folderup(0)>Root</a>",j="Root";var u=p13filetree.path.split("\\");p13filetreelocation=[];for(var n in u){if(u[n]!=""){p13filetreelocation.push(u[n])}}for(var n in p13filetreelocation){c+=" / <a style=cursor:pointer onclick=p13folderup("+(parseInt(n)+1)+")>"+p13filetreelocation[n]+"</a>"}var q=p13filetreelocation.join("/");var e=p13sort_files(p13filetree.dir);for(var n in e){var d=e[n],p=d.n,s;s=p;if(p.length>70){s='<span title="'+EscapeHtml(p)+'">'+EscapeHtml(p.substring(0,70))+"...</span>"}else{s=EscapeHtml(p)}p=EscapeHtml(p);var g="";if(d.s!=null){g=getFileSizeStr(d.s)}var k="";if(d.t<3){var r="",t="";k="<div class=filelist file=999><input file=999 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'> <span style=float:right title=\""+t+'">'+r+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p13folderset("'+encodeURIComponent(d.nx)+'")>'+s+"</a></span></div>"}else{var o=s;if(d.s>0){o='<a target="_blank" style=cursor:pointer onclick="p13downloadfile(\''+encodeURIComponent(q+"/"+p)+"','"+encodeURIComponent(p)+"',"+d.s+')">'+s+"</a>"}k="<div class=filelist file=3><input file=3 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'> <span style=float:right;padding-right:4px>"+g+"</span><span><div class=fileIcon"+d.t+"></div>"+o+"</span></div>"}if(d.t<3){l+=k}else{m+=k}}QH("p13files",l+m);QH("p13currentpath",c);QE("p13FolderUp",p13filetreelocation.length!=0);if(b!=null){var a=document.getElementsByName("fd");for(var n=0;n<a.length;n++){if(b.indexOf(p13filetree.dir[a[n].value].n)>=0){a[n].checked=true}}}p13setActions()}function p13folderset(a){p13targetpath=joinPaths(p13filetree.path,p13filetree.dir[a].n).split("\\").join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}function p13folderup(a){if(a==null){p13filetreelocation.pop()}else{while(p13filetreelocation.length>a){p13filetreelocation.pop()}}p13targetpath=p13filetreelocation.join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}var p13sortorder;function p13sort_filename(c,d){if(c.ln>d.ln){return(1*p13sortorder)}if(c.ln<d.ln){return(-1*p13sortorder)}return 0}function p13sort_timestamp(c,d){if(c.d>d.d){return(1*p13sortorder)}if(c.d<d.d){return(-1*p13sortorder)}return 0}function p13sort_bysize(c,d){if(c.s==d.s){return p13sort_filename(c,d)}return(((c.s-d.s))*p13sortorder)}function p13sort_files(a){var c=[],d=Q("p13sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].s==null){a[b].s=0}if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}p13sortorder=1;if(d>3){p13sortorder=-1;d-=3}if(d==1){c.sort(p13sort_filename)}else{if(d==2){c.sort(p13sort_bysize)}else{if(d==3){c.sort(p13sort_timestamp)}}}return c}function p13setActions(){if(p13filetree==null){QE("p13DeleteFileButton",false);QE("p13NewFolderButton",false);QE("p13UploadButton",false);QE("p13RenameFileButton",false);QE("p13SelectAllButton",false);Q("p13SelectAllButton").value="All";QE("p13RefreshButton",false);QE("p13CutButton",false);QE("p13CopyButton",false);QE("p13PasteButton",false)}else{var a=p13getFileSelCount(),c=p13getFileCount(),b=p13getFileSelCount(false);var d=((currentNode.agent.id>0)&&(currentNode.agent.id<5));QE("p13DeleteFileButton",(a>0)&&((p13filetreelocation.length>0)||(d==false)));QE("p13NewFolderButton",((p13filetreelocation.length>0)||(d==false)));QE("p13UploadButton",((p13filetreelocation.length>0)||(d==false)));QE("p13RenameFileButton",(a==1)&&((p13filetreelocation.length>0)||(d==false)));QE("p13SelectAllButton",c>0);Q("p13SelectAllButton").value=(a>0?"None":"All");QE("p13RefreshButton",true);QE("p13CutButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13CopyButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13PasteButton",((p13filetreelocation.length>0)||(d==false))&&((p13clipboard!=null)&&(p13clipboard.length>0)))}}function p13getFileSelCount(d){var a=0;var b=document.getElementsByName("fd");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function p13getFileCount(){var a=0;var b=document.getElementsByName("fd");return b.length}function p13selectallfile(){var c=(p13getFileSelCount()==0),a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){a[b].checked=c}p13setActions()}function p13createfolder(){setDialogMode(2,"New Folder",3,p13createfolderEx,"<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />");focusTextBox("p13renameinput");p13fileNameCheck()}function p13createfolderEx(){files.sendText({action:"mkdir",reqid:1,path:p13filetreelocation.join("/")+"/"+Q("p13renameinput").value});p13folderup(999)}function p13deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p13deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p13deletefileEx(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}files.sendText({action:"rm",reqid:1,path:p13filetreelocation.join("/"),delfiles:b});p13folderup(999)}function p13renamefile(){var c,a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){if(a[b].checked){c=p13filetree.dir[a[b].value].n}}setDialogMode(2,"Rename",3,p13renamefileEx,'<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"rename",path:p13filetreelocation.join("/"),oldname:c});focusTextBox("p13renameinput");p13fileNameCheck()}function p13renamefileEx(a,c){c.newname=Q("p13renameinput").value;files.sendText(c);p13folderup(999)}function p13fileNameCheck(a){var b=isFilenameValid(Q("p13renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function p13uploadFile(){setDialogMode(2,"Upload File",3,p13uploadFileEx,"<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange=\"updateUploadDialogOk('p13uploadinput')\" />");updateUploadDialogOk("p13uploadinput")}function p13uploadFileEx(){p13doUploadFiles(Q("p13uploadinput").files)}var p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;function p13copyFile(b){var a=document.getElementsByName("fd");p13clipboard=[];p13clipboardCut=b,p13clipboardFolder=p13targetpath;for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p13clipboard.push(p13filetree.dir[a[c].value].n)}}p13updateClipview()}function p13pasteFile(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Confim "+(p13clipboardCut==0?"copy":"move")+" of "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p13pasteFileEx,a)}function p13pasteFileEx(){files.sendText({action:(p13clipboardCut==0?"copy":"move"),reqid:1,scpath:p13clipboardFolder,dspath:p13targetpath,names:p13clipboard});p13folderup(999);if(p13clipboardCut==1){p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;p13updateClipview()}}function p13updateClipview(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Holding "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" for "+(p13clipboardCut==0?"copy":"move")+", <a onclick=p13clearClip() style=cursor:pointer>Clear</a>."}QH("p13bottomstatus",a);p13setActions()}function p13clearClip(){p13clipboard=null;p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview()}function updateUploadDialogOk(a){QE("idx_dlgOkButton",Q(a).value!="")}function getFileSelCount(d){var a=0;var b=document.getElementsByName("fc");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function getFileCount(){var a=0;var b=document.getElementsByName("fc");return b.length}var downloadFile;function p13downloadfile(a,b,c){if(xxdialogMode||downloadFile||!files){return}downloadFile={path:decodeURIComponent(a),file:decodeURIComponent(b),size:c,tsize:0,data:"",state:0,id:Math.random()};files.sendText({action:"download",sub:"start",id:downloadFile.id,path:downloadFile.path});setDialogMode(2,"Download File",10,p13downloadFileCancel,"<div>"+downloadFile.file+"</div><br /><progress id=d2progressBar style=width:100% value=0 max="+c+" />")}function p13downloadFileCancel(){setDialogMode(0);files.sendText({action:"download",sub:"cancel",id:downloadFile.id});downloadFile=null}function p13gotDownloadCommand(a){if((downloadFile==null)||(a.id!=downloadFile.id)){return}if(a.sub=="start"){downloadFile.state=1;files.sendText({action:"download",sub:"startack",id:downloadFile.id})}else{if(a.sub=="cancel"){downloadFile=null;setDialogMode(0)}}}function p13gotDownloadBinaryData(a){if(!downloadFile||downloadFile.state==0){return}if(a.length>4){downloadFile.tsize+=(a.length-4);downloadFile.data+=a.substring(4);Q("d2progressBar").value=downloadFile.tsize}if((ReadInt(a,0)&1)!=0){saveAs(data2blob(downloadFile.data),downloadFile.file);downloadFile=null;setDialogMode(0)}else{files.sendText({action:"download",sub:"ack",id:downloadFile.id})}}var uploadFile;function p13doUploadFiles(a){if(xxdialogMode){return}uploadFile={};uploadFile.xpath=p13filetreelocation.join("/");uploadFile.xfiles=a;uploadFile.xfilePtr=-1;setDialogMode(2,"Upload File",10,p13uploadFileCancel,"<div id=p13dfileName>Connecting...</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />");p13uploadReconnect()}function onFileUploadStateChange(b,a){switch(a){case 0:p13folderup(9999);break;case 3:p13uploadNextFile();break}}function p13uploadReconnect(){uploadFile.ws=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotUploadData),serverPublicNamePort);uploadFile.ws.attemptWebRTC=false;uploadFile.ws.ctrlMsgAllowed=false;uploadFile.ws.onStateChanged=onFileUploadStateChange;uploadFile.ws.Start(filesNode._id)}function p13uploadNextFile(){uploadFile.xfilePtr++;if(uploadFile.xfiles.length>uploadFile.xfilePtr){uploadFile.xptr=0;var a=uploadFile.xfiles[uploadFile.xfilePtr];QH("p13dfileName",a.name);Q("d2progressBar").max=a.size;Q("d2progressBar").value=0;uploadFile.xreader=new FileReader();uploadFile.xreader.onload=function(){uploadFile.xdata=uploadFile.xreader.result;uploadFile.ws.sendText({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:a.name,size:uploadFile.xdata.byteLength})};uploadFile.xreader.readAsArrayBuffer(a)}else{p13uploadFileCancel()}}function p13uploadFileCancel(a,b){if(uploadFile!=null){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}uploadFile=null}setDialogMode(0)}function p13gotUploadData(b){var a=JSON.parse(b);if((uploadFile==null)||(parseInt(uploadFile.xfilePtr)!=parseInt(a.reqid))){return}if(a.action=="uploadstart"){p13uploadNextPart(false);for(var c=0;c<8;c++){p13uploadNextPart(true)}}else{if(a.action=="uploadack"){p13uploadNextPart(false)}else{if(a.action=="uploaderror"){p13uploadFileCancel()}}}}function p13uploadNextPart(c){var a=uploadFile.xdata;var e=uploadFile.xptr;var d=uploadFile.xptr+4096;if(d>a.byteLength){if(c==true){return}d=a.byteLength}if(e==a.byteLength){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}if(uploadFile.xfiles.length>uploadFile.xfilePtr+1){p13uploadReconnect()}else{p13uploadFileCancel()}}else{var b=a.slice(e,d);uploadFile.ws.send(b);uploadFile.xptr=d;Q("d2progressBar").value=d}}var currentMesh;function p20updateMesh(){if(currentMesh==null){return}QH("p20meshName",EscapeHtml(currentMesh.name));var e="Unknown #"+currentMesh.mtype;var d=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(currentMesh.mtype==1){e="Intel® AMT group"}if(currentMesh.mtype==2){e="Mesh agent group"}var k="";k+=addHtmlValue("Name",addLinkConditional(EscapeHtml(currentMesh.name),"p20editmesh(1)",(d&1)!=0));k+=addHtmlValue("Description",addLinkConditional(((currentMesh.desc&¤tMesh.desc!="")?EscapeHtml(currentMesh.desc):"<i>None</i>"),"p20editmesh(2)",(d&1)!=0));k+=addHtmlValue("Type",e);k+="<br style=clear:both><br>";var b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(b&&((b.rights&2)!=0)){k+="<div style=margin-bottom:6px><a onclick=p20showAddMeshUserDialog() style=cursor:pointer><img src=images/icon-addnew.png border=0 height=12 width=12> Add User</a></div>"}k+='<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>User Authorizations</th><th scope=col style=text-align:left></th></tr>';var a=1,h=[];for(var c in currentMesh.links){h.push({id:c,name:c.split("/")[2],rights:currentMesh.links[c].rights})}h.sort(function(l,m){if(l.name>m.name){return 1}if(l.name<m.name){return -1}return 0});for(var c in h){var j="",g="Partial Rights",f=h[c].rights;if(f==4294967295){g="Full Administrator"}else{if(f==0){g="No Rights"}}if((c!=userinfo._id)&&(d==4294967295||(((d&2)!=0)))){j='<a onclick=p20deleteUser(event,"'+encodeURIComponent(h[c].id)+'") title="Remote user rights to this mesh" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'}k+='<tr onclick=p20viewuser("'+encodeURIComponent(h[c].id)+'") style=height:32px;cursor:pointer'+(((a%2)==0)?";background-color:#DDD":"")+"><td>";k+="<div style=float:right>"+j+"</div><div style=float:right;padding-right:4px>"+g+"</div><div class=m2></div><div> "+h[c].name+"<div></div></div>";k+="</td></tr>";++a}k+="</tbody></table>";if(d==4294967295){k+="<div style=font-size:small;text-align:right;margin-top:6px><span><a onclick=p20showDeleteMeshDialog() style=cursor:pointer>Delete Mesh</a></span></div>"}QH("p20info",k)}function p20showDeleteMeshDialog(){if(xxdialogMode){return}var a='Are you sure you want to delete mesh "'+EscapeHtml(currentMesh.name)+'"? Deleting the mesh will also delete all information about computers within this mesh.<br /><br />';a+="<input id=p20check type=checkbox onchange=p20validateDeleteMeshDialog() />Confirm";setDialogMode(2,"Delete Mesh",3,p20showDeleteMeshDialogEx,a);p20validateDeleteMeshDialog()}function p20validateDeleteMeshDialog(){QE("idx_dlgOkButton",Q("p20check").checked)}function p20showDeleteMeshDialogEx(a,b){meshserver.send({action:"deletemesh",meshid:currentMesh._id,meshname:currentMesh.name})}function p20editmesh(a){if(xxdialogMode){return}var b=addHtmlValue("Name","<input id=dp20meshname style=width:170px maxlength=32 onchange=p20editmeshValidate() onkeyup=p20editmeshValidate() />");b+=addHtmlValue("Description","<input id=dp20meshdesc style=width:170px maxlength=1024 onkeyup=p20editmeshValidate() />");setDialogMode(2,"Edit Mesh",3,p20editmeshEx,b);Q("dp20meshname").value=currentMesh.name;if(currentMesh.desc){Q("dp20meshdesc").value=currentMesh.desc}p20editmeshValidate();if(a==2){Q("dp20meshdesc").focus()}else{Q("dp20meshname").focus()}}function p20editmeshEx(){meshserver.send({action:"editmesh",meshid:currentMesh._id,meshname:Q("dp20meshname").value,desc:Q("dp20meshdesc").value})}function p20editmeshValidate(){QE("idx_dlgOkButton",Q("dp20meshname").value.length>0)}function p20showAddMeshUserDialog(){if(xxdialogMode){return}var a=addHtmlValue("User","<input id=dp20username style=width:170px maxlength=32 onchange=p20validateAddMeshUserDialog() onkeyup=p20validateAddMeshUserDialog() />");a+='<div style="border:2px groove gray;background-color:white;max-height:80px;overflow-y:scroll">';a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>Full Administrator<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>Edit Mesh<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>Manage Mesh Users<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20managecomputers>Manage Mesh Computers<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remotecontrol>Remote Control<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshagentconsole>Mesh Agent Console<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshserverfiles>Server Files<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes<br>";a+="</div>";setDialogMode(2,"Add User to Mesh",3,p20showAddMeshUserDialogEx,a);p20validateAddMeshUserDialog();Q("dp20username").focus()}function p20validateAddMeshUserDialog(){var a=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;QE("idx_dlgOkButton",(Q("dp20username").value.length>0));QE("p20fulladmin",a==4294967295);QE("p20editmesh",(!Q("p20fulladmin").checked)&&(a==4294967295));QE("p20manageusers",!Q("p20fulladmin").checked);QE("p20managecomputers",!Q("p20fulladmin").checked);QE("p20remotecontrol",!Q("p20fulladmin").checked);QE("p20meshagentconsole",!Q("p20fulladmin").checked);QE("p20meshserverfiles",!Q("p20fulladmin").checked);QE("p20wakedevices",!Q("p20fulladmin").checked);QE("p20editnotes",!Q("p20fulladmin").checked)}function p20showAddMeshUserDialogEx(){var a=0;if(Q("p20fulladmin").checked==true){a=4294967295}else{if(Q("p20editmesh").checked==true){a+=1}if(Q("p20manageusers").checked==true){a+=2}if(Q("p20managecomputers").checked==true){a+=4}if(Q("p20remotecontrol").checked==true){a+=8}if(Q("p20meshagentconsole").checked==true){a+=16}if(Q("p20meshserverfiles").checked==true){a+=32}if(Q("p20wakedevices").checked==true){a+=64}if(Q("p20editnotes").checked==true){a+=128}}meshserver.send({action:"addmeshuser",meshid:currentMesh._id,meshname:currentMesh.name,username:Q("dp20username").value,meshadmin:a})}function p20viewuser(e){if(xxdialogMode){return}e=decodeURIComponent(e);var d="",b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights,c=currentMesh.links[e].rights;if(c==4294967295){d=", Full Administrator"}else{if((c&1)!=0){d+=", Edit Mesh"}if((c&2)!=0){d+=", Manage Mesh Users"}if((c&4)!=0){d+=", Manage Mesh Computers"}if((c&8)!=0){d+=", Remote Control"}if((c&16)!=0){d+=", Agent Console"}if((c&32)!=0){d+=", Server Files"}if((c&64)!=0){d+=", Wake Devices"}if((c&128)!=0){d+=", Edit Notes"}}d=d.substring(2);if(d==""){d="No Rights"}var a=1,f=addHtmlValue("User",e.split("/")[2]);f+=addHtmlValue("Permissions",d);if((("user/{{{domain}}}/"+userinfo.name.toLowerCase())!=e)&&(b==4294967295||(((b&2)!=0)&&(c!=4294967295)))){a+=4}setDialogMode(2,"Mesh User",a,p20viewuserEx,f,e)}function p20viewuserEx(a,b){if(a!=2){return}setDialogMode(2,"Remote Mesh User",3,p20viewuserEx2,"Confirm removal of user "+b.split("/")[2]+"?",b)}function p20deleteUser(a,b){haltEvent(a);p20viewuserEx(2,decodeURIComponent(b))}function p20viewuserEx2(a,b){meshserver.send({action:"removemeshuser",meshid:currentMesh._id,meshname:currentMesh.name,userid:b})}var xxcurrentView=-1;function go(b){if(xxdialogMode||xxcurrentView==b){return}updateFooterMenu();setDialogMode(0);for(var a=0;a<32;a++){QV("p"+a,a==b)}xxcurrentView=b}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;function setDialogMode(j,k,a,e,d,h){xxdialogMode=j;xxdialogFunc=e;xxdialogButtons=a;xxdialogTag=h;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgButtonBar",a&7);if(k){QH("id_dialogtitle",k)}for(var g=1;g<24;g++){QV("dialog"+g,g==j)}QV("dialog",j);if(d){if(j==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(e){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||e)&&c){c(e,d)}}function center(){QS("dialog").left=((((getDocWidth()-300)/2))+"px");deskAdjust()}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function haltReturn(a){if(a.keyCode==13){haltEvent(a)}}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)}function reload(){window.location.href=window.location.href}function getNodeFromId(b){for(var a in nodes){if(nodes[a]._id==b){return nodes[a]}}return null}function addHtmlValue(a,b){return"<table><td style=width:120px>"+a+"<td><b>"+b+"</b></table>"}function addHtmlValue2(a,b){return"<div><div style=display:inline-block;float:right>"+b+"</div><div style=display:inline-block>"+a+"</div></div>"}function addLink(b,a){return"<a style=cursor:pointer;color:darkblue;text-decoration:none onclick='"+a+"'>♦ "+b+"</a>"}function addLinkConditional(d,b,a){if(a){return addLink(d,b)}return d}function passwordcheck(a){var b=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()]).{8,}/;return b.test(a)}function getFileSizeStr(a){if(a==1){return"1 byte"}return""+a+" bytes"}function joinPaths(){var c=[];for(var a in arguments){var b=arguments[a];if((b!=null)&&(b!="")){while(b.endsWith("/")||b.endsWith("\\")){b=b.substring(0,b.length-1)}while(b.startsWith("/")||b.startsWith("\\")){b=b.substring(1)}c.push(b)}}return c.join("/")}function focusTextBox(a){setTimeout(function(){Q(a).selectionStart=Q(a).selectionEnd=65535;Q(a).focus()},0)}var isFilenameValid=(function(){var b=/^[^\\/:\*\?"<>\|]+$/,c=/^\./,d=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function a(e){return b.test(e)&&!c.test(e)&&!d.test(e)&&(e[0]!=".")}})();</script></body></html>
\ No newline at end of file
views/default-mobile.handlebars
+98
-24
@@ -17,22 +17,97 @@
17
<script type="text/javascript" src="scripts/zlib-inflate.js"></script>
18
<script type="text/javascript" src="scripts/zlib-adler32.js"></script>
19
<script type="text/javascript" src="scripts/zlib-crc32.js"></script>
20
- <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
20
+ <script keeplink=1 type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
21
<title>MeshCentral - Login</title>
22
<style>
23
- a { color: #036; text-decoration: underline }
24
- #footer a { color: #fff; text-decoration: underline }
25
- #footer a:hover { color: #fff; text-decoration: none }
26
- .i1 {background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;border:none;}
27
- .i2 {background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;border:none;}
28
- .i3 {background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;border:none;}
29
- .i4 {background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;border:none;}
30
- .i5 {background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;border:none;}
31
- .i6 {background:url(../images/icons50.png) -250px 0px; height:50px;width:50px; border:none; }
32
- .m0 {background:url(../images/images16.png) -32px 0px; height:16px;width:16px; border:none;float:left }
33
- .m1 {background:url(../images/images16.png) -16px 0px; height:16px;width:16px; border:none;float:left }
34
- .m2 {background:url(../images/images16.png) -96px 0px; height:16px;width:16px; border:none;float:left }
35
- .m3 {background:url(../images/images16.png) -112px 0px; height:16px;width:16px; border:none;float:left }
23
+ a {
24
+ color: #036;
25
+ text-decoration: underline;
26
+ }
27
+
28
+ #footer a {
29
+ color: #fff;
30
+ text-decoration: underline;
31
+ }
32
+
33
+ #footer a:hover {
34
+ color: #fff;
35
+ text-decoration: none;
36
+ }
37
+
38
+ .i1 {
39
+ background: url(../images/icons50.png) 0px 0px;
40
+ height: 50px;
41
+ width: 50px;
42
+ border: none;
43
+ }
44
+
45
+ .i2 {
46
+ background: url(../images/icons50.png) -50px 0px;
47
+ height: 50px;
48
+ width: 50px;
49
+ border: none;
50
+ }
51
+
52
+ .i3 {
53
+ background: url(../images/icons50.png) -100px 0px;
54
+ height: 50px;
55
+ width: 50px;
56
+ border: none;
57
+ }
58
+
59
+ .i4 {
60
+ background: url(../images/icons50.png) -150px 0px;
61
+ height: 50px;
62
+ width: 50px;
63
+ border: none;
64
+ }
65
+
66
+ .i5 {
67
+ background: url(../images/icons50.png) -200px 0px;
68
+ height: 50px;
69
+ width: 50px;
70
+ border: none;
71
+ }
72
+
73
+ .i6 {
74
+ background: url(../images/icons50.png) -250px 0px;
75
+ height: 50px;
76
+ width: 50px;
77
+ border: none;
78
+ }
79
+
80
+ .m0 {
81
+ background: url(../images/images16.png) -32px 0px;
82
+ height: 16px;
83
+ width: 16px;
84
+ border: none;
85
+ float: left;
86
+ }
87
+
88
+ .m1 {
89
+ background: url(../images/images16.png) -16px 0px;
90
+ height: 16px;
91
+ width: 16px;
92
+ border: none;
93
+ float: left;
94
+ }
95
+
96
+ .m2 {
97
+ background: url(../images/images16.png) -96px 0px;
98
+ height: 16px;
99
+ width: 16px;
100
+ border: none;
101
+ float: left;
102
+ }
103
+
104
+ .m3 {
105
+ background: url(../images/images16.png) -112px 0px;
106
+ height: 16px;
107
+ width: 16px;
108
+ border: none;
109
+ float: left;
110
+ }
111
112
.gray {
113
/*filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");*/ /* Firefox 10+, Firefox on Android */
@@ -41,7 +116,7 @@
116
}
117
118
.DevSt {
44
- padding-left:5px;
119
+ padding-left: 5px;
120
border-bottom-style: solid;
121
border-bottom-width: 1px;
122
border-bottom-color: #DDDDDD;
@@ -438,8 +513,8 @@
513
</div>
514
<iframe name="fileUploadFrame" style=display:none></iframe>
515
<script>
441
- var debugLevel = {{{debuglevel}}};
442
- var features = {{{features}}};
516
+ var debugLevel = parseInt('{{{debuglevel}}}');
517
+ var features = parseInt('{{{features}}}');
518
var meshserver = null;
519
var xdr = null;
520
var serverinfo = null;
@@ -451,7 +526,6 @@
526
var nodeShortIdent = 0;
527
var serverPublicNamePort = "{{{serverDnsName}}}:{{{serverPublicPort}}}";
528
var debugmode = false;
454
- var features = {{{features}}};
529
var attemptWebRTC = ((features & 128) != 0);
530
var StatusStrs = ['Disconnected', 'Connecting...', 'Setup...', 'Connected', 'Intel® AMT Connected'];
531
var files;
@@ -489,7 +563,7 @@
563
setTimeout(serverPoll, 5000); // Start polling for the server
564
565
// Clean up here
492
-
566
+
567
} else if (state == 2) {
568
// Fetch list of meshes, nodes, files
569
meshserver.send({ action: 'meshes' });
@@ -569,8 +643,8 @@
643
//onSearchInputChanged();
644
updateDevices();
645
//refreshMap(false, true);
572
- if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go({{viewmode}}); } else { setDialogMode(0); go(1); } }
573
- if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}',{{viewmode}});}
646
+ if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go(parseInt('{{viewmode}}')); } else { setDialogMode(0); go(1); } }
647
+ if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}', parseInt('{{viewmode}}')); }
648
break;
649
}
650
case 'powertimeline': {
@@ -1738,7 +1812,7 @@
1812
QE('idx_dlgOkButton', x);
1813
if ((e != null) && (x == true) && (e.keyCode == 13)) { dialogclose(1); }
1814
}
1741
-
1815
+
1816
//
1817
// DESKTOP
1818
//
@@ -2569,7 +2643,7 @@
2643
QH('p20info', x);
2644
}
2645
2572
-
2646
+
2647
function p20showDeleteMeshDialog() {
2648
if (xxdialogMode) return;
2649
var x = "Are you sure you want to delete mesh \"" + EscapeHtml(currentMesh.name) + "\"? Deleting the mesh will also delete all information about computers within this mesh.<br /><br />";
@@ -2692,7 +2766,7 @@
2766
for (var i = 0; i < 32; i++) { QV('p' + i, i == x); }
2767
xxcurrentView = x;
2768
}
2695
-
2769
+
2770
//
2771
// POPUP DIALOG
2772
//
views/default.handlebars
+35
-32
@@ -23,9 +23,9 @@
23
<script type="text/javascript" src="scripts/amt-wsman-ws-0.2.0.js"></script>
24
<script type="text/javascript" src="scripts/agent-redir-ws-0.1.0.js"></script>
25
<script type="text/javascript" src="scripts/agent-desktop-0.0.2.js"></script>
26
- <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
27
- <script type="text/javascript" src="scripts/ol.js"></script>
28
- <script type="text/javascript" src="scripts/ol3-contextmenu.js"></script>
26
+ <script keeplink=1 type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
27
+ <script keeplink=1 type="text/javascript" src="scripts/ol.js"></script>
28
+ <script keeplink=1 type="text/javascript" src="scripts/ol3-contextmenu.js"></script>
29
<title>MeshCentral</title>
30
</head>
31
<body onload="if (typeof(startup) !== 'undefined') startup();" oncontextmenu="handleContextMenu(event)">
@@ -246,7 +246,8 @@
246
<div style=width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px>
247
<div class=style7 style=width:16px;height:100%;float:left> </div>
248
<div class=h1 style=height:100%;float:left> </div>
249
- <div class=style14 style=height:100%;float:left>
249
+ <div class=style14 style=height:100%;float:left>
250
+
251
<input type=button onclick=showCreateNewAccountDialog() value="New Account..." />
252
<input id=UserSearchInput type=text style=width:120px placeholder=Search onchange=onUserSearchInputChanged() onkeyup=onUserSearchInputChanged() autocomplete=off onfocus=onUserSearchFocus(1) onblur=onUserSearchFocus(0) />
253
</div>
@@ -770,8 +771,8 @@
771
var multidesktopsettings = { quality: 20, scaling: 128, framerate: 1000 };
772
var terminal;
773
var files;
773
- var debugLevel = {{{debuglevel}}};
774
- var features = {{{features}}};
774
+ var debugLevel = parseInt("{{{debuglevel}}}");
775
+ var features = parseInt("{{{features}}}");
776
var multiDesktop = {};
777
var multiDesktopFilter = null;
778
var serverPublicNamePort = "{{{serverDnsName}}}:{{{serverPublicPort}}}";
@@ -940,7 +941,7 @@
941
}
942
943
function updateSiteAdmin() {
943
- var noServerBackup = {{{noServerBackup}}};
944
+ var noServerBackup = "{{{noServerBackup}}}";
945
var siteRights = userinfo.siteadmin;
946
if (noServerBackup == 1) { siteRights &= 0xFFFFFFFA; } // If not server backups allowed, remove server backup and restore permissions
947
@@ -1028,8 +1029,8 @@
1029
onSearchInputChanged();
1030
updateDevices();
1031
refreshMap(false, true);
1031
- if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go({{viewmode}}); } else { setDialogMode(0); go(1); } }
1032
- if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}',{{viewmode}});}
1032
+ if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go(parseInt('{{viewmode}}')); } else { setDialogMode(0); go(1); } }
1033
+ if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}',parseInt('{{viewmode}}'));}
1034
break;
1035
}
1036
case 'powertimeline': {
@@ -1464,7 +1465,7 @@
1465
if (!xxdialogMode && xxcurrentView == 12 && terminal && terminal.State == 3) { return terminal.m.TermHandleKeyDown(e); }
1466
if (!xxdialogMode && xxcurrentView == 13 && e.keyCode == 116 && p13filetree != null) { haltEvent(e); return false; } // F5 Refresh on files
1467
if (!xxdialogMode && xxcurrentView == 15) { return agentConsoleHandleKeys(e); }
1467
- if (!xxdialogMode && xxcurrentView == 4) {
1468
+ if (!xxdialogMode && xxcurrentView == 4) {
1469
if (e.keyCode === 8 && userSearchFocus == 0) { var x = Q('UserSearchInput').value; Q('UserSearchInput').value = (x.substring(0, x.length - 1)); processed = 1; }
1470
if (e.keyCode === 27) { Q('UserSearchInput').value = ''; processed = 1; }
1471
if (processed > 0) { if (processed == 1) { onSearchInputChanged(); } return haltEvent(e); }
@@ -2037,9 +2038,9 @@
2038
function deviceHeaderSet() {
2039
if (deviceHeaderId == 0) { deviceHeaderId = 1; return; }
2040
deviceHeaders["DevxHeader" + deviceHeaderId] = ', ' + deviceHeaderTotal + ((deviceHeaderTotal == 1) ? ' node' : ' nodes');
2040
- var title = '';
2041
- for (x in deviceHeaderCount) { if (title.length > 0) title += ', '; title += deviceHeaderCount[x] + ' ' + PowerStateStr2(x); }
2042
- deviceHeadersTitles["DevxHeader" + deviceHeaderId] = title;
2041
+ //var title = '';
2042
+ //for (x in deviceHeaderCount) { if (title.length > 0) title += ', '; title += deviceHeaderCount[x] + ' ' + PowerStateStr2(x); }
2043
+ //deviceHeadersTitles["DevxHeader" + deviceHeaderId] = title;
2044
deviceHeaderId++;
2045
deviceHeaderCount = {};
2046
deviceHeaderTotal = 0;
@@ -2207,8 +2208,8 @@
2208
function cmmeshaction(action) {
2209
var meshid = contextelement.attributes.onclick.value.substring(32, (32 + 69));
2210
var elements = document.getElementsByClassName("DeviceCheckbox");
2210
- if (action == 1) { for (var i=0;i<elements.length;i++) { if (elements[i].attributes && elements[i].attributes.class.value.substring(0, 69) == meshid) { elements[i].checked = true; } } }
2211
- if (action == 2) { for (var i=0;i<elements.length;i++) { if (elements[i].attributes && elements[i].attributes.class.value.substring(0, 69) == meshid) { elements[i].checked = false; } } }
2211
+ if (action == 1) { for (var i = 0; i < elements.length; i++) { if ( (elements[i].attributes) && (elements[i].attributes['class']['value'].substring(0, 69) == meshid)) { elements[i].checked = true; } } }
2212
+ if (action == 2) { for (var i = 0; i < elements.length; i++) { if ( (elements[i].attributes) && (elements[i].attributes['class']['value'].substring(0, 69) == meshid)) { elements[i].checked = false; } } }
2213
//if (action == 3) { window.location = "multidesktop.aspx?mesh=" + meshid + "&auto=1"; }
2214
p1updateInfo();
2215
}
@@ -2237,21 +2238,23 @@
2238
2239
// Add a feature for every Node and change style if connection status changes
2240
function updateMapMarkers(selectedMesh) {
2240
- if ((xxmap != null) && (xxmap.map == null)) loadmap();
2241
+ if ((xxmap != null) && (xxmap.map == null)) { try { loadmap(); } catch (ex) { console.error('loadmap() exception', ex); } }
2242
if (xxmap == null) return;
2243
var boundingBox = null;
2244
for (var i in nodes) {
2244
- var loc = map_parseNodeLoc(nodes[i]);
2245
- var feature = xxmap.markersSource.getFeatureById(nodes[i]._id);
2246
- if ((loc != null) && ((nodes[i].meshid == selectedMesh) || (selectedMesh == null))) { // Draw markers for devices with locations
2247
- lat = loc[0];
2248
- lon = loc[1];
2249
- var type = loc[2];
2250
- if (boundingBox == null) { boundingBox = [ lat, lon, lat, lon, 0 ]; } else { if (lat < boundingBox[0]) { boundingBox[0] = lat; } if (lon < boundingBox[1]) { boundingBox[1] = lon; } if (lat > boundingBox[2]) { boundingBox[2] = lat; } if (lon > boundingBox[3]) { boundingBox[3] = lon; } }
2251
- if (feature == null) { addFeature(nodes[i]); boundingBox[4] = 1; } else { updateFeature(nodes[i], feature); feature.setStyle(markerStyle(nodes[i], loc[2])); } // Update Feature
2252
- } else {
2253
- if (feature) { xxmap.markersSource.removeFeature(feature); }
2254
- }
2245
+ try {
2246
+ var loc = map_parseNodeLoc(nodes[i]);
2247
+ var feature = xxmap.markersSource.getFeatureById(nodes[i]._id);
2248
+ if ((loc != null) && ((nodes[i].meshid == selectedMesh) || (selectedMesh == null))) { // Draw markers for devices with locations
2249
+ lat = loc[0];
2250
+ lon = loc[1];
2251
+ var type = loc[2];
2252
+ if (boundingBox == null) { boundingBox = [ lat, lon, lat, lon, 0 ]; } else { if (lat < boundingBox[0]) { boundingBox[0] = lat; } if (lon < boundingBox[1]) { boundingBox[1] = lon; } if (lat > boundingBox[2]) { boundingBox[2] = lat; } if (lon > boundingBox[3]) { boundingBox[3] = lon; } }
2253
+ if (feature == null) { addFeature(nodes[i]); boundingBox[4] = 1; } else { updateFeature(nodes[i], feature); feature.setStyle(markerStyle(nodes[i], loc[2])); } // Update Feature
2254
+ } else {
2255
+ if (feature) { xxmap.markersSource.removeFeature(feature); }
2256
+ }
2257
+ } catch (ex) { console.error('updateMapMarkers() exception', ex, JSON.stringify(nodes[i])); }
2258
}
2259
return boundingBox;
2260
}
@@ -2413,7 +2416,7 @@
2416
if (existingfeature) { xxmap.markersSource.addFeature(existingfeature); } // Add that existing feature
2417
else { // Add new feature for this node
2418
if (!lat && !lon) { var loc = map_parseNodeLoc(node); lat = loc[0]; lon = loc[1]; }
2416
-
2419
+
2420
// Fix the longiture and send an event to patch the db to correct coordinate format. It will cause second unnecessary updateFeature on this node to the map.
2421
if (lon > 180) { lon = 180 - lon; meshserver.send({ action: 'changedevice', nodeid: node._id, userloc: [ lat, lon ] }); }
2422
@@ -4417,7 +4420,7 @@
4420
if (processed > 0) { return haltEvent(e); }
4421
}
4422
4420
- // Insert text at the cursor location on the
4423
+ // Insert text at the cursor location on the
4424
function insertTextAtCursor(ctrl, val) {
4425
if (document.selection) { ctrl.focus(); sel = document.selection.createRange(); sel.text = val; }
4426
else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
@@ -5189,7 +5192,7 @@
5192
if (maxUsers > 0) {
5193
if (addHeader) { x += '<tr><td class=userTableHeader>Offline Users'; addHeader = false; }
5194
x += addUserHtml(user, sessions);
5192
- maxUsers--;
5195
+ maxUsers--;
5196
} else {
5197
hiddenUsers++;
5198
}
@@ -5375,7 +5378,7 @@
5378
if (user.quota) x += addDeviceAttribute('Server Quota', EscapeHtml(parseInt(user.quota) / 1024) + ' k');
5379
x += addDeviceAttribute('Creation', new Date(user.creation).toLocaleString());
5380
if (user.login) x += addDeviceAttribute('Last Login', new Date(user.login).toLocaleString());
5378
-
5381
+
5382
x += '</table></div><br />';
5383
5384
// Add action buttons
@@ -5846,5 +5849,5 @@
5849
function validateEmail(v) { var emailReg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; return emailReg.test(v); }
5850
5851
</script>
5849
- </body>
5852
+</body>
5853
</html>
views/login-min.handlebars
new
+1
@@ -0,0 +1 @@
1
+<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <style>body{margin:0;padding:0;border:0;color:black;font-size:13px;font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;background-color:#d3d9d6;}#container{background-color:#fff;width:960px;min-width:960px;margin:0 auto;border-top:0;border-right:1px solid #b7b7b7;border-bottom:0;border-left:1px solid #b7b7b7;padding:0;}#masthead{width:auto;margin:0;padding:0;overflow:auto;text-align:right;background-color:#036;width:960px;}#column_l{position:relative;float:left;width:930px;margin:0;padding:0 15px;background-color:#fff;}#footer{clear:both;overflow:auto;width:100%;text-align:center;background-color:#113962;padding-top:5px;padding-bottom:5px;}#masthead img{float:left;}#masthead p{font-size:11px;color:#fff;margin:10px 10px 0;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}a{color:#036;text-decoration:underline;}.i1{background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i2{background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i3{background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i4{background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i5{background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i6{background:url(../images/icons50.png) -250px 0px;height:50px;width:50px;cursor:pointer;border:none;}.j1{background:url(../images/icons16.png) 0px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j2{background:url(../images/icons16.png) -16px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j3{background:url(../images/icons16.png) -32px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j4{background:url(../images/icons16.png) -48px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j5{background:url(../images/icons16.png) -64px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j6{background:url(../images/icons16.png) -80px 0px;height:16px;width:16px;cursor:pointer;border:none;}.m0{background :url(../images/images16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.m1{background :url(../images/images16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.m2{background :url(../images/images16.png) -96px 0px;height :16px;width :16px;border:none;float:left }.m3{background :url(../images/images16.png) -112px 0px;height :16px;width :16px;border:none;float:left }.si0{background :url(../images/icons16.png) 0px 0px;height :16px;width :16px;border:none;float:left }.si1{background :url(../images/icons16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.si2{background :url(../images/icons16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.si3{background :url(../images/icons16.png) -48px 0px;height :16px;width :16px;border:none;float:left }.si4{background :url(../images/icons16.png) -64px 0px;height :16px;width :16px;border:none;float:left }.mi{background :url(../images/meshicon50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none }#floatframe{position:fixed;top:200px;height:300px;z-index:200;display:none;}.style1{text-align:center;}.style2{text-align:center;background-color:#808080;font-weight:bold;}.style3{text-align:center;color:white;background-color:#808080;font-weight:bold;}.style4{color:white;text-decoration:none;}.style5{text-align:center;background-color:#808080;font-weight:normal;}.style6{text-align:center;background-color:#D3D9D6;}.style7{font-size:large;background-color:#FFFFFF;}.style10{background-color:#C9C9C9;}.style11{font-size:large;background-color:#C9C9C9;}.style14{text-align:left;background-color:#D3D9D6;}.auto-style1{text-align:right;background-color:#D3D9D6;}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;background-color:white;clear:both;}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.fsize{float:right;text-align:right;width:180px;}.g1{background-position:0% 0%;width:14px;height:100%;float:left; background-image:linear-gradient(to right, #ffffff 0%, #c9c9c9 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.g2{background-position:0% 0%;width:14px;height:100%;float:right; background-image:linear-gradient(to right, #c9c9c9 0%, #ffffff 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.h1{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #ffffff 0%, #d3d9d6 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.h2{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #d3d9d6 0%, #ffffff 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.e1{font-size:large;margin-top:4px;margin-bottom:3px;overflow:hidden;word-wrap:hyphenate;white-space:nowrap;text-overflow:ellipsis;}.e2{float:left;height:100%;width:201px;background-color:#c9c9c9;}.bar{font-size:large;background-color:#C9C9C9;height:24px;float:left;margin-bottom:2px;}.bar2{font-size:large;height:24px;float:left;margin-bottom:2px;}.bar18{font-size:large;background-color:#C9C9C9;height:18px;float:left;margin-bottom:2px;}.bar182{font-size:large;height:18px;float:left;margin-bottom:2px;}.devHeaderx{color:lightgray;}.DevSt{border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#DDDDDD;}.contextMenu{background:#F9F9F9;box-shadow:0 0 12px rgba( 0, 0, 0, .3 );border:1px solid #ccc; display:none;position:absolute;top:0;left:0;list-style:none;margin:0;padding:5px;min-width:100px;max-width:150px;z-index:500;}.cmtext{color:#444;display:inline-block;padding-left:8px;padding-right:8px;padding-top:5px;padding-bottom:5px;text-decoration:none;width:85%;cursor:default;overflow:hidden;position:relative;}.cmtext:hover{color:#f9f9f9;background:#444;}.gray{ filter:gray; -webkit-filter:grayscale(100%) opacity(60%); }.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.notifiyBox{position:absolute;z-index:1000;top:50px;right:26px;width:300px;text-align:left;background-color:#F0ECCD;border:4px solid #666;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:2px 2px 4px #888;-moz-box-shadow:2px 2px 4px #888;box-shadow:2px 2px 4px #888;max-height:200px;}.notifiyBox:before{content:' ';position:absolute;width:0;height:0;right:5px;top:-30px;border:15px solid;border-color:transparent #666 #666 transparent;}.notifiyBox:after{content:' ';position:absolute;width:0;height:0;right:7px;top:-24px;border:12px solid;border-color:transparent #F0ECCD #F0ECCD transparent;}.notification{width:100%;min-height:30px;}.notification:hover{background-color:#EFE8B6;}.deskToolsBar{padding:3px;}.deskToolsBar:hover{background-color:#EFE8B6;}.userTableHeader{border-bottom:1pt solid lightgray;padding-top:4px;padding-bottom:4px;}</style> <title>MeshCentral - Login</title> </head> <body onload="if (typeof(startup) !== 'undefined') startup();"> <div id="container" style="max-height:100vh"> <div id="mastheadx"></div> <div id="masthead" style="background:url(images/logoback.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:20px;padding-top:8px"> <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px"> <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> </div> <div id="page_content" style="max-height:calc(100vh-138px)"> <div id="column_l"> <h1>Welcome</h1> <p>Connect to your home or office devices from anywhere in the world using MeshCentral, the remote monitoring and management web site. You will need to download and install a special management agent on your computers. Once installed, each mesh enabled computer will show up in the "My Devices" section of this web site and you will be able to monitor them, power them on and off and take control of them.</p> <table style="width:100%"> <tr> <td style="width:500px" valign="top"> <img alt="" height="310" src="images/mainwelcome.png" width="359" style="margin-left:70px"> </td> <td> <div id="loginpanel" style="background-color:#979797;border-radius:16px;width:300px;padding:16px;text-align:center;display:none"> <form action="login" method="post"> <div id="message1"> {{{message}}} </div> <div> <b>Log In</b> </div> <table> <tr> <td align="right" width="100">Username:</td> <td><input id="username" type="text" maxlength="64" name="username" onchange="validateLogin(1)" onkeyup="validateLogin(1,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="password" type="password" maxlength="256" name="password" autocomplete="off" onchange="validateLogin(2)" onkeyup="validateLogin(2,event)"></td> </tr> <tr> <td><div id="showPassHintLink" style="display:none"><a onclick="showPassHint()" style="cursor:pointer">Show Hint</a></div></td> <td align="right"><input id="loginButton" type="submit" value="Log In" disabled="disabled"></td> </tr> </table> <div id="hrAccountDiv" style="display:none"><hr></div> <div id="resetAccountDiv" style="display:none;padding:2px"> Forgot username/password? <a onclick="xgo(3)" style="cursor:pointer">Reset account</a>. </div> <div id="newAccountDiv" style="display:none;padding:2px"> Don't have an account? <a onclick="xgo(2)" style="cursor:pointer">Create one</a>. </div> </form> </div> <div id="createpanel" style="background-color:#979797;border-radius:16px;width:300px;padding:16px;text-align:center;display:none"> <form action="createaccount" method="post"> <div id="message2"> {{{message}}} </div> <div> <b>Account Creation</b> </div> <table> <tr> <td id="nuUser" align="right" width="100">Username:</td> <td><input id="ausername" type="text" name="username" onchange="validateCreate(1)" maxlength="64" onkeydown="haltReturn(event)" onkeyup="validateCreate(1,event)"></td> </tr> <tr> <td id="nuEmail" align="right" width="100">Email:</td> <td><input id="aemail" type="text" name="email" onchange="validateCreate(2)" maxlength="256" onkeydown="haltReturn(event)" onkeyup="validateCreate(2,event)"></td> </tr> <tr> <td id="nuPass1" align="right">Password:</td> <td><input id="apassword1" type="password" name="password1" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(3)" onkeyup="validateCreate(3,event)"></td> </tr> <tr> <td id="nuPass2" align="right">Password:</td> <td><input id="apassword2" type="password" name="password2" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(4)" onkeyup="validateCreate(4,event)"></td> </tr> <tr> <td id="nuHint" align="right">Password Hint:</td> <td><input id="apasswordhint" type="text" name="apasswordhint" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(5)" onkeyup="validateCreate(5,event)"></td> </tr> <tr id="newAccountPass" title="Enter the account creation token"> <td id="nuToken" align="right">Creation Token:</td> <td><input id="anewaccountpass" type="password" name="anewaccountpass" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(6)" onkeyup="validateCreate(6,event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="createButton" type="submit" value="Create Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> <div id="resetpanel" style="background-color:#979797;border-radius:16px;width:300px;padding:16px;text-align:center;display:none"> <form action="resetaccount" method="post"> <div id="message3"> {{{message}}} </div> <div> <b>Account Reset</b> </div> <table> <tr> <td align="right" width="100">Email:</td> <td><input id="remail" type="text" name="email" maxlength="256" onchange="validateReset()" onkeyup="validateReset(event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="eresetButton" type="submit" value="Reset Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> </td> </tr> </table> <br> </div> <div id="footer"> <table cellpadding="0" cellspacing="10" style="width:100%"> <tr> <td style="text-align:left;color:white"> {{{footer}}} </td> <td style="text-align:right"> {{{rootCertLink}}} <a href="terms">Terms & Privacy</a> </td> </tr> </table> </div> </div> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:180px;width:400px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:20px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> </div> </div> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g," ")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function ObjectToStringEx2(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),e;while(e=b.shift()){c+=String.fromCharCode("0x"+e)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"®").replace(/\(TM\)/g,"™")}var passhint="{{{passhint}}}";var newAccountPass=parseInt("{{{newAccountPass}}}");var emailCheck=parseInt("{{{emailcheck}}}");var features=parseInt("{{{features}}}");function startup(){if((features&32)==0){var b=null;try{b=top.location.toString().toLowerCase()}catch(a){}if(top!=self&&(b==null||top.active==false)){top.location=self.location;return}}window.onresize=center;center();validateLogin();validateCreate();if("{{loginmode}}"!=""){go(parseInt("{{loginmode}}"))}else{go(1)}QV("newAccountDiv","{{{newAccount}}}"!="0");if((passhint!=null)&&(passhint.length>0)){QV("showPassHintLink",true)}QV("newAccountPass",(newAccountPass==1));QV("resetAccountDiv",(emailCheck==true));QV("hrAccountDiv",(emailCheck==true)||(newAccountPass==1))}function showPassHint(){messagebox("Password Hint",passhint)}function xgo(a){QV("message1",false);QV("message2",false);go(a)}function go(a){setDialogMode(0);QV("showPassHintLink",false);QV("loginpanel",a==1);QV("createpanel",a==2);QV("resetpanel",a==3);if(a==1){Q("username").focus()}if(a==2){Q("ausername").focus()}if(a==3){Q("remail").focus()}}function validateLogin(a,b){var c=((Q("username").value.length>0)&&(Q("username").value.indexOf(" ")==-1)&&(Q("password").value.length>0));QE("loginButton",c);setDialogMode(0);if((b!=null)&&(b.keyCode==13)){if(a==1){Q("password").focus()}else{if(a==2){Q("loginButton").click()}}}if(b!=null){haltEvent(b)}}function validateCreate(a,b){setDialogMode(0);var j=(Q("ausername").value.length>0)&&(Q("ausername").value.indexOf(" ")==-1);var c=(validateEmail(Q("aemail").value)==true);var g=(Q("apassword1").value.length>0);var h=(Q("apassword2").value.length>0)&&(Q("apassword2").value==Q("apassword1").value);var d=(newAccountPass==0)||(Q("anewaccountpass").value.length>0);var f=(j&&c&&g&&h&&d);QS("nuUser").color=j?"black":"#7b241c";QS("nuEmail").color=c?"black":"#7b241c";QS("nuPass1").color=g?"black":"#7b241c";QS("nuPass2").color=h?"black":"#7b241c";QS("nuToken").color=d?"black":"#7b241c";QE("createButton",f);if(Q("apassword1").value==""){QH("passWarning","")}else{var i=checkPasswordStrength(Q("apassword1").value);if(i>=80){QH("passWarning","<span style=color:green><b>Strong Password</b><span>")}else{if(i>=60){QH("passWarning","<span style=color:blue><b>Good Password</b><span>")}else{QH("passWarning","<span style=color:red><b>Weak Password</b><span>")}}}if((b!=null)&&(b.keyCode==13)){if(a==1){Q("aemail").focus()}if(a==2){Q("apassword1").focus()}if(a==3){Q("apassword2").focus()}if(a==4){Q("apasswordhint").focus()}if(a==5){if(newAccountPass==1){Q("anewaccountpass").focus()}else{Q("createButton").click()}}if(a==6){Q("createButton").click()}}if(b!=null){haltEvent(b)}}function validateReset(a){setDialogMode(0);var b=validateEmail(Q("remail").value);QE("eresetButton",b);if((a!=null)&&(a.keyCode==13)&&(b==true)){Q("eresetButton").click()}if(a!=null){haltEvent(a)}}function checkPasswordStrength(e){var f=0,d={},g=0,h={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e){return 0}for(var b=0;b<e.length;b++){d[e[b]]=(d[e[b]]||0)+1;f+=5/d[e[b]]}for(var a in h){g+=(h[a]==true)?1:0}return parseInt(f+(g-1)*10)}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;var xxcurrentView=0;function setDialogMode(j,k,a,e,d,h){xxdialogMode=j;xxdialogFunc=e;xxdialogButtons=a;xxdialogTag=h;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgButtonBar",a&7);if(k){QH("id_dialogtitle",k)}for(var g=1;g<24;g++){QV("dialog"+g,g==j)}QV("dialog",j);if(d){if(j==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(e){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||e)&&c){c(e,d)}}function center(){QS("dialog").left=((((getDocWidth()-400)/2))+"px")}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function haltReturn(a){if(a.keyCode==13){haltEvent(a)}}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)};</script></body></html>
\ No newline at end of file
views/login-mobile-min.handlebars
new
+1
@@ -0,0 +1 @@
1
+<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <title>MeshCentral - Login</title> <style> a{color:#036;text-decoration:underline;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}</style> </head> <body onload="if (typeof(startup) !== 'undefined') startup();" style="overflow-y:hidden;margin:0;padding:0;border:0;color:black;font-size:13px;font-family:\'Trebuchet MS\', Arial, Helvetica, sans-serif"> <div id="container"> <div id="mastheadx"></div> <div id="masthead" style="background-color:#036;background-repeat:no-repeat;height:50px;width:100%;overflow:hidden"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:10px;padding-top:6px"> <strong><font style="font-size:36px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:10px"> <strong><font style="font-size:12px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> </div> <div id="page_content" style="overflow-y:scroll;position:absolute;bottom:32px;top:50px;width:100%;display:flex;align-items:center"> <div id="column_l" style="padding:10px;width:100%"> <table style="width:100%"> <tr> <td align="center"> <div id="loginpanel" style="background-color:#979797;border-radius:16px;width:260px;padding:16px;text-align:center;clear:both;display:none"> <form action="login" method="post"> <div id="message1"> {{{message}}} </div> <div> <b>Log In</b> </div> <table> <tr> <td align="right" width="100">Username:</td> <td><input id="username" type="text" maxlength="64" name="username" onchange="validateLogin(1)" onkeyup="validateLogin(1,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="password" type="password" maxlength="256" name="password" autocomplete="off" onchange="validateLogin(2)" onkeyup="validateLogin(2,event)"></td> </tr> <tr> <td><div id="showPassHintLink" style="display:none"><a onclick="showPassHint()" style="cursor:pointer">Show Hint</a></div></td> <td align="right"><input id="loginButton" type="submit" value="Log In" disabled="disabled"></td> </tr> </table> <div id="hrAccountDiv" style="display:none"><hr></div> <div id="resetAccountDiv" style="display:none;padding:2px"> Forgot user/password? <a onclick="xgo(3)" style="cursor:pointer">Reset account</a>. </div> <div id="newAccountDiv" style="display:none;padding:2px"> Don't have an account? <a onclick="xgo(2)" style="cursor:pointer">Create one</a>. </div> </form> </div> <div id="createpanel" style="display:none"> <div style="background-color:#979797;border-radius:16px;width:260px;padding:16px;text-align:center;clear:both"> <form action="createaccount" method="post"> <div id="message2"> {{{message}}} </div> <div> <b>Account Creation</b> </div> <table> <tr> <td align="right" width="100">Username:</td> <td><input id="ausername" type="text" name="username" onchange="validateCreate(1)" maxlength="64" onkeydown="haltReturn(event)" onkeyup="validateCreate(1,event)"></td> </tr> <tr> <td align="right" width="100">Email:</td> <td><input id="aemail" type="text" name="email" onchange="validateCreate(2)" maxlength="256" onkeydown="haltReturn(event)" onkeyup="validateCreate(2,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="apassword1" type="password" name="password1" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(3)" onkeyup="validateCreate(3,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="apassword2" type="password" name="password2" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(4)" onkeyup="validateCreate(4,event)"></td> </tr> <tr> <td align="right">Pass Hint:</td> <td><input id="apasswordhint" type="text" name="apasswordhint" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(5)" onkeyup="validateCreate(5,event)"></td> </tr> <tr id="newAccountPass" title="Enter the account creation token"> <td align="right">Creation Token:</td> <td><input id="anewaccountpass" type="password" name="anewaccountpass" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(6)" onkeyup="validateCreate(6,event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="createButton" type="submit" value="Create Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> </div> <div id="resetpanel" style="background-color:#979797;border-radius:16px;width:260px;padding:16px;text-align:center;display:none;clear:both"> <form action="resetaccount" method="post"> <div id="message3"> {{{message}}} </div> <div> <b>Account Reset</b> </div> <table> <tr> <td align="right" width="100">Email:</td> <td><input id="remail" type="text" name="email" maxlength="256" onchange="validateReset()" onkeyup="validateReset(event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="eresetButton" type="submit" value="Reset Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> </td> </tr> </table> </div> </div> <div id="footer" style="height:32px;width:100%;text-align:center;background-color:#113962;position:absolute;bottom:0px"> <table cellpadding="0" cellspacing="6" style="width:100%"> <tr> <td style="text-align:left;color:white">{{{footer}}}</td> <td style="text-align:right">{{{rootCertLink}}} <a href="terms">Terms & Privacy</a></td> </tr> </table> </div> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:180px;width:400px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:20px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> </div> </div> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""").replace(/'/g,"'").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g," ")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function ObjectToStringEx2(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),e;while(e=b.shift()){c+=String.fromCharCode("0x"+e)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"®").replace(/\(TM\)/g,"™")}var passhint="{{{passhint}}}";var newAccountPass=parseInt("{{{newAccountPass}}}");var emailCheck=parseInt("{{{emailcheck}}}");var features=parseInt("{{{features}}}");function startup(){if((features&32)==0){var b=null;try{b=top.location.toString().toLowerCase()}catch(a){}if(top!=self&&(b==null||top.active==false)){top.location=self.location;return}}window.onresize=center;center();validateLogin();validateCreate();if("{{loginmode}}"!=""){go(parseInt("{{loginmode}}"))}else{go(1)}QV("newAccountDiv","{{{newAccount}}}"!="0");if((passhint!=null)&&(passhint.length>0)){QV("showPassHintLink",true)}QV("newAccountPass",(newAccountPass==1));QV("resetAccountDiv",(emailCheck==true));QV("hrAccountDiv",(emailCheck==true)||(newAccountPass==1))}function showPassHint(){messagebox("Password Hint",passhint)}function xgo(a){QV("message1",false);QV("message2",false);go(a)}function go(a){setDialogMode(0);QV("showPassHintLink",false);QV("loginpanel",a==1);QV("createpanel",a==2);QV("resetpanel",a==3);if(a==1){Q("username").focus()}if(a==2){Q("ausername").focus()}if(a==3){Q("remail").focus()}}function validateLogin(a,b){var c=((Q("username").value.length>0)&&(Q("username").value.indexOf(" ")==-1)&&(Q("password").value.length>0));QE("loginButton",c);setDialogMode(0);if((b!=null)&&(b.keyCode==13)){if(a==1){Q("password").focus()}else{if(a==2){Q("loginButton").click()}}}if(b!=null){haltEvent(b)}}function validateCreate(a,b){setDialogMode(0);var c=((Q("ausername").value.length>0)&&(Q("ausername").value.indexOf(" ")==-1)&&(validateEmail(Q("aemail").value)==true)&&(Q("apassword1").value.length>0)&&(Q("apassword2").value==Q("apassword1").value));if((newAccountPass==1)&&(Q("anewaccountpass").value.length==0)){c=false}QE("createButton",c);if(Q("apassword1").value==""){QH("passWarning","")}else{var d=checkPasswordStrength(Q("apassword1").value);if(d>=80){QH("passWarning","<span style=color:green><b>Strong Password</b><span>")}else{if(d>=60){QH("passWarning","<span style=color:blue><b>Good Password</b><span>")}else{QH("passWarning","<span style=color:red><b>Weak Password</b><span>")}}}if((b!=null)&&(b.keyCode==13)){if(a==1){Q("aemail").focus()}if(a==2){Q("apassword1").focus()}if(a==3){Q("apassword2").focus()}if(a==4){Q("apasswordhint").focus()}if(a==5){if(newAccountPass==1){Q("anewaccountpass").focus()}else{Q("createButton").click()}}if(a==6){Q("createButton").click()}}if(b!=null){haltEvent(b)}}function validateReset(a){setDialogMode(0);var b=validateEmail(Q("remail").value);QE("eresetButton",b);if((a!=null)&&(a.keyCode==13)&&(b==true)){Q("eresetButton").click()}if(a!=null){haltEvent(a)}}function checkPasswordStrength(e){var f=0,d={},g=0,h={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e){return 0}for(var b=0;b<e.length;b++){d[e[b]]=(d[e[b]]||0)+1;f+=5/d[e[b]]}for(var a in h){g+=(h[a]==true)?1:0}return parseInt(f+(g-1)*10)}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;var xxcurrentView=0;function setDialogMode(j,k,a,e,d,h){xxdialogMode=j;xxdialogFunc=e;xxdialogButtons=a;xxdialogTag=h;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgButtonBar",a&7);if(k){QH("id_dialogtitle",k)}for(var g=1;g<24;g++){QV("dialog"+g,g==j)}QV("dialog",j);if(d){if(j==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(e){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||e)&&c){c(e,d)}}function center(){QS("dialog").left=((((getDocWidth()-400)/2))+"px")}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function haltReturn(a){if(a.keyCode==13){haltEvent(a)}}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)};</script></body></html>
\ No newline at end of file
views/login-mobile.handlebars
+4
-4
@@ -175,9 +175,9 @@
175
</div>
176
<script>
177
var passhint = "{{{passhint}}}";
178
- var newAccountPass = {{{newAccountPass}}};
179
- var emailCheck = {{{emailcheck}}};
180
- var features = {{{features}}};
178
+ var newAccountPass = parseInt('{{{newAccountPass}}}');
179
+ var emailCheck = parseInt('{{{emailcheck}}}');
180
+ var features = parseInt('{{{features}}}');
181
182
function startup() {
183
if ((features & 32) == 0) {
@@ -191,7 +191,7 @@
191
center();
192
validateLogin();
193
validateCreate();
194
- if ('{{loginmode}}' != '') { go({{loginmode}}); } else { go(1); }
194
+ if ('{{loginmode}}' != '') { go(parseInt('{{loginmode}}')); } else { go(1); }
195
QV('newAccountDiv', '{{{newAccount}}}' != '0' );
196
if ((passhint != null) && (passhint.length > 0)) { QV("showPassHintLink", true); }
197
QV("newAccountPass", (newAccountPass == 1));
views/login.handlebars
+4
-4
@@ -169,9 +169,9 @@
169
</div>
170
<script>
171
var passhint = "{{{passhint}}}";
172
- var newAccountPass = {{{newAccountPass}}};
173
- var emailCheck = {{{emailcheck}}};
174
- var features = {{{features}}};
172
+ var newAccountPass = parseInt('{{{newAccountPass}}}');
173
+ var emailCheck = parseInt('{{{emailcheck}}}');
174
+ var features = parseInt('{{{features}}}');
175
176
function startup() {
177
if ((features & 32) == 0) {
@@ -185,7 +185,7 @@
185
center();
186
validateLogin();
187
validateCreate();
188
- if ('{{loginmode}}' != '') { go({{loginmode}}); } else { go(1); }
188
+ if ('{{loginmode}}' != '') { go(parseInt('{{loginmode}}')); } else { go(1); }
189
QV('newAccountDiv', '{{{newAccount}}}' != '0' );
190
if ((passhint != null) && (passhint.length > 0)) { QV("showPassHintLink", true); }
191
QV("newAccountPass", (newAccountPass == 1));
webserver.js
+26
-2
@@ -721,14 +721,38 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
721
// Send the master web application
722
if ((!obj.args.user) && (obj.args.nousers != true) && (nologout == false)) { logoutcontrol += ' <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>'; } // If a default user is in use or no user mode, don't display the logout button
723
var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified
724
- res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile' : 'views/default'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
724
+
725
+ if (obj.args.minify) {
726
+ // Try to server the minified version if we can.
727
+ try {
728
+ res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile-min' : 'views/default-min'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
729
+ } catch (ex) {
730
+ // In case of an exception, serve the non-minified version.
731
+ res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile' : 'views/default'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
732
+ }
733
+ } else {
734
+ // Serve non-minified version of web pages.
735
+ res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile' : 'views/default'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
736
+ }
737
} else {
738
// Send back the login application
739
var loginmode = req.session.loginmode, features = 0;
740
delete req.session.loginmode; // Clear this state, if the user hits refresh, we want to go back to the login page.
741
if ((parent.config != null) && (parent.config.settings != null) && (parent.config.settings.allowframing == true)) { features += 32; } // Allow site within iframe
742
var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified
731
- res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile' : 'views/login'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
743
+
744
+ if (obj.args.minify) {
745
+ // Try to server the minified version if we can.
746
+ try {
747
+ res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile-min' : 'views/login-min'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
748
+ } catch (ex) {
749
+ // In case of an exception, serve the non-minified version.
750
+ res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile' : 'views/login'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
751
+ }
752
+ } else {
753
+ // Serve non-minified version of web pages.
754
+ res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile' : 'views/login'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
755
+ }
756
757
/*
758
var xoptions = { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer };