-
Notifications
You must be signed in to change notification settings - Fork 0
/
vmUXAS.c
531 lines (406 loc) · 57.5 KB
/
vmUXAS.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
#include "vm_utils.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#include <sb_types.h>
#include <sb_event_counter.h>
#include <sb_queue_int8_t_1.h>
#include <sb_queue_union_art_DataContent_1.h>
#include <lmcp.h>
#include <common/conv.h>
#include "AutomationResponse.h"
// This file will not be overwritten so is safe to edit
/************************************************************
* FORWARD DECLS
***********************************************************/
void sb_pacer_notification_wait(); // would be provided via CAmkES if native
const char *get_instance_name(void); // would be provided via CAmkES if native
void testOutLMCP(void);
void sb_AutomationResponse_MON_GEO_1_notification_emit(); // would be provided via CAmkES if native
void sb_AutomationResponse_MON_REQ_1_notification_emit(); // would be provided via CAmkES if native
// the following api_get_X and api_put_X methods would be provided if the UXAS slang library was linked in
bool api_get_AutomationRequest__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray);
bool api_get_AirVehicleState__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray);
bool api_get_OperatingRegion__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray);
bool api_get_LineSearchTask__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray);
void api_put_AutomationResponse_MON_GEO__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t numBits, uint8_t *byteArray);
void api_put_AutomationResponse_MON_REQ__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t numBits, uint8_t *byteArray);
/************************************************************
* VARIABLES
* The *queue* versions would be provided via camkes.h for
* native components
***********************************************************/
int sb_AutomationRequest_fd;
sb_queue_union_art_DataContent_1_t *sb_AutomationRequest_queue;
sb_queue_union_art_DataContent_1_Recv_t sb_AutomationRequest_recv_queue;
int sb_AirVehicleState_fd;
sb_queue_union_art_DataContent_1_t *sb_AirVehicleState_queue;
sb_queue_union_art_DataContent_1_Recv_t sb_AirVehicleState_recv_queue;
int sb_OperatingRegion_fd;
sb_queue_union_art_DataContent_1_t * sb_OperatingRegion_queue;
sb_queue_union_art_DataContent_1_Recv_t sb_OperatingRegion_recv_queue;
int sb_LineSearchTask_fd;
sb_queue_union_art_DataContent_1_t * sb_LineSearchTask_queue;
sb_queue_union_art_DataContent_1_Recv_t sb_LineSearchTask_recv_queue;
int sb_AutomationResponse_MON_GEO_fd;
sb_queue_union_art_DataContent_1_t *sb_AutomationResponse_MON_GEO_queue_1;
int *sb_AutomationResponse_MON_GEO_emit;
int sb_AutomationResponse_MON_REQ_fd;
sb_queue_union_art_DataContent_1_t *sb_AutomationResponse_MON_REQ_queue_1;
int *sb_AutomationResponse_MON_REQ_emit;
int sb_pacer_period_fd;
sb_queue_int8_t_1_t *sb_pacer_period_queue;
sb_queue_int8_t_1_Recv_t sb_pacer_period_recv_queue;
void pre_init(void) {
// initialise data structure for incoming event data port AutomationRequest
sb_queue_union_art_DataContent_1_Recv_init(&sb_AutomationRequest_recv_queue, sb_AutomationRequest_queue);
// initialise data structure for incoming event data port AirVehicleState
sb_queue_union_art_DataContent_1_Recv_init(&sb_AirVehicleState_recv_queue, sb_AirVehicleState_queue);
// initialise data structure for incoming event data port OperatingRegion
sb_queue_union_art_DataContent_1_Recv_init(&sb_OperatingRegion_recv_queue, sb_OperatingRegion_queue);
// initialise data structure for incoming event data port LineSearchTask
sb_queue_union_art_DataContent_1_Recv_init(&sb_LineSearchTask_recv_queue, sb_LineSearchTask_queue);
// initialise data structure for outgoing event data port AutomationResponse_MON_GEO
sb_queue_union_art_DataContent_1_init(sb_AutomationResponse_MON_GEO_queue_1);
// initialise data structure for outgoing event data port AutomationResponse_MON_REQ
sb_queue_union_art_DataContent_1_init(sb_AutomationResponse_MON_REQ_queue_1);
// sb_queue_int8_t_1_init(sb_pacer_period_queue); receiver so shouldn't init queue
sb_queue_int8_t_1_Recv_init(&sb_pacer_period_recv_queue, sb_pacer_period_queue); // but should init its recv queue
}
// TODO: use LMCP directly? For now, just send some pre-baked byte arrays
// https://github.com/loonwerks/case-ta6-experimental-platform-models/blob/master/Phase-2-UAV-Experimental-Platform-Transformed/hamr/src/c/ext-c/UxAS_thr_Impl_Impl/UxAS_thr_Impl_Impl.c#L8
U8 UxASAutomationResponse[] = {0x61,0x66,0x72,0x6C,0x2E,0x63,0x6D,0x61,0x73,0x69,0x2E,0x41,0x75,0x74,0x6F,0x6D,0x61,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x24,0x6C,0x6D,0x63,0x70,0x7C,0x61,0x66,0x72,0x6C,0x2E,0x63,0x6D,0x61,0x73,0x69,0x2E,0x41,0x75,0x74,0x6F,0x6D,0x61,0x74,0x69,0x6F,0x6E,0x52,0x65,0x73,0x70,0x6F,0x6E,0x73,0x65,0x7C,0x7C,0x34,0x30,0x30,0x7C,0x35,0x37,0x24,0x4C,0x4D,0x43,0x50,0x00,0x00,0x1C,0x17,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x03,0x00,0x01,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x82,0x44,0xA0,0x42,0x3F,0xC0,0x5E,0x3F,0x67,0xD5,0x56,0x77,0xB2,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x74,0x64,0x98,0xF0,0x3E,0xC0,0x5E,0x3F,0x64,0x7B,0x68,0x80,0x1B,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x65,0xBF,0x07,0x5C,0x8C,0xC0,0x5E,0x3F,0x64,0xE6,0x8D,0x8B,0xF6,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x58,0x4B,0xF9,0x74,0x81,0xC0,0x5E,0x3F,0x69,0x08,0x5E,0x52,0x10,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x48,0x59,0x5E,0x32,0x53,0xC0,0x5E,0x3F,0x78,0x67,0xC2,0xF1,0xCA,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0xB5,0x6E,0x2B,0x3D,0x14,0xC0,0x5E,0x40,0xD4,0x90,0xB6,0x47,0xBE,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0xAE,0xB9,0x26,0xE2,0x8A,0xC0,0x5E,0x40,0xDD,0xCD,0x94,0x1A,0xCC,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0xA3,0xC4,0x54,0xD1,0x5A,0xC0,0x5E,0x40,0xE4,0xB4,0x88,0xB9,0xEB,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x96,0x09,0x79,0x17,0xEF,0xC0,0x5E,0x40,0xE8,0x58,0x32,0xD1,0x00,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x87,0x61,0x14,0x4C,0xC0,0xC0,0x5E,0x40,0xE8,0x3B,0x54,0x02,0x33,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x79,0xC3,0x95,0x95,0xFB,0xC0,0x5E,0x40,0xE4,0x61,0xCD,0xD9,0x50,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x6F,0x05,0x8B,0x07,0x27,0xC0,0x5E,0x40,0xDD,0x50,0x1C,0x3B,0xCF,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x67,0x3F,0x52,0x2D,0x96,0xC0,0x5E,0x40,0xCA,0x80,0xAF,0xBA,0xEF,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x6E,0xC0,0xDB,0x56,0xDC,0xC0,0x5E,0x40,0x7C,0x9A,0xF1,0xE8,0xB9,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x6B,0xAA,0xFB,0x77,0x58,0xC0,0x5E,0x40,0x75,0x14,0x4F,0xA9,0xE2,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x57,0x83,0x43,0x13,0xC4,0xC0,0x5E,0x40,0x57,0x68,0x54,0x77,0x1A,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x41,0xB7,0x7E,0x6D,0x5C,0xC0,0x5E,0x40,0x41,0x3D,0xE2,0x15,0xC8,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x2B,0x57,0xF8,0xB7,0x8A,0xC0,0x5E,0x40,0x30,0xC9,0x94,0x0F,0xA5,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA6,0xFA,0xE1,0x35,0x0E,0x35,0xC0,0x5E,0x3F,0xEB,0xB8,0x21,0x2F,0x0D,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA6,0xFF,0xEE,0x88,0xC9,0x28,0xC0,0x5E,0x3F,0xAD,0xA5,0x7D,0x31,0x82,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x1C,0xA7,0xA6,0x86,0xB5,0xC0,0x5E,0x3F,0x7C,0x73,0x19,0x0E,0xD6,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x55,0x73,0x6E,0x47,0xFE,0xC0,0x5E,0x3F,0x4E,0x28,0x29,0xAB,0x2A,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x91,0xEF,0x3A,0x40,0x7D,0xC0,0x5E,0x3F,0x31,0xFA,0xD7,0xF8,0x82,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x0A,0x99,0xE1,0xB6,0xE8,0xC0,0x5E,0x3F,0x14,0x36,0x2E,0x1C,0xB8,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x1F,0xC8,0x8A,0xF0,0x3C,0xC0,0x5E,0x3F,0x0C,0x14,0xC9,0x03,0x8F,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xC2,0x7C,0x6C,0xD7,0x38,0xC0,0x5E,0x3E,0xEB,0xE3,0x1F,0x4B,0xD0,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xD5,0x5D,0xD5,0xF3,0x7F,0xC0,0x5E,0x3E,0xE5,0xB9,0x44,0xD5,0x4B,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xE7,0x39,0x3C,0x77,0xD7,0xC0,0x5E,0x3E,0xDB,0x14,0x37,0x2E,0xAF,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xF9,0xA7,0xEF,0x4C,0xB7,0xC0,0x5E,0x3E,0xCB,0xBF,0x2D,0xB0,0x35,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA9,0x09,0x10,0xB2,0x75,0xAA,0xC0,0x5E,0x3E,0xBD,0x68,0xC0,0x50,0xA4,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xDF,0xD0,0xE3,0x2D,0x2F,0xC0,0x5E,0x3E,0x89,0x05,0xB8,0x34,0x27,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xD6,0xDA,0x71,0x21,0x53,0xC0,0x5E,0x3E,0x6E,0x8A,0x52,0xF5,0x17,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xCD,0x91,0xAB,0x39,0x64,0xC0,0x5E,0x3E,0x74,0xDC,0xBA,0xD8,0xF5,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x9D,0xE1,0x2D,0x43,0x2F,0xC0,0x5E,0x3E,0x7F,0xC4,0x56,0x56,0x2B,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x7B,0xD8,0xCB,0xAF,0x3E,0xC0,0x5E,0x3E,0x7F,0xBE,0xAB,0x14,0x4E,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x33,0x39,0xE2,0x83,0x6C,0xC0,0x5E,0x3E,0x8B,0x7A,0xA6,0x3B,0xBE,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0xEC,0xAE,0x28,0x6A,0x9E,0xC0,0x5E,0x3E,0x86,0xF4,0x9E,0x5D,0x7D,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x9A,0x87,0x32,0x4D,0x9C,0xC0,0x5E,0x3E,0x74,0xA1,0xDC,0xDB,0x58,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x67,0x29,0xAC,0x98,0x0F,0xC0,0x5E,0x3E,0x62,0xCF,0xB9,0x94,0xDC,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x38,0x6B,0x5E,0x37,0xF6,0xC0,0x5E,0x3E,0x46,0x91,0x21,0x7F,0xB8,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x16,0x22,0x81,0x20,0x1A,0xC0,0x5E,0x3E,0x1C,0x2A,0x08,0x0C,0x1F,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA6,0xFF,0x6C,0xF8,0xCD,0xB2,0xC0,0x5E,0x3D,0xE7,0x76,0xE6,0x77,0x9F,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA6,0xFF,0xBF,0xE3,0xEC,0x87,0xC0,0x5E,0x3D,0x99,0xB7,0xDB,0x1F,0x74,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x1E,0xB3,0x03,0x2D,0x2F,0xC0,0x5E,0x3D,0x5F,0x4D,0x45,0x67,0x3F,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2D,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x48,0xA0,0x08,0x48,0x74,0xC0,0x5E,0x3D,0x38,0x89,0x1A,0x46,0xA6,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA7,0x82,0xA0,0x1E,0x08,0xA7,0xC0,0x5E,0x3D,0x11,0xD1,0x46,0xB2,0xD8,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x03,0x0B,0x1B,0x06,0xA3,0xC0,0x5E,0x3C,0xFB,0xF0,0x4E,0x6D,0x13,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x21,0xFA,0xA4,0xE1,0x33,0xC0,0x5E,0x3C,0xFC,0x08,0x5C,0x78,0x82,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0x7F,0xC4,0xEE,0x6F,0x65,0xC0,0x5E,0x3C,0xDE,0x15,0x82,0xB9,0xB4,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA8,0xE1,0x0C,0xE6,0xA8,0x23,0xC0,0x5E,0x3C,0xA2,0xE2,0x3C,0x17,0xC0,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA9,0x38,0x92,0x68,0x29,0xD7,0xC0,0x5E,0x3C,0x78,0xAC,0xFF,0x30,0x94,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA9,0x70,0x13,0xEB,0xAA,0x4B,0xC0,0x5E,0x3C,0x62,0xB0,0xAB,0x7B,0x0A,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x35,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA9,0x9D,0xE8,0xAF,0xB7,0x5B,0xC0,0x5E,0x3C,0x59,0x5D,0x36,0x68,0x25,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xA9,0xF6,0x70,0xDC,0x1D,0x73,0xC0,0x5E,0x3C,0x56,0x7B,0x54,0x75,0xF0,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0x83,0x26,0xA4,0x4F,0x6E,0xC0,0x5E,0x3C,0x66,0x37,0x0D,0xC1,0x1D,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xAF,0x49,0x62,0xB1,0xEC,0xC0,0x5E,0x3C,0x86,0xB9,0xAB,0x72,0xFF,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xE6,0x59,0x92,0x3E,0x7C,0xC0,0x5E,0x3C,0xF1,0xD7,0x6D,0x0C,0x3B,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3A,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xEE,0xD4,0x67,0x81,0x69,0xC0,0x5E,0x3C,0xEC,0xB5,0xA0,0xDA,0x28,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xF7,0x49,0x60,0x7B,0x1C,0xC0,0x5E,0x3C,0xE9,0xF0,0x1C,0x5E,0xC4,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xF7,0x73,0x0E,0x3A,0xAD,0xC0,0x5E,0x3C,0xDC,0x03,0xC5,0xD4,0x2E,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xF4,0xBB,0xC9,0x50,0xD6,0xC0,0x5E,0x3C,0xCC,0x46,0xAF,0xB7,0x09,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xEA,0x2E,0x6B,0xC0,0xCF,0xC0,0x5E,0x3C,0xB4,0x72,0x53,0x72,0xFD,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xC1,0x28,0x4D,0x2F,0x56,0xC0,0x5E,0x3C,0x93,0xF3,0xCD,0x47,0x1B,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0x7E,0x82,0x25,0xA6,0x42,0xC0,0x5E,0x3C,0x53,0x8C,0xFF,0xAC,0xB9,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0x18,0x90,0x79,0x49,0x49,0xC0,0x5E,0x3B,0xFC,0x3E,0x1B,0x37,0x80,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0x1D,0x91,0xD5,0xA9,0x60,0xC0,0x5E,0x3B,0xCD,0x0F,0xCC,0xE2,0x9C,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0x3C,0x22,0xAF,0x05,0x59,0xC0,0x5E,0x3B,0x9E,0xA7,0xF4,0x65,0xD8,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0x7A,0x2E,0xDD,0xE3,0x22,0xC0,0x5E,0x3B,0x7F,0xDD,0xBF,0x0C,0x16,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAA,0xCB,0x1D,0xD5,0x71,0x57,0xC0,0x5E,0x3B,0x77,0xE3,0x0C,0x8B,0x32,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAB,0x2C,0x2F,0xC4,0x57,0x17,0xC0,0x5E,0x3B,0x7D,0x3D,0xEF,0x6B,0x84,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAB,0x71,0xFA,0x77,0x16,0x6B,0xC0,0x5E,0x3B,0x91,0xB5,0xB7,0x61,0x41,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAB,0x9C,0x9B,0xB2,0xBE,0xD6,0xC0,0x5E,0x3B,0xB0,0x9E,0x74,0x84,0x94,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE8,0x01,0x43,0x4D,0x41,0x53,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x03,0x40,0x46,0xAB,0x9C,0x9B,0xB2,0xBE,0xD6,0xC0,0x5E,0x3B,0xB0,0x9E,0x74,0x84,0x94,0x44,0x2F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x41,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x03,0x53,0x15};
// [a,f,r,l,.,c,m,a,s,i,.,A,u,t,o,m,a,t,i,o,n,R,e,s,p,o,n,s,e,$,l,m,c,p,|,a,f,r,l,.,c,m,a,s,i,.,A,u,t,o,m,a,t,i,o,n,R,e,s,p,o,n,s,e,|,|,4,0,0,|,5,7,$,L,M,C,P, , ,,,,C,M,A,S,I, , , , , , ,3, ,, ,,,C,M,A,S,I, ... ]
static size_t numBitsUxASAutomationResponse = (int) sizeof(UxASAutomationResponse) * 8;
bool _hasAirVehicleState = false;
uint8_t lastAirVehicleState[numBits_hamr_CMASI_AirVehicleState_i] = {0};
// FIXME: attestation gate isn't stripping off the address attributed part of the messages
// so AddressAttributedMessages are flowing in rather than, e.g., LineSearchTasks.
const bool ATTESTATION_GATE_FIXED = false;
bool _hasAutomationRequest = false;
//uint8_t lastAutomationRequest[numBytes_hamr_CMASI_AutomationRequest_i] = {0};
uint8_t lastAutomationRequest[numBits_hamr_CMASI_AddressAttributedMessage_i] = {0};
bool _hasLineSearchTask = false;
//uint8_t lastLineSearchTask[numBytes_hamr_CMASI_LineSearchTask_i] = {0};
uint8_t lastLineSearchTask[numBits_hamr_CMASI_AddressAttributedMessage_i] = {0};
bool _hasOperatingRegion = false;
//uint8_t lastOperatingRegion[numBytes_hamr_CMASI_OperatingRegion_i] = {0};
uint8_t lastOperatingRegion[numBits_hamr_CMASI_AddressAttributedMessage_i] = {0};
int run(void) {
printf("Hello from %s's run method\n", get_instance_name());
testOutLMCP();
for(;;){
sb_pacer_notification_wait();
//printf("Hello from %s's run loop\n", get_instance_name());
{
size_t numBits;
if(api_get_AirVehicleState__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(&numBits, lastAirVehicleState)){
//hex_dump(numBits, byteArray);
_hasAirVehicleState = true;
}
}
{
size_t numBits;
if(api_get_AutomationRequest__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(&numBits, lastAutomationRequest)){
//hex_dump(numBits, byteArray);
_hasAutomationRequest = true;
}
}
{
size_t numBits;
if(api_get_LineSearchTask__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(&numBits, lastLineSearchTask)){
//hex_dump(numBits, byteArray);
_hasLineSearchTask = true;
}
}
{
size_t numBits;
if(api_get_OperatingRegion__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(&numBits, lastOperatingRegion)){
//hex_dump(numBits, byteArray);
_hasOperatingRegion = true;
}
}
if(_hasOperatingRegion && _hasLineSearchTask && _hasAutomationRequest) {
// do some cool stuff ..., until then just ignore the incoming messages and just send pre-baked automation response
api_put_AutomationResponse_MON_GEO__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(
numBitsUxASAutomationResponse, UxASAutomationResponse);
api_put_AutomationResponse_MON_REQ__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(
numBitsUxASAutomationResponse, UxASAutomationResponse);
printf("%s: Received expected messages from AM_Gate/FLT_ST so sent prebaked AutomationResponse\n", get_instance_name());
_hasOperatingRegion = false;
_hasLineSearchTask = false;
_hasAutomationRequest = false;
} else {
//printf("%s: Some msg not received so doing nothing. ar:%s ls:%s or:%s av:%s\n",
// get_instance_name(), _hasAutomationRequest?"T":"F", _hasLineSearchTask?"T":"F", _hasOperatingRegion?"T":"F", _hasAirVehicleState?"T":"F");
}
}
return 0;
}
int main(int argc, char *argv[]) {
printf("VM App %s started\n", get_instance_name());
// 262144 = 131072 * 2 - the data struct used for event data ports always has an array
// - whose size is 1 greater than the queue size (i.e. 1+1 in this case).
// - 131072 is the largest bit size passing through connections
char *maxBitSize = "262144";
char* defaults[] = {get_instance_name(), "/dev/uio0", maxBitSize, // AutomationRequest
"/dev/uio1", maxBitSize, // AirVehicleState
"/dev/uio2", maxBitSize, // OperatingRegion
"/dev/uio3", maxBitSize, // LineSearchTask
"/dev/uio4", maxBitSize, // AutomationResponse_MON_GEO
"/dev/uio5", maxBitSize, // AutomationResponse_MON_REQ
"/dev/uio6", "4096" // pacer_period
};
char** myargs = defaults;
if (argc > 1) { // use cli args instead
myargs = argv;
if (argc != (sizeof(defaults) / sizeof(char*))) {
char* a = "<fd of sb_AutomationRequest_queue> <size of sb_AutomationRequest_queue>";
char* b = "<fd of sb_AirVehicleState_queue> <size of sb_AirVehicleState_queue>";
char* c = "<fd of sb_OperatingRegion_queue> <size of sb_OperatingRegion_queue>";
char* d = "<fd of sb_LineSearchTask_queue> <size of sb_LineSearchTask_queue>";
char* e = "<fd of sb_AutomationResponse_MON_GEO_queue_1> <size of sb_AutomationResponse_MON_GEO_queue_1>";
char* f = "<fd of sb_AutomationResponse_MON_REQ_queue_1> <size of sb_AutomationResponse_MON_REQ_queue_1>";
char* g = "<fd of sb_pacer_period_queue> <size of sb_pacer_period_queue>";
printf("Usage:\n %s\n %s\n %s\n %s\n %s\n %s\n %s\n\n", a, b, c, d, e, f, g);
return 1;
}
}
int arg = 1;
char* raw_AutomationRequest = setupIncomingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_AutomationRequest_fd);
sb_AutomationRequest_queue = (sb_queue_union_art_DataContent_1_t *) raw_AutomationRequest;
char* raw_AirVehicleState = setupIncomingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_AirVehicleState_fd);
sb_AirVehicleState_queue = (sb_queue_union_art_DataContent_1_t *) raw_AirVehicleState;
char* raw_OperatingRegion = setupIncomingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_OperatingRegion_fd);
sb_OperatingRegion_queue = (sb_queue_union_art_DataContent_1_t *) raw_OperatingRegion;
char* raw_LineSearchTask = setupIncomingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_LineSearchTask_fd);
sb_LineSearchTask_queue = (sb_queue_union_art_DataContent_1_t *) raw_LineSearchTask;
char* raw_AutomationResponse_MON_GEO = setupOutgoingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_AutomationResponse_MON_GEO_fd, &sb_AutomationResponse_MON_GEO_emit);
sb_AutomationResponse_MON_GEO_queue_1 = (sb_queue_union_art_DataContent_1_t*) raw_AutomationResponse_MON_GEO;
char* raw_AutomationResponse_MON_REQ = setupOutgoingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_AutomationResponse_MON_REQ_fd, &sb_AutomationResponse_MON_REQ_emit);
sb_AutomationResponse_MON_REQ_queue_1 = (sb_queue_union_art_DataContent_1_t*) raw_AutomationResponse_MON_REQ;
char* raw_pacer_period = setupIncomingEventDataPort(myargs[arg++], atoi(myargs[arg++]),
&sb_pacer_period_fd);
sb_pacer_period_queue = (sb_queue_int8_t_1_t *) raw_pacer_period;
if(sb_AutomationRequest_queue == NULL || sb_AirVehicleState_queue == NULL || sb_OperatingRegion_queue == NULL ||
sb_LineSearchTask_queue == NULL || raw_AutomationResponse_MON_GEO == NULL
|| raw_AutomationResponse_MON_REQ == NULL || sb_pacer_period_queue == NULL
){
printf("Something went wrong while setting up the ports, bailing out\n");
} else {
// TODO: can't rely on c struct init here
sb_AutomationResponse_MON_GEO_queue_1->numSent = 0;
sb_AutomationResponse_MON_REQ_queue_1->numSent = 0;
pre_init();
run();
}
tearDownPort(raw_AutomationRequest, sb_AutomationRequest_fd, atoi(myargs[2]));
tearDownPort(raw_AirVehicleState, sb_AirVehicleState_fd, atoi(myargs[4]));
tearDownPort(raw_OperatingRegion, sb_OperatingRegion_fd, atoi(myargs[6]));
tearDownPort(raw_LineSearchTask, sb_LineSearchTask_fd, atoi(myargs[8]));
tearDownPort(raw_AutomationResponse_MON_GEO, sb_AutomationResponse_MON_GEO_fd, atoi(myargs[10]));
tearDownPort(raw_AutomationResponse_MON_REQ, sb_AutomationResponse_MON_REQ_fd, atoi(myargs[12]));
tearDownPort(raw_pacer_period, sb_pacer_period_fd, atoi(myargs[14]));
return 0;
}
// replicate the behavior of a native seL4 version of pacer wait
void sb_pacer_notification_wait() {
sb_event_counter_t numDropped = 0;
int8_t data;
while (!sb_queue_int8_t_1_dequeue(&sb_pacer_period_recv_queue, &numDropped, &data)) {
int val;
/* Blocking read */
int result = read(sb_pacer_period_fd, &val, sizeof(val));
if (result < 0) {
printf("Error reading period. %i\n", result);
//return -1;
}
}
// printf("read %i -- numDropped %i\n", data, numDropped);
}
// camkes.h would have provided this method
const char *get_instance_name(void) {
static const char name[] = "vmUXAS";
return name;
}
/********************************************************************************
* replicate the behavior of a native seL4 versions of outgoing event data
* notification emit methods
********************************************************************************/
void sb_AutomationResponse_MON_GEO_1_notification_emit(){ sb_AutomationResponse_MON_GEO_emit[0] = 1; }
void sb_AutomationResponse_MON_REQ_1_notification_emit(){ sb_AutomationResponse_MON_REQ_emit[0] = 1; }
/********************************************************************************
* END emit methods
********************************************************************************/
/********************************************************************************
* seL4 enqueue methods
* the following are direct copies of the seL4 enqueue methods HAMR would generate
* for a native component's outgoing event data ports
********************************************************************************/
bool sb_AutomationResponse_MON_GEO_enqueue(const union_art_DataContent *data) {
sb_queue_union_art_DataContent_1_enqueue(sb_AutomationResponse_MON_GEO_queue_1, (union_art_DataContent*) data);
sb_AutomationResponse_MON_GEO_1_notification_emit();
return true;
}
bool sb_AutomationResponse_MON_REQ_enqueue(const union_art_DataContent *data) {
sb_queue_union_art_DataContent_1_enqueue(sb_AutomationResponse_MON_REQ_queue_1, (union_art_DataContent*) data);
sb_AutomationResponse_MON_REQ_1_notification_emit();
return true;
}
/********************************************************************************
* END CAmkES enqueue methods
********************************************************************************/
/********************************************************************************
* seL4 dequeue methods
* the following are direct copies of the seL4 enqueue methods HAMR would generate
* for a native component's incoming event data ports
********************************************************************************/
bool sb_AutomationRequest_dequeue_poll(sb_event_counter_t *numDropped, union_art_DataContent *data) {
return sb_queue_union_art_DataContent_1_dequeue(&sb_AutomationRequest_recv_queue, numDropped, data);
}
bool sb_AutomationRequest_dequeue(union_art_DataContent *data) {
sb_event_counter_t numDropped;
return sb_AutomationRequest_dequeue_poll(&numDropped, data);
}
bool sb_AirVehicleState_dequeue_poll(sb_event_counter_t *numDropped, union_art_DataContent *data) {
return sb_queue_union_art_DataContent_1_dequeue(&sb_AirVehicleState_recv_queue, numDropped, data);
}
bool sb_AirVehicleState_dequeue(union_art_DataContent *data) {
sb_event_counter_t numDropped;
return sb_AirVehicleState_dequeue_poll(&numDropped, data);
}
bool sb_OperatingRegion_dequeue_poll(sb_event_counter_t *numDropped, union_art_DataContent *data) {
return sb_queue_union_art_DataContent_1_dequeue(&sb_OperatingRegion_recv_queue, numDropped, data);
}
bool sb_OperatingRegion_dequeue(union_art_DataContent *data) {
sb_event_counter_t numDropped;
return sb_OperatingRegion_dequeue_poll(&numDropped, data);
}
bool sb_LineSearchTask_dequeue_poll(sb_event_counter_t *numDropped, union_art_DataContent *data) {
return sb_queue_union_art_DataContent_1_dequeue(&sb_LineSearchTask_recv_queue, numDropped, data);
}
bool sb_LineSearchTask_dequeue(union_art_DataContent *data) {
sb_event_counter_t numDropped;
return sb_LineSearchTask_dequeue_poll(&numDropped, data);
}
/********************************************************************************
* END CAmkES dequeue methods
********************************************************************************/
/** this is the guts of one of the hamr generated RADIO api_send... methods which wraps
* a byte array into a payload struct. Separating it out so that it can be reused for the
* other outgoing send methods */
void populatePayload(
size_t numBits,
uint8_t *byteArray,
hamr_Base_Types_Bits_Payload payload // note hamr_Base_Types_Bits_Payload is typedef'ed as a pointer to a 'struct hamr_Base_Types_Payload'
){
assert((Z) numBits >= 0 && "numBits must be non-negative for IS[Z, B].");
assert((Z) numBits <= MaxIS_C4F575 && "numBits too large for IS[Z, B].");
// NOTE:
// when using the wire-protocol (i.e. byte-arrays) HAMR passes around the Slang type
//
// @datatype class Bits_Payload(value: ISZ[B]) extends art.DataContent
//
// The fingerprint for ISZ[B] is IS_C4575 (e.g. ISZ[String] yields a different fingerprint).
// declare a new IS_C4F575 on the stack
DeclNewIS_C4F575(t_0);
// IS (immutable sequences) have two fields; size and value -- value is an U8 array
t_0.size = numBits;
if(numBits > 0) {
size_t numBytes = (numBits - 1) / 8 + 1;
memcpy(&t_0.value, byteArray, numBytes);
}
// FIXME: using the apply method causes a linking error related to missing
// fmod, fmodl methods (muslc related?) coming from Slang F32/F64 methods.
// So instead just do what the apply method does directly.
// i.e. uses Type_assign to copy the IS into the bits payload value field
// hamr_Base_Types_Bits_Payload_apply(payload, (IS_C4F575) &t_0);
Type_assign(&payload->value, &t_0, sizeof(struct IS_C4F575));
}
// this is the guts of one of the hamr generated api_get... methods. Separating out so it can be reused
bool populateByteArray(hamr_Base_Types_Bits_Payload payload, size_t *numBits, uint8_t *byteArray) {
*numBits = payload->value.size;
if(*numBits > 0) {
size_t numBytes = (*numBits - 1) / 8 + 1;
memcpy(byteArray, payload->value.value, numBytes);
}
return true;
}
/**********************************************************************
* the following api_put_X method are adapted from the non-vm versions
* of radio's slang-embedded c-api's
**********************************************************************/
bool api_get_AutomationRequest__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray){
DeclNewart_DataContent(payload);
if(sb_AutomationRequest_dequeue(&payload)) {
bool success = populateByteArray(&payload.hamr_Base_Types_Bits_Payload, numBits, byteArray);
assert(!ATTESTATION_GATE_FIXED || numBits <= numBits_hamr_CMASI_AutomationRequest_i);
return success;
} else {
return false;
}
}
bool api_get_AirVehicleState__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray){
DeclNewart_DataContent(payload);
if(sb_AirVehicleState_dequeue(&payload)) {
bool success = populateByteArray(&payload.hamr_Base_Types_Bits_Payload, numBits, byteArray);
assert(!ATTESTATION_GATE_FIXED || numBits <= numBits_hamr_CMASI_AirVehicleState_i);
return success;
} else {
return false;
}
}
bool api_get_OperatingRegion__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray){
DeclNewart_DataContent(payload);
if(sb_OperatingRegion_dequeue(&payload)) {
bool success = populateByteArray(&payload.hamr_Base_Types_Bits_Payload, numBits, byteArray);
assert(!ATTESTATION_GATE_FIXED || numBits <= numBits_hamr_CMASI_OperatingRegion_i);
return success;
} else {
return false;
}
}
bool api_get_LineSearchTask__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t *numBits, uint8_t *byteArray){
DeclNewart_DataContent(payload);
if(sb_LineSearchTask_dequeue(&payload)) {
bool success = populateByteArray(&payload.hamr_Base_Types_Bits_Payload, numBits, byteArray);
assert(!ATTESTATION_GATE_FIXED || numBits <= numBits_hamr_CMASI_LineSearchTask_i);
return success;
} else {
return false;
}
}
void api_put_AutomationResponse_MON_GEO__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t numBits, uint8_t *byteArray){
DeclNewhamr_Base_Types_Bits_Payload(payload);
populatePayload(numBits, byteArray, &payload);
sb_AutomationResponse_MON_GEO_enqueue(&payload);
}
void api_put_AutomationResponse_MON_REQ__hamr_SW_UxAS_thr_Impl_MCMP_PROC_SW_UXAS_UxAS(size_t numBits, uint8_t *byteArray){
DeclNewhamr_Base_Types_Bits_Payload(payload);
populatePayload(numBits, byteArray, &payload);
sb_AutomationResponse_MON_REQ_enqueue(&payload);
}
void testOutLMCP(){
AutomationResponse * automationResponse = NULL;
lmcp_init_AutomationResponse(&automationResponse);
printf("Testing LMCP for a pre-baked AutomationResponse\n");
if(automationResponse != NULL) {
uint8_t *payload = UxASAutomationResponse;
int msg_result = lmcp_process_msg(&payload, numBitsUxASAutomationResponse, (lmcp_object**)&automationResponse);
if(msg_result != 0) {
printf("\tInvalid AutomationResponse byte-stream\n");
} else {
printf("\tValid AutomationResponse\n");
//lmcp_pp_AutomationResponse(automationResponse);
}
lmcp_free_AutomationResponse(automationResponse, 1);
}
}