-
Notifications
You must be signed in to change notification settings - Fork 0
/
Birds.ui
528 lines (528 loc) · 46 KB
/
Birds.ui
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
{
"ClientConfiguration": {
"ConfigurationName": "Birds Project",
"ConfigurationDescription": "Birds book.",
"ConfigurationVersion": "1.0",
"Processes": [
{
"type": "Process",
"ProcessName": "Birds",
"PlanFactHeader": "План-факт",
"DefineOnBackPressed": true,
"hidden": false,
"login_screen": true,
"SC": false,
"Operations": [
{
"type": "Operation",
"Name": "Menu",
"Timer": false,
"hideToolBarScreen": false,
"noScroll": true,
"handleKeyUp": false,
"noConfirmation": true,
"hideBottomBarScreen": true,
"onlineOnStart": false,
"send_when_opened": true,
"onlineOnInput": false,
"DefOnlineOnCreate": "",
"DefOnlineOnInput": "",
"DefOnCreate": "menu_on_start",
"DefOnInput": "menu_input",
"Elements": [
{
"Value": "",
"Variable": "",
"type": "LinearLayout",
"weight": "0",
"height": "match_parent",
"width": "match_parent",
"orientation": "vertical",
"Elements": [
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Actions Menu",
"Variable": "",
"TextBold": true,
"TextSize": "40"
},
{
"type": "CButtons",
"height": "match_parent",
"width": "match_parent",
"weight": "0",
"Value": "Birds;Add;Seen",
"Variable": "menu"
}
],
"BackgroundColor": "",
"StrokeWidth": "",
"Padding": ""
}
],
"onlineOnAfterStart": false,
"Handlers": [
{
"event": "onStart",
"action": "run",
"type": "python",
"method": "menu_on_start",
"postExecute": ""
},
{
"event": "onInput",
"action": "run",
"type": "python",
"method": "menu_on_input",
"postExecute": ""
}
]
},
{
"Name": "Birds",
"type": "Operation",
"Elements": [
{
"Value": "",
"Variable": "",
"type": "LinearLayout",
"weight": "0",
"height": "wrap_content",
"width": "match_parent",
"orientation": "vertical",
"Elements": [
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Birds list",
"Variable": "",
"TextBold": true,
"TextSize": "40"
},
{
"type": "CardsLayout",
"height": "match_parent",
"width": "match_parent",
"weight": "0",
"Value": "@birds_list",
"Variable": ""
}
],
"BackgroundColor": "",
"StrokeWidth": "",
"Padding": ""
}
],
"Timer": false,
"hideToolBarScreen": false,
"noScroll": true,
"handleKeyUp": false,
"hideBottomBarScreen": true,
"onlineOnStart": false,
"onlineOnInput": false,
"DefOnInput": "",
"DefOnCreate": "",
"send_when_opened": false,
"onlineOnAfterStart": false,
"Handlers": [
{
"event": "onStart",
"action": "run",
"type": "python",
"method": "birds_list_on_start",
"postExecute": ""
},
{
"event": "onInput",
"action": "run",
"type": "python",
"method": "birds_list_on_input",
"postExecute": ""
}
]
},
{
"Name": "Add",
"type": "Operation",
"Elements": [
{
"Value": "",
"Variable": "",
"type": "LinearLayout",
"weight": "0",
"height": "match_parent",
"width": "match_parent",
"orientation": "vertical",
"Elements": [
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Add bird",
"Variable": "",
"TextSize": "40",
"TextBold": true
},
{
"type": "ModernEditText",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "@fill_name",
"Variable": "name"
},
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Description",
"Variable": "",
"TextBold": false
},
{
"type": "MultilineText",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "",
"Variable": "description"
},
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Feather color",
"Variable": "",
"TextBold": false
},
{
"type": "SpinnerLayout",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "@colors",
"Variable": "color"
},
{
"type": "Button",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Сохранить...",
"Variable": "btn_save",
"BackgroundColor": "#E4D00A"
}
],
"BackgroundColor": "",
"StrokeWidth": "",
"Padding": "30"
},
{
"Value": "#f2ed",
"Variable": "menu_del",
"type": "MenuItem"
},
{
"Value": "@photoGallery",
"Variable": "photoGallery",
"type": "HorizontalGallery"
},
{
"Value": "",
"Variable": "photo",
"type": "photo"
},
{
"Value": "",
"Variable": "photo",
"type": "photoGallery"
}
],
"Timer": false,
"hideToolBarScreen": false,
"noScroll": true,
"handleKeyUp": false,
"hideBottomBarScreen": true,
"onlineOnStart": false,
"onlineOnInput": false,
"DefOnCreate": "",
"DefOnInput": "",
"noConfirmation": true,
"send_when_opened": false,
"onlineOnAfterStart": false,
"Handlers": [
{
"event": "onStart",
"action": "run",
"type": "python",
"method": "add_bird_on_start",
"postExecute": ""
},
{
"event": "onInput",
"action": "run",
"type": "python",
"method": "add_bird_on_input",
"postExecute": ""
}
]
},
{
"Name": "Detail",
"type": "Operation",
"Elements": [
{
"Value": "@picture",
"Variable": "",
"type": "LinearLayout",
"weight": "0",
"height": "wrap_content",
"width": "wrap_content",
"orientation": "vertical",
"Elements": [
{
"type": "LinearLayout",
"height": "wrap_content",
"width": "wrap_content",
"weight": "0",
"Value": "",
"Variable": "",
"orientation": "horizontal",
"Elements": [
{
"type": "TextView",
"height": "wrap_content",
"width": "wrap_content",
"weight": "0",
"Value": "@name",
"Variable": "",
"TextSize": "37",
"TextBold": true
},
{
"type": "Button",
"height": "wrap_content",
"width": "wrap_content",
"weight": "0",
"Value": "See",
"Variable": "btn_see"
}
],
"BackgroundColor": "",
"StrokeWidth": "",
"Padding": ""
},
{
"type": "Picture",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "@picture",
"Variable": ""
},
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Description",
"Variable": "",
"TextSize": "24",
"TextBold": true
},
{
"type": "TextView",
"height": "wrap_content",
"width": "wrap_content",
"weight": "0",
"Value": "@description",
"Variable": "",
"TextSize": "20"
},
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "@feather_color",
"Variable": "",
"gravity_horizontal": "left",
"TextSize": "24"
}
],
"BackgroundColor": "",
"StrokeWidth": "",
"Padding": ""
}
],
"Timer": false,
"hideToolBarScreen": false,
"noScroll": false,
"handleKeyUp": false,
"hideBottomBarScreen": true,
"onlineOnStart": false,
"onlineOnAfterStart": false,
"onlineOnInput": false,
"Handlers": [
{
"event": "onStart",
"action": "run",
"type": "python",
"method": "bird_detail_on_start",
"postExecute": ""
},
{
"event": "onInput",
"action": "run",
"type": "python",
"method": "bird_detail_on_input",
"postExecute": ""
}
]
},
{
"Name": "Seen",
"type": "Operation",
"Elements": [
{
"Value": "",
"Variable": "",
"type": "LinearLayout",
"weight": "0",
"height": "wrap_content",
"width": "match_parent",
"orientation": "vertical",
"Elements": [
{
"type": "TextView",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "Seen birds",
"Variable": "",
"TextBold": true,
"TextSize": "40"
},
{
"type": "TableLayout",
"height": "wrap_content",
"width": "match_parent",
"weight": "0",
"Value": "@seen_list",
"Variable": ""
}
],
"BackgroundColor": "",
"StrokeWidth": "",
"Padding": ""
}
],
"Timer": false,
"hideToolBarScreen": false,
"noScroll": false,
"handleKeyUp": false,
"hideBottomBarScreen": true,
"onlineOnStart": false,
"onlineOnAfterStart": false,
"onlineOnInput": false,
"Handlers": [
{
"event": "onStart",
"action": "run",
"type": "python",
"method": "seen_on_start",
"postExecute": ""
},
{
"event": "onInput",
"action": "run",
"type": "python",
"method": "seen_on_input",
"postExecute": ""
}
]
}
]
}
],
"ConfigurationSettings": {
"uid": "f164e78e7f8f480da045102a42812cdb"
},
"ConfigurationTags": "Py,off-line",
"RunPython": true,
"PyHandlers": "IiIiClNpbXBsZSBoYW5kbGVycyBmaWxlLiBJcyB0byBiZSBlbmNvZGVkIGFuZCBubyBtb3JlLCBiZWNhdXNlIG1haW4gY2hhbmdlcyBoYXBwZW4gaW4gc2NyZWVucyBjbGFzc2VzLAp3aGljaCBhcmUgY2FsbGVkIGluIGhhbmRsZXJzLCBzbyB5b3UganVzdCBuZWVkIHRvIHVwZGF0ZSBmaWxlcyBpbiBgUHl0aG9uIGZpbGVzYCBpbiBjb25zdHJ1Y3Rvci4KIiIiCmZyb20gbWVudSBpbXBvcnQgTWVudQpmcm9tIGJpcmRzIGltcG9ydCBCaXJkcwpmcm9tIGRldGFpbCBpbXBvcnQgRGV0YWlsCmZyb20gYWRkIGltcG9ydCBBZGQKZnJvbSBoYXNobWFwIGltcG9ydCBIYXNoTWFwCmZyb20gc2VlbiBpbXBvcnQgU2VlbgoKCiMgbWFpbiBtZW51CmRlZiBtZW51X29uX3N0YXJ0KGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgcmV0dXJuIE1lbnUub25fc3RhcnQoaGFzaE1hcCwgX2ZpbGVzLCBfZGF0YSkKCgpkZWYgbWVudV9vbl9pbnB1dChoYXNoTWFwOiBIYXNoTWFwLCBfZmlsZXM9Tm9uZSwgX2RhdGE9Tm9uZSkgLT4gSGFzaE1hcDoKICAgIHJldHVybiBNZW51Lm9uX2lucHV0KGhhc2hNYXAsIF9maWxlcywgX2RhdGEpCgoKIyBiaXJkcyBsaXN0CmRlZiBiaXJkc19saXN0X29uX3N0YXJ0KGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgcmV0dXJuIEJpcmRzLm9uX3N0YXJ0KGhhc2hNYXAsIF9maWxlcywgX2RhdGEpCgoKZGVmIGJpcmRzX2xpc3Rfb25faW5wdXQoaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICByZXR1cm4gQmlyZHMub25faW5wdXQoaGFzaE1hcCwgX2ZpbGVzLCBfZGF0YSkKCgojIGFkZCBiaXJkCmRlZiBhZGRfYmlyZF9vbl9zdGFydChoYXNoTWFwOiBIYXNoTWFwLCBfZmlsZXM9Tm9uZSwgX2RhdGE9Tm9uZSkgLT4gSGFzaE1hcDoKICAgIHJldHVybiBBZGQub25fc3RhcnQoaGFzaE1hcCwgX2ZpbGVzLCBfZGF0YSkKCgpkZWYgYWRkX2JpcmRfb25faW5wdXQoaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICByZXR1cm4gQWRkLm9uX2lucHV0KGhhc2hNYXAsIF9maWxlcywgX2RhdGEpCgoKIyBiaXJkIGRldGFpbApkZWYgYmlyZF9kZXRhaWxfb25fc3RhcnQoaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICByZXR1cm4gRGV0YWlsLm9uX3N0YXJ0KGhhc2hNYXAsIF9maWxlcywgX2RhdGEpCgoKZGVmIGJpcmRfZGV0YWlsX29uX2lucHV0KGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgcmV0dXJuIERldGFpbC5vbl9pbnB1dChoYXNoTWFwLCBfZmlsZXMsIF9kYXRhKQoKCiMgc2VlbiBiaXJkcyBsaXN0CmRlZiBzZWVuX29uX3N0YXJ0KGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgcmV0dXJuIFNlZW4ub25fc3RhcnQoaGFzaE1hcCwgX2ZpbGVzLCBfZGF0YSkKCgpkZWYgc2Vlbl9vbl9pbnB1dChoYXNoTWFwOiBIYXNoTWFwLCBfZmlsZXM9Tm9uZSwgX2RhdGE9Tm9uZSkgLT4gSGFzaE1hcDoKICAgIHJldHVybiBTZWVuLm9uX2lucHV0KGhhc2hNYXAsIF9maWxlcywgX2RhdGEpCg==",
"PyFiles": [
{
"PyFileKey": "db",
"PyFileData": "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKZnJvbSBwb255Lm9ybSBpbXBvcnQgRGF0YWJhc2UsIFJlcXVpcmVkLCBQcmltYXJ5S2V5LCBjb21taXQsIGRiX3Nlc3Npb24sIFNldApmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQpmcm9tIHV1aWQgaW1wb3J0IHV1aWQ0Cgpmcm9tIGJhc2UgaW1wb3J0IEJhc2VSZXBvc2l0b3J5CgoKQ09MT1JTID0gewogICAgIm9yYW5nZSI6ICIjZjA3YTE5IiwKICAgICJicm93biI6ICIjODk2NDE1IiwKICAgICJibGFjayI6ICIjMDAwMDAwIiwKICAgICJ3aGl0ZSI6ICIjZmZmZmZmIiwKICAgICJyZWQiOiAiI2U1MzgzOCIsCiAgICAiZ3JleSI6ICIjOTg5MDkwIiwKCn0KCmRiID0gRGF0YWJhc2UoKQoKCmNsYXNzIEJpcmQoZGIuRW50aXR5KToKICAgICIiIkJpcmQgbW9kZWwuIiIiCiAgICBpZCA9IFByaW1hcnlLZXkoc3RyLCBkZWZhdWx0PWxhbWJkYTogc3RyKHV1aWQ0KCkpKQogICAgbmFtZSA9IFJlcXVpcmVkKHN0cikKICAgIGRlc2NyaXB0aW9uID0gUmVxdWlyZWQoc3RyKQogICAgZmVhdGhlcl9jb2xvciA9IFJlcXVpcmVkKHN0cikKICAgIHNlZW5fYWN0cyA9IFNldCgiU2VlbkFjdCIpCiAgICBwaWN0dXJlID0gUmVxdWlyZWQoc3RyKSAgICAgIyByZXByZXNlbnRzIGZpbGUgcGF0aAoKCmNsYXNzIEJpcmRSZXBvc2l0b3J5KEJhc2VSZXBvc2l0b3J5KToKICAgICIiIkJpcmQgcmVwb3NpdG9yeSBjbGFzcy4iIiIKICAgIGVudGl0eTogVHlwZVtkYi5FbnRpdHldID0gQmlyZAoKICAgIEBjbGFzc21ldGhvZAogICAgQGRiX3Nlc3Npb24KICAgIGRlZiBjcmVhdGUoY2xzLCBuYW1lOiBzdHIsIGZlYXRoZXJfY29sb3I6IHN0ciwgZGVzY3JpcHRpb246IHN0ciwgcGljdHVyZT1Ob25lKSAtPiBkYi5FbnRpdHk6CiAgICAgICAgYmlyZCA9IGNscy5lbnRpdHkoCiAgICAgICAgICAgIG5hbWU9bmFtZSwKICAgICAgICAgICAgZmVhdGhlcl9jb2xvcj1mZWF0aGVyX2NvbG9yLAogICAgICAgICAgICBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKICAgICAgICAgICAgcGljdHVyZT1waWN0dXJlCiAgICAgICAgKQogICAgICAgIGNvbW1pdCgpCiAgICAgICAgcmV0dXJuIGJpcmQKCgpjbGFzcyBTZWVuQWN0KGRiLkVudGl0eSk6CiAgICAiIiJTZWVuIGFjdCBtb2RlbC4iIiIKICAgIGlkID0gUHJpbWFyeUtleShzdHIsIGRlZmF1bHQ9bGFtYmRhOiBzdHIodXVpZDQoKSkpCiAgICBiaXJkID0gUmVxdWlyZWQoQmlyZCkKICAgIHRpbWVfc2VlbiA9IFJlcXVpcmVkKGRhdGV0aW1lLCBkZWZhdWx0PWxhbWJkYTogZGF0ZXRpbWUubm93KCkpCgoKY2xhc3MgU2VlbkFjdFJlcG9zaXRvcnkoQmFzZVJlcG9zaXRvcnkpOgogICAgIiIiU2VlbiBiaXJkIGFjdCByZXBvc2l0b3J5IGNsYXNzLiIiIgogICAgZW50aXR5OiBUeXBlW2RiLkVudGl0eV0gPSBTZWVuQWN0CgogICAgQGNsYXNzbWV0aG9kCiAgICBAZGJfc2Vzc2lvbgogICAgZGVmIGNyZWF0ZShjbHMsIGJpcmRfaWQ6IHN0cikgLT4gZGIuRW50aXR5OgogICAgICAgIHNlZW5fYWN0ID0gY2xzLmVudGl0eShiaXJkPWJpcmRfaWQpCiAgICAgICAgY29tbWl0KCkKICAgICAgICByZXR1cm4gc2Vlbl9hY3QKCiAgICBAY2xhc3NtZXRob2QKICAgIEBkYl9zZXNzaW9uCiAgICBkZWYgZ2V0X2FjdHNfYnlfYmlyZChjbHMsIGJpcmRfaWQ6IHN0cikgLT4gZGIuRW50aXR5OgogICAgICAgIHJldHVybiBjbHMuZW50aXR5LnNlbGVjdChsYW1iZGEgYWN0OiBhY3QuYmlyZCA9PSBiaXJkX2lkKQoKCiMgYmluZyBlbmdpbmUgYW5kIGNyZWF0ZSBzY2hlbWFzCmRiLmJpbmQoJ3NxbGl0ZScsICdkYjQuc3FsaXRlJywgY3JlYXRlX2RiPVRydWUpCmRiLmdlbmVyYXRlX21hcHBpbmcoY3JlYXRlX3RhYmxlcz1UcnVlKQo="
},
{
"PyFileKey": "hashmap",
"PyFileData": "Y2xhc3MgSGFzaE1hcDoKICAgICIiIkJhc2UgaGFzaCBtYXAgY2xhc3MuIiIiCiAgICBkZWYgZ2V0KHNlbGYsIGtleTogc3RyKSAtPiBzdHI6CiAgICAgICAgcGFzcwoKICAgIGRlZiBjb250YWluc0tleShzZWxmLCBrZXk6IHN0cikgLT4gYm9vbDoKICAgICAgICBwYXNzCgogICAgZGVmIHB1dChzZWxmLCBrZXk6IHN0ciwgdmFsdWU6IHN0cikgLT4gTm9uZToKICAgICAgICBwYXNzCgogICAgZGVmIHJlbW92ZShzZWxmLCBrZXk6IHN0cikgLT4gTm9uZToKICAgICAgICBwYXNzCg=="
},
{
"PyFileKey": "birds",
"PyFileData": "aW1wb3J0IGpzb24KCmZyb20gZGIgaW1wb3J0IEJpcmRSZXBvc2l0b3J5LCBDT0xPUlMKZnJvbSBoYXNobWFwIGltcG9ydCBIYXNoTWFwCgoKY2xhc3MgQmlyZHM6CiAgICAiIiJBbGwgYmlyZHMgbGlzdCB2aWV3IHNjcmVlbi4iIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBvbl9zdGFydChjbHMsIGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgICAgIGJpcmRzX2xpc3QgPSB7CiAgICAgICAgICAgICJjdXN0b21jYXJkcyI6IHsKICAgICAgICAgICAgICAgICJvcHRpb25zIjogewogICAgICAgICAgICAgICAgICAgICJzZWFyY2hfZW5hYmxlZCI6IFRydWUsCiAgICAgICAgICAgICAgICAgICAgInNhdmVfcG9zaXRpb24iOiBUcnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImxheW91dCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJMaW5lYXJMYXlvdXQiLAogICAgICAgICAgICAgICAgICAgICJvcmllbnRhdGlvbiI6ICJ2ZXJ0aWNhbCIsCiAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6ICJtYXRjaF9wYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJtYXRjaF9wYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICJ3ZWlnaHQiOiAiMCIsCiAgICAgICAgICAgICAgICAgICAgIkVsZW1lbnRzIjogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJMaW5lYXJMYXlvdXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWVudGF0aW9uIjogImhvcml6b250YWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6ICJ3cmFwX2NvbnRlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogIm1hdGNoX3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2VpZ2h0IjogIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVsZW1lbnRzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiUGljdHVyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG93X2J5X2NvbmRpdGlvbiI6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUiOiAiQHBpY3R1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9SZWZyZXNoIjogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2N1bWVudF90eXBlIjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXNrIjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYXJpYWJsZSI6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dFNpemUiOiAiMTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dENvbG9yIjogIiNEQjcwOTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dEJvbGQiOiBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dEl0YWxpYyI6IEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFja2dyb3VuZENvbG9yIjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICI3NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAiNzUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2VpZ2h0IjogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJMaW5lYXJMYXlvdXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JpZW50YXRpb24iOiAidmVydGljYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogIndyYXBfY29udGVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJtYXRjaF9wYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2VpZ2h0IjogIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWxlbWVudHMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiVGV4dFZpZXciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG93X2J5X2NvbmRpdGlvbiI6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSI6ICJAbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vUmVmcmVzaCI6IEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2N1bWVudF90eXBlIjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hc2siOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFyaWFibGUiOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dFNpemUiOiAiMzAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIlRleHRWaWV3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvd19ieV9jb25kaXRpb24iOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUiOiAiQGZlYXRoZXJfY29sb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb1JlZnJlc2giOiBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9jdW1lbnRfdHlwZSI6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXNrIjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhcmlhYmxlIjogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRleHRTaXplIjogIjE4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dENvbG9yIjogIkBjb2xvciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImNhcmRzZGF0YSI6IFtdCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciBiaXJkIGluIEJpcmRSZXBvc2l0b3J5LmFsbCgpOgogICAgICAgICAgICBiaXJkc19saXN0WydjdXN0b21jYXJkcyddWydjYXJkc2RhdGEnXS5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImtleSI6IGJpcmQuaWQsICAgICAjIG5lZWRlZCBvbiBDYXJkc0NsaWNrIGV2ZW50CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiBmIk5hbWU6IHtiaXJkLm5hbWV9IiwKICAgICAgICAgICAgICAgICAgICAiZmVhdGhlcl9jb2xvciI6IGYiRmVhdGhlciBjb2xvcjoge2JpcmQuZmVhdGhlcl9jb2xvcn0iLAogICAgICAgICAgICAgICAgICAgICJwaWN0dXJlIjogZiJ+e2JpcmQucGljdHVyZX0iLAogICAgICAgICAgICAgICAgICAgICJjb2xvciI6IENPTE9SU1tiaXJkLmZlYXRoZXJfY29sb3JdLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCgogICAgICAgIGhhc2hNYXAucHV0KCJiaXJkc19saXN0IiwganNvbi5kdW1wcyhiaXJkc19saXN0KSkKICAgICAgICByZXR1cm4gaGFzaE1hcAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIG9uX2lucHV0KGNscywgaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICAgICAgbGlzdGVuZXIgPSBoYXNoTWFwLmdldCgibGlzdGVuZXIiKQogICAgICAgIGlmIGxpc3RlbmVyID09ICdPTl9CQUNLX1BSRVNTRUQnOgogICAgICAgICAgICBoYXNoTWFwLnB1dCgiU2hvd1NjcmVlbiIsICJNZW51IikKICAgICAgICBlbGlmIGxpc3RlbmVyID09ICJDYXJkc0NsaWNrIjoKICAgICAgICAgICAgaGFzaE1hcC5wdXQoImJpcmRfaWQiLCBoYXNoTWFwLmdldCgic2VsZWN0ZWRfY2FyZF9rZXkiKSkKICAgICAgICAgICAgaGFzaE1hcC5wdXQoIlNob3dTY3JlZW4iLCAiRGV0YWlsIikKICAgICAgICByZXR1cm4gaGFzaE1hcAo="
},
{
"PyFileKey": "detail",
"PyFileData": "ZnJvbSBkYiBpbXBvcnQgQmlyZFJlcG9zaXRvcnksIFNlZW5BY3RSZXBvc2l0b3J5CmZyb20gYmFzZSBpbXBvcnQgQmFzZVNjcmVlbgpmcm9tIGhhc2htYXAgaW1wb3J0IEhhc2hNYXAKCgpjbGFzcyBEZXRhaWwoQmFzZVNjcmVlbik6CiAgICAiIiJEZXRhaWwgYmlyZCB2aWV3IHNjcmVlbi4iIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBvbl9zdGFydChjbHMsIGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgICAgIGlmIG5vdCBoYXNoTWFwLmNvbnRhaW5zS2V5KCJiaXJkX2lkIik6CiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJ0b2FzdCIsICJCaXJkIGlzIG5vdCBzZWxlY3RlZCIpCiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJTaG93U2NyZWVuIiwgIk1lbnUiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJpcmRfaWQgPSBoYXNoTWFwLmdldCgiYmlyZF9pZCIpCiAgICAgICAgICAgIGJpcmQgPSBCaXJkUmVwb3NpdG9yeS5nZXQoYmlyZF9pZCkKICAgICAgICAgICAgaWYgYmlyZCBpcyBOb25lOgogICAgICAgICAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIkJpcmQgaXMgbm90IGZvdW5kIikKICAgICAgICAgICAgICAgIGhhc2hNYXAucHV0KCJTaG93U2NyZWVuIiwgIk1lbnUiKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaGFzaE1hcC5wdXQoIm5hbWUiLCBiaXJkLm5hbWUpCiAgICAgICAgICAgICAgICBoYXNoTWFwLnB1dCgicGljdHVyZSIsIGYifntiaXJkLnBpY3R1cmV9IikKICAgICAgICAgICAgICAgIGhhc2hNYXAucHV0KCJkZXNjcmlwdGlvbiIsIGJpcmQuZGVzY3JpcHRpb24pCiAgICAgICAgICAgICAgICBjb2xvciA9IGYiQ29sb3I6IHtiaXJkLmZlYXRoZXJfY29sb3J9IgogICAgICAgICAgICAgICAgaGFzaE1hcC5wdXQoImZlYXRoZXJfY29sb3IiLCBjb2xvcikKICAgICAgICByZXR1cm4gaGFzaE1hcAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIG9uX2lucHV0KGNscywgaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICAgICAgbGlzdGVuZXIgPSBoYXNoTWFwLmdldCgibGlzdGVuZXIiKQogICAgICAgIGlmIGxpc3RlbmVyID09ICdPTl9CQUNLX1BSRVNTRUQnOgogICAgICAgICAgICBoYXNoTWFwLnJlbW92ZSgiYmlyZF9pZCIpCiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJTaG93U2NyZWVuIiwgIkJpcmRzIikKICAgICAgICBlbGlmIGxpc3RlbmVyID09ICJidG5fc2VlIjoKICAgICAgICAgICAgYmlyZF9pZCA9IGhhc2hNYXAuZ2V0KCJiaXJkX2lkIikKICAgICAgICAgICAgaWYgYmlyZF9pZCBpcyBOb25lOgogICAgICAgICAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIkVycm9yIHdoaWxlIHNlZWluZyIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWVuX2FjdCA9IFNlZW5BY3RSZXBvc2l0b3J5LmNyZWF0ZShiaXJkX2lkPWJpcmRfaWQpCiAgICAgICAgICAgICAgICBpZiBzZWVuX2FjdCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGhhc2hNYXAucHV0KCJ0b2FzdCIsICJFcnJvciB3aGlsZSBzZWVpbmciKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBoYXNoTWFwLnB1dCgidG9hc3QiLCAiQmlyZCBpcyBtYXJrZWQgYXMgc2VlbiEiKQogICAgICAgIHJldHVybiBoYXNoTWFwCg=="
},
{
"PyFileKey": "add",
"PyFileData": "aW1wb3J0IGpzb24KZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCgpmcm9tIGRiIGltcG9ydCBCaXJkUmVwb3NpdG9yeSwgQ09MT1JTCmZyb20gYmFzZSBpbXBvcnQgQmFzZVNjcmVlbgpmcm9tIGhhc2htYXAgaW1wb3J0IEhhc2hNYXAKCgpkZWYgc2F2ZV9iaXJkKGhhc2hNYXA6IEhhc2hNYXApIC0+IFR1cGxlW0hhc2hNYXAsIGJvb2xdOgogICAgIiIiRnVuY3Rpb24gZm9yIHNhdmluZyBiaXJkIHRvIHRoZSBkYXRhYmFzZS4iIiIKICAgIGlmIG5vdCBoYXNoTWFwLmNvbnRhaW5zS2V5KCJuYW1lIik6CiAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIk5hbWUgaXMgdW5maWxsZWQiKQogICAgICAgIHJldHVybiBoYXNoTWFwLCBGYWxzZQogICAgZWxzZToKICAgICAgICBuYW1lID0gaGFzaE1hcC5nZXQoIm5hbWUiKQogICAgICAgIGlmIGxlbihuYW1lKSA9PSAwOgogICAgICAgICAgICBoYXNoTWFwLnB1dCgidG9hc3QiLCAiTmFtZSBpcyB1bmZpbGxlZCIpCiAgICAgICAgICAgIHJldHVybiBoYXNoTWFwLCBGYWxzZQoKICAgIGlmIG5vdCBoYXNoTWFwLmNvbnRhaW5zS2V5KCJkZXNjcmlwdGlvbiIpOgogICAgICAgIGhhc2hNYXAucHV0KCJ0b2FzdCIsICJEZXNjcmlwdGlvbiBpcyB1bmZpbGxlZCIpCiAgICAgICAgcmV0dXJuIGhhc2hNYXAsIEZhbHNlCiAgICBlbHNlOgogICAgICAgIGRlc2NyaXB0aW9uID0gaGFzaE1hcC5nZXQoImRlc2NyaXB0aW9uIikKICAgICAgICBpZiBsZW4obmFtZSkgPT0gMDoKICAgICAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIkRlc2NyaXB0aW9uIGlzIHVuZmlsbGVkIikKICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXAsIEZhbHNlCgogICAgaWYgbm90IGhhc2hNYXAuY29udGFpbnNLZXkoImNvbG9yIik6CiAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIkNvbG9yIGlzIHVuZmlsbGVkIikKICAgICAgICByZXR1cm4gaGFzaE1hcCwgRmFsc2UKICAgIGVsc2U6CiAgICAgICAgY29sb3IgPSBoYXNoTWFwLmdldCgiY29sb3IiKQogICAgICAgIGlmIGxlbihjb2xvcikgPT0gMDoKICAgICAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIkNvbG9yIGlzIHVuZmlsbGVkIikKICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXAsIEZhbHNlCgogICAgaWYgbm90IGhhc2hNYXAuY29udGFpbnNLZXkoInBob3RvX3BhdGgiKToKICAgICAgICBoYXNoTWFwLnB1dCgidG9hc3QiLCAiUGljdHVyZSBpcyByZXF1aXJlZCIpCiAgICAgICAgcmV0dXJuIGhhc2hNYXAsIEZhbHNlCiAgICBlbHNlOgogICAgICAgIHBob3RvX3BhdGggPSBoYXNoTWFwLmdldCgicGhvdG9fcGF0aCIpCiAgICAgICAgaWYgbGVuKHBob3RvX3BhdGgpID09IDA6CiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJ0b2FzdCIsICJQaWN0dXJlIGlzIHJlcXVpcmVkIikKICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXAsIEZhbHNlCgogICAgYmlyZCA9IEJpcmRSZXBvc2l0b3J5LmNyZWF0ZSgKICAgICAgICBuYW1lPW5hbWUsCiAgICAgICAgZmVhdGhlcl9jb2xvcj1jb2xvciwKICAgICAgICBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKICAgICAgICBwaWN0dXJlPXBob3RvX3BhdGgKICAgICkKICAgIGhhc2hNYXAucHV0KCJ0b2FzdCIsICJCaXJkIHNhdmVkISIpCiAgICByZXR1cm4gaGFzaE1hcCwgVHJ1ZQoKCmNsYXNzIEFkZChCYXNlU2NyZWVuKToKICAgICIiIkFkZGluZyBiaXJkIHNjcmVlbi4iIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBvbl9zdGFydChjbHMsIGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgICAgIGhhc2hNYXAucHV0KCJtbV9sb2NhbCIsICIiKQogICAgICAgIGhhc2hNYXAucHV0KCJtbV9jb21wcmVzc2lvbiIsICI3MCIpCiAgICAgICAgaGFzaE1hcC5wdXQoIm1tX3NpemUiLCAiNjUiKQogICAgICAgIGhhc2hNYXAucHV0KCJmaWxsX25hbWUiLCBqc29uLmR1bXBzKHsiaGludCI6ICJCaXJkYHMgbmFtZSJ9KSkKICAgICAgICBoYXNoTWFwLnB1dCgiY29sb3JzIiwgIjsiLmpvaW4oQ09MT1JTKSkKICAgICAgICByZXR1cm4gaGFzaE1hcAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIG9uX2lucHV0KGNscywgaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICAgICAgbGlzdGVuZXIgPSBoYXNoTWFwLmdldCgibGlzdGVuZXIiKQogICAgICAgIGlmIGxpc3RlbmVyID09ICJidG5fc2F2ZSI6CiAgICAgICAgICAgIGhhc2hNYXAsIGlzX3N1Y2Nlc3MgPSBzYXZlX2JpcmQoaGFzaE1hcCkKICAgICAgICAgICAgaWYgaXNfc3VjY2VzczoKICAgICAgICAgICAgICAgIGhhc2hNYXAucHV0KCJTaG93U2NyZWVuIiwgIk1lbnUiKQoKICAgICAgICBlbGlmIGxpc3RlbmVyID09ICdPTl9CQUNLX1BSRVNTRUQnOgogICAgICAgICAgICBoYXNoTWFwLnB1dCgiU2hvd1NjcmVlbiIsICJNZW51IikKCiAgICAgICAgZWxpZiBsaXN0ZW5lciA9PSAnbWVudV9kZWwnOgogICAgICAgICAgICBoYXNoTWFwLnB1dCgiU2hvd1NjcmVlbiIsICJNZW51IikKICAgICAgICAgICAgaGFzaE1hcC5wdXQoInRvYXN0IiwgIkRlbGV0ZWQuLi4iKQoKICAgICAgICBlbGlmIGxpc3RlbmVyID09ICJwaG90byI6CiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJkZXNjcmlwdGlvbiIsIGhhc2hNYXAuZ2V0KCJkZXNjcmlwdGlvbiIpKQogICAgICAgICAgICBoYXNoTWFwLnB1dCgidG9hc3QiLCBzdHIoaGFzaE1hcC5nZXQoInBob3RvX3BhdGgiKSkpCgogICAgICAgIGVsaWYgbGlzdGVuZXIgPT0gImdhbGxlcnlfY2hhbmdlIjoKICAgICAgICAgICAgaGFzaE1hcC5wdXQoImRlc2NyaXB0aW9uIiwgaGFzaE1hcC5nZXQoImRlc2NyaXB0aW9uIikpCiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJ0b2FzdCIsIHN0cihoYXNoTWFwLmdldCgicGhvdG9fcGF0aCIpKSkKCiAgICAgICAgcmV0dXJuIGhhc2hNYXAK"
},
{
"PyFileKey": "base",
"PyFileData": "IiIiCkJhc2UgY2xhc3NlcyAoQUJDIGludGVyZmFjZXMpIGZpbGUgdG8gbWFrZSBjb250cmFjdCB3aXRoIGluaGVyaXRzIGZvciBpbXBsZW1lbnRpbmcKbmVjZXNzYXJ5IG1ldGhvZHMuCiIiIgoKZnJvbSBhYmMgaW1wb3J0IEFCQywgYWJzdHJhY3RtZXRob2QKZnJvbSBwb255Lm9ybSBpbXBvcnQgZGJfc2Vzc2lvbgpmcm9tIHBvbnkub3JtLmNvcmUgaW1wb3J0IEVudGl0eU1ldGEKCmZyb20gaGFzaG1hcCBpbXBvcnQgSGFzaE1hcAoKCmNsYXNzIEJhc2VTY3JlZW4oQUJDKToKICAgICIiIgogICAgQmFzZSBzY3JlZW4gaGFuZGxlciBlbmNhcHN1bGF0aW9uIGNsYXNzLiBNZXRob2RzIGFyZSB0byBiZSBpbXBsZW1lbnRlZC4KICAgIFRoZXJlIGlzIG5vIGluc3RhbmNlIG1ldGhvZHMgYmVjYXVzZSBvYmplY3RzIGFyZSBub3QgY3JlYXRlZC4KICAgIEp1c3QgZW5jYXBzdWxhdGVzIHNjcmVlbiBsb2dpYy4KICAgICIiIgogICAgQGNsYXNzbWV0aG9kCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBvbl9pbnB1dChjbHMsIGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgICAgICIiIklucHV0IGV2ZW50IGhhbmRsZXIuIiIiCiAgICAgICAgcGFzcwoKICAgIEBjbGFzc21ldGhvZAogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgb25fc3RhcnQoY2xzLCBoYXNoTWFwOiBIYXNoTWFwLCBfZmlsZXM9Tm9uZSwgX2RhdGE9Tm9uZSkgLT4gSGFzaE1hcDoKICAgICAgICAiIiJTdGFydCBzY3JlZSBldmVudCBoYW5kbGVyLiIiIgogICAgICAgIHBhc3MKCgpjbGFzcyBCYXNlUmVwb3NpdG9yeShBQkMpOgogICAgIiIiCiAgICBCYXNlIHJlcG9zaXRvcnkgY2xhc3MuIERlZmluZXMgdGhlIHNpbXBsZXN0IGRhdGEgYWNjZXNzIG9wZXJhdGlvbnMuCiAgICAiIiIKICAgIGVudGl0eTogRW50aXR5TWV0YQoKICAgIEBjbGFzc21ldGhvZAogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgY3JlYXRlKGNscywgYmlyZF9pZDogc3RyKToKICAgICAgICBwYXNzCgogICAgQGNsYXNzbWV0aG9kCiAgICBAZGJfc2Vzc2lvbgogICAgZGVmIGFsbChjbHMpOgogICAgICAgIHJldHVybiBjbHMuZW50aXR5LnNlbGVjdCgpCgogICAgQGNsYXNzbWV0aG9kCiAgICBAZGJfc2Vzc2lvbgogICAgZGVmIGdldChjbHMsIGlkXzogc3RyKToKICAgICAgICBvYmogPSBjbHMuZW50aXR5LmdldChpZD1pZF8pCiAgICAgICAgcmV0dXJuIG9iago="
},
{
"PyFileKey": "seen",
"PyFileData": "aW1wb3J0IGpzb24KCmZyb20gZGIgaW1wb3J0IFNlZW5BY3RSZXBvc2l0b3J5CmZyb20gaGFzaG1hcCBpbXBvcnQgSGFzaE1hcApmcm9tIGJhc2UgaW1wb3J0IEJhc2VTY3JlZW4KCgpjbGFzcyBTZWVuKEJhc2VTY3JlZW4pOgogICAgIiIiU2VlbiBiaXJkcyBsaXN0IHNjcmVlbi4iIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBvbl9zdGFydChjbHMsIGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgICAgIHRhYmxlID0gewogICAgICAgICAgICAidHlwZSI6ICJ0YWJsZSIsCiAgICAgICAgICAgICJ0ZXh0c2l6ZSI6ICIxOCIsCiAgICAgICAgICAgICJjb2x1bW5zIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImJpcmQiLAogICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiAiQmlyZCIsCiAgICAgICAgICAgICAgICAgICAgIndlaWdodCI6ICIyIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJ0aW1lX3NlZW4iLAogICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiAiTGFzdCBUaW1lIiwKICAgICAgICAgICAgICAgICAgICAid2VpZ2h0IjogIjIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFtb3VudCIsCiAgICAgICAgICAgICAgICAgICAgImhlYWRlciI6ICJBbW91bnQiLAogICAgICAgICAgICAgICAgICAgICJ3ZWlnaHQiOiAiMSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0KICAgICAgICB9CiAgICAgICAgcXVlcnkgPSBTZWVuQWN0UmVwb3NpdG9yeS5hbGwoKQogICAgICAgIHJvd3MgPSB7fQogICAgICAgICMgaGVyZSB3ZSBnbyB0aHJvdWdoIGFsbCByZWNvcmRzIGFuZCBjb3VudCBhbW91bnQgb2YgZWFjaCBiaXJkIHNlZW4gYWN0IGluIE8oTikKICAgICAgICAjIHdlIHJlbWluZCB0aGUgbGFzdCB0aW1lIHNlZW4gdGhlIGJpcmQsIHF1ZXJ5c2V0IGlzIGFscmVhZHkgb3JkZXJlZCBieSB0aW1lCiAgICAgICAgZm9yIHJlY29yZCBpbiBxdWVyeToKICAgICAgICAgICAgaWYgcmVjb3JkLmJpcmQuaWQgaW4gcm93czoKICAgICAgICAgICAgICAgIHJvd3NbcmVjb3JkLmJpcmQuaWRdLnVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICB0aW1lX3NlZW49cmVjb3JkLnRpbWVfc2Vlbi5zdHJmdGltZSgiJUg6JU0gLSAlbS4lZC4lWSIpLAogICAgICAgICAgICAgICAgICAgIGFtb3VudD1yb3dzW3JlY29yZC5iaXJkLmlkXVsnYW1vdW50J10gKyAxCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByb3dzW3JlY29yZC5iaXJkLmlkXSA9ICgKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJiaXJkIjogcmVjb3JkLmJpcmQubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgImlkIjogcmVjb3JkLmlkLAogICAgICAgICAgICAgICAgICAgICAgICAidGltZV9zZWVuIjogcmVjb3JkLnRpbWVfc2Vlbi5zdHJmdGltZSgiJUg6JU0gLSAlbS4lZC4lWSIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYW1vdW50IjogMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICB0YWJsZVsncm93cyddID0gbGlzdChyb3dzLnZhbHVlcygpKQogICAgICAgIGhhc2hNYXAucHV0KCJzZWVuX2xpc3QiLCBqc29uLmR1bXBzKHRhYmxlKSkKICAgICAgICByZXR1cm4gaGFzaE1hcAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIG9uX2lucHV0KGNscywgaGFzaE1hcDogSGFzaE1hcCwgX2ZpbGVzPU5vbmUsIF9kYXRhPU5vbmUpIC0+IEhhc2hNYXA6CiAgICAgICAgbGlzdGVuZXIgPSBoYXNoTWFwLmdldCgibGlzdGVuZXIiKQogICAgICAgIGlmIGxpc3RlbmVyID09ICdPTl9CQUNLX1BSRVNTRUQnOgogICAgICAgICAgICBoYXNoTWFwLnB1dCgiU2hvd1NjcmVlbiIsICJNZW51IikKICAgICAgICByZXR1cm4gaGFzaE1hcAo="
},
{
"PyFileKey": "menu",
"PyFileData": "ZnJvbSBiYXNlIGltcG9ydCBCYXNlU2NyZWVuCmZyb20gaGFzaG1hcCBpbXBvcnQgSGFzaE1hcAoKCmNsYXNzIE1lbnUoQmFzZVNjcmVlbik6CiAgICAiIiJNZW51IHNjcmVlbiBjbGFzcy4iIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBvbl9zdGFydChjbHMsIGhhc2hNYXA6IEhhc2hNYXAsIF9maWxlcz1Ob25lLCBfZGF0YT1Ob25lKSAtPiBIYXNoTWFwOgogICAgICAgIHJldHVybiBoYXNoTWFwCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgb25faW5wdXQoY2xzLCBoYXNoTWFwOiBIYXNoTWFwLCBfZmlsZXM9Tm9uZSwgX2RhdGE9Tm9uZSkgLT4gSGFzaE1hcDoKICAgICAgICBsaXN0ZW5lciA9IGhhc2hNYXAuZ2V0KCJsaXN0ZW5lciIpCiAgICAgICAgaWYgbGlzdGVuZXIgPT0gIm1lbnUiOgogICAgICAgICAgICBoYXNoTWFwLnB1dCgiU2hvd1NjcmVlbiIsIGhhc2hNYXAuZ2V0KCJtZW51IikpCiAgICAgICAgaWYgbGlzdGVuZXIgPT0gIk9OX0JBQ0tfUFJFU1NFRCI6CiAgICAgICAgICAgIGhhc2hNYXAucHV0KCJGaW5pc2hQcm9jZXNzIiwgIiIpCiAgICAgICAgcmV0dXJuIGhhc2hNYXAK"
}
],
"PyTimerTask": [
{
"PyTimerTaskKey": "on_start",
"PyTimerTaskDef": "init_on_start",
"PyTimerTaskPeriod": "-1",
"PyTimerTaskBuilIn": false
}
],
"RecognitionTemplates": [
{
"name": "Распознавание артикула",
"TypeRecognition": "Распознавание текста",
"mesure_qty": "1",
"min_freq": "1",
"min_length": "3",
"max_length": "15",
"query": "c2VsZWN0ICogZnJvbSBTV19Hb29kcyB3aGVyZSBwcm9kdWN0X251bWJlciBsaWtlICA/",
"ReplaceO": true,
"ToUpcase": false,
"control_field": "product_number",
"result_field": "id",
"cursor": [
{
"title": "id",
"var": "nom_id",
"field": "id"
}
],
"result_var": "nom_id"
}
]
}
}