jimmy 1 ano atrás
pai
commit
b092c08a7d
100 arquivos alterados com 57976 adições e 0 exclusões
  1. 3719 0
      android/css/bootstrap-grid.css
  2. 1 0
      android/css/bootstrap-grid.css.map
  3. 7 0
      android/css/bootstrap-grid.min.css
  4. 1 0
      android/css/bootstrap-grid.min.css.map
  5. 319 0
      android/css/bootstrap-reboot.css
  6. 1 0
      android/css/bootstrap-reboot.css.map
  7. 8 0
      android/css/bootstrap-reboot.min.css
  8. 1 0
      android/css/bootstrap-reboot.min.css.map
  9. 9887 0
      android/css/bootstrap.css
  10. 1 0
      android/css/bootstrap.css.map
  11. 7 0
      android/css/bootstrap.min.css
  12. 1 0
      android/css/bootstrap.min.css.map
  13. BIN
      android/image/Add.png
  14. BIN
      android/image/AddMsg.png
  15. BIN
      android/image/CasePut.png
  16. BIN
      android/image/DelMsg.png
  17. BIN
      android/image/Delete.png
  18. BIN
      android/image/Down.png
  19. BIN
      android/image/Edit.png
  20. BIN
      android/image/Gas.png
  21. BIN
      android/image/GetMgt.png
  22. BIN
      android/image/GroupAdd.png
  23. BIN
      android/image/Money.png
  24. BIN
      android/image/MsgList.png
  25. BIN
      android/image/MsgLog.png
  26. BIN
      android/image/MsgMgt.png
  27. BIN
      android/image/Note.png
  28. BIN
      android/image/NoteSet.png
  29. BIN
      android/image/OnePerson.png
  30. BIN
      android/image/Package.png
  31. BIN
      android/image/Records.png
  32. BIN
      android/image/Repair.png
  33. BIN
      android/image/Search.png
  34. BIN
      android/image/Table.png
  35. BIN
      android/image/TimeDs.png
  36. BIN
      android/image/TwoPerson.png
  37. BIN
      android/image/UpMsg.png
  38. BIN
      android/image/White.png
  39. BIN
      android/image/addorder.png
  40. BIN
      android/image/arrowiosback.png
  41. BIN
      android/image/back.png
  42. BIN
      android/image/bgreen.png
  43. BIN
      android/image/bgrey.png
  44. BIN
      android/image/qttitle.png
  45. 618 0
      android/index.html
  46. 1392 0
      android/index2.html
  47. 2108 0
      android/index3.html
  48. 1708 0
      android/index5.html
  49. 6818 0
      android/js/bootstrap.bundle.js
  50. 1 0
      android/js/bootstrap.bundle.js.map
  51. 7 0
      android/js/bootstrap.bundle.min.js
  52. 1 0
      android/js/bootstrap.bundle.min.js.map
  53. 4249 0
      android/js/bootstrap.js
  54. 1 0
      android/js/bootstrap.js.map
  55. 7 0
      android/js/bootstrap.min.js
  56. 1 0
      android/js/bootstrap.min.js.map
  57. 327 0
      android/js/canvas2image.js
  58. 7830 0
      android/js/html2canvas.js
  59. 2 0
      android/js/jquery-3.5.1.min.js
  60. 2 0
      android/js/jquery-qrcode-0.17.0.min.js
  61. 2143 0
      android/js/mqttws31.js
  62. 2 0
      android/js/mqttws31.min.js
  63. 1 0
      android/js/mqttws31.min.js.map
  64. 2395 0
      android/js/paho-mqtt.js
  65. 75 0
      android/js/paho-mqtt.min.js
  66. 200 0
      android/js/signature.js
  67. 182 0
      android/js/teacrypt.js
  68. 3719 0
      ios/css/bootstrap-grid.css
  69. 1 0
      ios/css/bootstrap-grid.css.map
  70. 7 0
      ios/css/bootstrap-grid.min.css
  71. 1 0
      ios/css/bootstrap-grid.min.css.map
  72. 319 0
      ios/css/bootstrap-reboot.css
  73. 1 0
      ios/css/bootstrap-reboot.css.map
  74. 8 0
      ios/css/bootstrap-reboot.min.css
  75. 1 0
      ios/css/bootstrap-reboot.min.css.map
  76. 9887 0
      ios/css/bootstrap.css
  77. 1 0
      ios/css/bootstrap.css.map
  78. 7 0
      ios/css/bootstrap.min.css
  79. 1 0
      ios/css/bootstrap.min.css.map
  80. BIN
      ios/image/Add.png
  81. BIN
      ios/image/AddMsg.png
  82. BIN
      ios/image/CasePut.png
  83. BIN
      ios/image/DelMsg.png
  84. BIN
      ios/image/Delete.png
  85. BIN
      ios/image/Down.png
  86. BIN
      ios/image/Edit.png
  87. BIN
      ios/image/Gas.png
  88. BIN
      ios/image/GetMgt.png
  89. BIN
      ios/image/GroupAdd.png
  90. BIN
      ios/image/Money.png
  91. BIN
      ios/image/MsgList.png
  92. BIN
      ios/image/MsgLog.png
  93. BIN
      ios/image/MsgMgt.png
  94. BIN
      ios/image/Note.png
  95. BIN
      ios/image/NoteSet.png
  96. BIN
      ios/image/OnePerson.png
  97. BIN
      ios/image/Package.png
  98. BIN
      ios/image/Records.png
  99. BIN
      ios/image/Repair.png
  100. 0 0
      ios/image/Search.png

Diferenças do arquivo suprimidas por serem muito extensas
+ 3719 - 0
android/css/bootstrap-grid.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/css/bootstrap-grid.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 7 - 0
android/css/bootstrap-grid.min.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/css/bootstrap-grid.min.css.map


+ 319 - 0
android/css/bootstrap-reboot.css Ver arquivo

@@ -0,0 +1,319 @@
1
+/*!
2
+ * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2018 The Bootstrap Authors
4
+ * Copyright 2011-2018 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
+ */
8
+*,
9
+*::before,
10
+*::after {
11
+  box-sizing: border-box;
12
+}
13
+
14
+html {
15
+  font-family: sans-serif;
16
+  line-height: 1.15;
17
+  -webkit-text-size-adjust: 100%;
18
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
19
+}
20
+
21
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
22
+  display: block;
23
+}
24
+
25
+body {
26
+  margin: 0;
27
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
28
+  font-size: 1rem;
29
+  font-weight: 400;
30
+  line-height: 1.5;
31
+  color: #212529;
32
+  text-align: left;
33
+  background-color: #fff;
34
+}
35
+
36
+[tabindex="-1"]:focus {
37
+  outline: 0 !important;
38
+}
39
+
40
+hr {
41
+  box-sizing: content-box;
42
+  height: 0;
43
+  overflow: visible;
44
+}
45
+
46
+h1, h2, h3, h4, h5, h6 {
47
+  margin-top: 0;
48
+  margin-bottom: 0.5rem;
49
+}
50
+
51
+p {
52
+  margin-top: 0;
53
+  margin-bottom: 1rem;
54
+}
55
+
56
+abbr[title],
57
+abbr[data-original-title] {
58
+  text-decoration: underline;
59
+  -webkit-text-decoration: underline dotted;
60
+  text-decoration: underline dotted;
61
+  cursor: help;
62
+  border-bottom: 0;
63
+  text-decoration-skip-ink: none;
64
+}
65
+
66
+address {
67
+  margin-bottom: 1rem;
68
+  font-style: normal;
69
+  line-height: inherit;
70
+}
71
+
72
+ol,
73
+ul,
74
+dl {
75
+  margin-top: 0;
76
+  margin-bottom: 1rem;
77
+}
78
+
79
+ol ol,
80
+ul ul,
81
+ol ul,
82
+ul ol {
83
+  margin-bottom: 0;
84
+}
85
+
86
+dt {
87
+  font-weight: 700;
88
+}
89
+
90
+dd {
91
+  margin-bottom: .5rem;
92
+  margin-left: 0;
93
+}
94
+
95
+blockquote {
96
+  margin: 0 0 1rem;
97
+}
98
+
99
+b,
100
+strong {
101
+  font-weight: bolder;
102
+}
103
+
104
+small {
105
+  font-size: 80%;
106
+}
107
+
108
+sub,
109
+sup {
110
+  position: relative;
111
+  font-size: 75%;
112
+  line-height: 0;
113
+  vertical-align: baseline;
114
+}
115
+
116
+sub {
117
+  bottom: -.25em;
118
+}
119
+
120
+sup {
121
+  top: -.5em;
122
+}
123
+
124
+a {
125
+  color: #007bff;
126
+  text-decoration: none;
127
+  background-color: transparent;
128
+}
129
+
130
+a:hover {
131
+  color: #0056b3;
132
+  text-decoration: underline;
133
+}
134
+
135
+a:not([href]):not([tabindex]) {
136
+  color: inherit;
137
+  text-decoration: none;
138
+}
139
+
140
+a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
141
+  color: inherit;
142
+  text-decoration: none;
143
+}
144
+
145
+a:not([href]):not([tabindex]):focus {
146
+  outline: 0;
147
+}
148
+
149
+pre,
150
+code,
151
+kbd,
152
+samp {
153
+  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
154
+  font-size: 1em;
155
+}
156
+
157
+pre {
158
+  margin-top: 0;
159
+  margin-bottom: 1rem;
160
+  overflow: auto;
161
+}
162
+
163
+figure {
164
+  margin: 0 0 1rem;
165
+}
166
+
167
+img {
168
+  vertical-align: middle;
169
+  border-style: none;
170
+}
171
+
172
+svg {
173
+  overflow: hidden;
174
+  vertical-align: middle;
175
+}
176
+
177
+table {
178
+  border-collapse: collapse;
179
+}
180
+
181
+caption {
182
+  padding-top: 0.75rem;
183
+  padding-bottom: 0.75rem;
184
+  color: #6c757d;
185
+  text-align: left;
186
+  caption-side: bottom;
187
+}
188
+
189
+th {
190
+  text-align: inherit;
191
+}
192
+
193
+label {
194
+  display: inline-block;
195
+  margin-bottom: 0.5rem;
196
+}
197
+
198
+button {
199
+  border-radius: 0;
200
+}
201
+
202
+button:focus {
203
+  outline: 1px dotted;
204
+  outline: 5px auto -webkit-focus-ring-color;
205
+}
206
+
207
+input,
208
+button,
209
+select,
210
+optgroup,
211
+textarea {
212
+  margin: 0;
213
+  font-family: inherit;
214
+  font-size: inherit;
215
+  line-height: inherit;
216
+}
217
+
218
+button,
219
+input {
220
+  overflow: visible;
221
+}
222
+
223
+button,
224
+select {
225
+  text-transform: none;
226
+}
227
+
228
+button,
229
+[type="button"],
230
+[type="reset"],
231
+[type="submit"] {
232
+  -webkit-appearance: button;
233
+}
234
+
235
+button::-moz-focus-inner,
236
+[type="button"]::-moz-focus-inner,
237
+[type="reset"]::-moz-focus-inner,
238
+[type="submit"]::-moz-focus-inner {
239
+  padding: 0;
240
+  border-style: none;
241
+}
242
+
243
+input[type="radio"],
244
+input[type="checkbox"] {
245
+  box-sizing: border-box;
246
+  padding: 0;
247
+}
248
+
249
+input[type="date"],
250
+input[type="time"],
251
+input[type="datetime-local"],
252
+input[type="month"] {
253
+  -webkit-appearance: listbox;
254
+}
255
+
256
+textarea {
257
+  overflow: auto;
258
+  resize: vertical;
259
+}
260
+
261
+fieldset {
262
+  min-width: 0;
263
+  padding: 0;
264
+  margin: 0;
265
+  border: 0;
266
+}
267
+
268
+legend {
269
+  display: block;
270
+  width: 100%;
271
+  max-width: 100%;
272
+  padding: 0;
273
+  margin-bottom: .5rem;
274
+  font-size: 1.5rem;
275
+  line-height: inherit;
276
+  color: inherit;
277
+  white-space: normal;
278
+}
279
+
280
+progress {
281
+  vertical-align: baseline;
282
+}
283
+
284
+[type="number"]::-webkit-inner-spin-button,
285
+[type="number"]::-webkit-outer-spin-button {
286
+  height: auto;
287
+}
288
+
289
+[type="search"] {
290
+  outline-offset: -2px;
291
+  -webkit-appearance: none;
292
+}
293
+
294
+[type="search"]::-webkit-search-decoration {
295
+  -webkit-appearance: none;
296
+}
297
+
298
+::-webkit-file-upload-button {
299
+  font: inherit;
300
+  -webkit-appearance: button;
301
+}
302
+
303
+output {
304
+  display: inline-block;
305
+}
306
+
307
+summary {
308
+  display: list-item;
309
+  cursor: pointer;
310
+}
311
+
312
+template {
313
+  display: none;
314
+}
315
+
316
+[hidden] {
317
+  display: none !important;
318
+}
319
+/*# sourceMappingURL=bootstrap-reboot.css.map */

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/css/bootstrap-reboot.css.map


+ 8 - 0
android/css/bootstrap-reboot.min.css Ver arquivo

@@ -0,0 +1,8 @@
1
+/*!
2
+ * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2018 The Bootstrap Authors
4
+ * Copyright 2011-2018 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
+ */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
8
+/*# sourceMappingURL=bootstrap-reboot.min.css.map */

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/css/bootstrap-reboot.min.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 9887 - 0
android/css/bootstrap.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/css/bootstrap.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 7 - 0
android/css/bootstrap.min.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/css/bootstrap.min.css.map


BIN
android/image/Add.png Ver arquivo


BIN
android/image/AddMsg.png Ver arquivo


BIN
android/image/CasePut.png Ver arquivo


BIN
android/image/DelMsg.png Ver arquivo


BIN
android/image/Delete.png Ver arquivo


BIN
android/image/Down.png Ver arquivo


BIN
android/image/Edit.png Ver arquivo


BIN
android/image/Gas.png Ver arquivo


BIN
android/image/GetMgt.png Ver arquivo


BIN
android/image/GroupAdd.png Ver arquivo


BIN
android/image/Money.png Ver arquivo


BIN
android/image/MsgList.png Ver arquivo


BIN
android/image/MsgLog.png Ver arquivo


BIN
android/image/MsgMgt.png Ver arquivo


BIN
android/image/Note.png Ver arquivo


BIN
android/image/NoteSet.png Ver arquivo


BIN
android/image/OnePerson.png Ver arquivo


BIN
android/image/Package.png Ver arquivo


BIN
android/image/Records.png Ver arquivo


BIN
android/image/Repair.png Ver arquivo


BIN
android/image/Search.png Ver arquivo


BIN
android/image/Table.png Ver arquivo


BIN
android/image/TimeDs.png Ver arquivo


BIN
android/image/TwoPerson.png Ver arquivo


BIN
android/image/UpMsg.png Ver arquivo


BIN
android/image/White.png Ver arquivo


BIN
android/image/addorder.png Ver arquivo


BIN
android/image/arrowiosback.png Ver arquivo


BIN
android/image/back.png Ver arquivo


BIN
android/image/bgreen.png Ver arquivo


BIN
android/image/bgrey.png Ver arquivo


BIN
android/image/qttitle.png Ver arquivo


+ 618 - 0
android/index.html Ver arquivo

@@ -0,0 +1,618 @@
1
+<html>
2
+<head>
3
+    <meta charset="utf-8">
4
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+  
8
+<script src="js/mqttws31.min.js" type="text/javascript"></script>
9
+    <script src="js/jquery-3.5.1.min.js"></script>
10
+			<script type="text/javascript">
11
+		 
12
+	window.addEventListener( "pageshow",function ( event ) {
13
+  var historyTraversal = event.persisted || 
14
+                         ( typeof window.performance != "undefined" && 
15
+                              window.performance.navigation.type === 2 );
16
+  if ( historyTraversal ) {
17
+    // Handle page restore.
18
+    window.location.reload();
19
+  }
20
+});
21
+ </script>
22
+<script type="text/javascript">
23
+
24
+
25
+ var CID = '';
26
+  var ID = '';
27
+  var PW = '';
28
+    var TYPE = '';
29
+var client;
30
+var isconn=false;
31
+var vmqtt='';
32
+var SN='';
33
+var SubID='';
34
+var myclientid='';
35
+    var callist = '';
36
+	 var isget = false;
37
+	 var webSocket;
38
+	 var  isget2=false;
39
+	 var vsn='';
40
+	 //var vii=1;
41
+function init() 
42
+{
43
+try
44
+{
45
+//alert('test version 2023-5-17 001 ');
46
+//updateOutput('init');
47
+ 
48
+    CID = getUrlParameter('CID');
49
+    ID = getUrlParameter('ID');
50
+	PW= getUrlParameter('PW');
51
+	TYPE= getUrlParameter('TYPE');
52
+	SN = getUrlParameter('SN');
53
+	vmqtt = getUrlParameter('MQTT');
54
+	SubID = getUrlParameter('SubID');
55
+	//alert(SubID);
56
+	/*
57
+	CID = '886999000230';
58
+    ID = '00000000';
59
+	PW= 'CMM87krWqj8Ltt00';
60
+	TYPE='IOS';
61
+	SN='2501100080027';
62
+	MQTT='aws.gigatech.tw';
63
+	*/
64
+ // updateOutput('CID='+CID);
65
+ // updateOutput('ID='+ID);
66
+//   updateOutput('PW='+PW);
67
+//updateOutput('TYPE='+TYPE);
68
+ if (TYPE=='ANDROID')
69
+		{
70
+		 
71
+       connect();
72
+		} 
73
+		
74
+		 if (TYPE=='IOS')
75
+		{
76
+		
77
+		
78
+          
79
+  var vivi = 0;
80
+  var intervalID  =   setInterval(() => {
81
+   
82
+	 if (isget)
83
+	 {
84
+	// break;
85
+	 }
86
+	 else
87
+	 {
88
+	  
89
+	   if (vivi>5)
90
+	   {
91
+	     clearInterval(intervalID);
92
+	   alert('連線異常');
93
+	   }
94
+	   else
95
+	   {
96
+	    vivi++;
97
+	   getdoorlist() ;
98
+	   }
99
+      //  vii++;
100
+	}
101
+  }, 400);
102
+  
103
+  
104
+		}
105
+
106
+
107
+
108
+		//myclientid="Giga8869990002301";
109
+		//myclientid="Giga"+CID+"1";
110
+		//myclientid="Giga"+CID+"1-"+ parseInt(Math.random() * 100000000, 10);
111
+		myclientid="Giga"+CID+"1-"+ SubID;
112
+		client = new Paho.MQTT.Client(vmqtt, Number(8083), myclientid);
113
+		//client = new Paho.MQTT.Client("aws.gigatech.tw", Number(8083), myclientid);
114
+		client.onMessageArrived = onMessageArrived;
115
+			client.onConnectionLost = onConnectionLost; 
116
+	   client.connect( {onSuccess: onConnect, onFailure : onFailedConnect,timeout: 6,keepAliveInterval: 30});
117
+
118
+}catch(e)
119
+{
120
+alert(e);
121
+}
122
+}
123
+function onConnectionLost(message) 
124
+{
125
+updateOutput('onConnectionLost');
126
+ client.connect( {onSuccess: onConnect, onFailure : onFailedConnect,timeout: 6,keepAliveInterval: 30});
127
+ //client.connect( {onSuccess: onConnect, onFailure : onFailedConnect});
128
+}
129
+function onMessageArrived(message) 
130
+{
131
+//alert(message.payloadString);
132
+var errda = message.payloadString;
133
+//isget=true;
134
+isget2=true;
135
+var vobj = JSON.parse( errda); 		
136
+var jsonString = "{\"action\":\"decode\", \"serial\":\"002\",\"data\":\""+vobj.data+"\"}";
137
+       //  updateOutput('onMessageArrived');
138
+//	updateOutput('----------------------------------------------');
139
+//	updateOutput(jsonString);
140
+		vsn='002';
141
+        /// "WebToApp". 為我們和前端開發人員的約定
142
+		if (TYPE=='IOS')
143
+		{
144
+        window.webkit.messageHandlers.WebToApp.postMessage(jsonString);
145
+		}
146
+       if (TYPE=='ANDROID')
147
+		{
148
+        webSocket.send(jsonString);
149
+		}
150
+
151
+}
152
+function onFailedConnect() 
153
+{
154
+//alert('連線異常');
155
+ updateOutput('onFailedConnect');
156
+}
157
+function onConnect() 
158
+{
159
+    //client.subscribe('Reserve8869990002301');
160
+	client.subscribe('Reserve'+CID+'1-'+SubID);
161
+	 updateOutput('onConnect');
162
+	 isconn=true;
163
+	//alert('c');
164
+}
165
+
166
+ 
167
+
168
+</script>
169
+   <title>預約 QR Code</title>
170
+    <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
171
+   </head>
172
+
173
+<body class="text-center" onload="init()">
174
+ <div id="cardadmin" class="card" style="box-shadow:  0px 0px 1px 1px rgba(0,0,0,0.1);margin: 21px 20px 0;"> 
175
+       <div style="margin: 0 0 0 0;background-color:#dcdcdc;" ><div style="margin: 10px 35px 10px 10px;" ><img  src="image/qttitle.png" width="40" height="40"  ><button id="btn100"  style="outline:none;line-height:40px;vertical-align: middle;  text-align: left;width:80%;border:0px white none;background-color:#dcdcdc;font-family:Roboto_Light;font-size:24px;color:#646464;height:42px;">預約 QR Code</button></div></div>
176
+	    <div style="width: 100%;">	 
177
+ <button id="addneworder" style="border-color: #dcdcdc;border-width: 1px;width: 95%;
178
+  height: 56px; 
179
+  margin: 10px 0px 10px 0px ;
180
+  padding: 11px 0 22px;
181
+  border-radius: 3px;
182
+  font-family:Roboto_Light;font-size:24px;color:#646464;
183
+  background-color: #e6e6e6;" onclick="Addpay99()" >
184
+  電腦密碼設定 <img src="image/TwoPerson.png" width="40" height="40" style=" margin: -8px 0px 0px 10px ;" alt=""/></button></div>
185
+  
186
+  
187
+  <div id="doorlist"  >
188
+    
189
+</div>
190
+   
191
+ </div>
192
+
193
+
194
+<div>
195
+   
196
+</div>
197
+<div>
198
+ 
199
+ <div>
200
+   V.231222-1
201
+</div>  
202
+  
203
+<div id="output" style="display:none">
204
+    <h2>Output</h2>
205
+</div>
206
+
207
+ <script type="text/javascript">
208
+  function Addpay99()
209
+ {
210
+ 
211
+ document.location = "index5.html?CID="+CID+"&PW="+PW+"&TYPE="+TYPE+"&SN="+SN+"&MQTT="+vmqtt+"&SubID="+SubID; 
212
+
213
+ }
214
+ 	function getdoorlist() 
215
+	 {
216
+
217
+	 var vt=new Date().format("yyyy/MM/dd_HH:mm:ss")
218
+	
219
+	 
220
+	    //var edata ="{\"action\":\"mqttqueryCallList\",\"data\":{\"Command\":\"PassWord=CMM87krWqj8Ltt00\",\"SerialNo\":\"Reserve8869990002301\",\"TimeStamp\":\""+vt+"\",\"Token\":\"Gigatech23634857\"}}";
221
+	   
222
+      // var edata ="{\"action\":\"mqttqueryCallList\",\"data\":{\"Command\":\"PassWord=CMM87krWqj8Ltt00\",\"SerialNo\":\"Reserve"+CID+"1-"+SubID+"\",\"TimeStamp\":\""+vt+"\",\"Token\":\"Gigatech23634857\"}}";
223
+	   
224
+	   var edata ="{\"action\":\"mqttqueryCallList\",\"data\":{\"Command\":\"PassWord="+PW+"\",\"SerialNo\":\"Reserve"+CID+"1-"+SubID+"\",\"TimeStamp\":\""+vt+"\",\"Token\":\"Gigatech23634857\"}}";
225
+	    
226
+	   var jsonString = "{\"action\":\"encode\", \"serial\":\"001\",\"data\":"+edata+"}";
227
+			vsn='001';
228
+      //  updateOutput(jsonString);
229
+			 
230
+		if (TYPE=='IOS')
231
+		{
232
+        window.webkit.messageHandlers.WebToApp.postMessage(jsonString);
233
+		}
234
+	
235
+		if (TYPE=='ANDROID')
236
+		{
237
+		  webSocket.send(jsonString);
238
+		  /*
239
+		  isget=false;
240
+		 setTimeout(() => {
241
+	 if (isget)
242
+	 {
243
+	 }else
244
+	 {
245
+		}
246
+		}, 500);
247
+	 */
248
+	 
249
+	
250
+	}
251
+ }
252
+ 
253
+ </script>
254
+ <script type="text/javascript">
255
+    
256
+    var input = document.getElementById("input")
257
+    var output = document.getElementById("output");
258
+	var vdata="";
259
+	var isok=true;
260
+	
261
+   
262
+    //var wsUrl = "ws://localhost:2980/";
263
+
264
+	// var wsUrl = "ws://192.168.0.25:2980/";
265
+	  var wsUrl = "ws://127.0.0.1:2980/";
266
+		
267
+	  function connect() {
268
+	 
269
+      // open the connection if one does not exist
270
+      if (webSocket !== undefined && webSocket.readyState !== WebSocket.CLOSED) {
271
+	     updateOutput('webSocket fail');
272
+        return;
273
+		  
274
+      }
275
+
276
+     // updateOutput("Trying to establish a WebSocket connection to <code>" + wsUrl + "</code>");
277
+
278
+      // Create a websocket
279
+      webSocket = new WebSocket(wsUrl);
280
+      webSocket.onopen = function(event) {
281
+	  
282
+      //  updateOutput("Connected!");
283
+       
284
+       
285
+		//  getdoorlist() ; 
286
+		//isget=false;
287
+		var vivi = 0;
288
+		
289
+   var intervalID  =   setInterval(() => {
290
+	 if (isget)
291
+	 {
292
+	// break;
293
+	 }
294
+	 else
295
+	 {
296
+
297
+	  
298
+	   if (vivi>15)
299
+	   {
300
+	   updateOutput('vivi 6');
301
+	     clearInterval(intervalID);
302
+	   alert('連線異常');
303
+	 
304
+	   }
305
+	   else
306
+	   {
307
+	    vivi++;
308
+		  updateOutput('call webSocket send msg');
309
+		  if (isconn)
310
+		  {
311
+		   getdoorlist() ;
312
+		  }
313
+	  
314
+	   }
315
+      //  vii++;
316
+	}
317
+  }, 400);
318
+  
319
+		 
320
+      };
321
+
322
+      webSocket.onmessage = function(event) 
323
+	  {
324
+	    updateOutput('webSocket return msg');
325
+	 // alert(event.data);
326
+	     if (vsn=='002')
327
+		 {
328
+		  var ress = event.data;
329
+		  //alert('ress='+ress);
330
+		//  ress=ress.replace(/[^a-z0-9\s]/gi, 'a').replace(/[_\s]/g, '-');
331
+		 // ress=ress+"}";
332
+		// alert('webSocket finish');
333
+		//  alert('retry'+vii);
334
+		 // ress= ress.substring(1300,ress.length);
335
+		 //alert( ress.substring(1300,ress.length));
336
+		 //  alert( event.data.trim().substring(1300,event.data.length) );
337
+		  callist.innerHTML ='';
338
+		 try
339
+		 {
340
+		 var vobj = JSON.parse(ress); 
341
+  callist = vobj.data.data.calllist;
342
+//alert(callist.length);
343
+ for (i=0;i<callist.length;i++)
344
+ {
345
+ var kk = callist[i].split(';');
346
+ var tttxt='';
347
+		//alert(kk[0]);
348
+		if (kk[4].length!=0)
349
+		{
350
+		// alert(kk[4]);
351
+		tttxt=kk[4];
352
+		}
353
+		else
354
+		{
355
+		//  alert(kk[0]);
356
+		tttxt=kk[0];
357
+		}
358
+		if (kk[0].startsWith('000'))
359
+		{
360
+		}else
361
+		{
362
+		doorlist.innerHTML =doorlist.innerHTML+'<div style="margin: 10px 35px 0px -14px;"><button id="doorsin'+i+'" style="line-height:28px;vertical-align: middle;  text-align: left;width:80%;border:0px white none;background-color:white;font-family:Roboto_Light;font-size:24px;outline:none;color:#646464;height:28px;" onclick="btnitemback2(\''+i+'\')">'+tttxt+'</button></div><br>';
363
+	
364
+		}
365
+		
366
+ //doorlist.innerHTML =doorlist.innerHTML+ '<div style="margin: 10px 35px 10px -18px;" ><button id="'+i+' style="line-height:40px;vertical-align: middle;  text-align: left;width:80%;border:0px white none;background-color:white;font-family:Roboto_Light;font-size:24px;outline:none;color:#646464;height:42px;" onclick="btnGGTT('SingPush.html')">'+tttxt+'</button> </div>";
367
+		
368
+	}
369
+		// var sevobj = JSON.parse( vobj); 
370
+        //  alert( sevobj.data);
371
+		 
372
+		 }catch(e)
373
+		 {
374
+		 //alert(e);
375
+		 }
376
+		 }
377
+	     if (vsn=='001')
378
+		 {
379
+		 try
380
+		 {
381
+		  //alert( event.data );
382
+		  var ress = event.data;
383
+		isget=true;
384
+		   var vobj = JSON.parse( ress); 		 
385
+		
386
+		   vdata = "{\"encrypt\":\"1\",\"data\":\""+vobj.data+"\"}";
387
+}catch(e)
388
+{
389
+alert(e);
390
+}		 
391
+        //   updateOutput('---------------------------');
392
+		//  updateOutput(vdata);
393
+		  updateOutput('mqtt send before');
394
+		  isget2=false;
395
+		 var payload =vdata;
396
+	var message = new Paho.MQTT.Message(payload);
397
+   // message.destinationName = '2501100080027' ;
398
+	 message.destinationName = SN ;
399
+	 	message.qos = 2;
400
+message.retained = false;
401
+  
402
+	 var vivi=0;
403
+	 var intervalID  =   setInterval(() => {
404
+	 if (isget2)
405
+	 {
406
+	// break;
407
+	 }
408
+	 else
409
+	 {
410
+	 
411
+	   if (vivi>5)
412
+	   {
413
+	   clearInterval(intervalID);
414
+	   alert('連線異常');
415
+
416
+	   }
417
+	   else
418
+	   {
419
+	     vivi++;
420
+		   updateOutput('mqtt send');
421
+	  client.send(message);
422
+	   }
423
+      //  vii++;
424
+	}
425
+  }, 400);
426
+	 
427
+	 
428
+	 
429
+    
430
+		 
431
+		 }
432
+	//	   updateOutput('------------xxx------------');
433
+		//  	  updateOutput(event.data);
434
+		
435
+      };
436
+
437
+      webSocket.onclose = function(event) {
438
+      updateOutput("Connection Closed");
439
+      
440
+       // sendBtn.disabled = true;
441
+      };
442
+    }
443
+ 
444
+ 
445
+ 
446
+
447
+    function AppToWeb(message) {
448
+    
449
+	 if (vsn=='002')
450
+		 {
451
+		  var ress = message;
452
+		 // alert('ress='+ress);
453
+		  callist.innerHTML ='';
454
+		 try
455
+		 {
456
+		 var vobj = JSON.parse(ress); 
457
+  callist =   vobj.data.data.calllist;
458
+ 
459
+ for (i=0;i<callist.length;i++)
460
+ {
461
+ var kk = callist[i].split(';');
462
+ var tttxt='';
463
+		 
464
+		if (kk[4].length!=0)
465
+		{
466
+	 
467
+		tttxt=kk[4];
468
+		}
469
+		else
470
+		{
471
+		 
472
+		tttxt=kk[0];
473
+		}
474
+		if (kk[0].startsWith('000'))
475
+		{
476
+		}else
477
+		{
478
+		doorlist.innerHTML =doorlist.innerHTML+'<div style="margin: 10px 35px 0px -14px;"><button id="doorsin'+i+'" style="line-height:28px;vertical-align: middle;  text-align: left;width:80%;border:0px white none;background-color:white;font-family:Roboto_Light;font-size:24px;outline:none;color:#646464;height:28px;" onclick="btnitemback2(\''+i+'\')">'+tttxt+'</button></div><br>';
479
+	
480
+		}
481
+		 
482
+	}
483
+		 
484
+		 
485
+		 }catch(e)
486
+		 {
487
+		 alert(e);
488
+		 }
489
+		 }
490
+	     if (vsn=='001')
491
+		 {
492
+		 try
493
+		 {
494
+		 isget=true;
495
+		  var ress = message;
496
+		 
497
+		   var vobj = JSON.parse( ress); 		 
498
+		
499
+		   vdata = "{\"encrypt\":\"1\",\"data\":\""+vobj.data+"\"}";
500
+}catch(e)
501
+{
502
+alert(e);
503
+}		 
504
+      
505
+     var payload =vdata;
506
+	 var message = new Paho.MQTT.Message(payload);
507
+     // message.destinationName = '2501100080027' ;
508
+	 message.destinationName = SN ;
509
+		message.qos = 2;
510
+message.retained = false;
511
+     client.send(message);
512
+		 
513
+		 }
514
+	
515
+	
516
+        return "Got it"
517
+    }
518
+
519
+   
520
+
521
+    function decode() {
522
+        var text = input.value;
523
+        var jsonString = "{\"action\":\"decode\", \"serial\":\"001\",\"data\":\""+text+"\"}";
524
+      //  updateOutput(jsonString);
525
+        /// "WebToApp". 為我們和前端開發人員的約定
526
+		if (TYPE=='IOS')
527
+		{
528
+        window.webkit.messageHandlers.AppToWeb.postMessage(jsonString);
529
+		}
530
+       if (TYPE=='ANDROID')
531
+		{
532
+        webSocket.send(jsonString);
533
+		}
534
+    }
535
+	
536
+	 
537
+
538
+    function updateOutput(text) {
539
+      output.innerHTML += "<br/>" + text;
540
+    }
541
+	
542
+	
543
+    </script>
544
+	
545
+	<script type="text/javascript">
546
+function btnitemback2(i)
547
+{
548
+var vk = callist[i].split(';');
549
+var tttxt='';
550
+		// alert(callist[i]);
551
+		if (vk[4].length!=0)
552
+		{
553
+		// alert(kk[4]);
554
+		tttxt=vk[4];
555
+		}
556
+		else
557
+		{
558
+		//  alert(kk[0]);
559
+		tttxt=vk[0];
560
+		}
561
+//alert(vk[0]+' '+vk[7]);
562
+ document.location = "index2.html?KID="+vk[0]+"&name="+tttxt+"&CID="+CID+"&ID="+vk[0]+"&PW="+PW+"&TYPE="+TYPE+"&SN="+SN+"&MQTT="+vmqtt+"&SubID="+SubID; 
563
+}
564
+ </script>
565
+	<script>  
566
+    var getUrlParameter = function getUrlParameter(sParam) {
567
+    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
568
+        sURLVariables = sPageURL.split('&'),
569
+        sParameterName,
570
+        i;
571
+
572
+    for (i = 0; i < sURLVariables.length; i++) {
573
+        sParameterName = sURLVariables[i].split('=');
574
+
575
+        if (sParameterName[0] === sParam) {
576
+            return sParameterName[1] === undefined ? true : sParameterName[1];
577
+        }
578
+    }
579
+};
580
+
581
+Date.prototype.format = function (format) {
582
+    //eg:format="yyyy-MM-dd hh:mm:ss";
583
+
584
+    if (!format) {
585
+        format = "yyyy-MM-dd hh:mm:ss";
586
+    }
587
+
588
+    var o = {
589
+        "M+": this.getMonth() + 1,  // month
590
+        "d+": this.getDate(),       // day
591
+        "H+": this.getHours(),      // hour
592
+        "h+": this.getHours(),      // hour
593
+        "m+": this.getMinutes(),    // minute
594
+        "s+": this.getSeconds(),    // second
595
+        "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
596
+        "S": this.getMilliseconds()
597
+    };
598
+
599
+    if (/(y+)/.test(format)) {
600
+        format = format.replace(RegExp.$1, (this.getFullYear() + "")
601
+            .substr(4 - RegExp.$1.length));
602
+    }
603
+
604
+    for (var k in o) {
605
+        if (new RegExp("(" + k + ")").test(format)) {
606
+            format = format.replace(RegExp.$1, RegExp.$1.length == 1
607
+                ? o[k]
608
+                : ("00" + o[k]).substr(("" + o[k]).length));
609
+        }
610
+    }
611
+
612
+    return format;
613
+};
614
+</script> 
615
+<br> 
616
+</body>
617
+
618
+</html>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1392 - 0
android/index2.html


Diferenças do arquivo suprimidas por serem muito extensas
+ 2108 - 0
android/index3.html


Diferenças do arquivo suprimidas por serem muito extensas
+ 1708 - 0
android/index5.html


Diferenças do arquivo suprimidas por serem muito extensas
+ 6818 - 0
android/js/bootstrap.bundle.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/js/bootstrap.bundle.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 7 - 0
android/js/bootstrap.bundle.min.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/js/bootstrap.bundle.min.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 4249 - 0
android/js/bootstrap.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/js/bootstrap.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 7 - 0
android/js/bootstrap.min.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/js/bootstrap.min.js.map


+ 327 - 0
android/js/canvas2image.js Ver arquivo

@@ -0,0 +1,327 @@
1
+/**
2
+ * covert canvas to image
3
+ * and save the image file
4
+ */
5
+const Canvas2Image = (function () {
6
+    // check if support sth.
7
+    const $support = (function () {
8
+        const canvas = document.createElement("canvas"),
9
+            ctx = canvas.getContext("2d");
10
+
11
+        return {
12
+            canvas: !!ctx,
13
+            imageData: !!ctx.getImageData,
14
+            dataURL: !!canvas.toDataURL,
15
+            btoa: !!window.btoa,
16
+        };
17
+    })();
18
+
19
+    const downloadMime = "image/octet-stream";
20
+
21
+    function scaleCanvas(canvas, width, height) {
22
+        const w = canvas.width,
23
+            h = canvas.height;
24
+        if (width === undefined) {
25
+            width = w;
26
+        }
27
+        if (height === undefined) {
28
+            height = h;
29
+        }
30
+
31
+        let retCanvas = document.createElement("canvas");
32
+        let retCtx = retCanvas.getContext("2d");
33
+        retCanvas.width = width;
34
+        retCanvas.height = height;
35
+        retCtx.drawImage(canvas, 0, 0, w, h, 0, 0, width, height);
36
+        return retCanvas;
37
+    }
38
+
39
+    function getDataURL(canvas, type, width, height) {
40
+        canvas = scaleCanvas(canvas, width, height);
41
+        return canvas.toDataURL(type);
42
+    }
43
+
44
+    // save file to local with file name and file type
45
+    function saveFile(strData, fileType, fileName = "name") {
46
+        // document.location.href = strData;
47
+        let saveLink = document.createElement("a");
48
+        // download file name
49
+        saveLink.download = fileName + "." + fileType;
50
+        // download file data
51
+        saveLink.href = strData;
52
+        // start download
53
+        saveLink.click();
54
+    }
55
+
56
+    function genImage(strData) {
57
+        let img = document.createElement("img");
58
+        img.src = strData;
59
+        return img;
60
+    }
61
+
62
+    function fixType(type) {
63
+        type = type.toLowerCase().replace(/jpg/i, "jpeg");
64
+        const r = type.match(/png|jpeg|bmp|gif/)[0];
65
+        return "image/" + r;
66
+    }
67
+
68
+    function encodeData(data) {
69
+        if (!window.btoa) {
70
+            // eslint-disable-next-line no-throw-literal
71
+            throw "btoa undefined";
72
+        }
73
+        let str = "";
74
+        if (typeof data == "string") {
75
+            str = data;
76
+        } else {
77
+            for (let i = 0; i < data.length; i++) {
78
+                str += String.fromCharCode(data[i]);
79
+            }
80
+        }
81
+
82
+        return btoa(str);
83
+    }
84
+
85
+    function getImageData(canvas) {
86
+        const w = canvas.width,
87
+            h = canvas.height;
88
+        return canvas.getContext("2d").getImageData(0, 0, w, h);
89
+    }
90
+
91
+    function makeURI(strData, type) {
92
+        return "data:" + type + ";base64," + strData;
93
+    }
94
+
95
+    /**
96
+     * create bitmap image
97
+     * 按照规则生成图片响应头和响应体
98
+     */
99
+    const genBitmapImage = function (oData) {
100
+        //
101
+        // BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx
102
+        // BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx
103
+        //
104
+
105
+        const biWidth = oData.width;
106
+        const biHeight = oData.height;
107
+        const biSizeImage = biWidth * biHeight * 3;
108
+        const bfSize = biSizeImage + 54; // total header size = 54 bytes
109
+
110
+        //
111
+        //  typedef struct tagBITMAPFILEHEADER {
112
+        //  	WORD bfType;
113
+        //  	DWORD bfSize;
114
+        //  	WORD bfReserved1;
115
+        //  	WORD bfReserved2;
116
+        //  	DWORD bfOffBits;
117
+        //  } BITMAPFILEHEADER;
118
+        //
119
+        const BITMAPFILEHEADER = [
120
+            // WORD bfType -- The file type signature; must be "BM"
121
+            0x42,
122
+            0x4d,
123
+            // DWORD bfSize -- The size, in bytes, of the bitmap file
124
+            bfSize & 0xff,
125
+            (bfSize >> 8) & 0xff,
126
+            (bfSize >> 16) & 0xff,
127
+            (bfSize >> 24) & 0xff,
128
+            // WORD bfReserved1 -- Reserved; must be zero
129
+            0,
130
+            0,
131
+            // WORD bfReserved2 -- Reserved; must be zero
132
+            0,
133
+            0,
134
+            // DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.
135
+            54,
136
+            0,
137
+            0,
138
+            0,
139
+        ];
140
+
141
+        //
142
+        //  typedef struct tagBITMAPINFOHEADER {
143
+        //  	DWORD biSize;
144
+        //  	LONG  biWidth;
145
+        //  	LONG  biHeight;
146
+        //  	WORD  biPlanes;
147
+        //  	WORD  biBitCount;
148
+        //  	DWORD biCompression;
149
+        //  	DWORD biSizeImage;
150
+        //  	LONG  biXPelsPerMeter;
151
+        //  	LONG  biYPelsPerMeter;
152
+        //  	DWORD biClrUsed;
153
+        //  	DWORD biClrImportant;
154
+        //  } BITMAPINFOHEADER, *PBITMAPINFOHEADER;
155
+        //
156
+        const BITMAPINFOHEADER = [
157
+            // DWORD biSize -- The number of bytes required by the structure
158
+            40,
159
+            0,
160
+            0,
161
+            0,
162
+            // LONG biWidth -- The width of the bitmap, in pixels
163
+            biWidth & 0xff,
164
+            (biWidth >> 8) & 0xff,
165
+            (biWidth >> 16) & 0xff,
166
+            (biWidth >> 24) & 0xff,
167
+            // LONG biHeight -- The height of the bitmap, in pixels
168
+            biHeight & 0xff,
169
+            (biHeight >> 8) & 0xff,
170
+            (biHeight >> 16) & 0xff,
171
+            (biHeight >> 24) & 0xff,
172
+            // WORD biPlanes -- The number of planes for the target device. This value must be set to 1
173
+            1,
174
+            0,
175
+            // WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap
176
+            // has a maximum of 2^24 colors (16777216, Truecolor)
177
+            24,
178
+            0,
179
+            // DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed
180
+            0,
181
+            0,
182
+            0,
183
+            0,
184
+            // DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps
185
+            biSizeImage & 0xff,
186
+            (biSizeImage >> 8) & 0xff,
187
+            (biSizeImage >> 16) & 0xff,
188
+            (biSizeImage >> 24) & 0xff,
189
+            // LONG biXPelsPerMeter, unused
190
+            0,
191
+            0,
192
+            0,
193
+            0,
194
+            // LONG biYPelsPerMeter, unused
195
+            0,
196
+            0,
197
+            0,
198
+            0,
199
+            // DWORD biClrUsed, the number of color indexes of palette, unused
200
+            0,
201
+            0,
202
+            0,
203
+            0,
204
+            // DWORD biClrImportant, unused
205
+            0,
206
+            0,
207
+            0,
208
+            0,
209
+        ];
210
+
211
+        const iPadding = (4 - ((biWidth * 3) % 4)) % 4;
212
+
213
+        const aImgData = oData.data;
214
+
215
+        let strPixelData = "";
216
+        const biWidth4 = biWidth << 2;
217
+        let y = biHeight;
218
+        const fromCharCode = String.fromCharCode;
219
+
220
+        do {
221
+            const iOffsetY = biWidth4 * (y - 1);
222
+            let strPixelRow = "";
223
+            for (let x = 0; x < biWidth; x++) {
224
+                const iOffsetX = x << 2;
225
+                strPixelRow +=
226
+                    fromCharCode(aImgData[iOffsetY + iOffsetX + 2]) +
227
+                    fromCharCode(aImgData[iOffsetY + iOffsetX + 1]) +
228
+                    fromCharCode(aImgData[iOffsetY + iOffsetX]);
229
+            }
230
+
231
+            for (let c = 0; c < iPadding; c++) {
232
+                strPixelRow += String.fromCharCode(0);
233
+            }
234
+
235
+            strPixelData += strPixelRow;
236
+        } while (--y);
237
+
238
+        return (
239
+            encodeData(BITMAPFILEHEADER.concat(BITMAPINFOHEADER)) +
240
+            encodeData(strPixelData)
241
+        );
242
+    };
243
+
244
+    /**
245
+     * saveAsImage
246
+     * @param canvas canvasElement
247
+     * @param width {String} image type
248
+     * @param height {Number} [optional] png width
249
+     * @param type {string} [optional] png height
250
+     * @param fileName {String} image name
251
+     */
252
+    const saveAsImage = function (canvas, width, height, type, fileName) {
253
+        // save file type
254
+        const fileType = type;
255
+        if ($support.canvas && $support.dataURL) {
256
+            if (typeof canvas == "string") {
257
+                canvas = document.getElementById(canvas);
258
+            }
259
+            if (type === undefined) {
260
+                type = "png";
261
+            }
262
+            type = fixType(type);
263
+            if (/bmp/.test(type)) {
264
+                const data = getImageData(scaleCanvas(canvas, width, height));
265
+                const strData = genBitmapImage(data);
266
+                // use new parameter: fileType
267
+                saveFile(makeURI(strData, downloadMime), fileType, fileName);
268
+            } else {
269
+                const strData = getDataURL(canvas, type, width, height);
270
+                // use new parameter: fileType
271
+                saveFile(strData.replace(type, downloadMime), fileType, fileName);
272
+            }
273
+        }
274
+    };
275
+
276
+    const convertToImage = function (canvas, width, height, type) {
277
+        if ($support.canvas && $support.dataURL) {
278
+            if (typeof canvas == "string") {
279
+                canvas = document.getElementById(canvas);
280
+            }
281
+            if (type === undefined) {
282
+                type = "png";
283
+            }
284
+            type = fixType(type);
285
+
286
+            if (/bmp/.test(type)) {
287
+                const data = getImageData(scaleCanvas(canvas, width, height));
288
+                const strData = genBitmapImage(data);
289
+                return genImage(makeURI(strData, "image/bmp"));
290
+            } else {
291
+                const strData = getDataURL(canvas, type, width, height);
292
+                return genImage(strData);
293
+            }
294
+        }
295
+    };
296
+
297
+    return {
298
+        saveAsImage: saveAsImage,
299
+        saveAsPNG: function (canvas, width, height, fileName) {
300
+            return saveAsImage(canvas, width, height, "png", fileName);
301
+        },
302
+        saveAsJPEG: function (canvas, width, height, fileName) {
303
+            return saveAsImage(canvas, width, height, "jpeg", fileName);
304
+        },
305
+        saveAsGIF: function (canvas, width, height, fileName) {
306
+            return saveAsImage(canvas, width, height, "gif", fileName);
307
+        },
308
+        saveAsBMP: function (canvas, width, height, fileName) {
309
+            return saveAsImage(canvas, width, height, "bmp", fileName);
310
+        },
311
+
312
+        convertToImage: convertToImage,
313
+        convertToPNG: function (canvas, width, height) {
314
+            return convertToImage(canvas, width, height, "png");
315
+        },
316
+        convertToJPEG: function (canvas, width, height) {
317
+            return convertToImage(canvas, width, height, "jpeg");
318
+        },
319
+        convertToGIF: function (canvas, width, height) {
320
+            return convertToImage(canvas, width, height, "gif");
321
+        },
322
+        convertToBMP: function (canvas, width, height) {
323
+            return convertToImage(canvas, width, height, "bmp");
324
+        },
325
+    };
326
+})();
327
+ 

Diferenças do arquivo suprimidas por serem muito extensas
+ 7830 - 0
android/js/html2canvas.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 2 - 0
android/js/jquery-3.5.1.min.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 2 - 0
android/js/jquery-qrcode-0.17.0.min.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 2143 - 0
android/js/mqttws31.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 2 - 0
android/js/mqttws31.min.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
android/js/mqttws31.min.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 2395 - 0
android/js/paho-mqtt.js


+ 75 - 0
android/js/paho-mqtt.min.js Ver arquivo

@@ -0,0 +1,75 @@
1
+/*******************************************************************************
2
+ * Copyright (c) 2013, 2016 IBM Corp.
3
+ *
4
+ * All rights reserved. This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
+ * and Eclipse Distribution License v1.0 which accompany this distribution.
7
+ *
8
+ * The Eclipse Public License is available at
9
+ *    http://www.eclipse.org/legal/epl-v10.html
10
+ * and the Eclipse Distribution License is available at
11
+ *   http://www.eclipse.org/org/documents/edl-v10.php.
12
+ *
13
+ *******************************************************************************/
14
+(function(t,q){"object"===typeof exports&&"object"===typeof module?module.exports=q():"function"===typeof define&&define.amd?define(q):"object"===typeof exports?exports=q():t.Paho=q()})(this,function(){return function(t){function q(a,b,c){b[c++]=a>>8;b[c++]=a%256;return c}function r(a,b,c,k){k=q(b,c,k);E(a,c,k);return k+b}function n(a){for(var b=0,c=0;c<a.length;c++){var k=a.charCodeAt(c);2047<k?(55296<=k&&56319>=k&&(c++,b++),b+=3):127<k?b+=2:b++}return b}function E(a,b,c){for(var k=0;k<a.length;k++){var e=
15
+a.charCodeAt(k);if(55296<=e&&56319>=e){var g=a.charCodeAt(++k);if(isNaN(g))throw Error(f(h.MALFORMED_UNICODE,[e,g]));e=(e-55296<<10)+(g-56320)+65536}127>=e?b[c++]=e:(2047>=e?b[c++]=e>>6&31|192:(65535>=e?b[c++]=e>>12&15|224:(b[c++]=e>>18&7|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function F(a,b,c){for(var k="",e,g=b;g<b+c;){e=a[g++];if(!(128>e)){var m=a[g++]-128;if(0>m)throw Error(f(h.MALFORMED_UTF,[e.toString(16),m.toString(16),""]));if(224>e)e=64*(e-192)+m;else{var d=
16
+a[g++]-128;if(0>d)throw Error(f(h.MALFORMED_UTF,[e.toString(16),m.toString(16),d.toString(16)]));if(240>e)e=4096*(e-224)+64*m+d;else{var l=a[g++]-128;if(0>l)throw Error(f(h.MALFORMED_UTF,[e.toString(16),m.toString(16),d.toString(16),l.toString(16)]));if(248>e)e=262144*(e-240)+4096*m+64*d+l;else throw Error(f(h.MALFORMED_UTF,[e.toString(16),m.toString(16),d.toString(16),l.toString(16)]));}}}65535<e&&(e-=65536,k+=String.fromCharCode(55296+(e>>10)),e=56320+(e&1023));k+=String.fromCharCode(e)}return k}
17
+var s=t.localStorage||function(){var a={};return{setItem:function(b,c){a[b]=c},getItem:function(b){return a[b]},removeItem:function(b){delete a[b]}}}(),A=function(a,b){for(var c in a)if(a.hasOwnProperty(c))if(b.hasOwnProperty(c)){if(typeof a[c]!==b[c])throw Error(f(h.INVALID_TYPE,[typeof a[c],c]));}else{c="Unknown property, "+c+". Valid properties are:";for(var k in b)b.hasOwnProperty(k)&&(c=c+" "+k);throw Error(c);}},u=function(a,b){return function(){return a.apply(b,arguments)}},h={OK:{code:0,text:"AMQJSC0000I OK."},
18
+CONNECT_TIMEOUT:{code:1,text:"AMQJSC0001E Connect timed out."},SUBSCRIBE_TIMEOUT:{code:2,text:"AMQJS0002E Subscribe timed out."},UNSUBSCRIBE_TIMEOUT:{code:3,text:"AMQJS0003E Unsubscribe timed out."},PING_TIMEOUT:{code:4,text:"AMQJS0004E Ping timed out."},INTERNAL_ERROR:{code:5,text:"AMQJS0005E Internal error. Error Message: {0}, Stack trace: {1}"},CONNACK_RETURNCODE:{code:6,text:"AMQJS0006E Bad Connack return code:{0} {1}."},SOCKET_ERROR:{code:7,text:"AMQJS0007E Socket error:{0}."},SOCKET_CLOSE:{code:8,
19
+text:"AMQJS0008I Socket closed."},MALFORMED_UTF:{code:9,text:"AMQJS0009E Malformed UTF data:{0} {1} {2}."},UNSUPPORTED:{code:10,text:"AMQJS0010E {0} is not supported by this browser."},INVALID_STATE:{code:11,text:"AMQJS0011E Invalid state {0}."},INVALID_TYPE:{code:12,text:"AMQJS0012E Invalid type {0} for {1}."},INVALID_ARGUMENT:{code:13,text:"AMQJS0013E Invalid argument {0} for {1}."},UNSUPPORTED_OPERATION:{code:14,text:"AMQJS0014E Unsupported operation."},INVALID_STORED_DATA:{code:15,text:"AMQJS0015E Invalid data in local storage key\x3d{0} value\x3d{1}."},
20
+INVALID_MQTT_MESSAGE_TYPE:{code:16,text:"AMQJS0016E Invalid MQTT message type {0}."},MALFORMED_UNICODE:{code:17,text:"AMQJS0017E Malformed Unicode string:{0} {1}."},BUFFER_FULL:{code:18,text:"AMQJS0018E Message buffer is full, maximum buffer size: {0}."}},H={0:"Connection Accepted",1:"Connection Refused: unacceptable protocol version",2:"Connection Refused: identifier rejected",3:"Connection Refused: server unavailable",4:"Connection Refused: bad user name or password",5:"Connection Refused: not authorized"},
21
+f=function(a,b){var c=a.text;if(b)for(var k,e,g=0;g<b.length;g++)if(k="{"+g+"}",e=c.indexOf(k),0<e)var h=c.substring(0,e),c=c.substring(e+k.length),c=h+b[g]+c;return c},B=[0,6,77,81,73,115,100,112,3],C=[0,4,77,81,84,84,4],p=function(a,b){this.type=a;for(var c in b)b.hasOwnProperty(c)&&(this[c]=b[c])};p.prototype.encode=function(){var a=(this.type&15)<<4,b=0,c=[],k=0,e;void 0!==this.messageIdentifier&&(b+=2);switch(this.type){case 1:switch(this.mqttVersion){case 3:b+=B.length+3;break;case 4:b+=C.length+
22
+3}b+=n(this.clientId)+2;void 0!==this.willMessage&&(b+=n(this.willMessage.destinationName)+2,e=this.willMessage.payloadBytes,e instanceof Uint8Array||(e=new Uint8Array(h)),b+=e.byteLength+2);void 0!==this.userName&&(b+=n(this.userName)+2);void 0!==this.password&&(b+=n(this.password)+2);break;case 8:for(var a=a|2,g=0;g<this.topics.length;g++)c[g]=n(this.topics[g]),b+=c[g]+2;b+=this.requestedQos.length;break;case 10:a|=2;for(g=0;g<this.topics.length;g++)c[g]=n(this.topics[g]),b+=c[g]+2;break;case 6:a|=
23
+2;break;case 3:this.payloadMessage.duplicate&&(a|=8);a=a|=this.payloadMessage.qos<<1;this.payloadMessage.retained&&(a|=1);var k=n(this.payloadMessage.destinationName),h=this.payloadMessage.payloadBytes,b=b+(k+2)+h.byteLength;h instanceof ArrayBuffer?h=new Uint8Array(h):h instanceof Uint8Array||(h=new Uint8Array(h.buffer))}var f=b,g=Array(1),d=0;do{var z=f%128,f=f>>7;0<f&&(z|=128);g[d++]=z}while(0<f&&4>d);f=g.length+1;b=new ArrayBuffer(b+f);d=new Uint8Array(b);d[0]=a;d.set(g,1);if(3==this.type)f=r(this.payloadMessage.destinationName,
24
+k,d,f);else if(1==this.type){switch(this.mqttVersion){case 3:d.set(B,f);f+=B.length;break;case 4:d.set(C,f),f+=C.length}a=0;this.cleanSession&&(a=2);void 0!==this.willMessage&&(a=a|4|this.willMessage.qos<<3,this.willMessage.retained&&(a|=32));void 0!==this.userName&&(a|=128);void 0!==this.password&&(a|=64);d[f++]=a;f=q(this.keepAliveInterval,d,f)}void 0!==this.messageIdentifier&&(f=q(this.messageIdentifier,d,f));switch(this.type){case 1:f=r(this.clientId,n(this.clientId),d,f);void 0!==this.willMessage&&
25
+(f=r(this.willMessage.destinationName,n(this.willMessage.destinationName),d,f),f=q(e.byteLength,d,f),d.set(e,f),f+=e.byteLength);void 0!==this.userName&&(f=r(this.userName,n(this.userName),d,f));void 0!==this.password&&r(this.password,n(this.password),d,f);break;case 3:d.set(h,f);break;case 8:for(g=0;g<this.topics.length;g++)f=r(this.topics[g],c[g],d,f),d[f++]=this.requestedQos[g];break;case 10:for(g=0;g<this.topics.length;g++)f=r(this.topics[g],c[g],d,f)}return b};var G=function(a,b){this._client=
26
+a;this._keepAliveInterval=1E3*b;this.isReset=!1;var c=(new p(12)).encode(),k=function(a){return function(){return e.apply(a)}},e=function(){this.isReset?(this.isReset=!1,this._client._trace("Pinger.doPing","send PINGREQ"),this._client.socket.send(c),this.timeout=setTimeout(k(this),this._keepAliveInterval)):(this._client._trace("Pinger.doPing","Timed out"),this._client._disconnected(h.PING_TIMEOUT.code,f(h.PING_TIMEOUT)))};this.reset=function(){this.isReset=!0;clearTimeout(this.timeout);0<this._keepAliveInterval&&
27
+(this.timeout=setTimeout(k(this),this._keepAliveInterval))};this.cancel=function(){clearTimeout(this.timeout)}},v=function(a,b,c,f){b||(b=30);this.timeout=setTimeout(function(a,b,c){return function(){return a.apply(b,c)}}(c,a,f),1E3*b);this.cancel=function(){clearTimeout(this.timeout)}},d=function(a,b,c,d,e){if(!("WebSocket"in t&&null!==t.WebSocket))throw Error(f(h.UNSUPPORTED,["WebSocket"]));if(!("ArrayBuffer"in t&&null!==t.ArrayBuffer))throw Error(f(h.UNSUPPORTED,["ArrayBuffer"]));this._trace("Paho.Client",
28
+a,b,c,d,e);this.host=b;this.port=c;this.path=d;this.uri=a;this.clientId=e;this._wsuri=null;this._localKey=b+":"+c+("/mqtt"!=d?":"+d:"")+":"+e+":";this._msg_queue=[];this._buffered_msg_queue=[];this._sentMessages={};this._receivedMessages={};this._notify_msg_sent={};this._message_identifier=1;this._sequence=0;for(var g in s)0!==g.indexOf("Sent:"+this._localKey)&&0!==g.indexOf("Received:"+this._localKey)||this.restore(g)};d.prototype.host=null;d.prototype.port=null;d.prototype.path=null;d.prototype.uri=
29
+null;d.prototype.clientId=null;d.prototype.socket=null;d.prototype.connected=!1;d.prototype.maxMessageIdentifier=65536;d.prototype.connectOptions=null;d.prototype.hostIndex=null;d.prototype.onConnected=null;d.prototype.onConnectionLost=null;d.prototype.onMessageDelivered=null;d.prototype.onMessageArrived=null;d.prototype.traceFunction=null;d.prototype._msg_queue=null;d.prototype._buffered_msg_queue=null;d.prototype._connectTimeout=null;d.prototype.sendPinger=null;d.prototype.receivePinger=null;d.prototype._reconnectInterval=
30
+1;d.prototype._reconnecting=!1;d.prototype._reconnectTimeout=null;d.prototype.disconnectedPublishing=!1;d.prototype.disconnectedBufferSize=5E3;d.prototype.receiveBuffer=null;d.prototype._traceBuffer=null;d.prototype._MAX_TRACE_ENTRIES=100;d.prototype.connect=function(a){var b=this._traceMask(a,"password");this._trace("Client.connect",b,this.socket,this.connected);if(this.connected)throw Error(f(h.INVALID_STATE,["already connected"]));if(this.socket)throw Error(f(h.INVALID_STATE,["already connected"]));
31
+this._reconnecting&&(this._reconnectTimeout.cancel(),this._reconnectTimeout=null,this._reconnecting=!1);this.connectOptions=a;this._reconnectInterval=1;this._reconnecting=!1;a.uris?(this.hostIndex=0,this._doConnect(a.uris[0])):this._doConnect(this.uri)};d.prototype.subscribe=function(a,b){this._trace("Client.subscribe",a,b);if(!this.connected)throw Error(f(h.INVALID_STATE,["not connected"]));var c=new p(8);c.topics=a.constructor===Array?a:[a];void 0===b.qos&&(b.qos=0);c.requestedQos=[];for(var d=
32
+0;d<c.topics.length;d++)c.requestedQos[d]=b.qos;b.onSuccess&&(c.onSuccess=function(a){b.onSuccess({invocationContext:b.invocationContext,grantedQos:a})});b.onFailure&&(c.onFailure=function(a){b.onFailure({invocationContext:b.invocationContext,errorCode:a,errorMessage:f(a)})});b.timeout&&(c.timeOut=new v(this,b.timeout,b.onFailure,[{invocationContext:b.invocationContext,errorCode:h.SUBSCRIBE_TIMEOUT.code,errorMessage:f(h.SUBSCRIBE_TIMEOUT)}]));this._requires_ack(c);this._schedule_message(c)};d.prototype.unsubscribe=
33
+function(a,b){this._trace("Client.unsubscribe",a,b);if(!this.connected)throw Error(f(h.INVALID_STATE,["not connected"]));var c=new p(10);c.topics=a.constructor===Array?a:[a];b.onSuccess&&(c.callback=function(){b.onSuccess({invocationContext:b.invocationContext})});b.timeout&&(c.timeOut=new v(this,b.timeout,b.onFailure,[{invocationContext:b.invocationContext,errorCode:h.UNSUBSCRIBE_TIMEOUT.code,errorMessage:f(h.UNSUBSCRIBE_TIMEOUT)}]));this._requires_ack(c);this._schedule_message(c)};d.prototype.send=
34
+function(a){this._trace("Client.send",a);var b=new p(3);b.payloadMessage=a;if(this.connected)0<a.qos?this._requires_ack(b):this.onMessageDelivered&&(this._notify_msg_sent[b]=this.onMessageDelivered(b.payloadMessage)),this._schedule_message(b);else if(this._reconnecting&&this.disconnectedPublishing){if(Object.keys(this._sentMessages).length+this._buffered_msg_queue.length>this.disconnectedBufferSize)throw Error(f(h.BUFFER_FULL,[this.disconnectedBufferSize]));0<a.qos?this._requires_ack(b):(b.sequence=
35
+++this._sequence,this._buffered_msg_queue.unshift(b))}else throw Error(f(h.INVALID_STATE,["not connected"]));};d.prototype.disconnect=function(){this._trace("Client.disconnect");this._reconnecting&&(this._reconnectTimeout.cancel(),this._reconnectTimeout=null,this._reconnecting=!1);if(!this.socket)throw Error(f(h.INVALID_STATE,["not connecting or connected"]));var a=new p(14);this._notify_msg_sent[a]=u(this._disconnected,this);this._schedule_message(a)};d.prototype.getTraceLog=function(){if(null!==
36
+this._traceBuffer){this._trace("Client.getTraceLog",new Date);this._trace("Client.getTraceLog in flight messages",this._sentMessages.length);for(var a in this._sentMessages)this._trace("_sentMessages ",a,this._sentMessages[a]);for(a in this._receivedMessages)this._trace("_receivedMessages ",a,this._receivedMessages[a]);return this._traceBuffer}};d.prototype.startTrace=function(){null===this._traceBuffer&&(this._traceBuffer=[]);this._trace("Client.startTrace",new Date,"1.1.0-2018-07-24T10:42:36Z")};d.prototype.stopTrace=
37
+function(){delete this._traceBuffer};d.prototype._doConnect=function(a){this.connectOptions.useSSL&&(a=a.split(":"),a[0]="wss",a=a.join(":"));this._wsuri=a;this.connected=!1;this.socket=4>this.connectOptions.mqttVersion?new WebSocket(a,["mqttv3.1"]):new WebSocket(a,["mqtt"]);this.socket.binaryType="arraybuffer";this.socket.onopen=u(this._on_socket_open,this);this.socket.onmessage=u(this._on_socket_message,this);this.socket.onerror=u(this._on_socket_error,this);this.socket.onclose=u(this._on_socket_close,
38
+this);this.sendPinger=new G(this,this.connectOptions.keepAliveInterval);this.receivePinger=new G(this,this.connectOptions.keepAliveInterval);this._connectTimeout&&(this._connectTimeout.cancel(),this._connectTimeout=null);this._connectTimeout=new v(this,this.connectOptions.timeout,this._disconnected,[h.CONNECT_TIMEOUT.code,f(h.CONNECT_TIMEOUT)])};d.prototype._schedule_message=function(a){this._msg_queue.unshift(a);this.connected&&this._process_queue()};d.prototype.store=function(a,b){var c={type:b.type,
39
+messageIdentifier:b.messageIdentifier,version:1};switch(b.type){case 3:b.pubRecReceived&&(c.pubRecReceived=!0);c.payloadMessage={};for(var d="",e=b.payloadMessage.payloadBytes,g=0;g<e.length;g++)d=15>=e[g]?d+"0"+e[g].toString(16):d+e[g].toString(16);c.payloadMessage.payloadHex=d;c.payloadMessage.qos=b.payloadMessage.qos;c.payloadMessage.destinationName=b.payloadMessage.destinationName;b.payloadMessage.duplicate&&(c.payloadMessage.duplicate=!0);b.payloadMessage.retained&&(c.payloadMessage.retained=
40
+!0);0===a.indexOf("Sent:")&&(void 0===b.sequence&&(b.sequence=++this._sequence),c.sequence=b.sequence);break;default:throw Error(f(h.INVALID_STORED_DATA,[a+this._localKey+b.messageIdentifier,c]));}s.setItem(a+this._localKey+b.messageIdentifier,JSON.stringify(c))};d.prototype.restore=function(a){var b=s.getItem(a),c=JSON.parse(b),d=new p(c.type,c);switch(c.type){case 3:for(var b=c.payloadMessage.payloadHex,e=new ArrayBuffer(b.length/2),e=new Uint8Array(e),g=0;2<=b.length;){var m=parseInt(b.substring(0,
41
+2),16),b=b.substring(2,b.length);e[g++]=m}b=new w(e);b.qos=c.payloadMessage.qos;b.destinationName=c.payloadMessage.destinationName;c.payloadMessage.duplicate&&(b.duplicate=!0);c.payloadMessage.retained&&(b.retained=!0);d.payloadMessage=b;break;default:throw Error(f(h.INVALID_STORED_DATA,[a,b]));}0===a.indexOf("Sent:"+this._localKey)?(d.payloadMessage.duplicate=!0,this._sentMessages[d.messageIdentifier]=d):0===a.indexOf("Received:"+this._localKey)&&(this._receivedMessages[d.messageIdentifier]=d)};
42
+d.prototype._process_queue=function(){for(var a=null;a=this._msg_queue.pop();)this._socket_send(a),this._notify_msg_sent[a]&&(this._notify_msg_sent[a](),delete this._notify_msg_sent[a])};d.prototype._requires_ack=function(a){var b=Object.keys(this._sentMessages).length;if(b>this.maxMessageIdentifier)throw Error("Too many messages:"+b);for(;void 0!==this._sentMessages[this._message_identifier];)this._message_identifier++;a.messageIdentifier=this._message_identifier;this._sentMessages[a.messageIdentifier]=
43
+a;3===a.type&&this.store("Sent:",a);this._message_identifier===this.maxMessageIdentifier&&(this._message_identifier=1)};d.prototype._on_socket_open=function(){var a=new p(1,this.connectOptions);a.clientId=this.clientId;this._socket_send(a)};d.prototype._on_socket_message=function(a){this._trace("Client._on_socket_message",a.data);a=this._deframeMessages(a.data);for(var b=0;b<a.length;b+=1)this._handleMessage(a[b])};d.prototype._deframeMessages=function(a){a=new Uint8Array(a);var b=[];if(this.receiveBuffer){var c=
44
+new Uint8Array(this.receiveBuffer.length+a.length);c.set(this.receiveBuffer);c.set(a,this.receiveBuffer.length);a=c;delete this.receiveBuffer}try{for(c=0;c<a.length;){var d;a:{var e=a,g=c,m=g,n=e[g],l=n>>4,z=n&15,g=g+1,x=void 0,D=0,q=1;do{if(g==e.length){d=[null,m];break a}x=e[g++];D+=(x&127)*q;q*=128}while(0!==(x&128));x=g+D;if(x>e.length)d=[null,m];else{var y=new p(l);switch(l){case 2:e[g++]&1&&(y.sessionPresent=!0);y.returnCode=e[g++];break;case 3:var m=z>>1&3,s=256*e[g]+e[g+1],g=g+2,t=F(e,g,s),
45
+g=g+s;0<m&&(y.messageIdentifier=256*e[g]+e[g+1],g+=2);var r=new w(e.subarray(g,x));1==(z&1)&&(r.retained=!0);8==(z&8)&&(r.duplicate=!0);r.qos=m;r.destinationName=t;y.payloadMessage=r;break;case 4:case 5:case 6:case 7:case 11:y.messageIdentifier=256*e[g]+e[g+1];break;case 9:y.messageIdentifier=256*e[g]+e[g+1],g+=2,y.returnCode=e.subarray(g,x)}d=[y,x]}}var u=d[0],c=d[1];if(null!==u)b.push(u);else break}c<a.length&&(this.receiveBuffer=a.subarray(c))}catch(v){d="undefined"==v.hasOwnProperty("stack")?
46
+v.stack.toString():"No Error Stack Available";this._disconnected(h.INTERNAL_ERROR.code,f(h.INTERNAL_ERROR,[v.message,d]));return}return b};d.prototype._handleMessage=function(a){this._trace("Client._handleMessage",a);try{switch(a.type){case 2:this._connectTimeout.cancel();this._reconnectTimeout&&this._reconnectTimeout.cancel();if(this.connectOptions.cleanSession){for(var b in this._sentMessages){var c=this._sentMessages[b];s.removeItem("Sent:"+this._localKey+c.messageIdentifier)}this._sentMessages=
47
+{};for(b in this._receivedMessages){var d=this._receivedMessages[b];s.removeItem("Received:"+this._localKey+d.messageIdentifier)}this._receivedMessages={}}if(0===a.returnCode)this.connected=!0,this.connectOptions.uris&&(this.hostIndex=this.connectOptions.uris.length);else{this._disconnected(h.CONNACK_RETURNCODE.code,f(h.CONNACK_RETURNCODE,[a.returnCode,H[a.returnCode]]));break}a=[];for(var e in this._sentMessages)this._sentMessages.hasOwnProperty(e)&&a.push(this._sentMessages[e]);if(0<this._buffered_msg_queue.length)for(e=
48
+null;e=this._buffered_msg_queue.pop();)a.push(e),this.onMessageDelivered&&(this._notify_msg_sent[e]=this.onMessageDelivered(e.payloadMessage));a=a.sort(function(a,b){return a.sequence-b.sequence});e=0;for(var g=a.length;e<g;e++)if(c=a[e],3==c.type&&c.pubRecReceived){var m=new p(6,{messageIdentifier:c.messageIdentifier});this._schedule_message(m)}else this._schedule_message(c);if(this.connectOptions.onSuccess)this.connectOptions.onSuccess({invocationContext:this.connectOptions.invocationContext});
49
+c=!1;this._reconnecting&&(c=!0,this._reconnectInterval=1,this._reconnecting=!1);this._connected(c,this._wsuri);this._process_queue();break;case 3:this._receivePublish(a);break;case 4:if(c=this._sentMessages[a.messageIdentifier])if(delete this._sentMessages[a.messageIdentifier],s.removeItem("Sent:"+this._localKey+a.messageIdentifier),this.onMessageDelivered)this.onMessageDelivered(c.payloadMessage);break;case 5:if(c=this._sentMessages[a.messageIdentifier])c.pubRecReceived=!0,m=new p(6,{messageIdentifier:a.messageIdentifier}),
50
+this.store("Sent:",c),this._schedule_message(m);break;case 6:d=this._receivedMessages[a.messageIdentifier];s.removeItem("Received:"+this._localKey+a.messageIdentifier);d&&(this._receiveMessage(d),delete this._receivedMessages[a.messageIdentifier]);var n=new p(7,{messageIdentifier:a.messageIdentifier});this._schedule_message(n);break;case 7:c=this._sentMessages[a.messageIdentifier];delete this._sentMessages[a.messageIdentifier];s.removeItem("Sent:"+this._localKey+a.messageIdentifier);if(this.onMessageDelivered)this.onMessageDelivered(c.payloadMessage);
51
+break;case 9:if(c=this._sentMessages[a.messageIdentifier]){c.timeOut&&c.timeOut.cancel();if(128===a.returnCode[0]){if(c.onFailure)c.onFailure(a.returnCode)}else if(c.onSuccess)c.onSuccess(a.returnCode);delete this._sentMessages[a.messageIdentifier]}break;case 11:if(c=this._sentMessages[a.messageIdentifier])c.timeOut&&c.timeOut.cancel(),c.callback&&c.callback(),delete this._sentMessages[a.messageIdentifier];break;case 13:this.sendPinger.reset();break;case 14:this._disconnected(h.INVALID_MQTT_MESSAGE_TYPE.code,
52
+f(h.INVALID_MQTT_MESSAGE_TYPE,[a.type]));break;default:this._disconnected(h.INVALID_MQTT_MESSAGE_TYPE.code,f(h.INVALID_MQTT_MESSAGE_TYPE,[a.type]))}}catch(l){c="undefined"==l.hasOwnProperty("stack")?l.stack.toString():"No Error Stack Available",this._disconnected(h.INTERNAL_ERROR.code,f(h.INTERNAL_ERROR,[l.message,c]))}};d.prototype._on_socket_error=function(a){this._reconnecting||this._disconnected(h.SOCKET_ERROR.code,f(h.SOCKET_ERROR,[a.data]))};d.prototype._on_socket_close=function(){this._reconnecting||
53
+this._disconnected(h.SOCKET_CLOSE.code,f(h.SOCKET_CLOSE))};d.prototype._socket_send=function(a){if(1==a.type){var b=this._traceMask(a,"password");this._trace("Client._socket_send",b)}else this._trace("Client._socket_send",a);this.socket.send(a.encode());this.sendPinger.reset()};d.prototype._receivePublish=function(a){switch(a.payloadMessage.qos){case "undefined":case 0:this._receiveMessage(a);break;case 1:var b=new p(4,{messageIdentifier:a.messageIdentifier});this._schedule_message(b);this._receiveMessage(a);
54
+break;case 2:this._receivedMessages[a.messageIdentifier]=a;this.store("Received:",a);a=new p(5,{messageIdentifier:a.messageIdentifier});this._schedule_message(a);break;default:throw Error("Invaild qos\x3d"+a.payloadMessage.qos);}};d.prototype._receiveMessage=function(a){if(this.onMessageArrived)this.onMessageArrived(a.payloadMessage)};d.prototype._connected=function(a,b){if(this.onConnected)this.onConnected(a,b)};d.prototype._reconnect=function(){this._trace("Client._reconnect");this.connected||(this._reconnecting=
55
+!0,this.sendPinger.cancel(),this.receivePinger.cancel(),128>this._reconnectInterval&&(this._reconnectInterval*=2),this.connectOptions.uris?(this.hostIndex=0,this._doConnect(this.connectOptions.uris[0])):this._doConnect(this.uri))};d.prototype._disconnected=function(a,b){this._trace("Client._disconnected",a,b);if(void 0!==a&&this._reconnecting)this._reconnectTimeout=new v(this,this._reconnectInterval,this._reconnect);else if(this.sendPinger.cancel(),this.receivePinger.cancel(),this._connectTimeout&&
56
+(this._connectTimeout.cancel(),this._connectTimeout=null),this._msg_queue=[],this._buffered_msg_queue=[],this._notify_msg_sent={},this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onerror=null,this.socket.onclose=null,1===this.socket.readyState&&this.socket.close(),delete this.socket),this.connectOptions.uris&&this.hostIndex<this.connectOptions.uris.length-1)this.hostIndex++,this._doConnect(this.connectOptions.uris[this.hostIndex]);else if(void 0===a&&(a=h.OK.code,b=f(h.OK)),
57
+this.connected){this.connected=!1;if(this.onConnectionLost)this.onConnectionLost({errorCode:a,errorMessage:b,reconnect:this.connectOptions.reconnect,uri:this._wsuri});a!==h.OK.code&&this.connectOptions.reconnect&&(this._reconnectInterval=1,this._reconnect())}else if(4===this.connectOptions.mqttVersion&&!1===this.connectOptions.mqttVersionExplicit)this._trace("Failed to connect V4, dropping back to V3"),this.connectOptions.mqttVersion=3,this.connectOptions.uris?(this.hostIndex=0,this._doConnect(this.connectOptions.uris[0])):
58
+this._doConnect(this.uri);else if(this.connectOptions.onFailure)this.connectOptions.onFailure({invocationContext:this.connectOptions.invocationContext,errorCode:a,errorMessage:b})};d.prototype._trace=function(){if(this.traceFunction){var a=Array.prototype.slice.call(arguments),b;for(b in a)"undefined"!==typeof a[b]&&a.splice(b,1,JSON.stringify(a[b]));b=a.join("");this.traceFunction({severity:"Debug",message:b})}if(null!==this._traceBuffer)for(b=0,a=arguments.length;b<a;b++)this._traceBuffer.length==
59
+this._MAX_TRACE_ENTRIES&&this._traceBuffer.shift(),0===b?this._traceBuffer.push(arguments[b]):"undefined"===typeof arguments[b]?this._traceBuffer.push(arguments[b]):this._traceBuffer.push("  "+JSON.stringify(arguments[b]))};d.prototype._traceMask=function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&(c[d]=d==b?"******":a[d]);return c};var w=function(a){var b;if("string"===typeof a||a instanceof ArrayBuffer||ArrayBuffer.isView(a)&&!(a instanceof DataView))b=a;else throw f(h.INVALID_ARGUMENT,[a,
60
+"newPayload"]);var c,d=0,e=!1,g=!1;Object.defineProperties(this,{payloadString:{enumerable:!0,get:function(){return"string"===typeof b?b:F(b,0,b.length)}},payloadBytes:{enumerable:!0,get:function(){if("string"===typeof b){var a=new ArrayBuffer(n(b)),a=new Uint8Array(a);E(b,a,0);return a}return b}},destinationName:{enumerable:!0,get:function(){return c},set:function(a){if("string"===typeof a)c=a;else throw Error(f(h.INVALID_ARGUMENT,[a,"newDestinationName"]));}},qos:{enumerable:!0,get:function(){return d},
61
+set:function(a){if(0===a||1===a||2===a)d=a;else throw Error("Invalid argument:"+a);}},retained:{enumerable:!0,get:function(){return e},set:function(a){if("boolean"===typeof a)e=a;else throw Error(f(h.INVALID_ARGUMENT,[a,"newRetained"]));}},topic:{enumerable:!0,get:function(){return c},set:function(a){c=a}},duplicate:{enumerable:!0,get:function(){return g},set:function(a){g=a}}})};return{Client:function(a,b,c,k){var e;if("string"!==typeof a)throw Error(f(h.INVALID_TYPE,[typeof a,"host"]));if(2==arguments.length){k=
62
+b;e=a;var g=e.match(/^(wss?):\/\/((\[(.+)\])|([^\/]+?))(:(\d+))?(\/.*)$/);if(g)a=g[4]||g[2],b=parseInt(g[7]),c=g[8];else throw Error(f(h.INVALID_ARGUMENT,[a,"host"]));}else{3==arguments.length&&(k=c,c="/mqtt");if("number"!==typeof b||0>b)throw Error(f(h.INVALID_TYPE,[typeof b,"port"]));if("string"!==typeof c)throw Error(f(h.INVALID_TYPE,[typeof c,"path"]));e="ws://"+(-1!==a.indexOf(":")&&"["!==a.slice(0,1)&&"]"!==a.slice(-1)?"["+a+"]":a)+":"+b+c}for(var m=g=0;m<k.length;m++){var n=k.charCodeAt(m);
63
+55296<=n&&56319>=n&&m++;g++}if("string"!==typeof k||65535<g)throw Error(f(h.INVALID_ARGUMENT,[k,"clientId"]));var l=new d(e,a,b,c,k);Object.defineProperties(this,{host:{get:function(){return a},set:function(){throw Error(f(h.UNSUPPORTED_OPERATION));}},port:{get:function(){return b},set:function(){throw Error(f(h.UNSUPPORTED_OPERATION));}},path:{get:function(){return c},set:function(){throw Error(f(h.UNSUPPORTED_OPERATION));}},uri:{get:function(){return e},set:function(){throw Error(f(h.UNSUPPORTED_OPERATION));
64
+}},clientId:{get:function(){return l.clientId},set:function(){throw Error(f(h.UNSUPPORTED_OPERATION));}},onConnected:{get:function(){return l.onConnected},set:function(a){if("function"===typeof a)l.onConnected=a;else throw Error(f(h.INVALID_TYPE,[typeof a,"onConnected"]));}},disconnectedPublishing:{get:function(){return l.disconnectedPublishing},set:function(a){l.disconnectedPublishing=a}},disconnectedBufferSize:{get:function(){return l.disconnectedBufferSize},set:function(a){l.disconnectedBufferSize=
65
+a}},onConnectionLost:{get:function(){return l.onConnectionLost},set:function(a){if("function"===typeof a)l.onConnectionLost=a;else throw Error(f(h.INVALID_TYPE,[typeof a,"onConnectionLost"]));}},onMessageDelivered:{get:function(){return l.onMessageDelivered},set:function(a){if("function"===typeof a)l.onMessageDelivered=a;else throw Error(f(h.INVALID_TYPE,[typeof a,"onMessageDelivered"]));}},onMessageArrived:{get:function(){return l.onMessageArrived},set:function(a){if("function"===typeof a)l.onMessageArrived=
66
+a;else throw Error(f(h.INVALID_TYPE,[typeof a,"onMessageArrived"]));}},trace:{get:function(){return l.traceFunction},set:function(a){if("function"===typeof a)l.traceFunction=a;else throw Error(f(h.INVALID_TYPE,[typeof a,"onTrace"]));}}});this.connect=function(a){a=a||{};A(a,{timeout:"number",userName:"string",password:"string",willMessage:"object",keepAliveInterval:"number",cleanSession:"boolean",useSSL:"boolean",invocationContext:"object",onSuccess:"function",onFailure:"function",hosts:"object",
67
+ports:"object",reconnect:"boolean",mqttVersion:"number",mqttVersionExplicit:"boolean",uris:"object"});void 0===a.keepAliveInterval&&(a.keepAliveInterval=60);if(4<a.mqttVersion||3>a.mqttVersion)throw Error(f(h.INVALID_ARGUMENT,[a.mqttVersion,"connectOptions.mqttVersion"]));void 0===a.mqttVersion?(a.mqttVersionExplicit=!1,a.mqttVersion=4):a.mqttVersionExplicit=!0;if(void 0!==a.password&&void 0===a.userName)throw Error(f(h.INVALID_ARGUMENT,[a.password,"connectOptions.password"]));if(a.willMessage){if(!(a.willMessage instanceof
68
+w))throw Error(f(h.INVALID_TYPE,[a.willMessage,"connectOptions.willMessage"]));a.willMessage.stringPayload=null;if("undefined"===typeof a.willMessage.destinationName)throw Error(f(h.INVALID_TYPE,[typeof a.willMessage.destinationName,"connectOptions.willMessage.destinationName"]));}"undefined"===typeof a.cleanSession&&(a.cleanSession=!0);if(a.hosts){if(!(a.hosts instanceof Array))throw Error(f(h.INVALID_ARGUMENT,[a.hosts,"connectOptions.hosts"]));if(1>a.hosts.length)throw Error(f(h.INVALID_ARGUMENT,
69
+[a.hosts,"connectOptions.hosts"]));for(var b=!1,d=0;d<a.hosts.length;d++){if("string"!==typeof a.hosts[d])throw Error(f(h.INVALID_TYPE,[typeof a.hosts[d],"connectOptions.hosts["+d+"]"]));if(/^(wss?):\/\/((\[(.+)\])|([^\/]+?))(:(\d+))?(\/.*)$/.test(a.hosts[d]))if(0===d)b=!0;else{if(!b)throw Error(f(h.INVALID_ARGUMENT,[a.hosts[d],"connectOptions.hosts["+d+"]"]));}else if(b)throw Error(f(h.INVALID_ARGUMENT,[a.hosts[d],"connectOptions.hosts["+d+"]"]));}if(b)a.uris=a.hosts;else{if(!a.ports)throw Error(f(h.INVALID_ARGUMENT,
70
+[a.ports,"connectOptions.ports"]));if(!(a.ports instanceof Array))throw Error(f(h.INVALID_ARGUMENT,[a.ports,"connectOptions.ports"]));if(a.hosts.length!==a.ports.length)throw Error(f(h.INVALID_ARGUMENT,[a.ports,"connectOptions.ports"]));a.uris=[];for(d=0;d<a.hosts.length;d++){if("number"!==typeof a.ports[d]||0>a.ports[d])throw Error(f(h.INVALID_TYPE,[typeof a.ports[d],"connectOptions.ports["+d+"]"]));var b=a.hosts[d],g=a.ports[d];e="ws://"+(-1!==b.indexOf(":")?"["+b+"]":b)+":"+g+c;a.uris.push(e)}}}l.connect(a)};
71
+this.subscribe=function(a,b){if("string"!==typeof a&&a.constructor!==Array)throw Error("Invalid argument:"+a);b=b||{};A(b,{qos:"number",invocationContext:"object",onSuccess:"function",onFailure:"function",timeout:"number"});if(b.timeout&&!b.onFailure)throw Error("subscribeOptions.timeout specified with no onFailure callback.");if("undefined"!==typeof b.qos&&0!==b.qos&&1!==b.qos&&2!==b.qos)throw Error(f(h.INVALID_ARGUMENT,[b.qos,"subscribeOptions.qos"]));l.subscribe(a,b)};this.unsubscribe=function(a,
72
+b){if("string"!==typeof a&&a.constructor!==Array)throw Error("Invalid argument:"+a);b=b||{};A(b,{invocationContext:"object",onSuccess:"function",onFailure:"function",timeout:"number"});if(b.timeout&&!b.onFailure)throw Error("unsubscribeOptions.timeout specified with no onFailure callback.");l.unsubscribe(a,b)};this.send=function(a,b,c,d){var e;if(0===arguments.length)throw Error("Invalid argument.length");if(1==arguments.length){if(!(a instanceof w)&&"string"!==typeof a)throw Error("Invalid argument:"+
73
+typeof a);e=a;if("undefined"===typeof e.destinationName)throw Error(f(h.INVALID_ARGUMENT,[e.destinationName,"Message.destinationName"]));}else e=new w(b),e.destinationName=a,3<=arguments.length&&(e.qos=c),4<=arguments.length&&(e.retained=d);l.send(e)};this.publish=function(a,b,c,d){var e;if(0===arguments.length)throw Error("Invalid argument.length");if(1==arguments.length){if(!(a instanceof w)&&"string"!==typeof a)throw Error("Invalid argument:"+typeof a);e=a;if("undefined"===typeof e.destinationName)throw Error(f(h.INVALID_ARGUMENT,
74
+[e.destinationName,"Message.destinationName"]));}else e=new w(b),e.destinationName=a,3<=arguments.length&&(e.qos=c),4<=arguments.length&&(e.retained=d);l.send(e)};this.disconnect=function(){l.disconnect()};this.getTraceLog=function(){return l.getTraceLog()};this.startTrace=function(){l.startTrace()};this.stopTrace=function(){l.stopTrace()};this.isConnected=function(){return l.connected}},Message:w}}("undefined"!==typeof global?global:"undefined"!==typeof self?self:"undefined"!==typeof window?window:
75
+{})});

+ 200 - 0
android/js/signature.js Ver arquivo

@@ -0,0 +1,200 @@
1
+var zkSignature = (function () {
2
+
3
+	var empty = true;
4
+
5
+	return {
6
+		//public functions
7
+		capture: function (){
8
+				var parent = document.getElementById("canvas");
9
+				parent.childNodes[0].nodeValue = "";
10
+
11
+				var canvasArea = document.createElement("canvas");
12
+				canvasArea.setAttribute("id", "newSignature");
13
+				parent.appendChild(canvasArea);
14
+
15
+				var canvas = document.getElementById("newSignature");
16
+				var context = canvas.getContext("2d");
17
+
18
+				if (!context) {
19
+					throw new Error("Failed to get canvas' 2d context");
20
+				}
21
+
22
+				canvas.height=canvas.height*1.8;
23
+				  
24
+				context.fillStyle = "#fff";
25
+				context.strokeStyle = "#444";
26
+				context.lineWidth = 1;
27
+				context.lineCap = "round";
28
+
29
+				context.fillRect(0, 0, canvas.width, canvas.height);
30
+
31
+				context.fillStyle = "#000000";
32
+				context.strokeStyle = "#000000";
33
+				
34
+				
35
+				//context.moveTo((canvas.width * 0.05 ), (canvas.height * 0.9));
36
+				//context.lineTo((canvas.width * 0.95), (canvas.height * 0.9));
37
+			 
38
+				
39
+				context.stroke();
40
+
41
+				context.fillStyle = "#fff";
42
+				context.strokeStyle = "#444";
43
+				context.lineWidth = 3;
44
+				var disableSave = true;
45
+				var pixels = [];
46
+				var cpixels = [];
47
+				var xyLast = {};
48
+				var xyAddLast = {};
49
+				var calculate = false;
50
+				//functions
51
+				{
52
+					function remove_event_listeners() {
53
+						canvas.removeEventListener('mousemove', on_mousemove, false);
54
+						canvas.removeEventListener('mouseup', on_mouseup, false);
55
+						canvas.removeEventListener('touchmove', on_mousemove, false);
56
+						canvas.removeEventListener('touchend', on_mouseup, false);
57
+
58
+						document.body.removeEventListener('mouseup', on_mouseup, false);
59
+						document.body.removeEventListener('touchend', on_mouseup, false);
60
+					}
61
+
62
+					function get_board_coords(e) {
63
+						var x, y;
64
+
65
+						if (e.changedTouches && e.changedTouches[0]) {
66
+							var offsety = canvas.offsetTop || 0;
67
+							var offsetx = canvas.offsetLeft || 0;
68
+
69
+							x = e.changedTouches[0].pageX - offsetx;
70
+							y = e.changedTouches[0].pageY - offsety;
71
+							 
72
+						} else if (e.layerX || 0 == e.layerX) {
73
+							x = e.layerX;
74
+							y = e.layerY;
75
+						 
76
+						} else if (e.offsetX || 0 == e.offsetX) {
77
+							x = e.offsetX;
78
+							y = e.offsetY;
79
+						}
80
+						 
81
+						x=x*(canvas.width/screen.width);
82
+						y=y*(canvas.width/screen.width);
83
+						return {
84
+							x : x,
85
+							y : y
86
+						};
87
+					};
88
+
89
+					function on_mousedown(e) {
90
+						e.preventDefault();
91
+						e.stopPropagation();
92
+
93
+						canvas.addEventListener('mousemove', on_mousemove, false);
94
+						canvas.addEventListener('mouseup', on_mouseup, false);
95
+						canvas.addEventListener('touchmove', on_mousemove, false);
96
+						canvas.addEventListener('touchend', on_mouseup, false);
97
+
98
+						document.body.addEventListener('mouseup', on_mouseup, false);
99
+						document.body.addEventListener('touchend', on_mouseup, false);
100
+
101
+						empty = false;
102
+						var xy = get_board_coords(e);
103
+						
104
+						context.beginPath();
105
+						pixels.push('moveStart');
106
+						
107
+						context.moveTo(xy.x, xy.y);
108
+						pixels.push(xy.x, xy.y);
109
+						xyLast = xy;
110
+					};
111
+
112
+					function on_mousemove(e, finish) {
113
+						e.preventDefault();
114
+						e.stopPropagation();
115
+
116
+						var xy = get_board_coords(e);
117
+						var xyAdd = {
118
+							x : (xyLast.x + (xy.x)) / 2,
119
+							y : (xyLast.y + (xy.y)) / 2
120
+						};
121
+
122
+						if (calculate) {
123
+							var xLast = (xyAddLast.x + xyLast.x + xyAdd.x) / 3;
124
+							var yLast = (xyAddLast.y + xyLast.y + xyAdd.y) / 3;
125
+							pixels.push(xLast, yLast);
126
+						} else {
127
+							calculate = true;
128
+						}
129
+
130
+						context.quadraticCurveTo(xyLast.x, xyLast.y, xyAdd.x, xyAdd.y);
131
+						pixels.push(xyAdd.x, xyAdd.y);
132
+						context.stroke();
133
+						context.beginPath();
134
+						context.moveTo(xyAdd.x, xyAdd.y);
135
+						xyAddLast = xyAdd;
136
+						xyLast = xy;
137
+
138
+					};
139
+
140
+					function on_mouseup(e) {
141
+						remove_event_listeners();
142
+						disableSave = false;
143
+						context.stroke();
144
+						pixels.push('e');
145
+						calculate = false;
146
+					};
147
+
148
+				}
149
+
150
+				canvas.addEventListener('mousedown', on_mousedown, false);
151
+				canvas.addEventListener('touchstart', on_mousedown, false);
152
+
153
+		}
154
+		,
155
+		save : function(){
156
+
157
+				var canvas = document.getElementById("newSignature");
158
+				// save canvas image as data url (png format by default)
159
+				var dataURL = canvas.toDataURL("image/png");
160
+				document.getElementById("saveSignature").src = dataURL;
161
+
162
+		}
163
+		,
164
+		clear : function(){
165
+
166
+				var parent = document.getElementById("canvas");
167
+				var child = document.getElementById("newSignature");
168
+				parent.removeChild(child);
169
+				empty = true;
170
+				this.capture();
171
+
172
+		}
173
+		,
174
+		send : function(){
175
+
176
+				if (empty == false){
177
+
178
+				var canvas = document.getElementById("newSignature");
179
+				var dataURL = canvas.toDataURL("image/png");
180
+				document.getElementById("saveSignature").src = dataURL;
181
+				var sendemail = document.getElementById('sendemail').value;
182
+				var replyemail = document.getElementById('replyemail').value;
183
+
184
+				var dataform = document.createElement("form");
185
+				document.body.appendChild(dataform);
186
+				dataform.setAttribute("action","upload_file.php");
187
+				dataform.setAttribute("enctype","multipart/form-data");
188
+				dataform.setAttribute("method","POST");
189
+				dataform.setAttribute("target","_self");
190
+				dataform.innerHTML = '<input type="text" name="image" value="' + dataURL + '"/>' + '<input type="email" name="email" value="' + sendemail + '"/>' + '<input type="email" name="replyemail" value="' + replyemail + '"/>'+'<input type="submit" value="Click me" />';
191
+				dataform.submit();
192
+
193
+				}
194
+		}
195
+
196
+	}
197
+
198
+})()
199
+
200
+var zkSignature;

+ 182 - 0
android/js/teacrypt.js Ver arquivo

@@ -0,0 +1,182 @@
1
+function teaEncrypt(plaintext, password) {
2
+    var v = new Array(2), k = new Array(4), s = "", i;
3
+    var len;
4
+
5
+    for (var i=0; i<4; i++) k[i] = Str4ToLong(password.slice(i*4,(i+1)*4));
6
+    var btxt = new TextEncoder().encode(plaintext);
7
+    if ((btxt.byteLength+1)&0x7) len = (((btxt.byteLength+1)>>>3)+1)*8
8
+    else len = (btxt.byteLength+1)
9
+    var teadata = new ArrayBuffer(len);
10
+    for (i=0; i<len; i+=8) {  // encode plaintext into s in 64-bit (8 char) blocks
11
+        v[0] = byteArryToLong(btxt, i)
12
+        v[1] = byteArryToLong(btxt, i+4)
13
+        code(v, k);
14
+        LongToBuffer(i, v, teadata);
15
+    }
16
+    return arrayBufferToBase64(teadata);
17
+}
18
+
19
+function teaDecrypt(ciphertext, password) {
20
+    var v = new Array(2), k = new Array(4), s = "", i;
21
+
22
+    for (var i=0; i<4; i++) k[i] = Str4ToLong(password.slice(i*4,(i+1)*4));
23
+
24
+    var teadata = base64ToarrayBuffer(ciphertext);
25
+    var stxt = new Uint8Array(teadata.byteLength);
26
+    for (i=0; i<teadata.length; i+=8) {
27
+        BufferToLong(i,v,teadata)
28
+        decodevvv(v, k);
29
+        LongToBuffer(i, v, stxt);
30
+    }
31
+ 
32
+    for (i=0; i<stxt.byteLength; i++) {
33
+        if (stxt[i]==0) {
34
+            break;
35
+        }    
36
+    }
37
+
38
+    const decoder = new TextDecoder("utf-8");
39
+    return decoder.decode(stxt.slice(0, i));
40
+}
41
+
42
+
43
+function code(v, k) {
44
+    var v0 = v[0], v1 = v[1];
45
+    var delta = 0x479E3919, i, sum = 0;
46
+
47
+    for (i=0; i<32; i++) {
48
+		sum += delta;
49
+        v0 += ((v1<<4) + k[0]) ^ (v1 + sum) ^ ((v1>>>5) + k[1]);
50
+        v0 &= 0xffffffff
51
+        v1 += ((v0<<4) + k[2]) ^ (v0 + sum) ^ ((v0>>>5) + k[3]);   
52
+        v1 &= 0xffffffff     
53
+    }
54
+    v[0] = v0; v[1] = v1;
55
+}
56
+
57
+
58
+function decodevvv(v, k) {
59
+    var v0 = v[0], v1 = v[1];
60
+    var delta = 0x479E3919, sum = delta*32, i;
61
+
62
+    for (i=0; i<32; i++) {
63
+        v1 -= ((v0<<4) + k[2]) ^ (v0 + sum) ^ ((v0>>>5) + k[3]);
64
+        v1 &= 0xffffffff
65
+        v0 -= ((v1<<4) + k[0]) ^ (v1 + sum) ^ ((v1>>>5) + k[1]);
66
+        v0 &= 0xffffffff
67
+        sum -= delta;
68
+    }
69
+    v[0]=v0; v[1]=v1;    
70
+}
71
+
72
+
73
+// supporting functions
74
+
75
+function Str4ToLong(s) {  // convert 4 chars of s to a numeric long
76
+    var v = 0;
77
+    for (var i=0; i<4; i++) v |= s.charCodeAt(i) << i*8;
78
+    return isNaN(v) ? 0 : v;
79
+}
80
+
81
+function LongToStr4(v) {  // convert a numeric long to 4 char string
82
+    var s = String.fromCharCode(v & 0xFF, v>>8 & 0xFF, v>>16 & 0xFF, v>>24 & 0xFF);
83
+    return s;
84
+}
85
+
86
+function LongLognToStr8(v0, v1) {
87
+    var s = '';
88
+    var n = v0;
89
+    for (var i=0; i<4; i++) {
90
+        if ((n&0xFF)==0) {
91
+            return s;
92
+        }
93
+        else {
94
+            s += String.fromCharCode(n & 0xFF)
95
+            n >>= 8
96
+        }
97
+    }
98
+    n = v1
99
+    for (var i=0; i<4; i++) {
100
+        if ((n&0xFF)==0) {
101
+            return s;
102
+        }
103
+        else {
104
+            s += String.fromCharCode(n & 0xFF)
105
+            n >>= 8
106
+        }
107
+    }    
108
+    return s
109
+}
110
+
111
+function LongToHex4(v) {  // convert a numeric long to 4 char hex
112
+    var s = (v & 0xFF).toString(16);
113
+    s += (v>>8 & 0xFF).toString(16);
114
+    s += (v>>16 & 0xFF).toString(16);
115
+    s += (v>>24 & 0xFF).toString(16);
116
+    return s;
117
+}
118
+
119
+function byteArryToLong(txt, i) {
120
+    var v = 0;
121
+    
122
+    if (i<txt.byteLength) {
123
+        v = txt[i];
124
+        if ((i+1)<txt.byteLength) v |= (txt[i+1] << 8);
125
+        if ((i+2)<txt.byteLength) v |= (txt[i+2] << 16);
126
+        if ((i+3)<txt.byteLength) v |= (txt[i+3] << 24);
127
+    }
128
+    return v;
129
+}
130
+
131
+
132
+function LongToBuffer(n, v, teadata) {
133
+    teadata[n] = v[0] & 0xFF;
134
+    teadata[n+1] = v[0]>>8 & 0xFF;
135
+    teadata[n+2] = v[0]>>16 & 0xFF;
136
+    teadata[n+3] = v[0]>>24 & 0xFF;    
137
+    teadata[n+4] = v[1] & 0xFF;
138
+    teadata[n+5] = v[1]>>8 & 0xFF;
139
+    teadata[n+6] = v[1]>>16 & 0xFF;
140
+    teadata[n+7] = v[1]>>24 & 0xFF;   
141
+}
142
+
143
+
144
+function BufferToLong(n, v, teadata) {
145
+    v[0] = 0;
146
+    for (var i=0; i<4; i++) {
147
+        v[0] |= teadata[n+i] << i*8;
148
+    }
149
+    v[0] =  isNaN(v[0]) ? 0 : v[0];
150
+    v[1] = 0;
151
+    for (var i=0; i<4; i++) {
152
+        v[1] |= teadata[n+4+i] << i*8;
153
+    }
154
+    v[1] =  isNaN(v[1]) ? 0 : v[1];    
155
+}
156
+
157
+
158
+function arrayBufferToBase64(bytes) {
159
+    const byteArray = new Uint8Array(bytes.byteLength);
160
+    for(var i=0; i<byteArray.length; i++) {
161
+        byteArray[i] = bytes[i]
162
+    }
163
+    const binString = String.fromCodePoint(...byteArray);
164
+    return btoa(binString);
165
+}
166
+
167
+function base64ToarrayBuffer(base64) {
168
+    var binaryString = atob(base64);
169
+    var bytes = new Uint8Array(binaryString.length);
170
+    for (var i = 0; i < binaryString.length; i++) {
171
+        bytes[i] = binaryString.charCodeAt(i);
172
+    }
173
+    return bytes;
174
+}
175
+
176
+function escCtrlCh(str) {  // escape control chars which might cause problems with encrypted texts
177
+    return str.replace(/[\0\t\n\v\f\r\xa0'"!]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; });
178
+}
179
+
180
+function unescCtrlCh(str) {  // unescape potentially problematic nulls and control characters
181
+    return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); });
182
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 3719 - 0
ios/css/bootstrap-grid.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
ios/css/bootstrap-grid.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 7 - 0
ios/css/bootstrap-grid.min.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
ios/css/bootstrap-grid.min.css.map


+ 319 - 0
ios/css/bootstrap-reboot.css Ver arquivo

@@ -0,0 +1,319 @@
1
+/*!
2
+ * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2018 The Bootstrap Authors
4
+ * Copyright 2011-2018 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
+ */
8
+*,
9
+*::before,
10
+*::after {
11
+  box-sizing: border-box;
12
+}
13
+
14
+html {
15
+  font-family: sans-serif;
16
+  line-height: 1.15;
17
+  -webkit-text-size-adjust: 100%;
18
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
19
+}
20
+
21
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
22
+  display: block;
23
+}
24
+
25
+body {
26
+  margin: 0;
27
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
28
+  font-size: 1rem;
29
+  font-weight: 400;
30
+  line-height: 1.5;
31
+  color: #212529;
32
+  text-align: left;
33
+  background-color: #fff;
34
+}
35
+
36
+[tabindex="-1"]:focus {
37
+  outline: 0 !important;
38
+}
39
+
40
+hr {
41
+  box-sizing: content-box;
42
+  height: 0;
43
+  overflow: visible;
44
+}
45
+
46
+h1, h2, h3, h4, h5, h6 {
47
+  margin-top: 0;
48
+  margin-bottom: 0.5rem;
49
+}
50
+
51
+p {
52
+  margin-top: 0;
53
+  margin-bottom: 1rem;
54
+}
55
+
56
+abbr[title],
57
+abbr[data-original-title] {
58
+  text-decoration: underline;
59
+  -webkit-text-decoration: underline dotted;
60
+  text-decoration: underline dotted;
61
+  cursor: help;
62
+  border-bottom: 0;
63
+  text-decoration-skip-ink: none;
64
+}
65
+
66
+address {
67
+  margin-bottom: 1rem;
68
+  font-style: normal;
69
+  line-height: inherit;
70
+}
71
+
72
+ol,
73
+ul,
74
+dl {
75
+  margin-top: 0;
76
+  margin-bottom: 1rem;
77
+}
78
+
79
+ol ol,
80
+ul ul,
81
+ol ul,
82
+ul ol {
83
+  margin-bottom: 0;
84
+}
85
+
86
+dt {
87
+  font-weight: 700;
88
+}
89
+
90
+dd {
91
+  margin-bottom: .5rem;
92
+  margin-left: 0;
93
+}
94
+
95
+blockquote {
96
+  margin: 0 0 1rem;
97
+}
98
+
99
+b,
100
+strong {
101
+  font-weight: bolder;
102
+}
103
+
104
+small {
105
+  font-size: 80%;
106
+}
107
+
108
+sub,
109
+sup {
110
+  position: relative;
111
+  font-size: 75%;
112
+  line-height: 0;
113
+  vertical-align: baseline;
114
+}
115
+
116
+sub {
117
+  bottom: -.25em;
118
+}
119
+
120
+sup {
121
+  top: -.5em;
122
+}
123
+
124
+a {
125
+  color: #007bff;
126
+  text-decoration: none;
127
+  background-color: transparent;
128
+}
129
+
130
+a:hover {
131
+  color: #0056b3;
132
+  text-decoration: underline;
133
+}
134
+
135
+a:not([href]):not([tabindex]) {
136
+  color: inherit;
137
+  text-decoration: none;
138
+}
139
+
140
+a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
141
+  color: inherit;
142
+  text-decoration: none;
143
+}
144
+
145
+a:not([href]):not([tabindex]):focus {
146
+  outline: 0;
147
+}
148
+
149
+pre,
150
+code,
151
+kbd,
152
+samp {
153
+  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
154
+  font-size: 1em;
155
+}
156
+
157
+pre {
158
+  margin-top: 0;
159
+  margin-bottom: 1rem;
160
+  overflow: auto;
161
+}
162
+
163
+figure {
164
+  margin: 0 0 1rem;
165
+}
166
+
167
+img {
168
+  vertical-align: middle;
169
+  border-style: none;
170
+}
171
+
172
+svg {
173
+  overflow: hidden;
174
+  vertical-align: middle;
175
+}
176
+
177
+table {
178
+  border-collapse: collapse;
179
+}
180
+
181
+caption {
182
+  padding-top: 0.75rem;
183
+  padding-bottom: 0.75rem;
184
+  color: #6c757d;
185
+  text-align: left;
186
+  caption-side: bottom;
187
+}
188
+
189
+th {
190
+  text-align: inherit;
191
+}
192
+
193
+label {
194
+  display: inline-block;
195
+  margin-bottom: 0.5rem;
196
+}
197
+
198
+button {
199
+  border-radius: 0;
200
+}
201
+
202
+button:focus {
203
+  outline: 1px dotted;
204
+  outline: 5px auto -webkit-focus-ring-color;
205
+}
206
+
207
+input,
208
+button,
209
+select,
210
+optgroup,
211
+textarea {
212
+  margin: 0;
213
+  font-family: inherit;
214
+  font-size: inherit;
215
+  line-height: inherit;
216
+}
217
+
218
+button,
219
+input {
220
+  overflow: visible;
221
+}
222
+
223
+button,
224
+select {
225
+  text-transform: none;
226
+}
227
+
228
+button,
229
+[type="button"],
230
+[type="reset"],
231
+[type="submit"] {
232
+  -webkit-appearance: button;
233
+}
234
+
235
+button::-moz-focus-inner,
236
+[type="button"]::-moz-focus-inner,
237
+[type="reset"]::-moz-focus-inner,
238
+[type="submit"]::-moz-focus-inner {
239
+  padding: 0;
240
+  border-style: none;
241
+}
242
+
243
+input[type="radio"],
244
+input[type="checkbox"] {
245
+  box-sizing: border-box;
246
+  padding: 0;
247
+}
248
+
249
+input[type="date"],
250
+input[type="time"],
251
+input[type="datetime-local"],
252
+input[type="month"] {
253
+  -webkit-appearance: listbox;
254
+}
255
+
256
+textarea {
257
+  overflow: auto;
258
+  resize: vertical;
259
+}
260
+
261
+fieldset {
262
+  min-width: 0;
263
+  padding: 0;
264
+  margin: 0;
265
+  border: 0;
266
+}
267
+
268
+legend {
269
+  display: block;
270
+  width: 100%;
271
+  max-width: 100%;
272
+  padding: 0;
273
+  margin-bottom: .5rem;
274
+  font-size: 1.5rem;
275
+  line-height: inherit;
276
+  color: inherit;
277
+  white-space: normal;
278
+}
279
+
280
+progress {
281
+  vertical-align: baseline;
282
+}
283
+
284
+[type="number"]::-webkit-inner-spin-button,
285
+[type="number"]::-webkit-outer-spin-button {
286
+  height: auto;
287
+}
288
+
289
+[type="search"] {
290
+  outline-offset: -2px;
291
+  -webkit-appearance: none;
292
+}
293
+
294
+[type="search"]::-webkit-search-decoration {
295
+  -webkit-appearance: none;
296
+}
297
+
298
+::-webkit-file-upload-button {
299
+  font: inherit;
300
+  -webkit-appearance: button;
301
+}
302
+
303
+output {
304
+  display: inline-block;
305
+}
306
+
307
+summary {
308
+  display: list-item;
309
+  cursor: pointer;
310
+}
311
+
312
+template {
313
+  display: none;
314
+}
315
+
316
+[hidden] {
317
+  display: none !important;
318
+}
319
+/*# sourceMappingURL=bootstrap-reboot.css.map */

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
ios/css/bootstrap-reboot.css.map


+ 8 - 0
ios/css/bootstrap-reboot.min.css Ver arquivo

@@ -0,0 +1,8 @@
1
+/*!
2
+ * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2018 The Bootstrap Authors
4
+ * Copyright 2011-2018 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
+ */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
8
+/*# sourceMappingURL=bootstrap-reboot.min.css.map */

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
ios/css/bootstrap-reboot.min.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 9887 - 0
ios/css/bootstrap.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
ios/css/bootstrap.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 7 - 0
ios/css/bootstrap.min.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
ios/css/bootstrap.min.css.map


BIN
ios/image/Add.png Ver arquivo


BIN
ios/image/AddMsg.png Ver arquivo


BIN
ios/image/CasePut.png Ver arquivo


BIN
ios/image/DelMsg.png Ver arquivo


BIN
ios/image/Delete.png Ver arquivo


BIN
ios/image/Down.png Ver arquivo


BIN
ios/image/Edit.png Ver arquivo


BIN
ios/image/Gas.png Ver arquivo


BIN
ios/image/GetMgt.png Ver arquivo


BIN
ios/image/GroupAdd.png Ver arquivo


BIN
ios/image/Money.png Ver arquivo


BIN
ios/image/MsgList.png Ver arquivo


BIN
ios/image/MsgLog.png Ver arquivo


BIN
ios/image/MsgMgt.png Ver arquivo


BIN
ios/image/Note.png Ver arquivo


BIN
ios/image/NoteSet.png Ver arquivo


BIN
ios/image/OnePerson.png Ver arquivo


BIN
ios/image/Package.png Ver arquivo


BIN
ios/image/Records.png Ver arquivo


BIN
ios/image/Repair.png Ver arquivo


+ 0 - 0
ios/image/Search.png Ver arquivo


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff