Newer
Older
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
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Anomaly Detection"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib as mpl\n",
"\n",
"from scipy.stats import multivariate_normal\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"from sklearn.metrics import precision_recall_fscore_support\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.metrics import f1_score\n",
"from sklearn.metrics.pairwise import euclidean_distances\n",
"\n",
"from sklearn.cluster import KMeans\n",
"\n",
"import matplotlib.gridspec as gridspec\n",
"\n",
"from tqdm.notebook import tqdm\n",
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exercise 2 - Clustering-Based Anomaly Detection\n",
"\n",
"Clustering-Based approaches detect outliers by examining the relationship between records and clusters\n",
"\n",
"There exists three general approaches\n",
"1. Records not belonging to any cluster are outliers\n",
"1. **Records with a large distance to their closest cluster center are outliers**\n",
"1. All records in a small and sparse cluster are considered outliers"
]
},
{
"attachments": {
"anomaly_detection_clustering.jpg": {
"image/jpeg": "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAEeA5oDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvOfjB+0JJ8LfHvh7wxp3gnxd431zxHp9/qkNtocmnRfZ7azks4pnke9u7ZPv30AUKWJyxwAK9GryPxh/yfp8Nv+xB8Wf+nHw1XoZXTpzr2qx5kozdnfXlhJrZp7ruTO9tA/4aQ8Z/9G/fF3/wY+Fv/lxR/wANIeM/+jfvi7/4MfC3/wAuK9goq/r9D/oGh99T/wCWC5X3/L/I8f8A+GkPGf8A0b98Xf8AwY+Fv/lxSaT+1RqI+InhTw94h+FPxG8Hf8JjqEul6fqGqXGiT2n2mOyur0o4tNRnlXMNpNg+WRkAEjNew15B+0r/AMlj/Z+/7H66/wDUW1+unC1cPiJSpOhFe7N3TndOMJSW82t11QmmtbnrdFFFeGaBXgHxQ/aW+Kf/AA1Nrvw0+Gnw58AeJ/8AhGPCuj+JtS1LxN47u/D/APyErvVraKCGK30m+37P7JkZnZ0/1qAKcE17/XgHw5/5SmfGT/slXgP/ANO/jKgA/wCFjftTf9Eb+AH/AIeTV/8A5mKP+FjftTf9Eb+AH/h5NX/+Zivf68G/bj/4Kb/A3/gm5p/hy5+NPjuHwXH4ukuItIB0u91CS9MAjM2EtYZWATzosswAzIozk0AQ/wDCxv2pv+iN/AD/AMPJq/8A8zFH/Cxv2pv+iN/AD/w8mr//ADMV5N8Gf+Div9jX9oL4teHPA3hP4yw6l4o8XajBpOk2cvhjWrRby6mcRxRebPZpGpd2VRuYAlgM5NfbFAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv4XNLsNAHz/wD8LG/am/6I38AP/Dyav/8AMxR/wsb9qb/ojfwA/wDDyav/APMxX0BsNGw0AfP/APwsb9qb/ojfwA/8PJq//wAzFH/Cxv2pv+iN/AD/AMPJq/8A8zFfQGw0FcUAfP8A/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB4B/wALG/am/wCiN/AD/wAPJq//AMzFH/Cxv2pv+iN/AD/w8mr/APzMV7/RQB84QftP/GjwF8bvhf4a+Ivwt+GGi6J8TfEFz4cg1Lw58R77WrqwuItG1LVVZrafRLNWjZNNkjJEwKmRTtYA19H14B+2R/ycT+yf/wBlVvv/AFCPFde/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAef/tYfHP8A4Zf/AGWfiV8S/wCy/wC3P+FeeFdU8Tf2b9p+zf2h9itJbnyPN2P5e/ytu/Y23dnacYrgP+FjftTf9Eb+AH/h5NX/APmYo/4Kwf8AKLP9pX/slXij/wBNF1Xv9AHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgH/Cxv2pv+iN/AD/w8mr/APzMUf8ACxv2pv8AojfwA/8ADyav/wDMxXv9FAHgHwv/AGlvin/w1NoXw0+Jfw58AeGP+En8K6x4m03UvDPju78Qf8g270m2lgmiuNJsdm/+1o2V1d/9U4KjINe/14B8Rv8AlKZ8G/8AslXjz/07+Da9/oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAryPxh/yfp8Nv8AsQfFn/px8NV65XkfjD/k/T4bf9iD4s/9OPhqvTyn+PL/AAVP/TciJ7fd+Z7BRRXmX7Pf7Wvg/wDac8TfEXSfC02oS3nwt8TTeEteFzatAsd/EiSOsZP302yKQw4Oa8ws9NryD9pX/ksf7P3/AGP11/6i2v16/XkH7Sv/ACWP9n7/ALH66/8AUW1+vTyn+PL/AAVP/TciJ7fd+Z63RRRXmFhXgHw5/wCUpnxk/wCyVeA//Tv4yr3+vAPhz/ylM+Mn/ZKvAf8A6d/GVAHv9fjF/wAHR/8Awi3/AA31/wAE7f8AhOv+Ef8A+EJ/4WBe/wDCQ/275P8AZX9nf2j4d+0/a/O/dfZ/J3+Z5nybN27jNfs7Xg37cf8AwTI+Bv8AwUj0/wAOW3xp8CQ+NI/CMlxLpBOqXunyWRnEYmw9rNExD+TFlWJGY1OMigD8fv8Agqr/AMMs/wDD0z/gnh/wzR/woD/kqsH/AAkf/Csv7I/6C+g/Zftn9n/9vPl+Z/012/xV+/VfE/wZ/wCDdT9jX9n34teHPHPhP4NQ6b4o8I6jBq2k3kvifWrtbO6hcSRS+VPePGxR1VhuUgFQcZFfbFAHw/8Atrf8Fhp/2DvH/iOLxvonwY0/w34eu7SSOyu/i/bWvjjXNKlaFZNRstCay2yBGe42xPeRtJ9kkxjKg/clfB/x9/4I/eMfit8Lvj78OvDfxg8N+Evh/wDH/W7zxDqxk8Af2h4ktrq6WEyRHUDqEcM1sJYsKj2glSBvKWZSiSj7woAKKKKACkf7tLSP92gBlFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHgH7ZH/ACcT+yf/ANlVvv8A1CPFde/14B+2R/ycT+yf/wBlVvv/AFCPFde/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAeAf8FYP+UWf7Sv/ZKvFH/pouq9/rwD/grB/wAos/2lf+yVeKP/AE0XVe/0AFFFFABRRXzh8Vv+Cu/7NPwR+KV14M8T/GTwdpviHTbg2mowCd54dJmDbWiu541aG1cHgrM6EdwKAPo+iqfh/wAQWHizQbLVNLvbTUtM1K3ju7O8tJlmgu4ZFDJJG6kq6MpBDAkEEEVcoAh1DUbfSbKW5up4ba3gUvJLK4RI1HUljwBVPwp4y0jx3o66hoeq6brNg5Krc2NylxCxHUB0JH6187eC/hroP7dPxc+IGufETSbLxT4S8CeJZfCvhrwzqcQudJjls44/tWpT2r5jmunuZJI42lVvJit4zFsMsrPV/a9+CPhP9kL4S+Kfjn8N/Dei+CvFHw60+TxFqw0O0j0+DxRplopmu7K+iiCpcbrZZvJeRWeCUq6H76uAfUtFNjkEsasOjDI4xXiH7X/ifU9f8YfDX4W6VqWoaGPibq1ymsanp9w9te2uk2Vq91cpbyqQ0cs7i3tvMQiSOO5leMrIisoB6zD8Q9AuPFr6BHrmjvrsaea+mreRm7VOfmMWd4HB5x2rYrxib/gnT8B5PCSaKnwh+H1raRP58MtrokFteW8/BF1HdRqs8dyGAYXCuJQ4DB93NN/Yw8d6xqNp8Q/A2v6jda3qfwj8Vt4XXVbpt1zqdpJp9jqVnJM38Uy2uoQRSP1keF3IBfAAPaaKKKACiiigAooooAKKKKACiiigArG8MfETw/43ubuHRtc0fV5tPfy7qOyvY7hrZv7rhCSp9jX4R/8AB4x/wUv8e/DXxz4U/Z28IarqHh3w7rnh0eIPE9xZXDwya0k81xbx2LkYJgVYHdlyVkMqgj93X4Z/AL9pDx1+y58WdJ8c+APFGr+FvFWiTie0v7Kco4PGVcfdeNgNro4KupKsCCRQB/eDRXiP/BN79q+T9uT9hT4X/Fe4tYbG+8aaHFd30EKMkUV2paK4EYb5hH50cm3JPy45PU+3UAFFFFABRRRQB4B8Rv8AlKZ8G/8AslXjz/07+Da9/rwD4jf8pTPg3/2Srx5/6d/Bte/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5H4w/5P0+G3/Yg+LP8A04+Gq9cryPxh/wAn6fDb/sQfFn/px8NV6eU/x5f4Kn/puRE9vu/M9gr8lf2mPDun/sof8FF/Hdzpn/BQT/hUPj/44a1pqz+DdP8AhtpmuSRPIVt9NilTypQkpSREE8qpJKgVnZlUEfrVX4Yf8FGP2evi5+zn+0D49to/gt8U/ibpHjr9oPwx8YtN8VeDNAk14tpdlHtudOuI4Mywy2xBWFXGx1c4Ze/mFn6gf8EzvE+r+LfhL4nm1j9oSX9om507xLd6RNq83hS08NzaHcWwSKfTpLa3jj+eOQFiXXd+8HVcV2H7Sv8AyWP9n7/sfrr/ANRbX68P/wCCLv7P3jP4XeAfjR498c+GrzwNqfx3+KWs/ECy8MXuwXmh2Nz5SW6XSozKt06xGSQBjguAcEED3D9pX/ksf7P3/Y/XX/qLa/Xp5T/Hl/gqf+m5ET2+78z1uiiivMLCvAPhz/ylM+Mn/ZKvAf8A6d/GVe/14B8Of+Upnxk/7JV4D/8ATv4yoA9/rjbz9oDwfZ/Guy+HR12yk8a31lLqS6TE3mTw20e3MsoGfLU71C7sbs8ZwcZ37VOheM/EfwI8QW3gLxjpXgLxH9mZ4tb1GxF3BZIoJdiCwCHA/wBYQ4Tk7DX5b/8ABE39mP4r/C7/AIKMXHiv4laP4hZPFngy91Sz8Q3/AJk8Ws+bPaEP575bzGRtxSTbKAfmUdK+14f4YwmOyzF5jiMQoyoxfLT+1KVrrfS3krvR35d3z1a0ozjBLfqfsXRRRXxR0Dk6U6mp0p1ABRRRQAUj/dpaR/u0AMooooAKKKKACiiigAopHcRoWYgADJJ6AV8wWn/BXH4N3X7Ts/w+HirSRpsekw3qeJ/Nl/siW7ku5bb7ILnyvs2coCH87azNtHINAH1BRSBtwyOQehr5b/4K6+Ifib4e/ZB8Qv4DsvDL6HLBHF4svdR1e6sbuw0t7q3S7kg8i3kwgs2uzLKXRokUuoZhigBvir/grr8JPC/7TeleBW1sXGgXOiapqV/4tgsr2bRtOuLO6sbfyWvEt2tPL/0qUyz+eI4GhVJCrSLX1DYX8Gq2MN1azRXNtcxrLDNE4dJUYZVlYcEEEEEdc18E3r/H/Qv2/wD4Y2On+CfgHZSWXws8SWumWFn4n1JdNjsBqXh0MARpwKFSIFRFQqVL5K7VDegf8EndR+J//CG+L9M8RaN4DsPhzo/inW7HwvJoes3d40CRXpVra3WW1iU2MU32qOJg42rEiKgRVIAPryiiigAooooAKKKKACiiigDwD9sj/k4n9k//ALKrff8AqEeK69/rwD9sj/k4n9k//sqt9/6hHiuvf6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPAP8AgrB/yiz/AGlf+yVeKP8A00XVe/14B/wVg/5RZ/tK/wDZKvFH/pouq9/oAKKK8X+IH7UfiC98eat4V+FngKT4ia14cmW21u9u9XTRdD0e4aNJVtpLsxyyST+XJG5SCCXYrjeULIrAHK/8FUfHuseF/wBmPTvDuh6hq+h3fxT8Z+Hfh7PrWmEJc6JaatqlvZ3dxG5B8uX7NJNHFIOUmliYcivb/hH8IvDHwF+G2keD/Bmg6Z4Z8L6BALbT9M0+AQ29qmSx2qO5YszMeWZmYkkk14R8Q/EEH7WXg7Ufgn8avBWufDHVvHMDDRbzT9YjvbW7urYi6in03UI1Upf2skC3UaTRRv8A6P5irIscmyppviD9sT4cabF4bl8JfAv4o3KrLBbeNpvFl/4WEipGPLmvtKTTrvbKzZ3LbXLIxzgQKQAAVf2SfDNl+zF+338XPgz4UtJrH4dXfhjRfiRpGk28Kpp3ha9v7zVLO/trcDiGC4ewiuUhUbBK94yhQ2K+r68Z/ZI/Zd1L4IXni7xf408QW/jD4qfEq6gvPE+sWtmbKxijt4zHaadY25Z2hsrZGcIHd5HeaeV2LSkD2agDwHxH4Y8Yfsr/ABW8V+LPBnhDUPiH4O8e3ceq634e0m8tbfWdL1RYI7d7y0F3LDbzwTRQwebE08bo8LPGJmmZFyPGj+NP279E/wCEOv8A4c+J/hr8Nb2eJ/El54onsl1HxDaJIsjafaWtrcTtHHPt8uaW4aJ1iZ1jjZpBLF9K0UAFeYftNfBPVPihZ+F9e8LXNhZeOvh7q41zQJL8uLK5doJba4tLgorMIZ7aeaPeqsYnaOUI5iCH0+igDwD/AIa7+I91/wASu2/Zt+KC+Jv9UfteraFFocT9BM1+t87m2Lc5jt3uAnJtg3yV2/7MnwQuvgr4P1eXWr631bxh4y1ifxJ4lvreMx29xfTJHGEhU8iGG3ht7ePPzGO2QsS5Yn0iigAoorxLxp+094s8TeNdX8O/CHwDYePbzw3cmx1nVtb8QHQNAsboKrNaLcpbXU086Bl3iG3aOM5R5FkBQAHttFeRfCb9pPWtR8f23gr4k+Dk+H/jPUYJbnS0tdWGr6Nr0cQBlFne+VCzSxghmhmghk25dFdFdl9doAKKKKACiiigAooooA/MD/g4t/4IN3//AAVa8OeH/Hfw7vdN074teCrF9Njg1CVorXxBp+9pltjJyIpUkeVo2ICkzOHYDDL+Qn7MP/Bpb+1l8XfjBZ6R488M6V8LvCiTqNR16/1mx1Dy4wQXEEFrO7yyFT8udsZPBkXBx/V1TZCwjbaAWx8oJwCfc80Afnr+0p/wWU/ZQ/4IYeBfCnwQutV17WtS8D6Pa6bF4b8NW0epalYQJGoja6eSSKFJXHzlWkDneG2gOpPuv/BOz/grh8Df+Conhy9uvhV4oe51bSoxNqWganbmy1bT0JADvCSQ6ZKgyRM6AsoLAkCv40P2ifEPivxZ8fPGup+O2vn8a3+uXk+um8DC4+2tM5n3huQ3mbs5r6q/4N0fFfjLwx/wWQ+CaeC5LoXGp6w1lqsMTsEuNMaJzeCQDhlWEO4BGA0anjAIAP7HKKKKACiiigDwD4jf8pTPg3/2Srx5/wCnfwbXv9eAfEb/AJSmfBv/ALJV48/9O/g2vf6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK8j8Yf8n6fDb/ALEHxZ/6cfDVeuV5H4w/5P0+G3/Yg+LP/Tj4ar08p/jy/wAFT/03Iie33fmdj8evEHjPwt8I9av/AIeeHdK8WeMraJG0zSdS1P8As21vXMihle42P5YCF2ztPKgd6/Mj9gvxj+3t8K/iF8f7u4/Z48OaoPFnxHvdYiTxL8Qp7GCxR4olEOns9q4nsxtJWVQiklvlGK/Wavxd+KjfEHx5+2R8e/2ddbt/ibL4t+Pfxo0J5Ly1i1GPTrX4a20UNxcSQX67YoEMUUtrIscis0kxQg848ws++P8AglT+z18Yvgp4O+KmvfGy/wBLHir4pfEDUPF9toWl6tNqdl4Xs544Y4rKOaVVyR5TE7FCcjABJA9L/aV/5LH+z9/2P11/6i2v183f8EFptU0/4Z/H3w/A+tyfDTwl8ZvEOj/DwapPNO8GjRmErFBJKzO9qszSmJmJJ3Nljjj6R/aV/wCSx/s/f9j9df8AqLa/Xp5T/Hl/gqf+m5ET2+78z1uiiivMLCvAPhz/AMpTPjJ/2SrwH/6d/GVe/wBfNdl420z4bf8ABRj48+INauksdI0T4P8Agi+vLh+kMUeqeM3dvfgHjvVQhKclCKu2B1P7TXn/ABo8baB8I7CQfYtYA1jxi6n/AFWixPj7Kfe9mAhx3hS6I+7XtMcawxqqqFVRhVAwAPQV5b+yv4G1Ky8P6v408SW81r4t+It2ur31tN/rNKtgoSzsPQeRBtDY4MrzN/FXqlelmU4w5cHTd40+q6yfxP8ABRT6xin1ZEP5n1CiiivLLAHFLuNJRQAu40bjSUUALuNBbNJRQAUUUUAFFFFABRRRQB8mf8FcNa+Jtn8C7HT/AAnpngu48Fa5ruiaT4rudY1m7spRZXOrWsE8LiG2kC2csTmK4mLho4ZpWC/LmvNrSD4/y/t/6vpR8CfAN5H+FlnYyaY3iTUv7MNh/aV2gTH9m8k/Mpj2bNmOTnA+7fFPhfTfHHhnUdF1mws9V0jV7aSyvrK7hWaC7gkUpJFIjAhkZSQQRggkV8KfGb/gmb8S/Dv7TS+I/h3q9/4v+H134Yi0K78N+Jvi1qegSRCO7mmFsLqDSb67ls9kgHltcoclgSy4FAGp/wAEjv2i/iBqUrfCvxdoXhiPw/o9lrOoeE9X0rWrm983SrXxBdafa24Wa3jL26RRotvPuJlgihcgmTNfcV3aRX9rJBPFHNBMhjkjkUMsikYIIPBBHavgnw9rv7QXhL/goHY2GlfBv4C6bPpnwtjsbPSbX4palDp1rYx6kFTy5F8OAqVICCIQ7QoBD/w11XwW/wCCvGl61+1fL8KviPN8FfCt29g8tpqnhr4kT+ILOS/S6jtjpsj3Gl2MaXJaQ4RXdsrtKgmgDX1j/gkx4dm/aW8O+JNL8V+PtF8AaR4Z1TQ5fC1h4t1C2hi+1XWnTJBbMjiS3sdtnIHt4pUTiFVUIpWrupf8FPvgR8Avjv4X+D9hrPhzS/DtpoGqPLqdhuTRvDLabcaZapYs8cRt0XF7JufzVS3NpskwZFxo/wDBWbx98Uvh7+x34svPhvo3h28tv7MmXX9UvvE91o17odkXiWa4thBY3PmFYGuGdy8LQrGHTzGG0eK3N/8AHbwb+3Z8FdJ0b4MfADS4tK+FPjCx0XSLD4pal/Zf9njUfCQkPmjw4DGYytsscawusiyykvH5SrKAfoBZ3sOo2cVxbyxzwToJIpY2DJIpGQykcEEcgipa+Pv+CVviH4p7PiF4e17wX8PtA+Gvhvxdqun+HptC8ZXer/YmRoDLp9rFLpdqr2UF099EsvmIYmhMCwbIlkr7BoAKKKKACiiigAooooA8A/bI/wCTif2T/wDsqt9/6hHiuvf68A/bI/5OJ/ZP/wCyq33/AKhHiuvf6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPAP+CsH/KLP9pX/slXij/00XVe/wBeAf8ABWD/AJRZ/tK/9kq8Uf8Apouq9/oAK8A/4Jp/8Sz9mRtEvfk8U+HvE2u2nieJ+Jhqj6pc3E8zjqBP56XKE/eiuYmBIYE+/wBeUfF/9kLQPil4xbxRp2teLPAPi+WFLa513wpqIsbrUIUz5cd1GyPBdCPJ2GeJzHucIVDsCAcv/wAFEP8AibfDnwJoenfP4u1f4jeF30BI+Zle11e1vLyYDrsi0+C9eT1iEik/PXv9eX/Bf9k7w98HPE03iOXUvEvjPxjcW5s38ReJ9ROoahFbsys0EHCxW0TMqs0dvHGjMqlgSq49QoA80/aA+PV38L9Q8P8AhrwzoieKviB4yeddF0mS7+yW6RQKrXF7dzbXaG0h8yFXdY5GL3EEaozSCuJku/2mvAEba1qDfCD4hWMQ8248NaHpN9oOpKg+8tvfXN7cQXEuOVWWG2RjhS8YO8RfGDUrf4Oft7+BPG/iKeGz8K+JfC174Jg1K5cJb6Vqr3lrdW8LMcCMXiRyIGbhpbSCMHfKiv7b8QPiFofwo8F6l4j8Tavp+g6DpEJuL2/vp1gt7aMfxM7EAckAepIA5NAFb4SfFTRfjf8ADXRvFnh25a60fXbZbm3Z42ilTPDRyRtho5UYMjxsAyOjKwBBFb9xcR2du8srpFFEpd3dtqoo5JJPQCvFf+CfPg/VPCv7OJutWsLrR5vFvifxF4uttNuYzHNp1pqutXuoW0UiHmOXybmNpEPKSvIuBjA7v9ov4e33xc/Z88d+FNLvTpup+J/D2oaTaXYbabWae2kiSTODjazg9D06UAeT6H8WfjP+1BpUXiT4XSfDvwP4CvQZdG1Xxbo97rl94jt8nZdx2lvd2a21tMuHiZ5pHaN1do0zspmq/ttap+zxFeaJ8ZNCtLXxZ9kFz4dbwu7XFp47dp4rdLSxScq8V8Z7i2j+zSsV/fo6zOiymLuv2M/inpPxR/Z48Of2fDBpmoeHrOHQ9b0MECbw5qFtGsc9jKmSUaJhgZOGTY6lkdWPz9/wUi8eWniX48fB86Np8fiVPgL4ug+IHjyS0Xz28N6WbWexHmhTnzcXpvREAXMWmSOF4QOAeq7P2oda/wCJxDdfAzQYW/eR+FbvTdTv7jaeRHJq8dzGiPjglLCRQScbguW9B/Z/+OsXxu0HVFutLuPDninwxftpHiLQriZZpdJuwiSACRfllhkikimilAG+OVCVRtyL1+geKNN8V+HLTWNL1Gx1LSL+3W7tb61nWa2uYWXcsiSKSrIVIIYHBBzXhX7Jd9D8Vv2j/jF8UNDliufBPiUaP4f0W+gcNba4+mpdfab+Fhw8Zlu/swkHyv8AYSVym13APoSvAP8Agl//AMS/9iTwbo158nifw0k+k+Kon4lTXI55DqLyL1DS3LSTjP3lnRgSGBPv9eS/Fn9jrQPiT41n8U6Trni/4eeLr1Eivta8J6iLGfVERQsYu4nSS3uSigKjzRO6KNqsqkggHNft2/8AE41f4LaNpnz+Lbn4k6TqGlBOZLe2tS8upzEdRH/Zxu4WbgZukUnLqre/15p8Ev2V/D3wT16714X3iLxZ4v1C3+yXPiPxLqLahqbW+4N9njYgR28BZVYxW6RxsyhmUsN1el0AFFFFABRRRQAV8sf8Fa/+Cr3gX/gkl+zinjXxXbTa7res3DWHhzw7a3Cw3Gs3KpubLEHy4EG3zJdrbd6DaWdQfqevwt/4PXv2ZvGPjb4XfB74oaTZ3upeEfBc2oaTrZiG9NIkuzbG3mZQNwSUwtGzn5QyQr1dcgHjPwa/4PZ/ifD8YoH+IPwk8A3XgCa4CzQeH3u7fV7SEnBcSzTSRSso52+XGGxjcmcj+gb9nr4++Ff2pfgj4Y+IfgjVItZ8K+L9Pj1HTruP+ONxyrD+GRGDI6HlHRlOCDX8HccbTSBUUszHAAGSTX9k3/Bvf+zf4t/ZT/4JFfCLwl43tbrTPEX2W71WbTbgYfTI7y8nuooSuAUfy5Ud0YblkkdTyKAPEv8AgqZ/wa3fCD/gox8Yr/4jaH4l1T4T+ONcczazcWFgmoafq03Gbh7ZnjKzN/EySKHPzFSxZm9c/wCCR/8AwQY+Ef8AwSRivtZ8P3Op+MviHq9u1ne+J9VVY5EtyVYwW8CZSGMlFJyXcnOX24UfcNcn8cPjNo/7Pnwu1bxj4hXUP7C0OMT38tnavdSW8W4K0pjTLFFzlioO1QSeASJnOMIuc3ZLVnRhMLWxVeGGw8XKc2oxS1bbdkkurb0SOsor5k+GH/BYr9nX4v8AifTND0T4gedrWsXEdpaWMuiahFJNNI21IwWgCliSBw3evpusMNjcPiY82Hmppdmn+R6eecM5xktWNHOMLUw8papVISg2u65krrzQUUUV0niHgHxG/wCUpnwb/wCyVePP/Tv4Nr3+vAPiN/ylM+Df/ZKvHn/p38G17/QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXkfjD/k/T4bf9iD4s/wDTj4ar1yvI/GH/ACfp8Nv+xB8Wf+nHw1Xp5T/Hl/gqf+m5ET2+78z2Cvkj4ufAT9sjX/idr174N/aF+Fnh3wpdXssmk6ZffDZr65sLYsfLikn+2J5jKMAttGfSvbP2rP2vfh/+xN8L08ZfErWbzQ/Dr3senLc22j3uqOZ5FdkXyrSGWXBCN823aMckZFflt8Xv2tf2Mvi/8UNe8USftpftueHH169kvW0vQL/xpp+l2Bds+VbW66btiiXoqDgCvMLPsr/gjP8AtPfFP9o34efFvT/jL4i8P674++GPxF1PwVfx6Po39nW1r9kEexk+dvOSVXEoc7SN5QrlMn2v9pX/AJLH+z9/2P11/wCotr9eUf8ABHR/2c7f9nTXrX9m/Udf1zQB4iuLvxFq+vWWqQarrGrzpHLNc3UmoQxTTyMhjzIFK8AZyDXq/wC0r/yWP9n7/sfrr/1Ftfr08p/jy/wVP/TciJ7fd+Z63RRRXmFhXxr4v+Gd58bv+CtXjTRX+zT+CLb4f+Cr/wASBJQzzXFjqvia4tLCROySSXUVw2fvLa7ekhr6m+MHxR074LfDLWfFOqiZ7PRrYzGGFd011ISFjgjX+KSSRkjRe7Oo718x/sRfDzVPAX/BQT4y3HiJg/i3xT8NvA+v+ICr70jvZ9U8Xgwoe6QRRw26HuluhPNetgf9npSxr3Xuw/xdX/24tfKTiyJavlPsCiiivJLCisvxv400v4b+C9X8Ra5ew6bomg2U2o6heS58u1t4Y2klkbHOFRWJ+leEaBd/tE/HPQ7Pxdo3iD4cfC7SdThS70vwzrfhG717URA4DIb+5j1C1WOVlK7oIYyIW3Dzp6APouivOP2cvjndfGDTfEGm67pcHh/xt4I1M6N4j0uC5N1bwTmGOeKa3mKIZbeaCaGWNyikByjKskbqPR6ACiikLbRk8AdTQAtFfNvg74gfGX9rvwzaeN/h34o8BfDv4fauhufDbav4XuPEOo+IrMk+TqEu29tEtoJ0xJHCokkMTxu0sbM0Kd5+z98bdc8TeMvEngDx1aaTZfEHwbb2d9dyaV5g03W9PuzMttqFsshZ4leS2uY3gdnaKSBhvkRo5ZAD1aiiigAooooAKKKKACivCvBf/BSD4O+Pv2t9f+DGmeP/AAXdeMND02wvBBD4hspZL64uJr+KWxiiWUyNc24slkmj25RLu3JHz17rQB8Gf8FafCXxP8HeNE8c+EdG0bVPCHiLSNG8BeJJ5fEcmkXdjaXXiO0F18y28myGa3leF7hWDW6yvNj92M5V/qXxaP7cmleHD+zz8Lhpo+FF7pC+Gf8AhOV/sptOOo2ilMf2XsCDCx+T5e0qTyAMH748VeFdN8deGNR0TWbC01XR9XtZLK+srqISwXcEilJIpEbIZGUkEHggmvk26/4JeajL+1dZa8Pit8VD8NIfCdxoTaIfEafak33kEosxe/Z/7QNoY0bLG8MwKqA4BOQC9/wSh8dfEbx38A7vRvGfg/RrDwdoWra7omgakvidtYmvbG11e7tbe2KPbR+ZBDBGIUuWdjcJCkhX95mqniP/AIJU2zftTeDfEPh3x38QfC/w30Hwrr2hz+HdM8TTW/2Nr270aaO1sZPLae1smWwm8xIbiMxmK1WARpvWvq/wn4U0zwH4W03RNF0+z0rR9HtYrKxsrSJYoLOCNQkcUaKAFRVAAAGAAK0KAMnwL4F0f4Y+DtO8P+H9NtNI0XSIFtrOzto9kVvGvRQP5nqSSTya1qKKACiiigAooooAKKKKAPAP2yP+Tif2T/8Asqt9/wCoR4rr3+vAP2yP+Tif2T/+yq33/qEeK69/oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA8A/wCCsH/KLP8AaV/7JV4o/wDTRdV7/XgH/BWD/lFn+0r/ANkq8Uf+mi6r3+gAr5j+H/gy5/4KDadqHjLxL4n8Y6V8OZdUvLDwz4b8Oa7d6CL61tZ3tTf3t1ZyRXM5uJIZJI4llWAW8kQeN3LGvpyvlv4WfFTTv+CeWgXnw/8AiDba3png3TtTvLjwp4rg0u4vdLn0+4ne5S0upIEf7HPbGZ4P34SOWOGORHZmkjiALvifw3ffsCat4a1rR/FHi/X/AIY61r+n+HNc0XxNrdzrs+iyahcx2VpfWl7dvJdBBdzW0c0MszxCKRpE8to2EvvWufFDw14Z8R2mj6l4i0LT9Wv/APj2sbm/iiubn/cjZgzfgK+JP+Ch/wC0le/tc/B7wv4R+Flv4itPD3iDx94WsdT8bX2kTada2bHWrN4VsUu41a7mWVY5iRG1s0cLxtLvkVa+lPD/APwT4+CmieGLnTLn4Y+DPEP9pDOqX3iDSodZ1DW5O8t7dXKyTXUh7vKzHoOgAAB6r4o8LaZ448OX2j61p1hq+kanA9teWN7bpcW13Eww0ckbgq6kEgqQQRXhPwi/ZA/Zx0L4mx3XhPQ/BuoeJPC8ontbUaodTPh+TkBre2klkS0I5wYkTGTivHLXwRf3/wC3xc/st3Oq6pP8FdP8HJ8SVsm1O4N7NDNdPpyaA8+/zW01JoprnYXyQ0duc26mJvoTxL/wT6+C/iDw/bWNt8NvCHhubTATpWpeHtLh0fU9Ck7S2V1bKkttIP70bLnocgkEA9koryP9iL4ra18WfgKkviW4S+8SeGNc1nwlql8kSxLqc+lanc6ebzYvyoZ1tlmKLwjSlRjbivXKAPLPjJ+xT8Lvj74qXXvFHhCxu9fWBbVtWtJptP1CWBSSIZLi3eOWSLlh5bMUwzDGGIPXfCf4OeFfgR4Mh8O+DfD2k+GdEgd5Vs9OtlgiMjnLyMFHzOx5ZmyzHkk1yXxm/bT+F/wA8Ux6D4p8XWVnr8kC3f8AZVrBNqF/HAxIE729ukkqRfK37xlCYRjnCnHW/Cf4x+Ffjv4Mh8Q+DfEOk+JtEnd4lvNOuVniEiHDxsVPyup4ZWwynggUAeZ6/wD8E2PgX4n8R3epXvw20CQ6jcNd31inmx6XqE7NuaWexVxazSEkkvJEzEs3PzHPtlnZw6dZxW9vFHBBAgjiijUKkagYCqBwABwAKlooAKKKKACiiigAooooAKKKKACqfiDw9YeLdCvNL1Wxs9T0zUYHtru0u4VmguonBV45EYFWVgSCCCCDzVyigD5s+En/AAR6/Zg+BPxd/wCE78J/BDwDo/ipJ1uYL2Ow8wWUq8rJbxuWjgYHkGJVINfRWr6xaaBps17fXVvZWdsu+ae4kEccS+rMSAB9as18TeC9Yf8Aa0/4LKfFnwz4xaK78Kfs6eHPD8vhnw5cDdaXmpatHPcTay8RO2WWBIltomIIi8yUrtZiSAfYPg/4h6B8Q7JrnQNc0fXLdQC0un3kdygySBkoSOqsP+An0rQ1XSrbXdLubK9t4buzvImgngmQPHNGwKsjKeCCCQQeoNeT/EHxV8MP2OZPGfxGvrCfSz4kdL7xRqWkaLdagSLOEI11dC1ikMaRQ43yOAAq8nivXw24ZHIPQ0b6McZOL5o7n5zfs1f8EQr39nb9rrxt480DxDY6VaaPcLcfD37XZpqMMZmQmVLyFiHKRhjCpjkjkP3w6ng/YXhT9peTQNesvDnxN0hPAniO/mFrYXJuPtGia7ITgC1vNqhZG7W86xTHnasgG8+sVneLPCOlePfDd5o2uaZYaxpGoxGG7sr63W4t7lD1V43BVh7EV5GDyilgYOOB927btunf8rbJrpa97H6JxH4jY7ijExr8UfvnGMYKcbRqRUVa6e0uZ+/KM005OXI6fM2aNFeKj4VeOP2d3ef4fXsvjDwoi5Pg7XL4/abQAcLp2oSEsg9Le53x9AktuoxXbfCb4+eHfjEbu20+W6sNb0zjUdD1S3az1TTjx/rYHw2w5+WVd0T9UdhzXdTxKcvZ1Fyy7d/R9fz7pHy2MySUKTxeDn7ait5JWcb9Kkd4PpfWDekZyszzT4jf8pTPg3/2Srx5/wCnfwbXv9eAfEb/AJSmfBv/ALJV48/9O/g2vf66TwwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvI/GH/ACfp8Nv+xB8Wf+nHw1XrleR+MP8Ak/T4bf8AYg+LP/Tj4ar08p/jy/wVP/TciJ7fd+Z7BXxp/wAE8P2vvFnxy/bX/a48I+OvFsEb/DLxjb6Z4d8HvbWlu+i6KLON49Q3rGs8q3bOXLSu6rtAXaDg/ZdfPv7Wf/BKn9nj9ufxba6/8VvhP4X8Xa9Zwi2j1OZJLa8aIZ2xvNC6PIi5O1XJC5OAMmvMLPOf+COH7XXjD9rbw38eZfEniePx3ovgf4va54X8KeJo7O3tU1TSYBA0KgW8aRy+UZGTz1GJBg5OM17T+0r/AMlj/Z+/7H66/wDUW1+u3+DXwV8Jfs8fDfTPB/gXw5o/hPwvo0ZjstL0u1W3trcElmwqgDLMSxJ5Ykkkk5riP2lf+Sx/s/f9j9df+otr9enlP8eX+Cp/6bkRPb7vzPW6KK4748/FYfBr4YX+sxWp1LUyY7LSdPVsNqd/O4itrcem+V0BP8K7mPCmuGhRnWqRpU1dydl8y27K7OI8SM/x8/agstEQrJ4S+Fbx6rquOVvdckTdZ25/69oW+0sP781qeqcZHw5/5SmfGT/slXgP/wBO/jKvSv2fvhRJ8HPhhZ6VeXi6prlzJLqOtaiF2/2jqE7mW4mA6hS7EIp+6ioo4UV5r8Of+Upnxk/7JV4D/wDTv4yrrzGtCU1Sou8IKy8+8v8At53fkrLoTBO13uz3+iiivPKOL/aQ+C9p+0h+zx48+Hl/cy2Vj478Pah4euLmIZe3ju7aSBnUZGSokJHPavJ/Dv7fNl8N9Bs9C+Kvhf4g+HviBYwpb3tppXgnV9bsdXnUANNp1zY200VxFIQXWMMJo0YebFEQQPoyigDxj9lH4fa6viz4h/EjxNpdx4e1X4malbT2uiXDo1zpGnWlqltbR3BjZk+0ORNM4VmCeese5vL3H074i+Nrb4a/D7XfEd5HPNZ6Bp1xqU8cIBkkjhjaRgoJA3EKcZIGe9al9O9rZTSxwyXMkaMywxlQ0pAyFBYhcnpyQOeSK+Tf2mv2nfivffs3fEGC4/Zs8d2UE3hrUUluZPFHh51t1NrIC5C3xYgDnCgnjgGgD6e+HXja2+JXw+0LxHZxzw2ev6db6lBHMAJI45o1kUMASNwDDOCRnvWlqenRaxptxaTqWguomhkUMVJVgQRkcjg18n/sy/tO/Fex/Zu+H0Fv+zZ47vYIfDWnJFcx+KPDyLcKLWMBwGvgwBHOGAPPIFfVtnqJk0aK7u4W08tCJpop3TdbHblldlJTK8gkMRxwSOaAPl74EftCWX7DXwX8LfCj4n6T42sr/wAA6ZB4e0rWtM8J6jrOneKbK1QQWtzDJYQTLHcSRRxmS1kCSrL5gRZIwkr9t+zx4d1f4n/tCeLfjHqmi6t4Y0zWtC07wv4b0vVbc2upSWVtPd3Ml9cwH54GnluwqQSASRx2ys4R5Xij9I+HHx98CfGO+vrXwj418JeKrnTGK3kOj6xb3z2hBwRIsTsUOeOcV1tABRRRQAUUUUAFfJP/AAVP+K3xB8N+GvCPhLw54Futb8KeOfEmlaHruqw+IoNMZ4bi4YPpo3fOgutkdsZgRgXZCkNgj62rC+Jnw10T4w+A9T8M+JLBNS0XWIfIurdpHjJGQVZHQq8cisFZJEZXRlVlZWUEAH5/aNZ+LfFP7Y/xX8G3f7LPh678PSfC3wTYP4WXxPpsNlptrFqnixreWLbGEQl3lCCMK0RtwwILKR9C/wDBKj43fEP42fst6VcePvDd3YHTDPp2m67cazBqEvia3t7y5to7p/LAIdooIXLkYlMpcYBrj/Df/BODxvJ+1z461bX/AIz/ABN1P4b6/wCDvDuhLH9p0621PV1s73XZZNPuLy3tY7pIIUv4is0UkdzL9ocSTvsOfrvwz4a0/wAF+G9P0fSLK103StJto7Kys7aMRw2kEahI40UcKqqAABwABQBeooooAKKKKACiiigAooooAKKKKACiiigDwD9sj/k4n9k//sqt9/6hHiuvf68A/bI/5OJ/ZP8A+yq33/qEeK69/oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA8A/4Kwf8AKLP9pX/slXij/wBNF1Xv9eAf8FYP+UWf7Sv/AGSrxR/6aLqvf6ACiiigDh/2jfghbftEfCDUvC899PpNxLNa6hpupwIHl0nUbO5iu7K8RT8rtDdQQy7G+VvL2twTXm6ftJfGXweg0jW/2evE3ibW4h5f9r+E/EOi/wBgXpH/AC1Bvr23vIFIwSht5ChyoaXAdvoCigD5RT9kf4j2Hxh/4aBin8NzfG6e0OjXWgNfzLoT+HP9YmhpdeVvEiXI+1C9NuWMskyeWsMm1etk/aO+M3jmNtI8P/s/+JfCWtSjyzrXjHXtFOhWDH/lrjT725u7gAfMIxDFvOFMkWWdPoGigDxTRNV8Gf8ABPb4CeHPDmp6rqur3txcXHkR21jJfa14t1W5mlvL2eG0t1Z5JZriWe4kEa7Iw7Mdka5HGfFj/gpZp3w3+FPinVNW8C/ETwJrNno15d+H08W6J9msdcvI4Hkt7RLmKSSBJ5nVVSCWSOVy21VLAgb/AMLv+Kj/AOCjvxZn1f59Q8L+FPD9loEUnItNOu5L6W4mi/um4urbZJj7w06DJ+VceufF7wT4e+JHwr8RaD4tt7W58Matp09rqkdyQIjbMhEhJP3cLk7u2M9qAOP/AGNPhZpfwv8A2e/DzWU0Wp6p4js4dc13XMA3HiPUbiJJJ76ZwAXaRj8vACII40CoiqPLf2ufiP4b/Yw/ae+F3xCe4j0S1+JerXPhDxZFbWzyvrSJpV7e2M/kRK0k93HcWcdrFsVpHF/5QDkxgcB/wTutP2iPhT+wX8GxoWn+Bvibo+peDdKvIIPFOv3PhnVtE861jdbcvDY3cc8CbhsDJDJDFhD57x5fb8CeAvGnib/gqV4U1n4wXfh251XSfh5qmpeENE0ZHl0rQZ3vrS2vpYZ5lSW4uhDJbo1wyRfu7wxrEg3tKAem2/8AwUI8P6VcJP4t8D/FT4eeHZmCp4j8S+HGtdJiB4DXEqPI1kmeN92sKg4yRkZ97RxIgZSCCMgjoRUd5Zw6jZy29xFHPBOhjlikUMkikYKsDwQRwQa8J/4JsXs0n7LosRLJcaP4e8V+JtB8PyuxbdpFlrt/aWCKTyUjtoYokP8AEkSN0agD3uiiigAooooAKKKKACiiigAooooAK8w+KP7HPw++L3xRs/G+qaXq1j4xsrH+zF1vQvEGo6Dfz2m5nFtNNYzwvPCHZmWOUsqsSwAPNen0UAeH/tW/AZfiB+zrd/DDw5oPie1s9Y066t7O/wBA1pdJi0a5CZhe6fz0llieRyXTy7hZNr+bG4bDeyeHrW7sNAsYL+5W9v4beNLm4WPyxPKFAdwvbJycds1cooAKKKKACuM+LXwG8PfGQWc+pQ3NlrOlndputabObTU9NOQT5U6fMEYgbozmNwMOrDiuzoqKlONSPLNXR04TGV8LVVfDTcJrZp2f9PZ91ofFfjjxz4p+Af8AwUj+FM3xEuh4p0iz+GnjOC113RtJlN55D6n4Vaa4v7SIMsSQmKFWlgLKxudxihSNyPsTwt4r0vxx4ds9X0XUrDWNJ1CITWt7Y3CXFvcxno6SISrKfUEivEPiN/ylM+Df/ZKvHn/p38G10nin9mR/DWvX3iT4X6rH4F8R38pub60+z/aNC12Q4ybqzBULI2OZ7cxTEn5mkA2Hm5atH4Pfj2+0vRvf56+b2Pc9tl+Y6V7Yer/Ml+6l/ihFN0350047L2cVeR63RXnHwv8AjrfeIPFX/CK+LvC+peEfF6QNcLGN17pOpxoQHks75UVZAMrmOVYphnJi24Y+j10UqsakeaH9eq6Hj47L6+Dq+yxCs91ZpprvGSbjJeabQUUUVocQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5H4w/5P0+G3/Yg+LP8A04+Gq9cryPxh/wAn6fDb/sQfFn/px8NV6eU/x5f4Kn/puRE9vu/M9gr4j/a/+KX7SH7Aeq+J/ibbeNvhF8Tfg+9694/hrxreQeC9W0CNzlbWy1cn7JOAd21buNH5A8w45+3K/LL4t3n7H9r/AMFAfHtx4q8F/HH9qX4s+FdSNzqEEfhXV/HeleAmmIljsba2jjaztlQbNoCMyleX3BhXmFnt/wCw/wD8HAX7Pn7atp4ftzqusfDPxD4olNtpWm+NLP8As6LWJgwQx2V7lrS6YuQqpHKZGJHyZOK9/wD2lf8Aksf7P3/Y/XX/AKi2v1D8Afiz4P8A21vhrJJN8MvGWg6R4e1GGO30v4geBp9DkWaFUkhnt7a8jUlUJXbIi4VlIBBWpv2lf+Sx/s/f9j9df+otr9enlP8AHl/gqf8ApuRE9vu/M9brxfTYV/aB/agl1Jv33hb4RyvZWQzmO912aLE8uOh+y28nlKf+elzcA/NHx037SvxXvPhZ8PEXRIkuvFviW8j0Pw7bMMrLfzhtruP+eUKLJPJ/0zgfvitv4N/CvT/gn8M9J8M6YZZbfTIiJLiY5mvZ3YvNcSnvJLKzyOe7OxqsP/s2GliH8U7xj6fbl9z5V3vLrEH7zsdPXgHw5/5SmfGT/slXgP8A9O/jKvf68A+HP/KUz4yf9kq8B/8Ap38ZV5RZ7/RRRQAVFeXsOnWctxcSxwQQIZJZZGCpGoGSzE8AAckmpa+cfin4ZsP2mP24ZPhx4ytIdU8C+CvBth4rXQrpd9j4iv72/vbdXuYjlZ0s008MsTgx775XKs8cTRgHuPgT4n+GvijYTXXhnxDofiK1t5DDLNpd/FdxxOOqs0bEBvY81nfH/wAJ3vj34EeNdD0yNZtS1nQb6wtI2cIHllt5EQFjwMsw5PArwv8AbW+EPhX9mv4W3Hxf8B+HdG8KeN/A0tnLDPo9mlidetTcxRSaVcrEFFxFNHIyRpJkRytHIm1lBr6ioA5H4AeE73wF8CPBWh6nGsOpaNoNjYXcauHCSxW8aOAw4OGU8jg15P8AtOabB8aP2svhf8KPEUa3HgPWdA1/xZq2nS82/iKfT59KtrexnXpLbj+0pZ3ibiRreHIZFkWvoUttGTwB1NeY/FD4e+F/2qNCs5NH8VfZNe8JagbzR/EHh68gmvNAvRHJCxGRJEwaN5I5IZUZHVmDLwCADhf23fgN4Q8Ifs0+K/HOhaVoPgzxf8MfD95r/h3xDY2cdpLo0tnbvOis8ahmtG8vZNAfkliZ1I5GPcvAPiG48W+BNF1W7s5NOutTsILua0k+/avJGrtGfdSSD9K8Xj/ZH8b/ABKurez+LHxW/wCE48J2lxFcnw/pnhqHQ7bVnidZIhfuJZpJ4wyqzRRmGKQjbIjxkxn3+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA8A/bI/5OJ/ZP/wCyq33/AKhHiuvf68A/bI/5OJ/ZP/7Krff+oR4rr3+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDwD/AIKwf8os/wBpX/slXij/ANNF1Xv9eAf8FYP+UWf7Sv8A2SrxR/6aLqvf6ACiiigDlfjZ8YdI+Afwt1fxbrhuW0/SIlPkWsfm3N7NI6xQW0CceZPNM8cUaDl5JEUcmvKV0P8Aab8bKNaj8U/B74frIPMt/C914UvvEUkCn/lndagmo2qvIRj/AFNuqxtn5rhQCdL/AIKAeENU8RfAS01TSbC61mbwN4p0HxhcaXbRmWbUrTTdUtry5jijHMkwgikkhjHLzRQr3r1bwB8QdD+KvgzTvEXhrV9O17QdXhFxZahYTrPb3MZ/iR1JB5BHsQR1FAHHfs+fHa7+KNx4g8PeJdIg8N+P/Bc8NvrulQXRurYpMhe3vLWYojS2k6q+x2RGDxTRsoeJhXpNfPf7PV9D8Zf2z/if8TNCljufBqeHtG8D2GpQNug128sbrU7q7ljcZWWCBtQjgSRTgTLerztr6EoA80+Of7OzfFDXtM8T+HvEV/4H8faDby2mn67ZwR3KyW0rI8lpdW8nyXNuzRo207XQrujkjYljxE37K3xJ+MUZ0v4w/FLQfE/g9sC68PeE/CEnhu21yMf8sdQkmv72WaFv44oXgSUfI4aMuj/QVFADY41hjVVUKqjCqBgAegrhvjt8BbH446Xpb/2lqnhzxH4cujqGg6/pbIt7o9yY2iZlEivHJG8bsjxSo8bqeVyFI7uigD5+k/Z1+NvjyNtI8a/HDRW8KyDy7hPB3gqTw9rV9EfvRyX8uoXYj3DgvbQQSAFtjo21l9u8G+DtK+HfhHTNB0PT7XStF0W1jsbCytoxHDaQRqESNFHAVVAAHtWnRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXy3+xN+xN8GfFf7GXwj1TVPhH8MdS1PUvBejXV3d3XhaxmnupnsYWeSR2iLO7MSSxJJJJNfUleU/sD/wDJivwW/wCxD0P/ANN8FcFejTqYmCqRT92W6v1gfW5TmeMwWS4mWDqypt1aN+WTjf3K+9mg/wCGB/gV/wBEW+E3/hIaf/8AGqP+GB/gV/0Rb4Tf+Ehp/wD8aryD/gpr+2B8TPhZ47+FHwX+Bdl4bn+Mfxru78WOpeIA76X4Y0ywhWW91CdE+Z2USRLGh4dmP3tu04fwR/Zb/bb+EPxb8P6p4m/ao8CfGDwnPfw/8JBoerfDO28PyW1mWHnfYriykZmlCk7POG0kDd3rX6hhv+fcfuRxf62Z5/0GVf8AwZP/ADPe/wDhgf4Ff9EW+E3/AISGn/8Axqj/AIYH+BX/AERb4Tf+Ehp//wAar5K/Ye/4KAf8M+fsMfET4h/FDUvG3jK2tPjpr3hG1YXH9o3tvHceIfsFnChuJlC28RlQbQ2ERTtU4Cn68+L37XHhv4LftHfCL4YapZa3Pr/xoudWtdEuLWGJrO1bTrBr6c3LNIrqGiQhNiPlsA7R81H1DDf8+4/cg/1szz/oMq/+DJ/5kH/DA/wK/wCiLfCb/wAJDT//AI1R/wAMD/Ar/oi3wm/8JDT/AP41Xzv8W/8Agvj8Lfhb8TfEWi2nw3/aC8ceG/Bup3GjeIfHHhXwFPqfhbRLu3YpcxTXYcEmJgQ/lxuB2Jryz9oj/gtP4z/Zy/4LGeLPho3wg/aQ8f8Aw98P/Duzmj0Dwb8P4NUuLvVHv5GfWYH3pNJp5gZLXzPM2efBKoj3KXJ9Qw3/AD7j9yD/AFszz/oMq/8Agyf+Z9t/8MD/AAK/6It8Jv8AwkNP/wDjVH/DA/wK/wCiLfCb/wAJDT//AI1XkX7WH/BZD4f/ALLvxuv/AIc6f4D+NPxi8ZaBbwXniLTvhr4Pk8QHwtBOpeGS+cOiRb0G4KGZ9pB24IzL8YP+C0fwQ+DX7OXwo+LF1e+JNY8C/GLVv7F0S+0nSWuZoLoRXDtHPbkrOHEltJAY40kk87CbOpB9Qw3/AD7j9yD/AFszz/oMq/8Agyf+Z6x/wwP8Cv8Aoi3wm/8ACQ0//wCNUf8ADA/wK/6It8Jv/CQ0/wD+NVH+xh+13F+2h8MtS8UQfDj4s/DODT9Xl0qPT/iD4cOhahfqkUMovIIWdy1q4m2rIcEtHINo21wP7bn/AAVY8B/sSfEXRvA8nhT4o/Fb4ja5Ytq0Pg/4ceHG1/W4NPV/LN7NCHRY4N4KhmYFirYB2nB9Qw3/AD7j9yD/AFszz/oMq/8Agyf+Z6F/wwP8Cv8Aoi3wm/8ACQ0//wCNUf8ADA/wK/6It8Jv/CQ0/wD+NV8cf8FD/wDgtnpK/wDBHLxn8afgnbePpdZuL9/BskkHh7dqXw51Jg3nTarbyMPsvkKNoZty+dPagZWTdXrn/BFfwxPp/wCzZrerXGq/te3k2r624ktP2h2C+ILR44YwzWsOP3Vm5bKjcw3K/pyfUMN/z7j9yD/WzPP+gyr/AODJ/wCZ7X/wwP8AAr/oi3wm/wDCQ0//AONUf8MD/Ar/AKIt8Jv/AAkNP/8AjVeaftr/APBWnwF+xZ8UdP8AAY8H/Fj4t/EK9086xN4W+G3hltf1TTbDdsF1coHjWKJmBAy2TgnGMGnR/wDBXr4R6n+xhZfHPSv+En1fwpceIrPwndWEGnrDq+k6ncX0Viba6t55I/KeKaZDIC2QnzKHBXJ9Qw3/AD7j9yD/AFszz/oMq/8Agyf+Z6T/AMMD/Ar/AKIt8Jv/AAkNP/8AjVH/AAwP8Cv+iLfCb/wkNP8A/jVT/F79rjw38Fv2jvhF8MNUstbn1/40XOrWuiXFrDE1natp1g19OblmkV1DRIQmxHy2Ado+aviD/gnL/wAFo/GX7QP7ZPxW+Hnin4Q/tH3unS/ESXSPD2pS/D+C20nwJYrZwMLXVrmN1aGTzBJLmQStsniO7BAB9Qw3/PuP3IP9bM8/6DKv/gyf+Z9sf8MD/Ar/AKIt8Jv/AAkNP/8AjVH/AAwP8Cv+iLfCb/wkNP8A/jVfBv7P37X/AI58Nf8ABKnw34n1D4q+NtI8R618drvwmuvHSrfxVey283iq5tIrJ0v50VLcx7YvMVy8KAGNGKha+nf2vv8Agr/4B/ZL+M0vw7tfA/xk+L3jnTrOHUdZ0X4a+EZNfuPD1rNuMM14Q6JEHCswXcX2gHbggk+oYb/n3H7kH+tmef8AQZV/8GT/AMz1X/hgf4Ff9EW+E3/hIaf/APGqP+GB/gV/0Rb4Tf8AhIaf/wDGq8t+KH/BZX4LfCr9jvwP8dbu68R33w88c+JLXwvFc2emZu9IupZpoZDeW8jJJGLeSCVZVVXkBQ7Y3JGeZuv+C4fgHRfhDP4s1n4T/tGeH5L3X08OeFvD+p/D+eDXvHtw8D3CvpNnvLzw+VGzF5PLC8A4JAJ9Qw3/AD7j9yD/AFszz/oMq/8Agyf+Z7x/wwP8Cv8Aoi3wm/8ACQ0//wCNUf8ADA/wK/6It8Jv/CQ0/wD+NVz/AOwz/wAFAtB/bs0vxGdP8CfFf4b6z4Umgi1PQviB4ZfQtThEwkMUgjLOro3lScqxwVOcV71R9Qw3/PuP3IP9bM8/6DKv/gyf+Z82fET9mT4bfBf4+fAnVPB3w98D+E9Tn8aXdrLd6NoVrYTyQnw1rjGNniRWKFkQlScZRT2FfR9eUftH/wDJX/gJ/wBj5df+oxr1er1ng6cKc6sYJJc3T/DE6eJMdicXQwNbFVJTl7F6ybb/AI9bq9QryPxh/wAn6fDb/sQfFn/px8NV65XkfjD/AJP0+G3/AGIPiz/04+Gq+hyn+PL/AAVP/Tcj5Oe33fmewV+Z3wv8K/tY/sQftlftH6t8O/2YtB8f/Dn4s+MR4m017r4o2Gk3KXPkrDcXOWtpG8u48uOQQsoMJ3De+eP0xr8Gv2ovi58TPjj/AMFJ73UvGvx6+Nnwu+E9v8fbr4N3dl4W8Yz+GtO0uzGjx3Gnzbo9qiWe43u0su7cpABAArzCz9jP2RPiv8V/i54J1K9+Lnwjsfg9rdtfeRZ6Za+L4PEq3tv5aN55mihiEZ3l12FSfkznnAh/aV/5LH+z9/2P11/6i2v18w/8G/8A4s1DV/hn8ffD998Q/iD8VY/AHxf1rwxp/ijxP4mn1/8AtKyt1gNv5E8rNt2xyKsiIdhcFxjzMD27/golZeKNWuvgnY+DZ0s/EWpeP5LG3vGP/IOSbw7rkU10o7vDC8kqr3aMDvXsZFT9pi/ZtpXjUV3sr05avyIqO0b+n5nR/CmcfH74+6z48YGTw34MNx4Z8MHdlLq5D7dSvlHQjzEW2RuoEE5Hyy17RWR4A8Dab8MfA+keHdHg+zaVodnFY2kedxWONQq5PUnA5J5JyT1rXrkx+JjWq/u9IRVoryX6vVvzbHFWWoV4B8Of+Upnxk/7JV4D/wDTv4yr3+vAPhz/AMpTPjJ/2SrwH/6d/GVcRR7/AEUUUAFebfHb9nx/ilq2keJPD3iC68FePvDcc0Gl67bWyXSmCYoZrO6t3wtxayNFEzR7kcNEjRyRuA1ek0UAeFeH/wBl/wAdePfFGk3/AMYviLo3jbT/AA7exanpug+HfCzeHtJkvIWDwXN2kt5eTXDwuqyRr5yRLIokMbMkRj91oooA+df2gdFtv2if2vPDPwl8SobjwBb+FLzxbq2kO7LB4onW6gtILa4UHE9pEJJnlgcFJHltdwZVKnA/bO/Zq8Bfs3/s4eNfi18OvCnhX4feO/hZ4cvPEelapomnxaWLlbG3a4+wXfkKvn2Uyw+VJE4YBX3ptkRHX2L49/s/t8XbvQ9c0XXrvwd458JtM2ia9bW0dz5KTKontbiF/lntJvLiMkWVJaGJ0eOSNJF4Vv2Y/id8Z5oLD4x/EXwjr/g+2niuJvDvhLwjNodvrrROrot/Lc317JJbl1VjbxGINjZI80ZdGAPedJvzqmlW1yYZbc3ESSmKUYeLcAdrD1GcGrFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB4B+2R/ycT+yf/wBlVvv/AFCPFde/14B+2R/ycT+yf/2VW+/9QjxXXv8AQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB4B/wAFYP8AlFn+0r/2SrxR/wCmi6r3+vAP+CsH/KLP9pX/ALJV4o/9NF1Xv9ABRRRQAV4v48/4J2/BL4m+MNQ13W/hx4evNR1iUz6nhHig1WQ8F7qBGWK4Y45MqMTXtFFAFbR9HtPDuk21hp9rbWNjZRLBb21vEsUVvGoCqiIoAVQAAABgAVZoooAK8S0T9rm7+MHxe8ZeEvhf4d0/xYnw5vBpPiTWtR1htM0u11MxpK2nQSR29w89xFHJG0wCKkXmIpcvuRfba+J/+CdvhHxl+wj4P8efDHxB8PPF/iDWbvx7rviTSte0uGGbT/FFrqN491FcS3LSKlvMgfypUn2sDCCnmBkyAfUn7P8A498T/Er4Zxap4x8IDwN4hGoahZXGkLqB1BEW2vZ7eKdJzFCXjnjiSdCY1+SZa7SvJPiB8TvFHhz9qD4UeHVn0230TxXYavJqtmkBmlNxbQwvGUuCV/dgyMMeWC3BJH3a9boAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK8p/YH/5MV+C3/Yh6H/6b4K9Wryn9gf/AJMV+C3/AGIeh/8Apvgrkn/vUP8ADL84Hv4f/kSYj/r7R/8ASK54H/wVN+DvxS8JfHP4LftIfBzwifiP4k+DT6rpmveDY7xbW58RaJqcMST/AGZ3+X7RA8EciJ1fLD5iFUy/Az/grR40/aO+LGg+FtB/ZB/ac8Mx3V/DBrWteO9CtvDWlaNblsTXCSyTubrYoYhI13PgAYyK+0aK6zwD8kNR/ZF+Kvib/gjp8aND0jwD4iuPG2nfHbVPHGmeHLy1fT7zXrK28VR34+z+coyJreN3iYAiT5dudwrq4P2lPiR+39/wVQ/ZA8X2/wCzN8evhh8PvAN94sfUdc8caCNOkinufD9zAqS26NI1vF5gRUmnZBK0iqgJzX6iUUAfir+0KfiB4F+O/wARrX9nr4F/tw/B74x+IvEl1qNpLoJtr74UeIdQkuCDqN6bp3too7gASSeWkbjcM9CD9G/tYfEnx9+xR/wV10T41XnwR+MHxc8JeKvgzZ+A55fhroI1u407V4dZub1/OhMkflwGOVcSMwGTjsa/R2igD8Q/23v2PviD+zp+338afFusJ/wUEuvBXxT1qDxFoN7+zTr6G2ZjaRQywalYbPMjnjeHCzbirRGMAAqRXqvwh/ZE8TeA/gt+xPZaP8PvjdaWWifHK/8AFGrweOZIdZ8QaTbXFtqjtfanPZwpHEJJpQ+ZRuVp1DOWIr9Z6KACvz1/aY8XePP+Cdv/AAU68YfHCP4LfE/41fDn4s+DNJ8PzN8OtLXWdc8OX+nTXJCSWJZGa3mS4Dear4VoyCOmf0KooA/HL44/sw/GH4u/8EhP23fHGo/CrxR4b8Y/tG+JLfxD4f8Ah3aWj3+tWdlC+nW8TTW0Cswu5lt3mljUErxnkHH7G0UUAfnV8cfHXj3/AIJnf8FMvi58Xz8EPir8bPh78dvD/h+1huPhvpC61q3hy/0iO5hNvPZl0byZluBIJQ2AVxgnOPHdf/Yr+NnxH/4JdfH/AMaSfDK80X4h/FX4xWnxg0z4bLcRrf29jaX2muLaRh8gvpoLKSVgBkuyrtDEqP13ooA/LuD9pT4kft/f8FUP2QPF9v8AszfHr4YfD7wDfeLH1HXPHGgjTpIp7nw/cwKktujSNbxeYEVJp2QStIqoCc12v7IPxK8Y/sjf8FMvj38PPEfwS+Mup6V8aviKvijQPHOiaAt54UtLSTS7WIm9vPMX7OyvbspXaxycY6E/ofRQB+Qmgfs0/EeH/gkt8PvDj+APGy+IbL9pWLXbjSzod0L2DTh4xnuDePDs3rb+QRL5pGzYQ2dvNcd/wUG/Y88f/Av/AIKN/GH4haiv7e114B+LFxpuq6Tefs069GGjlgsIrSa31OwK+Z5iNCDHMG2GNwOoYD9rKKAPyE8Mfsh+J/D37A/7Omm6F8Pfj6Hf9qPw7431Sz+ILw634pt7J9SM13qeotZwIIoyxeWRpgWTexkk5AH1b/wWj0DRtb+D/gybXfgr8aPiza6Trp1C31H4UXckHizwZcpEwS+tFikjkcsryRkK2ORkHgj7OooA+Gv+CLniD4zeJ4/ihd+OoPjla/C17rTf+FfQ/GS1s7fxrGfKm/tEXKwAN5G/7L5Rl+f/AFvJxmvuWiigDyT9o/8A5K/8BP8AsfLr/wBRjXq9Xryj9o//AJK/8BP+x8uv/UY16vV65MP/ABKv+L/22J7+cf7pgf8Ar0//AE/WCvI/GH/J+nw2/wCxB8Wf+nHw1XrleR+MP+T9Pht/2IPiz/04+Gq97Kf48v8ABU/9NyPnZ7fd+Z7BXFfFD9m/4ffGzwVrPhvxf4I8KeJdB8RTLc6pp+paVDcW+oTLjZLKjKQ8i7Vw5+YbRg8V43/wVb/Yv8Uftu/s26Po3gfWdH0bxp4K8XaR420MawJP7M1C70+fzUtrpogZFifJyyKxBCnBr5E/Ysm/4KIfDv4g/HO6uvhh8Mr2DxL8QLzVbOLxf461LyLOF4ogItMZbZ91iCpKErGclvkHU+YWfpb8Hvgt4R/Z7+Htj4T8C+GdC8IeGdM3fZNL0eyjs7S33MXcrGgCgsxLE4ySSTya4f8AaV/5LH+z9/2P11/6i2v1P+yN4j+NXiTwXqUvxv8ADPgDwvr6Xuywt/CWsXGp2str5anfI88UTLJv3jaFIwAc84EH7Sv/ACWP9n7/ALH66/8AUW1+vTyn+PL/AAVP/TciJ7fd+Z63RRRXmFhXgHw5/wCUpnxk/wCyVeA//Tv4yr3+vAPhz/ylM+Mn/ZKvAf8A6d/GVAHv9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUV8q/wDBa79tjxB/wT4/4JqfEj4neE4IZvFOmW9vY6S80e+K0uLq4jtxcMCCp8oSNIqsCrMiqeGNAH1VRX8MCft3/GeP46/8LMHxQ8c/8J59q+1nWv7Zn+1F9277277uf4Pu44xiv69/+CKv7a2vf8FBf+Cafw1+J/iuCOHxTqttPY6u8UeyK7uLW4ltmuFAAUeaIlkKqAqs7KOFoA+qKK8I/wCCnP7Wd5+wv+wL8Uvivptgmpap4O0R7nT7eRGeJrqR0hgaRVwTGskqM4BHyq3I6j+Nj4jft5fGf4r/ABwl+JOu/FDxxd+OHuftcesJrE8NxavklRCUYCFFzhUjCqowAABigD+56ivg/wD4NzP+Chni7/gpF/wTa07xZ48xc+L/AArrVz4U1LUguz+2Gt4beZLoqAAHaK5jV8cF0duN20feFABRRRQAUUUUAFFFFAHgH7ZH/JxP7J//AGVW+/8AUI8V17/XgH7ZH/JxP7J//ZVb7/1CPFde/wBABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHgH/AAVg/wCUWf7Sv/ZKvFH/AKaLqvf68A/4Kwf8os/2lf8AslXij/00XVe/0AFFFFABRRRQAUUUUAFFFFAHJeLPgzpXjL4p+F/GF3NqK6t4Pjuo9OWKfZAouVVJt6Yw+5UQfN93blcEknraKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvG9A/YQ8A+FNCstL0u8+J2m6ZpsEdraWlr8TfEsMFrCihUjjRb8KiKoACgAAAAV7JRWNXD0qrTqRTt3Vz0sBnOYYGMo4KvOmpWvyylG9r2vZq9ru19rvufI/jX4AabpP7fPw08FW/if4sx+GfEHgDxbrd/Z/8LM8Rnz7yx1HwzDay+Yb7zF2R6heDarBW87LBiqFfX/+GL/CH/QZ+LP/AIdPxP8A/LCuZ+I3/KUz4N/9kq8ef+nfwbXv9Z/UMN/z7j9yO7/WzPP+gyr/AODJ/wCZ5N/wxf4Q/wCgz8Wf/Dp+J/8A5YUf8MX+EP8AoM/Fn/w6fif/AOWFes0UfUMN/wA+4/cg/wBbM8/6DKv/AIMn/meTf8MX+EP+gz8Wf/Dp+J//AJYUf8MX+EP+gz8Wf/Dp+J//AJYV6zRR9Qw3/PuP3IP9bM8/6DKv/gyf+Z5N/wAMX+EP+gz8Wf8Aw6fif/5YUf8ADF/hD/oM/Fn/AMOn4n/+WFes0UfUMN/z7j9yD/WzPP8AoMq/+DJ/5nk3/DF/hD/oM/Fn/wAOn4n/APlhR/wxf4Q/6DPxZ/8ADp+J/wD5YV6zRR9Qw3/PuP3IP9bM8/6DKv8A4Mn/AJnk3/DF/hD/AKDPxZ/8On4n/wDlhR/wxf4Q/wCgz8Wf/Dp+J/8A5YV6zRR9Qw3/AD7j9yD/AFszz/oMq/8Agyf+Z5N/wxf4Q/6DPxZ/8On4n/8AlhR/wxf4Q/6DPxZ/8On4n/8AlhXrNFH1DDf8+4/cg/1szz/oMq/+DJ/5nk3/AAxf4Q/6DPxZ/wDDp+J//lhR/wAMX+EP+gz8Wf8Aw6fif/5YV6zRR9Qw3/PuP3IP9bM8/wCgyr/4Mn/meTf8MX+EP+gz8Wf/AA6fif8A+WFH/DF/hD/oM/Fn/wAOn4n/APlhXrNFH1DDf8+4/cg/1szz/oMq/wDgyf8AmeTf8MX+EP8AoM/Fn/w6fif/AOWFH/DF/hD/AKDPxZ/8On4n/wDlhXrNFH1DDf8APuP3IP8AWzPP+gyr/wCDJ/5nk3/DF/hD/oM/Fn/w6fif/wCWFH/DF/hD/oM/Fn/w6fif/wCWFes0UfUMN/z7j9yD/WzPP+gyr/4Mn/meY+GP2RPBvhXxro3iBJfHGpan4enkutOOs+ONb1eC1me3ltmkWC6u5Yt/kzzIGKEgSNjFenUUVtSo06StTikvJWPNx+Z4zHTVTG1ZVJRVk5Scmlduyu3ZXbdu7b6hXkfjD/k/T4bf9iD4s/8ATj4ar1yvI/GH/J+nw2/7EHxZ/wCnHw1Xr5T/AB5f4Kn/AKbkedPb7vzPYK/HyH4Y/AT9sj/gor+05YftreJNP/tzwL4lhsvAPhrxX4vn8P6ZpnhxrZWt76wiWeBJHmZnMkylmVgOULc/sHXnXxu/ZA+Ev7TN9ZXPxI+F3w6+INzpyGK0l8S+G7PVntUJJKxtPG5UZJOBjrXmFnyV/wAG9vjbWvFH7N3xS02LxJr/AI0+FfhP4n61oXwv8Q6zcNdXGqeHYDEISlw3zXECSmZElPUKVGAgVfpv9pX/AJLH+z9/2P11/wCotr9eo+G/DWneDdAtNK0jT7LStL0+JYLWzs4Fgt7aNRhURFAVVA6ADAry79pX/ksf7P3/AGP11/6i2v16eU/x5f4Kn/puRE9vu/M9booorzCwrwD4c/8AKUz4yf8AZKvAf/p38ZV7/XgHw5/5SmfGT/slXgP/ANO/jKgD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK89/at/Zh8I/tn/s6+Lfhf46sW1Dwt4ysTZXsaECSIhleKaMkECWKVI5UJBAeNSQcYr0KigD+eEf8GRvi3/he3ln42eG/wDhWf2jf9p/suf+3PJ3f6vyP9Ru28b/ADcZ52dq/d39lX9mTwn+xp+zv4S+GHgayaw8LeDbBbGyjcgySnJeSaQgAGWWVnkcgAF5GOBnFeg185f8FX/207r9gf8A4J9/Ff4paNb22peIfBujxS2No/ziO4u7lLO2mkQcmJZZN5HG4ROMjkgA9n+M/wAH/D37QXwl8R+B/FunR6t4a8V6dNpepWjkr50EqFHAYcq2DkMCCpAIIIFfgP8AEL/gyO8XS/HGRPCvxq8NRfDea5LJcapps7a3ZwE52GGPEMzqON3mxhsZ2pnA/IPxh+358bPHfx1k+JmpfFTx3L47e5N2msx6zPFc277twERRgIkXoqIAqgAAAACv6x/+CAX7fnib/go7/wAE1fCvjvxqqyeMNNvLnw/rF6kIhj1Sa2K4uQgG0F43j37fl8wPgKMKoB7h+wT+w74J/wCCdX7L3h34VeAbeZdF0JXkmurnabrVLqRt01zOwADSO3thVVVGFUCvY6KKACiiigAooooAKKKKAPAP2yP+Tif2T/8Asqt9/wCoR4rr3+vAP2yP+Tif2T/+yq33/qEeK69/oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA8A/wCCsH/KLP8AaV/7JV4o/wDTRdV7/XgH/BWD/lFn+0r/ANkq8Uf+mi6r3+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+bm8Pyftz/F7x9p2s6x4i074Y/DrV18MxaRo2qz6U3iXUktobm6ubm5tmS4NvEbmO3S3WREaSC5aUSq0QTI+NfwS07/AIJ+fCrXfir8MZvEWmab4HtH1rxJ4Wl1m81HS9c0qAeZeCK3uJJBb3aQLLJFJb+WZJEVJfMRsDbutRvv2JPjB471q58O+KPEXwz+I2qR+IpLvw7pM+sXvhnVDbQ2tzHLZWyvcyWswtoZlkgilKSyXPmBEKNWP8Y/ivH/AMFCPhlrHwt8BaH41Xw54zt20nxV4n1rw1qGgWOnaTN8l5FbG9hhkurqaAywx+QrxxM5eVl2COQA+ore4jvLdJYnSWKVQ6OjbldTyCCOoNPrzD4y/tkfCv8AZz1220Xxd410HRNYngE8OleYZr4w5wJPs8QaUR5BG/bt4PPFdZ8Kvi/4V+Ofgu38R+DPEWjeKdBu2ZIr/S7xLqBnQ7XTchIDKwIZTypBBAIoA6Ovnz4hNf8A7Vf7SPiL4arreu+H/AfgHTLK58SHRb+TT77xDfXvmPDY/aois9vbwwRCWTyXSSVrqFd6okqS/QdeAfEfT9X/AGY/2jNc+J+n+H9d8U+DfG+l2dl4ps9Ds2vtT0e7sjItvqENpHmW6jkhmaKZIVkmX7PbFI3BkKAGf4r/AGHbT4F+Gr7xL8ELnX/DHjTSYGu7fTZdfvr3R/ErIN/2O9triWWP99jZ9pjVbiMkMrkbkf2X4GfF3TP2gPgp4Q8d6KJRo/jTRbPXbES43rBdQJNGGxxuCuM++a8Z8Wftj3H7Qfhm+8LfBnQfHd14p1eFrP8At3W/B2q6Do/hcSDY15PLfwW/nyRA7ha25eZnCBhEjNKntfwZ+FWlfAn4P+FPBGgrKmh+DdHs9D05ZSC621rAkEQYgAE7EXOAPpQB0tFFFAHgHxG/5SmfBv8A7JV48/8ATv4Nr3+vAPiN/wApTPg3/wBkq8ef+nfwbXv9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeR+MP8Ak/T4bf8AYg+LP/Tj4ar1yvI/GH/J+nw2/wCxB8Wf+nHw1Xp5T/Hl/gqf+m5ET2+78zsfj3428U/Dn4Ra3rXgrwVP8RfFFhEr2HhyDVbfS5NUcyKpQXNwRDHhSzZc4OzHUivy+/4J/wD7cv7Z2l/Eb9oVr/8AZU+JXxDS6+JV7PaWer/FDSrWPwjCYoQNMtTeS7JbdCCwktf3BLsF5Br9cK/Mn4Ux/tR/sL/to/tJXfgP9kjVviH8NPip4y/4SnS70fEjQdOnN2YUgupws8+/yZzEkqRuiPFllO4YI8ws+i/+CUvgb48aF4M+KviX4+R6jomtfEH4gah4h8P+FLzxGuvt4O0iSOBILFblHaIKCjkRwkRruyAC7KPTP2lf+Sx/s/f9j9df+otr9TfsifGb4m/GvwTqV/8AFH4NX3wV1e1vvs9ppV14n0/X2voPLRvtAls2ZEG5mTYx3fJnoRUP7Sv/ACWP9n7/ALH66/8AUW1+vTyn+PL/AAVP/TciJ7fd+Z63RRRXmFhXgHw5/wCUpnxk/wCyVeA//Tv4yr3+vAPhz/ylM+Mn/ZKvAf8A6d/GVAHv9FFFABRRRQAUUUUAFFFFABWZ4y16Twt4S1PUordLuTT7WS4WF7hbdZNilsGRvlQcfePArTr41/4L+ftJ3n7M3/BKT4p3mj+Y/ibxjZx+C9Dhi/1091qcgtCIu/mLDJNIuOcx0Ael/wDBMr9utP8AgpL+yJofxgtPCOoeDNI8S3V3FpllfXa3M80FvO9uZmKqoXdLHKAozwoOecD3+vyZ/wCCc37NPi/9lL/gqr8P/g/4K8aeMtY8E/Bv4J2Vr8VIZdcubrQP7euWc2kENo7+RazFf36iKNSYyzvueWR5P1moAKKKKACiiigD5a/4LPft0ar/AME6P+CcvxB+KHh6zivfE2nQw2GirMuYYbu5mSBJnGCCsQdpNpGHMYQkbsj+Tu0/4K9/tPWXxrHxCT46fEs+KBd/a/PfXZ3gP7zzPJNuWMJgzx5BTytvy7dvFf2K/ts/sh+FP28v2WvGPwm8apcHw/4xsvs0s1u22ezlR1lguIz/AH4pUjcA5U7MMCpIP4CWf/Bk78am+NP2Cf4r/DVfh/8AayDrMcd4dUNruIDfYjEI/Oxg7PtGz/poaAP2O/4JV/8ABUzw9+2X/wAE+vhr8SvH2veFPB/izxBZTQ6pZ3mpw2izXNtcSW0k8SyFf3cpi8wBchN5TJKmua+J/iT4IftM/tl/G7wZ408Y+BdS8FeNvg94b0S9Da9arHMDqfiTeI5N+BLGHjcEfMhMbccV7j+zX/wTh+EH7Mf7O3gr4baX4K8P6zpHgfTBptpdazptve3c+ZHmlld3Q/NJPLNKwXChpW2qBxXnvg79mX4by/8ABTf4jWLfD7wQ1lD8MPCs8dudCtTFHI+q+I1dwuzAZgiAnGSEXPQUAfjlaf8ABnLd/FL433kXw9/aR+G2v/Di3uVaa7iRrzWtPgcsVV7eFjC74UgMZow+0nC9B+9n7EH7Gng39gH9mHwt8KfAlvPHoHhi3KCe5YPc387sXmuJmAAMkjszHAAGQqgKoA7bwP8ACLwn8MZbh/DXhfw94ee8CrO2mabDaGcLnaGMajdjJxnpk10VABRRRQAUUUUAFFFfLXxu/wCCtnw7+DnjzxHolnofjjxzH4H1zSvDnirUfDOmJe2mgX+pSiK3tXJkV5ZlLI0qwq/lKwDESFI3APqWiiigDwD9sj/k4n9k/wD7Krff+oR4rr3+vAP2yP8Ak4n9k/8A7Krff+oR4rr3+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDwD/grB/yiz/aV/wCyVeKP/TRdV7/XgH/BWD/lFn+0r/2SrxR/6aLqvf6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKiu76GwVDPNFCJHWJDI4Xc7HCqM9STwB3oAlopsciyrlSGGSMg55BwR+dOoAK5j42+Obn4YfBnxd4lsrNtRvPD2i3mpwWijJupIYHkWMD1YqB+NcX8Xv2ldU0Dx9L4J+H3g6b4g+N7a1ivr+3bUU0vStCglLiF728ZZCjSeXJsihhmlO3cY1j+esPRv2m/GfgrxBpuk/Gj4caP4MsPEd3FpVjrnh/xK3iPQjdTsI4bW5kmtLOeB5nZY42a3MTSMIzIHeNZADX/Ya+GOmeAv2cPDOpwSWuqa/wCMtOtvEHiLX1RfP8R6hcwrLNdyOACwLORGv3Y4xHGgVEVRwH7Tni/w3+yB+1h8N/H7Xum+GNN+I91f+HfGsjFYYL6K30m7v7S/nA+9PBJZLao/LsL8R/N+7C6uh/C74yfsr6XF4b+F9h8P/H/gG0zHo2leKNfu/D9/4agJOyzS6gs71Lm1iBCxhoo5IokClpiBXlnxP+DHi3xD+3J+zr4u+M1/oN5nV9UtdL0XRRK2h6Hepp0txaoXmCtdTyNBJN58iR7HsrZYokYPJIAevf8ADfIj/wCJjN8GvjtbeD/vHxJL4ZjEKx9TI2nic6qqhfmO6yBx2zxXtfgvxrpHxH8Jadr2ganY6zour26XVlfWUyzW91Ewyro6khlI7itSvAP2JP8AQfiV+0Jpmm8eEtL+JMi6Mi8QwSzaPpdzqKQgcbP7RnvHbH/LeS4BA20Ae/15F8Vf2w9J8B+N7rwr4d8L+NPid4u05Ua/0fwlZwTNpZkUPEt1c3M0FnbO6srKk06OyEOF2fNXrteAf8Exf9L/AGN/D+o3fzeJtXvtTvPFLtzKdba/uF1BHJ+YmO4WSFd3KpCi4UKFAB1/wW/at0T4v+J5/Dl3ovinwN4xt7Zr1vD3iiwWzvprZWVGngZHkguYlZ1V2glkCF0D7d6bvUK8A/b8/wCJfZfCLUtN+Xxda/E/w/b6IycSvFPdCHVEBHJX+yG1F2HIxFk4C7h7/QB4B8Rv+Upnwb/7JV48/wDTv4Nr3+vAPiN/ylM+Df8A2Srx5/6d/Bte/wBABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeR+MP+T9Pht/2IPiz/04+Gq9cryPxh/yfp8Nv+xB8Wf+nHw1Xp5T/Hl/gqf+m5ET2+78z2Cvws/aS/aF+MPx8/4KWXEWv/Hv4t/Cb4VH48XfwYksvCWsQ6PDpsCaRHcWM6yPCyma4uN7M0u/5ThBwMfunX5nfHH4veKP+CgfxY+Ofwl+En7MPwU+IHgDwH4li0rxrqnxA1Q6bF4i16OJGfyYbe2kdpIFEa+fIwblcYA58ws7/wD4INeO9c8Q+Afj74b8Q/Ejx38Vr74b/F3WfCUPiHxHrCamt3aWywG38h1RRHiJ182PLDzQ7AhXCL9J/tK/8lj/AGfv+x+uv/UW1+vLP+COPxu8B/FD9l3VfDfgv4W2nwS1D4WeJb/wh4p8D2oRoND1eBlefy5kVRcRyeYrrPgF9xz0r1P9pX/ksf7P3/Y/XX/qLa/Xp5T/AB5f4Kn/AKbkRPb7vzPW6KKK8wsK8A+HP/KUz4yf9kq8B/8Ap38ZV7/XgHw5/wCUpnxk/wCyVeA//Tv4yoA9/ooooAKKKKACiiigAooooAK4345fs9eCP2lvB8Gg+PfDGk+KdKtL2LUraC+h3/Y7uLPlXELcNFMm5tsiEMu44PJrsqKAPIvjX4t8J/sA/sofEnx9pnhy2i07wjpGo+LL6ztMRT61dRQNKxkmILPPMyKpmk3MSQWJxX8knx2/4L0/ta/Hb4z3vjOX44/ELwxJPcGa30jw3rVzpWkWSA/JEtrC4jZVGBmQOzYyzMSSf7FfjB8KtE+O3wm8T+CfEtq174d8YaTdaJqlushjM9rcwtDKoZcFSUdgCDkdRX81/wAdP+DNH9obw78aLrT/AAB4k8BeJPBM9w32HV9R1CSwuLeE/d+0QeW5DjkHyzIDjPfAAP17/wCDdX/gqD4l/wCCov7CDa/47jtT498Fas/h7Wby2jWKPWNsUcsV55agLG7rIVdF+XfEzKFVgi/fFfK//BHj/gmFov8AwSd/Y4sfhvYap/wkGt317JrXiHVgjRx31/KiI3lISSkSRxRoozzsLkAuQOn/AOCi37P3xG+OfwRlb4VeOvEPgzxnooe5tYdP1BrSDWlxzbyMpBVzj5HyAG4b5W3LM5OMbpXOTHYipQw8q1KDm4q/Kt36X6n0DRX5O/8ABHjUfjDa/Enxp8RPiFa/Fbx7aeHJZPC8tpNqr3d3pV7lHndrS4mVpCi7UIj3OvmNhD2/S34ZftEeDPjBf3NjoOu282rWQzdaVdRSWOqWY6Zls51SeMZ4+dByCOxrKhXVSPM1Y8jIOIqeZYeNeUfZuTdoy3aXVbX+V7Ha0UUVufRBXgv/AAUr/a6sf+Ce37EnxM+Nb6Tb6lf+EtIj+zxMuPtlxJOtvaRSMMN5X2i5XIB4Dvjk171XnP7XH7MXhr9s/wDZp8Z/C3xfHM/h7xtpkmnXTwkCW3Jw0c0ecjfHIqSLkEbkGQRkUAfyCeK/+C737Xfiz41t47f4+/Eiy1L7Wt2mn2Wry2+ixlSCqf2cpFqY+MFWiIbndnJr+on/AIIhf8FEr7/gp3/wT28L/EnW7S3svFUNxPoevpbLtgkvbYqGljH8KyI8cm3+EuQOACfw48Vf8GZ/7Sun/GeTRtI8TfDfUvB7XJEPiObUJbci33Ha0lr5bSLJtxlFLqG4DkfNX9BH/BNb9grw5/wTU/Y78KfCTw3dy6pFoUbzahqcsQik1a9lbfPcFASEDMcKmTtRUBZiCxAPd6KKKAOU+PHxe079n34HeM/HusJLJpPgjQr7X71IseY8FrbvPIFzxnbGcV/IF+1P/wAF/f2q/wBpn456h4wh+Mnj/wAC2clwzafoXhfXLjSdN0+DeWjiMUDqsxUEAvKGZsfMTX9ifjnwVpfxK8E6x4c1yzj1DRdfsZtN1C1kJ2XNvNG0csZxg4ZGYcetfzXftP8A/Bmn8dvDfx0v7b4VeIvBfib4f3t0z6de6vqLWN9p8DHhLqMRkMyZI3RbgwXdtUnYAD9Tf+Da7/gq/wCKf+Con7H2tt8QmguviD8ONSj0vVNRhiSFdXgmjMlvcNGgCpIdkqMFAU+WGH3iBrf8ElP2Rv2gP2E7rx58Pde8M+CJ/D3iL4jar41vfiC2utc3GvW920Z8tdPWNXS6YRqpeSURxjLASlQr+hf8EU/+CTulf8Ejf2TD4LXVovEni7xDe/2t4l1eKIxQ3FyUCJDCp+byYkG1S3zMS7ELuCL9g0AFFFFAHgH7ZH/JxP7J/wD2VW+/9QjxXXv9eAftkf8AJxP7J/8A2VW+/wDUI8V17/QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB4B/wVg/5RZ/tK/8AZKvFH/pouq9/rwD/AIKwf8os/wBpX/slXij/ANNF1Xv9ABRRRQAUUUUAFFOQZFLigBlFPxRigBlFPxSMPloAbRRRQAUUUUAFFFFADJ5vs8DuQxCKWIVSzHHoByTXwl/wSi8CeH/+Chv7KkP7Qnxc0HQfHvij4w3eo3Vvaa1axanZ+FdIS8uLa20i0jlDJCiRR5m2qGllkkMhYgY+8K8O+HP/AAT2+H3wj1G+i8NyeK9H8K3+oXGrSeEbbX7pPDy3NxI0twy2gbCxSyO7PbA/Z2LsfK5OQDS+Dfiz4Wfs33nhL4C+H9YgsNS0XSxZaTpU5kaSdIIRIyecV8t7jyj5zJu8zaxfbt5r1+vnvxn4k1Hxr+174T025+FPxAk0TwJqUt7pGvxxWEejG+uLOW3lvXc3QnCR291dwhfIO952OOEavoSgDwD9jD/invi18fdC1X934rPjx9duRJxJe6dd2NqmnXKjqYRDbG1DDjzLCdeqECT/AIKgPFd/sB/FPSFRp9Z8UaBcaB4etom2z3Ws3im306OE4JEv2uSAqwHyld3RSa7b44fsueE/j5e2Go6pHq2leI9IR4tO8Q6DqU+k6xYxuQXiS5gZXMLkAtC5aJiqlkJUEc34N/ZO8GfAzV38eeItf8YeMtX8N209zDrPjDXJtU/sSLy2E0ttCcQWzmLcryQxLIyZUsRxQB7JZpLHZxLO6yTKgEjqu1XbHJAycDPbNc/8W/hJoXxw8CXXh3xFay3OnXLxTq0FxJbXFrPFIssNxBNGyyQzRSIjpIjBkZFIIIrwz4e/Dvx1+2f4I0vx94j+Ivjf4eaF4lt01LQfC3hOS3097KwlHmW739y8cs0140RRnWN44Yy3lhJChmk3/AHi3xX+zr8cfD3w58Z+KLzx1oPjiG6/4RXxDqNrBBqsN5bRmebTr026RwzFrcSSwypFGdlrMsgZgskgBD/wy/8AF6X/AIlM37RPiJvDH3DJH4W02PxE8fTYb8L5AJXjetoJMkkMDgj1/wCFvwv0P4L+AdO8M+HLL7Bo+loywxGV5pHZ3aSSSSRyzyyySO7vI7M7u7MxLMSegooAK8W8e/sp63a+ONV8T/DD4g6j8N9V8Qzi71mxfTIdX0TV7kIqC5ktJSrxTFEVWe3mh8wAGQOwVh7TRQB5J8JP2YLzw347g8ZeO/GerfEjxnZQSW2nXd1aQ2Gn6HFLgSrZ2cI2I0gUBppWlmK5QSBCUr1uiigDwD4jf8pTPg3/ANkq8ef+nfwbXv8AXgHxG/5SmfBv/slXjz/07+Da9/oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAryPxh/wAn6fDb/sQfFn/px8NV65XkfjD/AJP0+G3/AGIPiz/04+Gq9PKf48v8FT/03Iie33fmewV+f8f/AATX/aa+FH7V3xn+IXwn+P3w68H6N8Ydci1q60O++Hz6hHayQxeRHIG+1oPOaJUErqFEjIGKg5J/QCvGf2T/ANtXQf2ufGHxb0bRdK1fTZ/g/wCM7nwTqb3wj2Xt1BHHI0sOxmPlkSLjdhsg8V5hZ8rfsd/8Eyf2p/2R/H3ibUbT9of4Z6lp3xC8czeOPGETfDh1u9VnuXi+0RxTG8Pkr5UQSMBSI+uCc5+sP2lf+Sx/s/f9j9df+otr9V/2Rv23PDX7Y/iD4saf4dsdTtJPhF43vPAupyXXlmO8urZIneWFkZsxnzduGwwKnIHFWP2lf+Sx/s/f9j9df+otr9enlP8AHl/gqf8ApuRE9vu/M9booorzCwrwD4c/8pTPjJ/2SrwH/wCnfxlXv9eAfDn/AJSmfGT/ALJV4D/9O/jKgD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigCCz0y30+S4eC3hge7l86do4wpmk2hd7Y6ttVRk84UDtXP/En4L+FPjBaQxeJtA0zWDatvtpp4R9os2/vwyjEkTf7SMD7109FKyaszOdKE48k0muz2PI5Pgx49+G7mTwN49m1GxTlND8ZI+qRYxgJHfhhdp2+eZrk9flOcgk/aml+HoZPiT4P13wWIgN+q2qPrWhMfUXcCb4l6/NdQwDp3IB9coqeS3ws5PqUqf8Au03HyfvR+56r0i0jN8J+MdJ8e6Bb6roWqadrWl3a7oLywuUubeYeqyISrD6GtKvNvFX7KfhHXNZudY0mG/8ABfiK65k1fwzdHTbmZuzTIn7m5x6XEcq9OMgYzB/wuD4VsP8AkA/FXSVyTgLoWuRrjjH3rS5ckH/n0XkenJzNboPrNan/AB6eneOv4fF8kpep65RXmnhX9rLwdrviC20TVLm+8G+JLohIdI8TWj6Xc3DH+GBpP3Vz0628kg4POQQPS6pST2OmjiKVZXpST9Onr2fkFFFFM2CiiigD5R8Ef8FRvDt9/wAFDfGPwK15bfTGs7i3tfDupF9qX9ybeNprSTJwJPMZhGf4iCuA20N9XV+YXxV/4Ir6TdftX6H4s+IfjzWdXh+KPi2/F2mkQrp7abcyQXN7bIsshlLJ/o7RZ2qctGFx1r9M9D0saHotnZCe6uhZwJAJrmUyzTbVC7nc8sxxkk9SSa5sPKq+ZVF1PleGcVmtV4iGZwUeWb5dVflfvJNLTRNWd/J6otUUUV0n1R4B+2R/ycT+yf8A9lVvv/UI8V17/XgH7ZH/ACcT+yf/ANlVvv8A1CPFde/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAeAf8FYP+UWf7Sv/AGSrxR/6aLqvf68A/wCCsH/KLP8AaV/7JV4o/wDTRdV7/QAUUUUAFFFFADk6U6mp0p1ABRRRQAUj/dpaR/u0AMooooAKKKKACiiigAooooAKKyPHnj/Q/hb4P1DxD4l1fTdB0LSojPeahf3C29taoONzuxCgZIHJ6kDvXknhz/goz8KvEGv2VhPfeMPDianOltY6j4m8D654f0q9lchUSO+vrSG2ZnYhUUSZdmUKCWXIB7lXE/tKwaJc/s5+P4/E0kkXhuTw3qK6tJGBvS0NrIJiM4GRHu6mu2rN8YeFLLx34S1TQ9Si8/TtZs5bG7i/56RSoUdfxViKAPzh/Zt8Q/C3WfgV4S/4bL8ZS+HPiKmkwmPTPGuvyeHPDMNqseYH0tRLFZ3P7kRySTF5bpJCwcxbUiTo/h3q+kan+3V8DbfwXr3jTxD8CLfWdRn8NX+szTX1mfE39g6qvkadfXTG6ubQ6c2pO5ZpYUlSNIWP71IfcPh18d9S/ZA+HmjfD74n+DPiNrCeFLWLTNL8U+GPCN/4qs/ENrb4S3nki06Ke5trrYkZlWWFIxLuMbunI3PB2na7+1Z8evCPj7VfDOueDvBHw6F3d+HLPXIPsura1qdzbvaNey2pJa1gitZrmNEl2zSNcuzJGsa+cAfQNfPXj9L39rD9pXxJ8N21rXdC8AfD/TLGfxEmjX8mn3niPUL3zJIrJrqErPBbwW8SSSCF0eY3cSlhGkiS/QteBfErQ/EH7OP7ROs/FDQfDeq+MvC3jPSrSw8WaXpCrLqunXFk0gttQtbclftKtFPJHPGrGXFvbmJJDvQgGd4o/YT0z4JeHL7xF8EJNX8G+NdLge6tbFdZu7jRvELoNxtL20mkkiInI2tcIguELb1kzlW5P9mvwJpv/BTv4MaL8YfiM3iG88L+OIzqXhbwaNVns9L0rTGJW3e5it2jF5czoomdrgyJH5oSNVCs8nWeKP2r9b/aK8OX3hX4S+DPiPY65q8D2cviLxb4O1PwxpnhlXG17ojUYbeW7kjBzHFbI4kcKGkjTdIvPfAi/uf+CZHwx0/4Wa14T+IHiT4ceF99v4S8TeG9BuvEkyaeWLxWV7Z2Mcl2k8G5olkjgaGSKONt6OWjABqeKPAsP/BP/wAT+D9Z8I6jr4+HHiTxHp/hbXvDmo6rPqVrp02o3CWdjfWb3LSS25F5LbQvAjiBknLBBIgLfTdfN2p6pqv7dni/wlDbeFPFfhb4X+E9dtPE19qHibSptGv/ABDeWUgnsba3sLhVuY4kuVhuJJbiKM5gRI1Yu7xfSNAHgHxG/wCUpnwb/wCyVePP/Tv4Nr3+vAPiN/ylM+Df/ZKvHn/p38G17/QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXkfjD/k/T4bf9iD4s/wDTj4ar1yvI/GH/ACfp8Nv+xB8Wf+nHw1Xp5T/Hl/gqf+m5ET2+78zsfj38BPCP7T/wi1vwH480SDxH4R8RxLBqWmzySRx3SLIsigtGysMOingjpX4z+IP+Cd37Gfwn/aW+KHw8+GH7I3xU/af1zw1qy3vih7LU47fSPAzTxB00q1uJJ7bzWVV3+UfNkG8gykgqv7j1+ftt+zT+0t+wP+1F8Z/EXwN8JfDf4seAfjf4gHjKbT/EHiOXQNT8Oas8SxXS7xDKlxbyeXGyfdZTlccbm8ws9Y/4I7eM/gH4w/ZBx+z14Mb4c+GtL1u70/XvC13YtZ6poOtR7Fura/RmdvtKjygSzv8AJ5YBwAB6X+0r/wAlj/Z+/wCx+uv/AFFtfrzz/glh+xR4s/ZB+G/xA1f4i6xo2sfEz4yeNb/x74oXRVcaVplzdCNVsrQuA7xRRxKN7gMxLZzgGvQ/2lf+Sx/s/f8AY/XX/qLa/Xp5T/Hl/gqf+m5ET2+78z1uiiivMLCvAPhz/wApTPjJ/wBkq8B/+nfxlXv9eAfDn/lKZ8ZP+yVeA/8A07+MqAPf6KKKACsfSvHuk634y1fw/a3Xm6voMVvPf2/lOPIS4EhhO4ja27yn+6TjbzjIp/jbw/d+KvC13p9jrmq+Gru5ULHqemx20l1aEMDlFuYpoSSAR88bDBOADgj5k+G/7M/jYftU/E8n44fFy3Q6boe2+GmeG83vy3mVJbSCnyf7Cg/P82eMAH1F4m8S6f4L8N6hrGrXlvp+l6TbSXl5dTuEitoY1LySOx4CqoJJ7AV8n/su/ti/Gj9vz4XR/FH4Z+GvAPhD4ZavPc/8IuvjBr2bWPE1rE7xJdyJAUSwjlkQlAftD+WAxX5gK92/a++C15+0X+yL8T/h5Y3v2PUPHHhHVPD1vdu5QQy3VnLAkjFRwAzgnA9eK+Sf+CO37anw8+DP/BP/AMFfCz4oeKPDPwo+JnwX0pfDPizw14q1ODSL3T3tSY0ugs7J5ltPH5cqTpujbzMBiQQADotB/wCCj3xX060/Z3i8afDfw/4S1z4t/EfWvAXiLSmvbid9CNlNqnlS28hRFuEkhsInEuArecGVcEAfYr+P9Cj097tta0lbWOb7O0xvI/LWTGdhbON2Ocda+Gf+Ckfx18LeKfj/APsPazHqsNjp+ofFx5rVtSBsXuIf7J1KFJ1SXa/lO7xhHIw4kjIyHXPyx+3V8WvC3wz/AGWv+Cm3w01rWtM0zx74i8V/2/pPh6SUf2jqtjdaPowjuoIB88sW6GXe6Aqmxi5XBoA/YrxR8SPD3gi70+DWte0XSJ9WkMVjHe30Vu964GSsQdgXOOy5rlfCf7V3w+8d/tB+KPhbo/ifTNQ8ceC7O0vda02GUM+nrdecYUc9PNKwO5jHzKhRmADqT8C/t3eNz4N+IXjH4teAdb8KeP7XTfh1oum/EP4WeIwqf8JZoQ+1XVpcaJdrmSO9DXM4WMKySvs4EgjLV/ifrd9pv/BQr9tiw8IrbaN8Y/HHwM0PUfh9p8vlxavd362WtRk2y53NMkzRBimQDjccAmgD9LPDnxI8PeMNc1TTNJ17RdU1LRJBFqNpZ3sU8+nuc4WZFYtGTg8MB0o0j4jeHvEGtLpthrujXuovDLcra297HJM0UUxglkCBi21JgY2OMK4KnB4r87/2A5f2bv2kr/4NeNvDnxB1jXPGfw/8GXXh/VvCKLptqPDunz2qx39lr9tHaxSLbxTR/L9qfBmQshkLNnY/4Nw/g58Ln/4J++DfG3h/w/4Ol8Z2WpeK9Hl1myt4Hv7a0k8R3zpa+auWSExR2zrHkLjawHzEkA++PG3xH8PfDTT4bvxHr2jaBa3My20M2pXsdrHLK33Y1aRgCx7Acmjxn8SPD3w50OPU/EOvaLoOmyyJEl3qN7FawO7/AHVDuwUk9hnmvhr45fGz4dfBD/gq/wCOI/2jr3RtE8G+Mvhxpul/DrU/EoRNCdFnvf7csUmkHlpdytJYsyEh5Y44gMhFFecfEnVfhj+yl+2t8O/CvjTxBqPwh/Z41D4MR+Gvh5qXiA28mlRXC30/26wuLjVorjyZZ7H7AwEzIxihCMQwMdAH6Z6x4z0fw61qNQ1XTbE3yyNbC4uki+0COMyyFNxG4LGrOcdFUk8CuE+LP7Znwv8Agp8LtI8Z6/428PQ+HPEOpWuj6RewXsc8erXlxMIYobcoSJWLk525CqjsxCoxH50+I/gT8F/hT+2j/wAE7PAmnSt4h8OWFv4003SLjxs0Fxqmq6X/AGa72SP5iI0lqJX22yugGAm0E4J8i8fax4R079jH9pBbGfw6vg/4b/tk6bqckFoYTZ6FpRv9DaWUKvyxQGV7nJ4XPmjsRQB+0XiH4r+F/CMGmSat4k0DTI9bkEOnPd6hDCt+5wQsJZh5jcjhcnmpvFnxF8P+AoHk13XdG0WOOB7p3v72O2VYUZVaQl2GEUugLdAXX1Ffm7+0N43+EWu/tn/GfwP8cfiHb+A/hz8WvAWkWvgS/caamj+JdEFvcR3tnZXdzbSoLhLqUyrHA6yP9pgdFbCMM7/hQ3wP8Y/8FWPgH4E8RaPpniWwuPgDqmk/YfHUNvNrWtxxXmmR2P8AaEUgDyzm1SeRVmTzFw7FEdGCgH6YXXxN8N2Piq30KbxBocOt3kQnt9Oe/iW6njJ2h1iLb2UngEDGa3K/N/xHE/wb/bIsbnw9L4X+Knwr8a/FyxtL/wAJzRraeKvhp4kgSKxTULF0P+kWCQ26tJE4DRW7Eoxj3pX6QUAZvizwfpHj3QZ9L1zS9O1nTLpds9nf2yXEEw9GRwVI+orzaX9l+58DKH+G3jLW/BIjBC6Xc51nQz6D7LO++FRgfJazQL14ySa9boqXFPc5q2Do1XzTjr3Wj+TVmvvPJF+NHjr4ats8deA59RsVYj+2/Bhk1WLb/flsSou4z1+SFbnp97kCuy+GHxt8JfGexmn8L+INM1r7KQt1DBMPtFkx/gmhOJIm/wBmRVPtXU1xnxI/Z88G/Fq/gvtc0K2l1a0BW21W1kkstUtAevlXkDJPF2+446D0FK0ls7mPssVS/hzU12lo/wDwJL84tvudnRXkT/Dn4o/C8NJ4W8YWXjfT48ldH8YR+Tc4znbHqVsm5QBkZmt52ORl+DmRP2t9K8ISi3+Ieja38Np92w3erxCTRpDzyuowlrZAeoE7xOf7nDAHOl8Wgf2hCGmITp+u3/gSvH5Np+RJ+2np0x/Z11rWrSEz6h4KktvFlqqDMjtp08d40acE7pI4ZIsfxCUrkBjXp9hfw6pYw3NvIs1vcRrLFIpyrqwyCPYg1XSTTvGfh7KtZ6ppWpwEZVlmguonGDyMqysD9CDXnX7GN9Kn7PGi6JdTPPfeCpLnwndSSNmSVtOnks1kY+skcKS57iUHvRtP1/r9RJ8uMutpx/8ASX+vN+B6nRRRVnoHgH7ZH/JxP7J//ZVb7/1CPFde/wBeAftkf8nE/sn/APZVb7/1CPFde/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAeAf8FYP+UWf7Sv8A2SrxR/6aLqvf68A/4Kwf8os/2lf+yVeKP/TRdV7/AEAFFFFABRRRQA5OlOpitgUu+gB1FN30b6AHUj/dpN9DPkUANooooAKKKKACiiigAooooA+ffi3CnxD/AOChnwv8La0izeH9B8J614zsLGYZiv8AVoLvTbOK5I/iNnFeS4B4D30bgb40Zfc/FPhfTfHHhq/0bWbCz1XSdVt3tLyzu4VmguoXUq8bowIZWUkEEYINcb8fPgKnxmttGv8AT9Zu/CnjHwpcve6Br9pDHNJYyPGY5YpInG2e2lQ7ZYWxuwjK0cscUqefzfDj9o7x7E2i6/8AEL4aeGNGmBivNX8JeHbtdauIzwfsou7mWCyk9HdbrGTgA4YAF7/gnZ4iv9a/ZqNle3lzqcPhTxT4k8K6ZfXEhllu9P0zW76wsy7tlpGW3t4o2kYlpGjLknfk+51ifDb4c6N8IfAOkeGPDtjHpuiaFapZ2VshLCONBgZYkszHqWYlmJJJJJNbdABWP4+8f6L8LPBuoeIfEeqWWi6JpMJnu727lEcMCDjJY+pIAHUkgDJIrYrwD9rH/ib/ALTf7O2i6r/yK194m1C8kifmG81W00u4udPikHRthS4uUz0lsomA3KCAA/4b6W3/AOJjefBz456f4O+9/wAJLP4bi+zrH1Mr2K3B1SNAvzEvZLgdRkED2/wr4q0zx14Z0/WtF1Cy1bR9Wt47uyvrOdZ7e7hdQySRupKsjKQQQcEGtCvAP2Ef+JZrfxz0TT/+RS8P/E29tvDyr/q4o5dP0+7vY4x0CJqlzqK4HAKsoAC0Ae/0UUUAFFFFAHgHxG/5SmfBv/slXjz/ANO/g2vf68A+I3/KUz4N/wDZKvHn/p38G17/AEAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5H4w/5P0+G3/Yg+LP/Tj4ar1yvI/GH/J+nw2/7EHxZ/6cfDVenlP8eX+Cp/6bkRPb7vzNf9r7wb8N/H/7Nfi7Svi9d2Vh8NbizD6/c3msy6NBBbxyJJue7ilieEBkXlZFz0zg4P5Gz/8ABOr4K/txztpv7Jn7POvT+GHm8if4t+PfHni2w8MonG+TTLP+0Uu9TYAna4EcG5eZGBr9ff2oP2aPCH7YnwG8RfDXx7YTap4R8VQpb6law3Uls8yJKkqgSRkOvzxqeCOlfMUP/Bv3+z3bxKiS/GBEQBVVfihr4CgdAB9rrzCz0P8A4JZf8Ez9D/4Jc/s+XXgnSfFvibxte6xqB1bVdV1mXJmuTGkZEEWWMMIWNcIXc9SXYnNdz+0r/wAlj/Z+/wCx+uv/AFFtfqf9kb9i/wAFfsS+C9S0DwQ/ih9P1a9/tCc654hvdam83y1j+WW6kkdV2oPlBC5ycZJqD9pX/ksf7P3/AGP11/6i2v16eU/x5f4Kn/puRE9vu/M9booorzCwrwD4c/8AKUz4yf8AZKvAf/p38ZV7/XgHw5/5SmfGT/slXgP/ANO/jKgD3+iiigAooooAKztX8IaT4g1Czu7/AEvTr2605/NtJri2SSS1fn5kZgSp5PIx1rRooAKhfT7eS6M7QQmYqqGQoNxVTuAz1wDyPepqKAI5bWO4kiZ40doW3xllBMbYK5HocMwz6E+tILGFb03PkxfaGQRGXYN5QEkLnrgEk49zUtFAEUFnDayStFFHG1w/mSlVAMjYC7m9ThVGT2A9KloooAiubOG9CedFHL5TiRN6htjDowz0I9aLqzhvo1WaKOZVdZFDqGAZSGVhnuCAQexAqWigAplxbx3lu8UqJLFKpR0ddyup4IIPUGn0UARXFnDdtGZYo5TC4kjLqD5bYI3D0OCefc1LRRQBGbWM3Im8tPOClBJtG4KSCRnrjIHHtUlFFABXlXjX4yeOG+OGqeDPBnhDwprX9iaFp2tXl5rXii40n/j8uL+FI40isLndt+wOSxZf9YoAOCa9VryvwZ/yfD8RP+xG8Lf+l/iKonfRI4cbKpzU4Qk480rNq17csn1TW6XQT/hLPjj/ANE8+FP/AIcTUP8A5SUf8JZ8cf8Aonnwp/8ADiah/wDKSvUdV1ODRNLuby5fy7a0iaaV9pOxFBLHA5PAPSvgj/iKN/YU/wCi5f8AlmeIP/kGjlfd/h/kH1Sr/wA/5fdD/wCQPqb/AISz44/9E8+FP/hxNQ/+UlNm8TfG64iZH+HXwndHBVlb4hX5DA9QR/Ylep6VqcGt6XbXls/mW13Es0T7SN6MAVODyOCOtWKOV93+H+QfU6v/AD/l90P/AJA+VNW/Z2+J1leTX/g3wN4A+G+rTSGZ5/DXxKvra1mcncWmsn0N7OYserPCX5bDjcSbn7Pngf8AaQ+Elx4un17Q/g34ln8U6uNW3WvizUNNW2b7NDbsNv8AZcoYuLdHYrsBkaRgo3YH0/RUexSd0zijkcI1FVhVkmu3Klrpeyja/nY8m/4Sz44/9E8+FP8A4cTUP/lJR/wlnxx/6J58Kf8Aw4mof/KSvWaKvlfd/h/kdv1Sr/z/AJfdD/5A+Z/jJ8OPjj8WviL8J9f/AOEQ+FOn/wDCr/FU/ibyP+E71CX+0/N0PVdK8jd/Y6+Vj+0/N34fPkbdvz7l7/8A4Sz44/8ARPPhT/4cTUP/AJSV6zRRyvu/w/yD6pV/5/y+6H/yB5N/wlnxx/6J58Kf/Diah/8AKSj/AISz44/9E8+FP/hxNQ/+Ules0Ucr7v8AD/IPqlX/AJ/y+6H/AMgeTf8ACWfHH/onnwp/8OJqH/yko/4Sz44/9E8+FP8A4cTUP/lJXm/7MX/BVrwf+17+0dq/gPwR8PvjNfaFpMt9bL8RJvCbw+Cb+4s5fJngg1EyfO4kDqP3YDGNsHpn6ho5X3f4f5B9Uq/8/wCX3Q/+QPJv+Es+OP8A0Tz4U/8AhxNQ/wDlJR/wlnxx/wCiefCn/wAOJqH/AMpK9Zoo5X3f4f5B9Uq/8/5fdD/5A8m/4Sz44/8ARPPhT/4cTUP/AJSUf8JZ8cf+iefCn/w4mof/ACkr1mijlfd/h/kH1Sr/AM/5fdD/AOQPJv8AhLPjj/0Tz4U/+HE1D/5SUf8ACWfHH/onnwp/8OJqH/ykr1mijlfd/h/kH1Sr/wA/5fdD/wCQPJv+Es+OP/RPPhT/AOHE1D/5SUf8JZ8cf+iefCn/AMOJqH/ykr1mijlfd/h/kH1Sr/z/AJfdD/5A8m/4Sz44/wDRPPhT/wCHE1D/AOUlH/CWfHH/AKJ58Kf/AA4mof8Aykrovgv+0b4N/aFuvGUPg/WP7Xk+H3iW58Ia+Psk9v8AYNUt44ZJrf8AeovmbUniO+Pch3cMSDjt6OV93+H+QfVKv/P+X3Q/+QPJv+Es+OP/AETz4U/+HE1D/wCUlH/CWfHH/onnwp/8OJqH/wApK9Zoo5X3f4f5B9Uq/wDP+X3Q/wDkDwb4tfHX4x/Bv4VeJvF+p/Df4aT6b4V0m61i7itfiDfNPJDbwvM6xhtGVS5VCACwGcZI617rXln7eH/Jjvxl/wCxF1v/ANN89ep0RupNNkYb2sMTOlObklGLV+XS7lfZLsjwD/grB/yiz/aV/wCyVeKP/TRdV7/XgH/BWD/lFn+0r/2SrxR/6aLqvf6s9EKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArlvjH8HtE+OvgOfw9r8Vy1pJNDdwT2tw9td2FzBIssFzBKhDRzRSojqwPBXnIyD1NFAHgH/AAzt8cbv/iUXX7QUZ8M/cN3beBrWDxRJH0Ia+85rMNj+NNPQgkkY4A9f+Fvwv0T4MeAdO8M+HLP7DpGloywxmV5ZHZ3aSSWSRyXklkkd5Hkcl3d2ZiWYmugooAKKKKACiiigDwD4jf8AKUz4N/8AZKvHn/p38G17/XgHxG/5SmfBv/slXjz/ANO/g2vf6ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKd5dNqSgBvl0eXTqKAG+XR5dOooAjrwD4/fGHwl8Ev21vhjqvjPxT4c8I6XceCPFVpFea1qUNhbyTNf+HHEavKyqXKo5Cg5wjHsa9/orty/Eww9b2lSLkrSTSdn70XHez2vfYmSbVkeS/8ADwT4C/8ARbvhF/4WOnf/AB6j/h4J8Bf+i3fCL/wsdO/+PV61RW3tcu/59T/8GR/+VitPv+H/AATyX/h4J8Bf+i3fCL/wsdO/+PVwnxH/AGovhn8bf2gvgJpXgz4ieBfF2qW/je8u5bPRdftb+4jhXwzrqGRkikZggZ0BYjGXUdxX0rRW1HG4Gi5Sp0p3cZJXmre9Fxvb2ava97XXqJxk93+H/BCiiivGNAr5A8W/tYfCz9l//gqZ8T/+Fl/ErwB8PP7c+FXgn+zf+Em8Q2mk/wBoeVq/i/zfJ+0SJ5mzzY923O3zEzjcK+v6KAPAP+HsH7LP/RyvwA/8OFpH/wAkUf8AD2D9ln/o5X4Af+HC0j/5Ir3+igDwD/h7B+yz/wBHK/AD/wAOFpH/AMkUf8PYP2Wf+jlfgB/4cLSP/kivf6KAPAP+HsH7LP8A0cr8AP8Aw4Wkf/JFH/D2D9ln/o5X4Af+HC0j/wCSK9/ooA8A/wCHsH7LP/RyvwA/8OFpH/yRR/w9g/ZZ/wCjlfgB/wCHC0j/AOSK9/ooA8A/4ewfss/9HK/AD/w4Wkf/ACRR/wAPYP2Wf+jlfgB/4cLSP/kivf6KAPAP+HsH7LP/AEcr8AP/AA4Wkf8AyRR/w9g/ZZ/6OV+AH/hwtI/+SK9/ooA8A/4ewfss/wDRyvwA/wDDhaR/8kUf8PYP2Wf+jlfgB/4cLSP/AJIr3+igDwD/AIewfss/9HK/AD/w4Wkf/JFH/D2D9ln/AKOV+AH/AIcLSP8A5Ir3+igDwD/h7B+yz/0cr8AP/DhaR/8AJFH/AA9g/ZZ/6OV+AH/hwtI/+SK9/ooA8A/4ewfss/8ARyvwA/8ADhaR/wDJFH/D2D9ln/o5X4Af+HC0j/5Ir3+igDwD/h7B+yz/ANHK/AD/AMOFpH/yRUX7MX7QngH9pP8Aa3+Jmu/Drxx4Q8faJa+EPDFhPqHhzWbfVbWG4W9192haWB3USBJI2Kk5AkU4wwr6EryvwZ/yfD8RP+xG8Lf+l/iKoluv66M4cX/Fof4n/wCkTO6+Kf8AyTHxH/2C7n/0U1flV/wRK/4bw/4YV/Z+/wCEb/4ZH/4Ur/Ztl5f9pf8ACQ/8JT/ZPnfvc+X/AKL9q8vzNv8Ayz3bc8Zr9aNf0aLxHoV7p87SLDfwSW8jIQGCupUkZBGcH0rhP2Rv2Y9B/Yx/Zq8G/Czwvd6vf+H/AAPpyaZYXGqyxy3ksakkGVo0jQtyeVRR7VZ3H4sft4fFr4zfFLxJ8avjf+zjqH7b2q+Ffh/da3eP4juPivpOheA9MbTDN9re10aa2aS+s4GjcCHIklEZGQwr6w/au8dfFj9qz4+f8E/9A8N/F7xf8I2+MvgbxLrHiu78MuF+2bdJ0i6IWCTMHmAyzLFJIjmDzWZBur0n4lf8G8nwf+JGqeO4P+Fg/H/QPBHj9r+5vfAejeO5rTwpaXt6HM15DY7Cvm+Y5lCSF4d2AY2T5K9/sP8Agn14M074kfAHxQmp+Jzf/s5+H7/w34aja4g8m+t7yytbOV7weTl5BHaRlTGYgGZyVIIAAOu/ZQ/Zz/4ZT+COm+Cf+E7+I/xJ/s2WeX+3vHWtf2xrd15srSbZbnYm5U3bUG0bVVRzivzN/wCCoet/ED9qf9uTxd4Y+AJ/bV8VeJ/hnBZafr9n8P8A4p6b4C8GaVeTQC5ijaS7t5DcTtGyNJnKjcAOpFfrzXyD+0J/wRc+HH7QH7SWsfExPHXxu+H974tEH/CW6L4I8bXGhaP4xaGIQxvfwxDezCJVTMUkeQuTkkkgHyx8A/2wviz42/4Jf/sXftA+MPF2ux6roPxOTwz8QhHfNDa6xpdzq9/4c82+SErFcNFIbKbcykeYjOoBIrLl/wCCjnxE+B/iP9oH4xa74m12+8AfG7wT4m1v4R6ZPNI9ppF54cnfTbWO1QsVibUoZbe92ooLlXbkivtjwv8A8Ek/hj4T/wCCZl3+ylBfeLpfhvdW19bLeTXkDaxbfatQl1DzEmEIiDxTy5jJiOBGm7cQSbPxq/4JPfCf46fAj4KfDnU4tdsfDnwF1bSdV8NrYXMUUso0+AwJbXLNEwkgmjJWZVCM/ZlNAHxt/wAFALfxfoHwt/Z0/Z70vxR+2F4x+PWk+BP7Z1e3+Fnj630C61eNBZ211qGsaneJKxUXQZYsH70zhvvJVP8A4J2w/tH/ALUn7Cf7WfwO8Y+K/ib4K+Kvw81ZdP8ACN9qfjaLVfE2gTvYQX1pBc61YJCt2plCb3CjMc7xtkDA+2P23v8Agl34M/bf+IHhrxlc+Mvit8L/AB34Ws5dLtvFHw78TPoGrT6fLIskljNKEcPAZFD7duQckEZOdX9hT/gm94D/AOCeknjs+B9S8Z6j/wALD1O31bUz4i1c6pKtxFbJb7lmdfObeE3t5rudzHBVcKAD5S+Ev/BQ3X/+CoHi39knwf4N1fWPC1/fWL/Ev4ujSrySzudLh0mR7E6RKUKsIrrWFdGRtu+G1fIKsyn9Dfix4B/4Wv8ACzxL4W/trxB4a/4SXSrrSv7X0K8+x6rpXnwvF9ptJ8N5VxHu3xvg7XVTg4xXxt/wRg/ZBt/hj4n/AGgfjfdeCNQ8Bav8e/iDqGp2Oj6np81jf2Gj29xNHbmWCcCSF7mZrq7KYUYuY8DCrX3TQB+A/wCz/wDBnxR+yz/wbUfEz46eFvjn8fo/Euo6Xqml2Oly+M5Ro/hs2/i97b7Tp8Mao9tcSJAfMkWQ7jPPwA+B9lftifCb4r/8E3/2ate8Z6Z+0d8V/HXxS+MWveH/AALJqnii5gm8OeEJdQ1CO3l1HTNJjjSK2ZEkbapdhkKWLYOfomb/AIJIfDib/gmfqf7Kp1rxv/wr3VftnnagLy1/tlftOqyapJtl+z+TxPKyjMJ+QAHLfNXtX7TH7NXgv9r/AOBviH4c/EHRYNf8JeJrcW97aSMUPDB0kjdSGjljdVdHUhlZVIORQB8HWfwb+IX/AASk/be/Z+srL9ob4zfGjwj8ctfu/CXiTw/8RtbTWprecWE11FqGnsI0a2jjeHEkY3LskAJPBHjvwx/Zj+L/AO2T4K/a5+IF5+1r+0N4Pi+Gnxb8dWfg7QfDmvfZLLTTp9zI8Mdw7B5bi0A2ItqGjjjVCFHNfaH7JP8AwRe+HX7Kvx50/wCJd746+NHxf8Y+H7KbTvDd98SfFra//wAIpbzDbLHYKY0EQZPkJIZtuQCMnPqvwW/YW8JfAn4b/FfwvpGo+I7iw+MPijXvFusyXlxC81tdawxa5S3KxKFiUn92HDsP4megD8v77SPjb4B/YJ+BP7ZV7+1R8b/EvjrxRqnhG61PwtPcWtl4MuLLVL21gmsjpcMYQlEuGXzyxd9u/bGxG39qa+c/EH/BMbwF4k/YU8D/ALPk+reL18GeAf7E/s+9jurcanN/ZNxDcW/myGAxHc8CB9sS5BbbtOCPoygD8s/2aP2dPir/AMFbrHxx8atV/am+N/wsmtvGuuaD4Q8LeBNUh0/RfD9rp949pEt/bGNvt8r+T5r+Yy58wAYBAHk3/BRr9r34g/E7/goz8SPhFeXf7dJ8FfBvTdCtYP8Ahm3w/E91qOoXmnpey3ep3m7fGpEqpHbgFW8qQ5BBz9jfGD/ggj8J/id8ZPE3i3RvHfx1+GVl46vpNT8V+F/A/jebRvD/AIouZeZpbq2VGO6Tkv5bpkknqc11/wC1b/wR7+Hn7T/xCs/GWneMvi/8HfHNvpkGjXHiT4a+LJNA1HU7OAEQw3LBXSYIGYBmTeAcbsAAAHwv4n/aS/aJ+I3/AATM+Dun3/if43/CHx9d/tKaJ4A0vxN4u8PyaF4n1DRbi6P2S61CxOyG6HlzxrLHueCdrZlYsd4H0R8C/gf8Qf8Agnz/AMFTPhh4Kl+Pvxi+MPgz41eEvEl9qdj8QNYTVG03UdLbTnWez2xoLeNxeFfKUYABzn5SPZ/D/wDwSH+HPh/4J+BPBB8S/EzVIPAnxF034oJq+reIP7S1bWdYsXR4jeTzxvvhbYiukax8KNpQ5J9j8e/sx6D8RP2lfh38U7271eLxB8M9O1nTNLt4JY1s549UFmLgzqULsy/YothV1A3PuDZGAD8vv+CQX7C3/CkviF+0z8Uf+F3/ALSOuf8ACk/jB4osP+EcvPG/maP4z+y6VaP9q1eDyP8AS7yTzvmmyuTDB8vyc/Lvgr9uD9of4q/CbTvjdoS/8FLPEHxs1aJda0yy0fwAk3wevA0nmR2aWUbs01mYz5X2kZlYYfbu4r9g/CX/AASX8F/Dv9tjWPjZ4a8ffGPw5P4m1ObW9e8Fad4pMPg7X76W38iS5u9P8s+a7Lhjl8blU44rzDV/+Deb4Ttr1zD4e+J/7R/gT4f3lxJcTfDrwz8RLjT/AAi3mMzyRraBC8cZZidkcqgdAAOKAOF/aQ8HfEv9tP8A4LHwfDXSvjd8XPgr4CvvgBpvifWNL8K3xs76S4l1y9hIhM6Mtnc48tXuFhE+2BY8qMgfoP8ABX4Zf8KX+Enhzwl/wkHifxZ/wjunw6f/AGz4jv8A7fq+qeWoXz7qfavmzNjLPtGSScVxuh/saeFfDn7YZ+Ndpda3H4m/4QO2+Ha2BnjbTY9OgvZb2Nwpj83z/MlZSxlKlQPkzlj61QB5R+3h/wAmO/GX/sRdb/8ATfPXqdeWft4f8mO/GX/sRdb/APTfPXqdQvjfy/U4af8AvtT/AAw/OZ4B/wAFYP8AlFn+0r/2SrxR/wCmi6o/4ewfss/9HK/AD/w4Wkf/ACRXv9FWdx4B/wAPYP2Wf+jlfgB/4cLSP/kij/h7B+yz/wBHK/AD/wAOFpH/AMkV7/RQB4B/w9g/ZZ/6OV+AH/hwtI/+SKP+HsH7LP8A0cr8AP8Aw4Wkf/JFe/0UAeAf8PYP2Wf+jlfgB/4cLSP/AJIo/wCHsH7LP/RyvwA/8OFpH/yRXv8ARQB4B/w9g/ZZ/wCjlfgB/wCHC0j/AOSKP+HsH7LP/RyvwA/8OFpH/wAkV7/RQB4B/wAPYP2Wf+jlfgB/4cLSP/kij/h7B+yz/wBHK/AD/wAOFpH/AMkV7/RQB4B/w9g/ZZ/6OV+AH/hwtI/+SKP+HsH7LP8A0cr8AP8Aw4Wkf/JFe/0UAeAf8PYP2Wf+jlfgB/4cLSP/AJIo/wCHsH7LP/RyvwA/8OFpH/yRXv8ARQB4B/w9g/ZZ/wCjlfgB/wCHC0j/AOSKP+HsH7LP/RyvwA/8OFpH/wAkV7/RQB4B/wAPYP2Wf+jlfgB/4cLSP/kij/h7B+yz/wBHK/AD/wAOFpH/AMkV7/RQB4B/w9g/ZZ/6OV+AH/hwtI/+SKP+HsH7LP8A0cr8AP8Aw4Wkf/JFe/0UAeAf8PYP2Wf+jlfgB/4cLSP/AJIo/wCHsH7LP/RyvwA/8OFpH/yRXv8ARQB4B/w9g/ZZ/wCjlfgB/wCHC0j/AOSKP+HsH7LP/RyvwA/8OFpH/wAkV7/RQB4B/wAPYP2Wf+jlfgB/4cLSP/kij/h7B+yz/wBHK/AD/wAOFpH/AMkV7/RQB4B/w9g/ZZ/6OV+AH/hwtI/+SKP+HsH7LP8A0cr8AP8Aw4Wkf/JFe/0UAeAf8PYP2Wf+jlfgB/4cLSP/AJIo/wCHsH7LP/RyvwA/8OFpH/yRXv8ARQB8geEv2sPhZ+1B/wAFTPhh/wAK0+JXgD4h/wBh/Crxt/aX/CM+IbTVv7P83V/CHled9nkfy9/lSbd2N3lvjO019f0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVJUdSUAFFFFABRRRQBHRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbXivii+8V/DH9qnxL4ksPh14r8Z6L4g8KaJpsNxot5pUf2e4tLzV5JUkW8vLdvuXsBBUMDluQRXtmyjZUyjc5sThvbcvvOLi7pq3Zrqmtm+h5T/AMNF+Lv+iEfFb/wYeGv/AJb0f8NF+Lv+iEfFb/wYeGv/AJb16tso2UuV93+H+Rl9Uq/8/wCX3Q/+QPKf+Gi/F3/RCPit/wCDDw1/8t6P+Gi/F3/RCPit/wCDDw1/8t69W2UbKOV93+H+QfVKv/P+X3Q/+QPKf+Gi/F3/AEQj4rf+DDw1/wDLej/hovxd/wBEI+K3/gw8Nf8Ay3r1bZRso5X3f4f5B9Uq/wDP+X3Q/wDkDyn/AIaL8Xf9EI+K3/gw8Nf/AC3o/wCGi/F3/RCPit/4MPDX/wAt69W2UbKOV93+H+QfVKv/AD/l90P/AJA8p/4aL8Xf9EI+K3/gw8Nf/Lej/hovxd/0Qj4rf+DDw1/8t69W2UbKOV93+H+QfVKv/P8Al90P/kDyn/hovxd/0Qj4rf8Agw8Nf/Lej/hovxd/0Qj4rf8Agw8Nf/LevVtlGyjlfd/h/kH1Sr/z/l90P/kDyn/hovxd/wBEI+K3/gw8Nf8Ay3o/4aL8Xf8ARCPit/4MPDX/AMt69W2UbKOV93+H+QfVKv8Az/l90P8A5A8p/wCGi/F3/RCPit/4MPDX/wAt6P8Ahovxd/0Qj4rf+DDw1/8ALevVtlGyjlfd/h/kH1Sr/wA/5fdD/wCQPKf+Gi/F3/RCPit/4MPDX/y3o/4aL8Xf9EI+K3/gw8Nf/LevVtlGyjlfd/h/kH1Sr/z/AJfdD/5A8p/4aL8Xf9EI+K3/AIMPDX/y3o/4aL8Xf9EI+K3/AIMPDX/y3r1bZRso5X3f4f5B9Uq/8/5fdD/5A8p/4aL8Xf8ARCPit/4MPDX/AMt6P+Gi/F3/AEQj4rf+DDw1/wDLevVtlGyjlfd/h/kH1Sr/AM/5fdD/AOQPKf8Ahovxd/0Qj4rf+DDw1/8ALej/AIaL8Xf9EI+K3/gw8Nf/AC3r1bZRso5X3f4f5B9Uq/8AP+X3Q/8AkDyn/hovxd/0Qj4rf+DDw1/8t6P+Gi/F3/RCPit/4MPDX/y3r1bZRso5X3f4f5B9Uq/8/wCX3Q/+QPnP9pb4hePPjJ+zl4/8IaZ8DfiXBqXirw3qOj2kt1qXhtYI5ri1khRpCuqswQM4JIUnGcA9K+iqdso2U4xs73Lw+EdOpKrKbk2ktbdL9ku7G0U7ZRsqjrG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG0U7ZRsoAbRTtlGygBtFO2UbKAG1JTdlOoAKKKKACiiigD//2Q=="
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"In this exercise **you should implement the second approach**."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prepare the dataset\n",
"We will prepare the creditcard dataset the same way as in the previous exercise."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X_train: (170589, 18)\n",
"X_test: (57109, 18)\n",
"X_val: (57109, 18)\n",
"Number of anomalies y_test: 231\n",
"Number of anomalies y_val: 261\n"
]
}
],
"source": [
"df = pd.read_csv('creditcard.csv')\n",
"features_to_drop = ['Time', 'V8', 'V13', 'V15', 'V20', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28']\n",
"df.drop(columns=features_to_drop, inplace=True)\n",
"\n",
"genuine = df[df.Class == 0]\n",
"anomalies = df[df.Class == 1]\n",
"\n",
"genuine_X = genuine.drop(columns=[\"Class\"]).values\n",
"genuine_y = genuine.Class.values\n",
"\n",
"anomalies_X = anomalies.drop(columns=[\"Class\"]).values\n",
"anomalies_y = anomalies.Class.values\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(genuine_X, genuine_y, test_size=0.4, random_state=42)\n",
"\n",
"X_test = np.concatenate([X_test, anomalies_X])\n",
"y_test = np.concatenate([y_test, anomalies_y])\n",
"\n",
"X_test, X_val, y_test, y_val = train_test_split(X_test, y_test, test_size=0.5, random_state=42)\n",
"\n",
"print(\"X_train:\", X_train.shape)\n",
"print(\"X_test:\", X_test.shape)\n",
"print(\"X_val:\", X_val.shape)\n",
"print(\"Number of anomalies y_test:\", y_test.sum())\n",
"print(\"Number of anomalies y_val:\", y_val.sum())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Scale the data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"scaler = StandardScaler()\n",
"X_train = scaler.fit_transform(X_train)\n",
"X_val = scaler.transform(X_val)\n",
"X_test = scaler.transform(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Generating cluster centers\n",
"To implement our anomaly detection algorithm we need to get the cluster centers. We will use the [KMeans](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html) model with 50 clusters. As the seed value set `random_state=42`.\n",
"\n",
"> Calculate the cluster centers from the training data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# kmeans = ...\n",
"# cluster_centers = ..."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# TODO: Remove\n",
"kmeans = KMeans(n_clusters=50, random_state=42)\n",
"kmeans.fit(X_train)\n",
"\n",
"cluster_centers = kmeans.cluster_centers_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Implement the prediction function\n",
"> Now that you have calculate the cluster centers you should implement the predict function to decide wether a point is an outlier or not. \n",
"1. For each point calculate the distance to the nearest cluster center (use the euclidean distance as the distance function)\n",
"1. Mark all points as anomalies if their distance is larger than the given threshold"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def predict(X: np.ndarray, cluster_centers: np.ndarray, threshold: float) -> np.ndarray:\n",
" # calculate the distance to the nearest cluster center\n",
" # Mark points as anomalies if their distance is larger than the threshold\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# TODO: REMOVE CELL\n",
"def predict(X: np.ndarray, cluster_centers: np.ndarray, threshold: float) -> np.ndarray:\n",
" distances = euclidean_distances(X, cluster_centers).min(axis=1)\n",
" y_pred = distances > threshold\n",
" return np.array(y_pred, dtype=int)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If your code is correct you should be able to run the following cell:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"threshold = 10\n",
"y_pred = predict(cluster_centers + threshold + 1, cluster_centers, threshold)\n",
"np.testing.assert_equal(np.ones((len(cluster_centers))), y_pred)\n",
"\n",
"y_pred = predict(cluster_centers, cluster_centers, threshold)\n",
"np.testing.assert_equal(np.zeros((len(cluster_centers))), y_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tune `threshold` hyperparameter\n",
"As you have noticed our model contains is using a `threshold` hyperparameter. Let's tune it using our validation set."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Manually tune the threshold\n",
"You can play around with the slider to get the best threshold"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e801e1dcc8ba4a1eab61dacac7f73e31",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=1.0, description='thresh', max=20.0), Output()), _dom_classes=('widget…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@widgets.interact(thresh =(0,20,0.1))\n",
"def f(thresh=1):\n",
" y_pred = predict(X_val, cluster_centers, thresh)\n",
" precision, recall, f1, _ = precision_recall_fscore_support(y_val, y_pred, average=\"binary\")\n",
" \n",
" print(\"Detected number of outliers:\", y_pred.sum())\n",
" print(\"Actual number of outliers:\", y_val.sum())\n",
" print(\"------\")\n",
" print(\"Precision:\", precision)\n",
" print(\"Recall\", recall)\n",
" print(\"F1\", f1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Tune the paramter by using a grid search"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a0c4570fb07a45e9ae2df0bb439b8279",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=200.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Best threshold 9.949748743718594 with f1 score 0.7087198515769944\n"
]
}
],
"source": [
"f1_scores = []\n",
"precision_scores = []\n",
"recall_scores = []\n",
"thresholds = np.linspace(0, 20, 200)\n",
"for thresh in tqdm(thresholds):\n",
" y_pred = predict(X_val, cluster_centers, thresh)\n",
" precision, recall, f1, _ = precision_recall_fscore_support(y_val, y_pred, average=\"binary\")\n",
" f1_scores.append(f1)\n",
" precision_scores.append(precision)\n",
" recall_scores.append(recall)\n",
" \n",
"best_thresh = thresholds[np.argmax(f1_scores)]\n",
"best_f1 = np.max(f1_scores)\n",
"print(\"Best threshold {} with f1 score {}\".format(best_thresh, best_f1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Visualize the relationship between the metrics and the threshold"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7fd0fc170e20>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10,8))\n",
"ax.plot(thresholds, f1_scores, label=\"f1\")\n",
"ax.plot(thresholds, precision_scores, label=\"precision\")\n",
"ax.plot(thresholds, recall_scores, label=\"recall\")\n",
"ax.plot(best_thresh, best_f1, marker=\"o\")\n",
"ax.set_xlabel(\"Threshold\")\n",
"ax.set_ylabel(\"Score\")\n",
"ax.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Evaluate on the test set\n",
"Now that we have tuned our `threshold` hyperparameter we can calculate the metrics on the test set."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Detected number of outliers: 259\n",
"Actual number of outliers: 231\n",
"------\n",
"Precision: 0.6563706563706564\n",
"Recall 0.7359307359307359\n",
"F1 0.6938775510204082\n"
]
}
],
"source": [
"y_pred = predict(X_test, cluster_centers, best_thresh)\n",
"precision, recall, f1, _ = precision_recall_fscore_support(y_test, y_pred, average=\"binary\")\n",
"\n",
"print(\"Detected number of outliers:\", y_pred.sum())\n",
"print(\"Actual number of outliers:\", y_test.sum())\n",
"print(\"------\")\n",
"print(\"Precision:\", precision)\n",
"print(\"Recall\", recall)\n",
"print(\"F1\", f1)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def plot_confusion_matrix(cm):\n",
" fig, (ax1) = plt.subplots(ncols=1, figsize=(5,5))\n",
" sns.heatmap(cm, \n",
" xticklabels=['Genuine', 'Fraud'],\n",
" yticklabels=['Genuine', 'Fraud'],\n",
" annot=True,ax=ax1,\n",
" linewidths=.2,linecolor=\"Darkblue\", cmap=\"Blues\")\n",
" plt.title('Confusion Matrix', fontsize=14)\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x360 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cm = confusion_matrix(y_test, y_pred)\n",
"plot_confusion_matrix(cm)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Check your results on ILIAS\n",
"On ILIAS you will find a online quiz where you can check your results.\n",
"\n",
"> Submit the value of your tuned `threshold` for which you received a f1-score of minimum **70%** on the validation set."
]
}
],
"metadata": {
"jupytext": {
"text_representation": {
"extension": ".py",
"format_name": "percent",
"format_version": "1.2",
"jupytext_version": "0.8.6"
}
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}