-
Notifications
You must be signed in to change notification settings - Fork 1
/
八股文.drawio
559 lines (559 loc) · 151 KB
/
八股文.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36" version="24.8.3">
<diagram name="第 1 页" id="KPa0spre10BV23PreFPN">
<mxGraphModel dx="3350" dy="1080" grid="1" gridSize="10" guides="1" tooltips="1" connect="0" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="J3ipS8W6sBXHcmSZQY-d-35" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1">
<mxGeometry x="215" y="1330" width="405" height="250" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-1" value="<b>Mongo 分库分表:&nbsp;</b><div>主表都配置了TTL 能力,对于迁移的数据,时间过了就自动清理</div><div>对于迁移表可以支持不加TTL,实现数据全量;</div><div>支持数据切表,冷热数据</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="60" y="40" width="360" height="70" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-2" value="配置服务" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="170" y="120" width="60" height="290" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-4" value="读路由服务" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="260" y="120" width="70" height="290" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-5" value="写路由服务" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="411" y="110" width="70" height="290" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-6" value="数据迁移服务" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="523" y="110" width="70" height="290" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-8" style="edgeStyle=elbowEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;curved=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="100" y="320" as="sourcePoint" />
<mxPoint x="200" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="160.5" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-7" value="事件" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="70" y="120" width="60" height="300" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-9" value="新增路由配置:<div>将某个产品写入新表:</div><div>迁移时间戳:迁移服务会进行迁移</div><div>读主表:读取路由读取标识</div><div>写主表:写路由是否双写</div><div>迁移状态:保证只有一个迁移</div><div>结束时间:标识切表时间点</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="20" y="165" width="200" height="110" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-10" value="创建迁移任务" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="85" y="290" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-11" value="定时检查配置任务:<div>发现迁移任务:开始迁移</div><div>支持全量迁移和部分迁移</div><div>迁移完成:更新配置状态</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="520" y="165" width="160" height="70" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-12" value="1. 定时任务检查<div>配置信息</div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="240" y="170" width="110" height="40" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-13" value="2. 查询数据时,<div>查看路由配置:<div>不存在独立配置:</div><div>直接读取主表</div><div>存在独立配置:</div><div>如果只存在一个配置:</div><div>如果迁移中,<span style="background-color: initial;">读取主表</span></div><div>如果迁移完成:读取配置表</div></div><div>如果存在读个配置:</div><div>根据时间排序配置</div><div>选择配置表进行查询</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="244" y="210" width="170" height="170" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-14" value="2. 写入数据时,<div>查看路由配置:</div><div>不存在独立配置,写入主表</div><div>存在独立配置:</div><div>如果只存在一个配置:</div><div>如果迁移中:双写主表和指定表</div><div>如果迁移完成:写入执行配置表</div><div>如果存在多个配置:表示切表</div><div>数据写入最新表</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="400" y="245" width="190" height="140" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-15" value="1. 定时任务检查<div>配置信息</div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="390" y="180" width="110" height="40" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-16" value="<b>Pulsar Starter 设计:</b><div>支持PulsarTemplate,PulsarStringTemplate</div><div>支持注解订阅pulsar 消息</div><div>支持多种消息提交模式:手动,count_time,立即</div><div>支持容器生命周期管理,消费者优雅停</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="49" y="510" width="271" height="80" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-20" value="@EnablePulsar/<div>@PulsarSubscribe</div>" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="60" y="640" width="100" height="300" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-26" style="edgeStyle=elbowEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;curved=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="234" y="870" as="sourcePoint" />
<mxPoint x="369" y="870" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-21" value="PulsarAnnotation<div>Processor</div>" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="185" y="640" width="100" height="300" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-22" value="1. 使用EnablePulsar注解:<div>开启注解扫描Processor</div><div style="text-align: left;">2. PulsarSubscribe 注解:</div><div style="text-align: left;">用于订阅pulsar topic 消息</div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="25" y="700" width="170" height="70" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-23" value="当注册了Processor bean:<div>1. 实现BeanPostProcessor</div><div>2. 扫描所有的bean, 并读取其方法</div><div>3. 找到使用PulsarSubscribe 注解</div><div>4. 构建SubscirbeHolder</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="135" y="760" width="200" height="90" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-29" style="edgeStyle=elbowEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;elbow=vertical;curved=0;" parent="1" target="VRjen7JTUJrRjUqwProS-28" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="369.5" y="890" as="sourcePoint" />
<mxPoint x="494.5" y="890" as="targetPoint" />
<Array as="points">
<mxPoint x="510" y="920" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-24" value="SubscribeHolder<div>Registrar<br></div>" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="320" y="640" width="100" height="300" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-27" value="5. 注册Holder到注册中心" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="220" y="840" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-28" value="<div>PulsarContainer<br></div>" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="472" y="640" width="100" height="350" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-31" value="监听ApplicationReadyEvent:<div>注册Holder到container</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="292" y="700" width="180" height="40" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-32" value="6. 注册Holders 到<div>contianer</div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="380" y="880" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-33" value="1. 实现SmartInitializingSingleton:<div>初始化完成后根据配置创建Producer</div><div>2. 实现SmartLifecycle</div><div>管理容器的生命周期,在停止时,</div><div>停止消费者继续进行消费,</div><div>同时提交当前已经消费的数据</div><div><br></div><div>3. 容器具有配置属性:Ack提交策略。</div><div>默认是count_time;也可配置逐条立即提交</div><div>同时支持手动提交:</div><div>注解方法一个参数,容器提交</div><div>注解方法两个参数,参数一是消费者</div><div><br></div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="460" y="680" width="240" height="200" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-34" value="将Holder 转换为pulsar消费者,<div>并代理方法进行发射调用</div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="440" y="920" width="190" height="40" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-35" value="ProducerTemplate" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
<mxGeometry x="650" y="640" width="100" height="300" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-36" value="依赖container:<div>通过container 获取producer</div><div>适配发送接口实现消息发送</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="670" y="710" width="170" height="60" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-37" value="ES 选主流程" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="54" y="1005" width="81" height="30" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="VRjen7JTUJrRjUqwProS-38" target="VRjen7JTUJrRjUqwProS-40" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-38" value="当es 重启或者<div>mster节崩溃</div>" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="40" y="1050" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="VRjen7JTUJrRjUqwProS-39" target="VRjen7JTUJrRjUqwProS-46" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-39" value="发起广播投票自己为master" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="294" y="1050" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="VRjen7JTUJrRjUqwProS-40" target="VRjen7JTUJrRjUqwProS-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-40" value="是否为master资格节点" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="161" y="1035" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-45" value="是" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="250" y="1048" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="VRjen7JTUJrRjUqwProS-46" target="VRjen7JTUJrRjUqwProS-48" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-46" value="版本高,<div>ID节点小</div>" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="420" y="1035" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="VRjen7JTUJrRjUqwProS-48" target="VRjen7JTUJrRjUqwProS-50" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-48" value="成为master" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="538" y="1050" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="VRjen7JTUJrRjUqwProS-50" value="通知其他节点" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="625" y="1050" width="60" height="50" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-1" value="DDD:领域驱动设计" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="770" y="70" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-13" value="XXL-JOB" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1785" y="48" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-2" value="<b>DDD: 领域驱动设计</b>" style="shape=umlFrame;html=1;pointerEvents=0;width=120;height=20;labelBackgroundColor=#FFCC99;swimlaneFillColor=#FFE6CC;fillColor=#f8cecc;strokeColor=#b85450;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="930" y="150" width="810" height="460" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-14" value="<b>核心理论</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="935" y="188" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-15" value="分层结构" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.layered_rect;dx=10;outlineConnect=0;whiteSpace=wrap;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
<mxGeometry x="960" y="229" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-16" value="领域模型" style="sketch=0;outlineConnect=0;fontColor=#000000;fillColor=#f0a30a;strokeColor=#BD7000;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.sagemaker_model;" parent="1" vertex="1">
<mxGeometry x="960" y="380" width="78" height="78" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-33" value="<span style="font-size: 12px; background-color: rgb(251, 251, 251);"><b>转换为DTO,调用应用服务</b></span>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="9D-Lmr6SBzClbS9fGLFk-20" target="9D-Lmr6SBzClbS9fGLFk-26" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-20" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1">
<mxGeometry x="1230" y="183" width="350" height="62" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-21" value="<b>Adpter层(表现层)</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1345" y="182" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-23" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1231" y="215" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="9D-Lmr6SBzClbS9fGLFk-26" target="9D-Lmr6SBzClbS9fGLFk-46" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-61" value="<b>转换领域事件,调用领域服务</b>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="9D-Lmr6SBzClbS9fGLFk-53" vertex="1" connectable="0">
<mxGeometry x="-0.3131" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-66" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="9D-Lmr6SBzClbS9fGLFk-37" target="9D-Lmr6SBzClbS9fGLFk-54" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1580" y="320" />
<mxPoint x="1670" y="320" />
<mxPoint x="1670" y="551" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-67" value="<b>领域事件发布等操作</b>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="9D-Lmr6SBzClbS9fGLFk-66" vertex="1" connectable="0">
<mxGeometry x="0.0193" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-26" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="1230" y="289" width="350" height="62" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-27" value="<b>App层(数据转换校验)</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1335" y="291" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-30" value="VO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1325" y="215" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-34" value="DTO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1231" y="321" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-35" value="Service" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1326" y="321" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-36" value="Scheduler" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1417" y="321" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-37" value="Consumer" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1510" y="321" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-46" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
<mxGeometry x="1231" y="400" width="347" height="60" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-47" value="<b>Domain层(领域业务)</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1336" y="398" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-48" value="领域服务" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1232" y="429" width="58" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-49" value="聚合根" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1301" y="429" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-50" value="SPI" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1375" y="429" width="59" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-51" value="repository" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1445" y="430" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-63" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="9D-Lmr6SBzClbS9fGLFk-54" target="9D-Lmr6SBzClbS9fGLFk-46" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-64" value="<b>领域SPI和repo 具体实现</b>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="9D-Lmr6SBzClbS9fGLFk-63" vertex="1" connectable="0">
<mxGeometry x="0.1475" y="2" relative="1" as="geometry">
<mxPoint x="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-54" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="1231" y="521" width="347" height="60" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-55" value="<b>Infrastructrue层(基础组件层)</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="1316" y="519" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-56" value="SPI&nbsp;<div>impl</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1232" y="550" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-57" value="mapper" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1321" y="550" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-58" value="config" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1418" y="550" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-65" value="component" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1508" y="550" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="9D-Lmr6SBzClbS9fGLFk-70" value="领域模型层必须依赖独立,领域服务通过
处理领域事件转换聚合根;同时定义SPI解耦实现" style="shape=note;backgroundOutline=1;darkOpacity=0.05;align=left;whiteSpace=wrap;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="1060" y="332" width="120" height="88" as="geometry" />
</mxCell>
<mxCell id="6UzdkExmgidhG1JHYg0t-1" value="领域事件" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e3c800;fontColor=#000000;strokeColor=#B09500;" parent="1" vertex="1">
<mxGeometry x="1519" y="429" width="59" height="30" as="geometry" />
</mxCell>
<mxCell id="T2ZMbrgRlUznVUn5AD8o-2" value="<b>聚合根: 将查询,业务处理和修改分离,先查询聚合数据,再业务处理,再事物进行数据修改</b>" style="shape=note;backgroundOutline=1;darkOpacity=0.05;align=left;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1060" y="440" width="120" height="88" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-1" value="<b><font style="font-size: 16px;">kafka</font></b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="210" y="1190" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-2" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=5;rounded=0;strokeColor=#FF0080;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="40" y="1159" as="sourcePoint" />
<mxPoint x="830" y="1159" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-3" value="生产者" style="swimlane;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="4.75" y="1860" width="175.25" height="700" as="geometry">
<mxRectangle x="166.16" y="5020" width="90" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-4" value="<b>场景三:结算下发认领单</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="J3ipS8W6sBXHcmSZQY-d-3" vertex="1">
<mxGeometry x="10" y="50" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-5" value="结算下发认领单" style="whiteSpace=wrap;html=1;fillColor=#b1ddf0;strokeColor=#10739e;" parent="J3ipS8W6sBXHcmSZQY-d-3" vertex="1">
<mxGeometry x="33.370000000000005" y="101" width="118.27" height="40" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-6" value="Broker" style="swimlane;whiteSpace=wrap;startSize=23;" parent="1" vertex="1">
<mxGeometry x="180" y="1860" width="470" height="700" as="geometry">
<mxRectangle x="166.16" y="5020" width="90" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="J3ipS8W6sBXHcmSZQY-d-6" source="J3ipS8W6sBXHcmSZQY-d-7" target="ohOXor32xnlO2z5g4up4-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-7" value="当消费者加入/离开;
或者新加topic/分区" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="2.7500000000002274" y="80" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-13" value="<b>场景1:消费者组重平衡</b><div><br></div>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="19.75" y="40" width="140" height="40" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-1" value="broker controller 检测到消费者组变化,触发重平衡" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="164.75000000000023" y="80" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="J3ipS8W6sBXHcmSZQY-d-6" source="ohOXor32xnlO2z5g4up4-5" target="ohOXor32xnlO2z5g4up4-8" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="406" y="140" />
<mxPoint x="65" y="140" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-5" value="组下消费者都发送JoinGroup 请求" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="336.0000000000002" y="78" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-12" value="协调者会将第一个发送JoinGroup<div>的消费者作为leader消费者</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="J3ipS8W6sBXHcmSZQY-d-6" source="ohOXor32xnlO2z5g4up4-8" target="ohOXor32xnlO2z5g4up4-11" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-8" value="协调组收到所有消费者订阅信息" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="2.7500000000002274" y="160" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-14" value="根据配置的平衡策略<div>分配消费分区</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="J3ipS8W6sBXHcmSZQY-d-6" source="ohOXor32xnlO2z5g4up4-11" target="ohOXor32xnlO2z5g4up4-13" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="375" y="220" />
<mxPoint x="65" y="220" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-11" value="发送所有消费者的订阅信息到leader 消费者" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="310.0000000000002" y="160" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-16" value="协调者发送SyncGroup请求<div>发送分配信息给所有消费者</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="J3ipS8W6sBXHcmSZQY-d-6" source="ohOXor32xnlO2z5g4up4-13" target="ohOXor32xnlO2z5g4up4-15" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-13" value="发送分配信息到协调者" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="3.7500000000002274" y="250" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-15" value="消费者根据分配消费分区消息" style="whiteSpace=wrap;" parent="J3ipS8W6sBXHcmSZQY-d-6" vertex="1">
<mxGeometry x="300.0000000000002" y="250" width="129" height="43" as="geometry" />
</mxCell>
<mxCell id="ohOXor32xnlO2z5g4up4-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.008;entryY=0.535;entryDx=0;entryDy=0;entryPerimeter=0;" parent="J3ipS8W6sBXHcmSZQY-d-6" source="ohOXor32xnlO2z5g4up4-1" target="ohOXor32xnlO2z5g4up4-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-8" value="消费者" style="swimlane;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="650" y="1860" width="137.75" height="700" as="geometry">
<mxRectangle x="166.16" y="5020" width="90" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-9" value="zookeeper" style="swimlane;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="787.75" y="1860" width="141.25" height="700" as="geometry">
<mxRectangle x="166.16" y="5020" width="90" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-11" value="<b>setp1: 创建topic</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="805" y="1888" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-16" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
<mxGeometry x="215" y="1230" width="405" height="100" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-17" value="<b>生产者</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="374" y="1230" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-18" value="幂等" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="215" y="1255" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-19" value="重试" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="280" y="1255" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-20" value="顺序" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="344.5" y="1255" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-23" value="生产者配置:
幂等:enable.idempotence=true
重试:message.send.max.retries=3
顺序:max.in.flight.requests.per.connection=1
消息Ack: Acks=-1
发送策略:同步/异步,batch.size,等待时间(linger.ms)
元数据更新时间:metadata.max.age.ms=300000" style="shape=note;size=15;spacingLeft=5;align=left;whiteSpace=wrap;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="700" y="1190" width="320" height="110" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-24" value="" style="edgeStyle=none;html=1;endArrow=none;rounded=0;labelBackgroundColor=none;dashed=1;exitX=0;exitY=0.473;entryX=0.998;entryY=0.45;entryDx=0;entryDy=0;entryPerimeter=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="J3ipS8W6sBXHcmSZQY-d-23" target="J3ipS8W6sBXHcmSZQY-d-16" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="775" y="1290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-25" value="Ack" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="408.5" y="1255" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-26" value="发送策略" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="473.5" y="1255" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-28" value="拦截器" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="215" y="1300" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-29" value="序列化" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="280" y="1300" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-30" value="分区/元数据" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="345" y="1300" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-31" value="收集器" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="410" y="1300" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-32" value="client" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="475" y="1300" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-34" value="压缩" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="538.5" y="1255" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-36" value="<b>Broker</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="380" y="1330" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-37" value="消费者组" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="215" y="1405" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-38" value="offset偏移" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="280" y="1405" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-39" value="重平衡" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="344.5" y="1405" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-40" value="broker配置:
ISR延迟时间:replica.lag.time.max.ms
日志存储:log.retention.hours=7;log.retention.bytes=1G
" style="shape=note;size=15;spacingLeft=5;align=left;whiteSpace=wrap;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="690" y="1600" width="320" height="60" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-41" value="" style="edgeStyle=none;html=1;endArrow=none;rounded=0;labelBackgroundColor=none;dashed=1;exitX=0;exitY=0.482;entryX=1;entryY=0.876;entryDx=0;entryDy=0;entryPerimeter=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="J3ipS8W6sBXHcmSZQY-d-40" target="J3ipS8W6sBXHcmSZQY-d-35" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="775" y="1420" as="targetPoint" />
<mxPoint x="670" y="1397.0300000000002" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-44" value="主题" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="215" y="1450" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-45" value="分区" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="280" y="1450" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-50" value="副本" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="344.25" y="1450" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-51" value="分区leader" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="409" y="1450" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-52" value="稀疏索引" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="345" y="1496" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-53" value="顺序读写" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="409" y="1496" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-54" value="日志" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="215" y="1496" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-55" value="分段" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="280" y="1496" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-56" value="ISR/OSR" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="474" y="1450" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-57" value="LEO/HW" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="539" y="1450" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-58" value="分区leader:提供了读取能力,kafka 支持自平衡,但影响性能;建议关闭,手动运维平衡。
ISR:所有与 Leader 副本保持一定程度同步的Replica(包括 Leader 副本在内)组成 ISR
OSR:与 Leader 副本同步滞后过多的 Replica 组成了 OSR
LEO:每个副本都有内部的LEO,代表当前队列消息的最后一条偏移量offset。
HW:高水位,代表所有ISR中的LEO最低的那个offset,也是消费者可见的最大消息offset。
" style="shape=note;size=15;spacingLeft=5;align=left;whiteSpace=wrap;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="676" y="1500" width="510" height="90" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-59" value="controller" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="215" y="1360" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-60" value="元数据管理" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="279.5" y="1360" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-61" value="分区leader选举" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="343.5" y="1360" width="66.5" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-62" value="分区重平衡" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="409.5" y="1360" width="66.5" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-63" value="controller选举:集群中每个broker都会尝试在zookeeper上创建一个 /controller 临时节点,zookeeper会保证有且仅有一个broker能创建成功,这个broker就会成为集群的总控器controller,同时epoch number(纪元编号)+1。
分区leader选举:当controller 感知到分区leader所在broker崩溃,controller会重ISR中取offset最大的第一个broker 作为leader.
Controller节点的主要职能:
Broker状态管理:Controller会跟踪集群中所有Broker的在线状态,并在Broker宕机或者恢复时更新集群的状态。
分区状态管理:当新的Topic被创建,或者已有的Topic被删除时,Controller会负责管理这些变化,并更新集群的状态。
分区领导者选举:当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。
副本状态管理:当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息
分区重平衡:当添加或删除Broker节点时,Controller会负责对Partition的分布进行重平衡,以确保数据的均匀分布。
存储集群元数据:Controller保存了集群中最全的元数据信息,并通过发送请求同步到其他Broker上面。" style="shape=note;size=15;spacingLeft=5;align=left;whiteSpace=wrap;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="676" y="1322" width="644" height="158" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-64" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;exitX=1.015;exitY=0.533;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.453;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="J3ipS8W6sBXHcmSZQY-d-62" target="J3ipS8W6sBXHcmSZQY-d-63" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="590" y="1440" as="sourcePoint" />
<mxPoint x="640" y="1390" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-66" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;entryX=0.002;entryY=0.533;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1.031;exitY=0.7;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="J3ipS8W6sBXHcmSZQY-d-57" target="J3ipS8W6sBXHcmSZQY-d-58" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="1680" as="sourcePoint" />
<mxPoint x="500" y="1630" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-67" value="零拷贝" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="215" y="1550" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-68" value="pagecache" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="280" y="1550" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-69" value="分区负载" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="345" y="1550" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-70" value="异步批量" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="410" y="1550" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-73" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
<mxGeometry x="215" y="1580" width="405" height="100" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-74" value="<b>消费者</b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="374" y="1580" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-75" value="消费组" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="215" y="1650" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-76" value="offset" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="280" y="1650" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-77" value="幂等" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="344.5" y="1650" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-78" value="分区分配" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="409.25" y="1650" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-86" value="单播/广播" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="408.5" y="1405" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-88" value="消费者配置:
enable.auto.commit=true; auto.commit.interval.ms=5000
max-poll-records:消费者每次从 Kafka 拉取的数据条数,默认是 500。
partition.assignment.strategy: 分区分配策略,range/roundrobin/sticky" style="shape=note;size=15;spacingLeft=5;align=left;whiteSpace=wrap;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="690" y="1680" width="410" height="90" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-89" value="消费线程模型" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad9d5;strokeColor=#ae4132;" parent="1" vertex="1">
<mxGeometry x="473" y="1650" width="65" height="30" as="geometry" />
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-90" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;entryX=-0.005;entryY=0.478;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1.005;exitY=0.47;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="J3ipS8W6sBXHcmSZQY-d-73" target="J3ipS8W6sBXHcmSZQY-d-88" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="580" y="1770" as="sourcePoint" />
<mxPoint x="630" y="1720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="J3ipS8W6sBXHcmSZQY-d-91" value="事务" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcd28;strokeColor=#d79b00;gradientColor=#ffa500;" parent="1" vertex="1">
<mxGeometry x="474" y="1550" width="65" height="30" as="geometry" />
</mxCell>
<UserObject label="" plantUmlData="{"data":"@startuml\n\nparticipant \"注册服务\\n----\\nNacos\\nRegistry\" as NacosRegistry\n\nparticipant \"命名服务\\n----\\n Nacos\\nNaming\\nService\" as NacosNamingService #green\nparticipant \"客户端\\n----\\n Nacos\\nGrpc\\nClient\" as NamingGrpcClientProxy\nparticipant \"注册中心\\n----\\nNacos\\nServer\" as NacosServer #YellowGreen\nparticipant 注册组件 as FeignClientsRegistrar #Olive\nparticipant FeignClient as FeignClient\nparticipant \"熔断代理组件\\n----\\nFeign\\nCircuitBreaker\\nInvocation\\nHandler\" as FeignCircuitBreakerInvocationHandler\nparticipant \"熔断器\\n----\\nCircuit\\nBreaker\" as CircuitBreaker\nparticipant \"方法处理器\\n----\\nMethod\\nHandler\" as MethodHandler\nparticipant \"请求拦截器\\n----\\nRequest\\nInterceptor\" as RequestInterceptor\nparticipant \"负载均衡组件\\n----\\nLoadBalancer\\nClient\" as LoadBalancerClient\nparticipant \"轮询组件\\n----\\nRoundRobin\\nLoadBalancer\" as RoundRobinLoadBalancer\nparticipant \"服务实例\\n提供组件\\n----\\nService\\nInstance\\nListSupplier\" as ServiceInstanceListSupplier\nparticipant \"服务发现\\n----\\nService\\nDiscovery\" as ServiceDiscovery\nparticipant \"Http组件\\n----\\nApache\\nHttp\\nClient\" as ApacheHttpClient\nparticipant \"解码器\\n----\\nResponse\\nEntity\\nDecoder\" as ResponseEntityDecoder\nparticipant \"异常\\n解码器\\n----\\nError\\nDecoder\" as ErrorDecoder\n\nFeignClientsRegistrar->FeignClientsRegistrar:FeignClientsRegistrar\n\nautonumber\nNacosRegistry -> NacosNamingService: 自动注册\nnote right: 监听Web启动事件\n\nNacosNamingService -> NamingGrpcClientProxy: 发起注册\nNamingGrpcClientProxy -> NacosServer: 注册服务实例\nnote right of NacosServer:服务注册完成\n== 服务注册完成==\nautonumber\nFeignClientsRegistrar -> FeignClientsRegistrar: 扫描FeignClient接口\nFeignClientsRegistrar -> FeignClientsRegistrar: 解析FeignClient接口\nFeignClientsRegistrar -> FeignClientsRegistrar: 创建FeignClient\\nFactoryBean\nnote left\n FactoryBean依赖FeignCircuitBreakerTargeter\n Targeter依赖ReflectiveFeign创建JDK代理对象\n ReflectiveFeign依赖熔断InvocationHandler实现方法代理\nend note\n\n== FeignClient Bean 注入完成==\nautonumber\nFeignClient -> FeignClient: Bean接口调用\nFeignClient -> FeignCircuitBreakerInvocationHandler: 代理方法调用\nnote right \n依赖Fallback工厂创建降级函数\n依赖熔断器支持熔断降级和限流\n依赖方法处理器进行具体实现调用\nend note\nFeignCircuitBreakerInvocationHandler -> FeignCircuitBreakerInvocationHandler: 获取熔断器和\\n方法处理器\n\nFeignCircuitBreakerInvocationHandler -> CircuitBreaker: 调用熔断器\nnote right: 限流处理or代理调用方法处理器\n\nCircuitBreaker -> MethodHandler: 调用接口实现\n\nMethodHandler -> MethodHandler: 组装请求参数\\n创建重试组件\n\nMethodHandler -> RequestInterceptor: 对请求拦截增强\nnote right: 依赖Retryer支持重试\nMethodHandler -> LoadBalancerClient: 请求调用\n\nLoadBalancerClient -> RoundRobinLoadBalancer: 获取实例\nnote right: 支持轮询负载均衡策略\nRoundRobinLoadBalancer -> ServiceInstanceListSupplier: 获取实例列表\nnote right: 支持缓存组件需要感知变更更新缓存\\n,支持zone(区域),Hint(标识),健康检查过滤\nServiceInstanceListSupplier -> ServiceInstanceListSupplier: 查询缓存\n\nalt 缓存不存在\n ServiceInstanceListSupplier -> ServiceDiscovery: 调用\n ServiceDiscovery -> NacosNamingService: 查询服务实例\n NacosNamingService -> NamingGrpcClientProxy: 查询服务实例\n NamingGrpcClientProxy -> NacosServer: 订阅服务变更\n NacosServer --> NamingGrpcClientProxy:返回当前服务列表\n note left\n 动态感知服务变动,更新缓存信息\n 监听连接,重连事件,触发监听者\n 依赖RedoScheduledTask定时触发重新注册和订阅\n 处理服务端探活请求(20S空闲)\n end note\n NamingGrpcClientProxy --> NacosNamingService: 返回当前服务列表\n NacosNamingService --> ServiceDiscovery: 返回当前服务列表\n ServiceDiscovery --> ServiceInstanceListSupplier: 返回实例列表\nend\n\nRoundRobinLoadBalancer -> RoundRobinLoadBalancer: 轮询获取实例\nRoundRobinLoadBalancer -->LoadBalancerClient: 返回实例信息\nLoadBalancerClient -> ApacheHttpClient: 发起服务调用\nnote right: 支持Http 连接池\n\nalt 请求成功\n ApacheHttpClient --> LoadBalancerClient: 调用服务,返回成功响应\n LoadBalancerClient --> MethodHandler: 返回成功响应\n MethodHandler -> ResponseEntityDecoder: 对成功返回数据解码为对象\n ResponseEntityDecoder --> MethodHandler: 返回解码后的对象\n MethodHandler --> CircuitBreaker: 返回成功响应\n FeignCircuitBreakerInvocationHandler -> CircuitBreaker: 更新接口调用统计\n FeignCircuitBreakerInvocationHandler --> FeignClient: 返回调用结果\nelse 请求失败\n ApacheHttpClient --> LoadBalancerClient: 调用服务,返回错误响应\n LoadBalancerClient --> MethodHandler: 返回错误响应\n MethodHandler -> ErrorDecoder: 对错误信息解码\n alt 是否需要重试\n ErrorDecoder -> MethodHandler: 返回重试异常\n MethodHandler->MethodHandler: 重试组件\\n进行重试\n end\n MethodHandler --> CircuitBreaker: 返回错误响应\n CircuitBreaker --> FeignCircuitBreakerInvocationHandler: 降级返回结果\n FeignCircuitBreakerInvocationHandler -> CircuitBreaker: 更新接口调用统计\n FeignCircuitBreakerInvocationHandler --> FeignClient: 返回调用结果\nend\n\n@enduml\n","format":"svg"}" id="4oGO_xSFCiCbPG5GA00L-1">
<mxCell style="shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXMtYXNjaWkiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgaGVpZ2h0PSIyMDMwcHgiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHN0eWxlPSJ3aWR0aDoxOTk4cHg7aGVpZ2h0OjIwMzBweDtiYWNrZ3JvdW5kOiNGRkZGRkY7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxOTk4IDIwMzAiIHdpZHRoPSIxOTk4cHgiIHpvb21BbmRQYW49Im1hZ25pZnkiPjxkZWZzLz48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI4Ni45Njg4IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTsiIHdpZHRoPSIxNzI4IiB4PSIxMCIgeT0iOTcyLjUxNTYiLz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjUzMy4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTsiIHdpZHRoPSIxMzIzLjUiIHg9IjY1Ny41IiB5PSIxMzc2LjIyNjYiLz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9Ijk4LjY1NjMiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41OyIgd2lkdGg9IjkyNCIgeD0iMTA0NyIgeT0iMTY5Mi4wNTQ3Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7c3Ryb2tlLWRhc2hhcnJheTo1LjAsNS4wOyIgeDE9Ijk5IiB4Mj0iOTkiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41O3N0cm9rZS1kYXNoYXJyYXk6NS4wLDUuMDsiIHgxPSIxODYiIHgyPSIxODYiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41O3N0cm9rZS1kYXNoYXJyYXk6NS4wLDUuMDsiIHgxPSIzMzIiIHgyPSIzMzIiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41O3N0cm9rZS1kYXNoYXJyYXk6NS4wLDUuMDsiIHgxPSI0NzgiIHgyPSI0NzgiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41O3N0cm9rZS1kYXNoYXJyYXk6NS4wLDUuMDsiIHgxPSI1NTgiIHgyPSI1NTgiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41O3N0cm9rZS1kYXNoYXJyYXk6NS4wLDUuMDsiIHgxPSI3MTIuNSIgeDI9IjcxMi41IiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iODMzIiB4Mj0iODMzIiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iOTc4LjUiIHgyPSI5NzguNSIgeTE9IjEwNC45MjE5IiB5Mj0iMTkyNi4zNjcyIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7c3Ryb2tlLWRhc2hhcnJheTo1LjAsNS4wOyIgeDE9IjEwOTkiIHgyPSIxMDk5IiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iMTIyNC41IiB4Mj0iMTIyNC41IiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iMTMyOS41IiB4Mj0iMTMyOS41IiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iMTQ0OS41IiB4Mj0iMTQ0OS41IiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iMTU2OS41IiB4Mj0iMTU2OS41IiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iMTY4OSIgeDI9IjE2ODkiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41O3N0cm9rZS1kYXNoYXJyYXk6NS4wLDUuMDsiIHgxPSIxNzczIiB4Mj0iMTc3MyIgeTE9IjEwNC45MjE5IiB5Mj0iMTkyNi4zNjcyIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7c3Ryb2tlLWRhc2hhcnJheTo1LjAsNS4wOyIgeDE9IjE4NTMiIHgyPSIxODUzIiB5MT0iMTA0LjkyMTkiIHkyPSIxOTI2LjM2NzIiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTtzdHJva2UtZGFzaGFycmF5OjUuMCw1LjA7IiB4MT0iMTkyOSIgeDI9IjE5MjkiIHkxPSIxMDQuOTIxOSIgeTI9IjE5MjYuMzY3MiIvPjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iNjguOTUzMSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNzAiIHg9IjY0IiB5PSIzNC45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjcxIiB5PSI1NS4yMDMxIj4mIzI3ODgwOyYjMjA4NzY7JiMyNjM4MTsmIzIxMTUzOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI2NCIgeDI9IjEzNCIgeTE9IjYxLjk1MzEiIHkyPSI2MS45NTMxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzUiIHg9IjgxLjUiIHk9IjgwLjE4NzUiPk5hY29zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSI3MSIgeT0iOTUuMTcxOSI+UmVnaXN0cnk8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI3MCIgeD0iNjQiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSI3MSIgeT0iMTk0NS42MDE2Ij4mIzI3ODgwOyYjMjA4NzY7JiMyNjM4MTsmIzIxMTUzOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI2NCIgeDI9IjEzNCIgeTE9IjE5NTIuMzUxNiIgeTI9IjE5NTIuMzUxNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM1IiB4PSI4MS41IiB5PSIxOTcwLjU4NTkiPk5hY29zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSI3MSIgeT0iMTk4NS41NzAzIj5SZWdpc3RyeTwvdGV4dD48cmVjdCBmaWxsPSIjMDA4MDAwIiBoZWlnaHQ9IjgzLjkzNzUiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwIiB4PSIxNTEiIHk9IjE5Ljk4NDQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NiIgeD0iMTU4IiB5PSI0MC4yMTg4Ij4mIzIxNjI5OyYjMjE1MTc7JiMyNjM4MTsmIzIxMTUzOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNTEiIHgyPSIyMjEiIHkxPSI0Ni45Njg4IiB5Mj0iNDYuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM1IiB4PSIxNzIiIHk9IjY1LjIwMzEiPk5hY29zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQzIiB4PSIxNjQuNSIgeT0iODAuMTg3NSI+TmFtaW5nPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxNjEuNSIgeT0iOTUuMTcxOSI+U2VydmljZTwvdGV4dD48cmVjdCBmaWxsPSIjMDA4MDAwIiBoZWlnaHQ9IjgzLjkzNzUiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwIiB4PSIxNTEiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSIxNTgiIHk9IjE5NDUuNjAxNiI+JiMyMTYyOTsmIzIxNTE3OyYjMjYzODE7JiMyMTE1Mzs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTUxIiB4Mj0iMjIxIiB5MT0iMTk1Mi4zNTE2IiB5Mj0iMTk1Mi4zNTE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzUiIHg9IjE3MiIgeT0iMTk3MC41ODU5Ij5OYWNvczwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MyIgeD0iMTY0LjUiIHk9IjE5ODUuNTcwMyI+TmFtaW5nPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxNjEuNSIgeT0iMjAwMC41NTQ3Ij5TZXJ2aWNlPC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iODMuOTM3NSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNTYiIHg9IjMwNCIgeT0iMTkuOTg0NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIzMTEiIHk9IjQwLjIxODgiPiYjMjM0NTg7JiMyNTE0MzsmIzMxNDcxOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIzMDQiIHgyPSIzNjAiIHkxPSI0Ni45Njg4IiB5Mj0iNDYuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM1IiB4PSIzMTgiIHk9IjY1LjIwMzEiPk5hY29zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI4IiB4PSIzMTgiIHk9IjgwLjE4NzUiPkdycGM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjMxMSIgeT0iOTUuMTcxOSI+Q2xpZW50PC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iODMuOTM3NSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNTYiIHg9IjMwNCIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjMxMSIgeT0iMTk0NS42MDE2Ij4mIzIzNDU4OyYjMjUxNDM7JiMzMTQ3MTs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMzA0IiB4Mj0iMzYwIiB5MT0iMTk1Mi4zNTE2IiB5Mj0iMTk1Mi4zNTE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzUiIHg9IjMxOCIgeT0iMTk3MC41ODU5Ij5OYWNvczwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyOCIgeD0iMzE4IiB5PSIxOTg1LjU3MDMiPkdycGM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjMxMSIgeT0iMjAwMC41NTQ3Ij5DbGllbnQ8L3RleHQ+PHJlY3QgZmlsbD0iIzlBQ0QzMiIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI3MCIgeD0iNDQzIiB5PSIzNC45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjQ1MCIgeT0iNTUuMjAzMSI+JiMyNzg4MDsmIzIwODc2OyYjMjAwMTM7JiMyNDUxNTs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNDQzIiB4Mj0iNTEzIiB5MT0iNjEuOTUzMSIgeTI9IjYxLjk1MzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzNSIgeD0iNDYwLjUiIHk9IjgwLjE4NzUiPk5hY29zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSI0NTciIHk9Ijk1LjE3MTkiPlNlcnZlcjwvdGV4dD48cmVjdCBmaWxsPSIjOUFDRDMyIiBoZWlnaHQ9IjY4Ljk1MzEiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwIiB4PSI0NDMiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSI0NTAiIHk9IjE5NDUuNjAxNiI+JiMyNzg4MDsmIzIwODc2OyYjMjAwMTM7JiMyNDUxNTs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNDQzIiB4Mj0iNTEzIiB5MT0iMTk1Mi4zNTE2IiB5Mj0iMTk1Mi4zNTE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzUiIHg9IjQ2MC41IiB5PSIxOTcwLjU4NTkiPk5hY29zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSI0NTciIHk9IjE5ODUuNTcwMyI+U2VydmVyPC90ZXh0PjxyZWN0IGZpbGw9IiM4MDgwMDAiIGhlaWdodD0iMjguOTg0NCIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNzAiIHg9IjUyMyIgeT0iNzQuOTM3NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSI1MzAiIHk9Ijk1LjE3MTkiPiYjMjc4ODA7JiMyMDg3NjsmIzMyNDUyOyYjMjAyMTQ7PC90ZXh0PjxyZWN0IGZpbGw9IiM4MDgwMDAiIGhlaWdodD0iMjguOTg0NCIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNzAiIHg9IjUyMyIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjUzMCIgeT0iMTk0NS42MDE2Ij4mIzI3ODgwOyYjMjA4NzY7JiMzMjQ1MjsmIzIwMjE0OzwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjI4Ljk4NDQiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjkxIiB4PSI2NjcuNSIgeT0iNzQuOTM3NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc3IiB4PSI2NzQuNSIgeT0iOTUuMTcxOSI+RmVpZ25DbGllbnQ8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSIyOC45ODQ0IiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI5MSIgeD0iNjY3LjUiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc3IiB4PSI2NzQuNSIgeT0iMTk0NS42MDE2Ij5GZWlnbkNsaWVudDwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9Ijk4LjkyMTkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjExMiIgeD0iNzc3IiB5PSI1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODQiIHg9Ijc5MSIgeT0iMjUuMjM0NCI+JiMyOTA3NjsmIzI2MDI5OyYjMjAxOTU7JiMyOTcwMjsmIzMyNDUyOyYjMjAyMTQ7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9Ijc3NyIgeDI9Ijg4OSIgeTE9IjMxLjk4NDQiIHkyPSIzMS45ODQ0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzUiIHg9IjgxNS41IiB5PSI1MC4yMTg4Ij5GZWlnbjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI5OCIgeD0iNzg0IiB5PSI2NS4yMDMxIj5DaXJjdWl0QnJlYWtlcjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3MCIgeD0iNzk4IiB5PSI4MC4xODc1Ij5JbnZvY2F0aW9uPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSI4MDguNSIgeT0iOTUuMTcxOSI+SGFuZGxlcjwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9Ijk4LjkyMTkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjExMiIgeD0iNzc3IiB5PSIxOTI1LjM2NzIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4NCIgeD0iNzkxIiB5PSIxOTQ1LjYwMTYiPiYjMjkwNzY7JiMyNjAyOTsmIzIwMTk1OyYjMjk3MDI7JiMzMjQ1MjsmIzIwMjE0OzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI3NzciIHgyPSI4ODkiIHkxPSIxOTUyLjM1MTYiIHkyPSIxOTUyLjM1MTYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzNSIgeD0iODE1LjUiIHk9IjE5NzAuNTg1OSI+RmVpZ248L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iOTgiIHg9Ijc4NCIgeT0iMTk4NS41NzAzIj5DaXJjdWl0QnJlYWtlcjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3MCIgeD0iNzk4IiB5PSIyMDAwLjU1NDciPkludm9jYXRpb248L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDkiIHg9IjgwOC41IiB5PSIyMDE1LjUzOTEiPkhhbmRsZXI8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI2MyIgeD0iOTQ3LjUiIHk9IjM0Ljk2ODgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MiIgeD0iOTU4IiB5PSI1NS4yMDMxIj4mIzI5MDc2OyYjMjYwMjk7JiMyMjEyMDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iOTQ3LjUiIHgyPSIxMDEwLjUiIHkxPSI2MS45NTMxIiB5Mj0iNjEuOTUzMSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSI5NTQuNSIgeT0iODAuMTg3NSI+Q2lyY3VpdDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OSIgeD0iOTU0LjUiIHk9Ijk1LjE3MTkiPkJyZWFrZXI8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI2MyIgeD0iOTQ3LjUiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSI5NTgiIHk9IjE5NDUuNjAxNiI+JiMyOTA3NjsmIzI2MDI5OyYjMjIxMjA7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9Ijk0Ny41IiB4Mj0iMTAxMC41IiB5MT0iMTk1Mi4zNTE2IiB5Mj0iMTk1Mi4zNTE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDkiIHg9Ijk1NC41IiB5PSIxOTcwLjU4NTkiPkNpcmN1aXQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDkiIHg9Ijk1NC41IiB5PSIxOTg1LjU3MDMiPkJyZWFrZXI8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI4NCIgeD0iMTA1NyIgeT0iMzQuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjcwIiB4PSIxMDY0IiB5PSI1NS4yMDMxIj4mIzI2MDQxOyYjMjc4NjE7JiMyMjc4ODsmIzI5NzAyOyYjMjIxMjA7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjEwNTciIHgyPSIxMTQxIiB5MT0iNjEuOTUzMSIgeTI9IjYxLjk1MzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MiIgeD0iMTA3OCIgeT0iODAuMTg3NSI+TWV0aG9kPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxMDc0LjUiIHk9Ijk1LjE3MTkiPkhhbmRsZXI8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI4NCIgeD0iMTA1NyIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzAiIHg9IjEwNjQiIHk9IjE5NDUuNjAxNiI+JiMyNjA0MTsmIzI3ODYxOyYjMjI3ODg7JiMyOTcwMjsmIzIyMTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxMDU3IiB4Mj0iMTE0MSIgeTE9IjE5NTIuMzUxNiIgeTI9IjE5NTIuMzUxNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIxMDc4IiB5PSIxOTcwLjU4NTkiPk1ldGhvZDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OSIgeD0iMTA3NC41IiB5PSIxOTg1LjU3MDMiPkhhbmRsZXI8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI5MSIgeD0iMTE3OS41IiB5PSIzNC45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzAiIHg9IjExOTAiIHk9IjU1LjIwMzEiPiYjMzU4MzE7JiMyNzcxNDsmIzI1MzE4OyYjMjUxMzA7JiMyMjEyMDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTE3OS41IiB4Mj0iMTI3MC41IiB5MT0iNjEuOTUzMSIgeTI9IjYxLjk1MzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OSIgeD0iMTIwMC41IiB5PSI4MC4xODc1Ij5SZXF1ZXN0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc3IiB4PSIxMTg2LjUiIHk9Ijk1LjE3MTkiPkludGVyY2VwdG9yPC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iNjguOTUzMSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iOTEiIHg9IjExNzkuNSIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzAiIHg9IjExOTAiIHk9IjE5NDUuNjAxNiI+JiMzNTgzMTsmIzI3NzE0OyYjMjUzMTg7JiMyNTEzMDsmIzIyMTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxMTc5LjUiIHgyPSIxMjcwLjUiIHkxPSIxOTUyLjM1MTYiIHkyPSIxOTUyLjM1MTYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OSIgeD0iMTIwMC41IiB5PSIxOTcwLjU4NTkiPlJlcXVlc3Q8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzciIHg9IjExODYuNSIgeT0iMTk4NS41NzAzIj5JbnRlcmNlcHRvcjwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjY4Ljk1MzEiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9Ijk4IiB4PSIxMjgwLjUiIHk9IjM0Ljk2ODgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4NCIgeD0iMTI4Ny41IiB5PSI1NS4yMDMxIj4mIzM2MTI3OyYjMzY3MzM7JiMyMjM0MzsmIzM0OTEzOyYjMzI0NTI7JiMyMDIxNDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTI4MC41IiB4Mj0iMTM3OC41IiB5MT0iNjEuOTUzMSIgeTI9IjYxLjk1MzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4NCIgeD0iMTI4Ny41IiB5PSI4MC4xODc1Ij5Mb2FkQmFsYW5jZXI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjEzMDguNSIgeT0iOTUuMTcxOSI+Q2xpZW50PC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iNjguOTUzMSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iOTgiIHg9IjEyODAuNSIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODQiIHg9IjEyODcuNSIgeT0iMTk0NS42MDE2Ij4mIzM2MTI3OyYjMzY3MzM7JiMyMjM0MzsmIzM0OTEzOyYjMzI0NTI7JiMyMDIxNDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTI4MC41IiB4Mj0iMTM3OC41IiB5MT0iMTk1Mi4zNTE2IiB5Mj0iMTk1Mi4zNTE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODQiIHg9IjEyODcuNSIgeT0iMTk3MC41ODU5Ij5Mb2FkQmFsYW5jZXI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjEzMDguNSIgeT0iMTk4NS41NzAzIj5DbGllbnQ8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI5OCIgeD0iMTQwMC41IiB5PSIzNC45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE0MjEuNSIgeT0iNTUuMjAzMSI+JiMzNjcxODsmIzM1ODEwOyYjMzI0NTI7JiMyMDIxNDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQwMC41IiB4Mj0iMTQ5OC41IiB5MT0iNjEuOTUzMSIgeTI9IjYxLjk1MzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3MCIgeD0iMTQxNC41IiB5PSI4MC4xODc1Ij5Sb3VuZFJvYmluPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg0IiB4PSIxNDA3LjUiIHk9Ijk1LjE3MTkiPkxvYWRCYWxhbmNlcjwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjY4Ljk1MzEiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9Ijk4IiB4PSIxNDAwLjUiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSIxNDIxLjUiIHk9IjE5NDUuNjAxNiI+JiMzNjcxODsmIzM1ODEwOyYjMzI0NTI7JiMyMDIxNDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTQwMC41IiB4Mj0iMTQ5OC41IiB5MT0iMTk1Mi4zNTE2IiB5Mj0iMTk1Mi4zNTE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzAiIHg9IjE0MTQuNSIgeT0iMTk3MC41ODU5Ij5Sb3VuZFJvYmluPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg0IiB4PSIxNDA3LjUiIHk9IjE5ODUuNTcwMyI+TG9hZEJhbGFuY2VyPC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iOTguOTIxOSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iOTgiIHg9IjE1MjAuNSIgeT0iNSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSIxNTQxLjUiIHk9IjI1LjIzNDQiPiYjMjYzODE7JiMyMTE1MzsmIzIzNDU0OyYjMjAzNjM7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU2IiB4PSIxNTQxLjUiIHk9IjQwLjIxODgiPiYjMjU1NTI7JiMyMDM3OTsmIzMyNDUyOyYjMjAyMTQ7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE1MjAuNSIgeDI9IjE2MTguNSIgeTE9IjQ2Ljk2ODgiIHkyPSI0Ni45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDkiIHg9IjE1NDUiIHk9IjY1LjIwMzEiPlNlcnZpY2U8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE1NDEuNSIgeT0iODAuMTg3NSI+SW5zdGFuY2U8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODQiIHg9IjE1MjcuNSIgeT0iOTUuMTcxOSI+TGlzdFN1cHBsaWVyPC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iOTguOTIxOSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iOTgiIHg9IjE1MjAuNSIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE1NDEuNSIgeT0iMTk0NS42MDE2Ij4mIzI2MzgxOyYjMjExNTM7JiMyMzQ1NDsmIzIwMzYzOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NiIgeD0iMTU0MS41IiB5PSIxOTYwLjU4NTkiPiYjMjU1NTI7JiMyMDM3OTsmIzMyNDUyOyYjMjAyMTQ7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE1MjAuNSIgeDI9IjE2MTguNSIgeTE9IjE5NjcuMzM1OSIgeTI9IjE5NjcuMzM1OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxNTQ1IiB5PSIxOTg1LjU3MDMiPlNlcnZpY2U8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE1NDEuNSIgeT0iMjAwMC41NTQ3Ij5JbnN0YW5jZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4NCIgeD0iMTUyNy41IiB5PSIyMDE1LjUzOTEiPkxpc3RTdXBwbGllcjwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjY4Ljk1MzEiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9Ijc3IiB4PSIxNjUxIiB5PSIzNC45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE2NjEuNSIgeT0iNTUuMjAzMSI+JiMyNjM4MTsmIzIxMTUzOyYjMjE0NTc7JiMyOTYxNjs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTY1MSIgeDI9IjE3MjgiIHkxPSI2MS45NTMxIiB5Mj0iNjEuOTUzMSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxNjY1IiB5PSI4MC4xODc1Ij5TZXJ2aWNlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjYzIiB4PSIxNjU4IiB5PSI5NS4xNzE5Ij5EaXNjb3Zlcnk8L3RleHQ+PHJlY3QgZmlsbD0iI0UyRTJGMCIgaGVpZ2h0PSI2OC45NTMxIiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI3NyIgeD0iMTY1MSIgeT0iMTkyNS4zNjcyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE2NjEuNSIgeT0iMTk0NS42MDE2Ij4mIzI2MzgxOyYjMjExNTM7JiMyMTQ1NzsmIzI5NjE2OzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNjUxIiB4Mj0iMTcyOCIgeTE9IjE5NTIuMzUxNiIgeTI9IjE5NTIuMzUxNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxNjY1IiB5PSIxOTcwLjU4NTkiPlNlcnZpY2U8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjMiIHg9IjE2NTgiIHk9IjE5ODUuNTcwMyI+RGlzY292ZXJ5PC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iODMuOTM3NSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNzAiIHg9IjE3MzgiIHk9IjE5Ljk4NDQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NiIgeD0iMTc0NSIgeT0iNDAuMjE4OCI+SHR0cCYjMzI0NTI7JiMyMDIxNDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTczOCIgeDI9IjE4MDgiIHkxPSI0Ni45Njg4IiB5Mj0iNDYuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIxNzUyIiB5PSI2NS4yMDMxIj5BcGFjaGU8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjgiIHg9IjE3NTkiIHk9IjgwLjE4NzUiPkh0dHA8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjE3NTIiIHk9Ijk1LjE3MTkiPkNsaWVudDwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjgzLjkzNzUiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwIiB4PSIxNzM4IiB5PSIxOTI1LjM2NzIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NiIgeD0iMTc0NSIgeT0iMTk0NS42MDE2Ij5IdHRwJiMzMjQ1MjsmIzIwMjE0OzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNzM4IiB4Mj0iMTgwOCIgeTE9IjE5NTIuMzUxNiIgeTI9IjE5NTIuMzUxNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIxNzUyIiB5PSIxOTcwLjU4NTkiPkFwYWNoZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyOCIgeD0iMTc1OSIgeT0iMTk4NS41NzAzIj5IdHRwPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIxNzUyIiB5PSIyMDAwLjU1NDciPkNsaWVudDwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjgzLjkzNzUiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwIiB4PSIxODE4IiB5PSIxOS45ODQ0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDIiIHg9IjE4MzIiIHk9IjQwLjIxODgiPiYjMzUyOTk7JiMzMDcyMTsmIzIyMTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxODE4IiB4Mj0iMTg4OCIgeTE9IjQ2Ljk2ODgiIHkyPSI0Ni45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjE4MjUiIHk9IjY1LjIwMzEiPlJlc3BvbnNlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIxODMyIiB5PSI4MC4xODc1Ij5FbnRpdHk8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDkiIHg9IjE4MjguNSIgeT0iOTUuMTcxOSI+RGVjb2RlcjwvdGV4dD48cmVjdCBmaWxsPSIjRTJFMkYwIiBoZWlnaHQ9IjgzLjkzNzUiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwIiB4PSIxODE4IiB5PSIxOTI1LjM2NzIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MiIgeD0iMTgzMiIgeT0iMTk0NS42MDE2Ij4mIzM1Mjk5OyYjMzA3MjE7JiMyMjEyMDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTgxOCIgeDI9IjE4ODgiIHkxPSIxOTUyLjM1MTYiIHkyPSIxOTUyLjM1MTYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NiIgeD0iMTgyNSIgeT0iMTk3MC41ODU5Ij5SZXNwb25zZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MiIgeD0iMTgzMiIgeT0iMTk4NS41NzAzIj5FbnRpdHk8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDkiIHg9IjE4MjguNSIgeT0iMjAwMC41NTQ3Ij5EZWNvZGVyPC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iODMuOTM3NSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNjMiIHg9IjE4OTgiIHk9IjE5Ljk4NDQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyOCIgeD0iMTkxNS41IiB5PSI0MC4yMTg4Ij4mIzI0MzIyOyYjMjQxMjA7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQyIiB4PSIxOTA4LjUiIHk9IjU1LjIwMzEiPiYjMzUyOTk7JiMzMDcyMTsmIzIyMTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxODk4IiB4Mj0iMTk2MSIgeTE9IjYxLjk1MzEiIHkyPSI2MS45NTMxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzUiIHg9IjE5MTIiIHk9IjgwLjE4NzUiPkVycm9yPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxOTA1IiB5PSI5NS4xNzE5Ij5EZWNvZGVyPC90ZXh0PjxyZWN0IGZpbGw9IiNFMkUyRjAiIGhlaWdodD0iODMuOTM3NSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNjMiIHg9IjE4OTgiIHk9IjE5MjUuMzY3MiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI4IiB4PSIxOTE1LjUiIHk9IjE5NDUuNjAxNiI+JiMyNDMyMjsmIzI0MTIwOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MiIgeD0iMTkwOC41IiB5PSIxOTYwLjU4NTkiPiYjMzUyOTk7JiMzMDcyMTsmIzIyMTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxODk4IiB4Mj0iMTk2MSIgeTE9IjE5NjcuMzM1OSIgeTI9IjE5NjcuMzM1OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM1IiB4PSIxOTEyIiB5PSIxOTg1LjU3MDMiPkVycm9yPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ5IiB4PSIxOTA1IiB5PSIyMDAwLjU1NDciPkRlY29kZXI8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNTU4IiB4Mj0iNjAwIiB5MT0iMTM0LjgzNTkiIHkyPSIxMzQuODM1OSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjYwMCIgeDI9IjYwMCIgeTE9IjEzNC44MzU5IiB5Mj0iMTQ3LjgzNTkiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI1NTkiIHgyPSI2MDAiIHkxPSIxNDcuODM1OSIgeTI9IjE0Ny44MzU5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI1NjksMTQzLjgzNTksNTU5LDE0Ny44MzU5LDU2OSwxNTEuODM1OSw1NjUsMTQ3LjgzNTkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0MSIgeD0iNTY1IiB5PSIxMzEuMjEwOSI+RmVpZ25DbGllbnRzUmVnaXN0cmFyPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTc0LDE3NC43NSwxODQsMTc4Ljc1LDE3NCwxODIuNzUsMTc4LDE3OC43NSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iOTkiIHgyPSIxODAiIHkxPSIxNzguNzUiIHkyPSIxNzguNzUiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNyIgeD0iMTA2IiB5PSIxNzUuMTI1Ij4xPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyIiB4PSIxMTciIHk9IjE3NS4xMjUiPiYjMzMyNTg7JiMyMTE2MDsmIzI3ODgwOyYjMjA4NzY7PC90ZXh0PjxwYXRoIGQ9Ik0xOTEsMTYwLjgzNTkgTDE5MSwxODMuODM1OSBMMzExLDE4My44MzU5IEwzMTEsMTcwLjgzNTkgTDMwMSwxNjAuODM1OSBMMTkxLDE2MC44MzU5ICIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTMwMSwxNjAuODM1OSBMMzAxLDE3MC44MzU5IEwzMTEsMTcwLjgzNTkgTDMwMSwxNjAuODM1OSAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk5IiB4PSIxOTciIHk9IjE3OC4xMjUiPiYjMzA0MTc7JiMyMTU0ODtXZWImIzIxNTUxOyYjMjExNjA7JiMyMDEwNzsmIzIwMjE0OzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjMyMCwyMDUuNjY0MSwzMzAsMjA5LjY2NDEsMzIwLDIxMy42NjQxLDMyNCwyMDkuNjY0MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTg2IiB4Mj0iMzI2IiB5MT0iMjA5LjY2NDEiIHkyPSIyMDkuNjY0MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3IiB4PSIxOTMiIHk9IjIwNi4wMzkxIj4yPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyIiB4PSIyMDQiIHk9IjIwNi4wMzkxIj4mIzIxNDU3OyYjMzYyMTU7JiMyNzg4MDsmIzIwODc2OzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjQ2NiwyMzMuNTc4MSw0NzYsMjM3LjU3ODEsNDY2LDI0MS41NzgxLDQ3MCwyMzcuNTc4MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMzMyIiB4Mj0iNDcyIiB5MT0iMjM3LjU3ODEiIHkyPSIyMzcuNTc4MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3IiB4PSIzMzkiIHk9IjIzMy45NTMxIj4zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIzNTAiIHk9IjIzMy45NTMxIj4mIzI3ODgwOyYjMjA4NzY7JiMyNjM4MTsmIzIxMTUzOyYjMjM0NTQ7JiMyMDM2Mzs8L3RleHQ+PHBhdGggZD0iTTQ4MywyNTAuNTc4MSBMNDgzLDI3My41NzgxIEw1ODIsMjczLjU3ODEgTDU4MiwyNjAuNTc4MSBMNTcyLDI1MC41NzgxIEw0ODMsMjUwLjU3ODEgIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNNTcyLDI1MC41NzgxIEw1NzIsMjYwLjU3ODEgTDU4MiwyNjAuNTc4MSBMNTcyLDI1MC41NzgxICIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzgiIHg9IjQ4OSIgeT0iMjY3Ljg2NzIiPiYjMjYzODE7JiMyMTE1MzsmIzI3ODgwOyYjMjA4NzY7JiMyMzQzNjsmIzI1MTA0OzwvdGV4dD48cmVjdCBmaWxsPSIjRUVFRUVFIiBoZWlnaHQ9IjMiIHN0eWxlPSJzdHJva2U6I0VFRUVFRTtzdHJva2Utd2lkdGg6MS4wOyIgd2lkdGg9IjE5OTEiIHg9IjAiIHk9IjI5OS40NDkyIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMCIgeDI9IjE5OTEiIHkxPSIyOTkuNDQ5MiIgeTI9IjI5OS40NDkyIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMCIgeDI9IjE5OTEiIHkxPSIzMDIuNDQ5MiIgeTI9IjMwMi40NDkyIi8+PHJlY3QgZmlsbD0iI0VFRUVFRSIgaGVpZ2h0PSIyMS45MTQxIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIuMDsiIHdpZHRoPSI5MiIgeD0iOTQ5LjUiIHk9IjI4OS40OTIyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSI5NTUuNSIgeT0iMzA1Ljc4MTMiPiYjMjYzODE7JiMyMTE1MzsmIzI3ODgwOyYjMjA4NzY7JiMyMzQzNjsmIzI1MTA0OzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI1NTgiIHgyPSI2MDAiIHkxPSIzNDEuMzIwMyIgeTI9IjM0MS4zMjAzIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNjAwIiB4Mj0iNjAwIiB5MT0iMzQxLjMyMDMiIHkyPSIzNTQuMzIwMyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjU1OSIgeDI9IjYwMCIgeTE9IjM1NC4zMjAzIiB5Mj0iMzU0LjMyMDMiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjU2OSwzNTAuMzIwMyw1NTksMzU0LjMyMDMsNTY5LDM1OC4zMjAzLDU2NSwzNTQuMzIwMyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjciIHg9IjU2NSIgeT0iMzM3LjY5NTMiPjE8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTI1IiB4PSI1NzYiIHk9IjMzNy42OTUzIj4mIzI1MTk1OyYjMjU1NTE7RmVpZ25DbGllbnQmIzI1NTA5OyYjMjE0NzU7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjU1OCIgeDI9IjYwMCIgeTE9IjM4Mi4yMzQ0IiB5Mj0iMzgyLjIzNDQiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI2MDAiIHgyPSI2MDAiIHkxPSIzODIuMjM0NCIgeTI9IjM5NS4yMzQ0Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNTU5IiB4Mj0iNjAwIiB5MT0iMzk1LjIzNDQiIHkyPSIzOTUuMjM0NCIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iNTY5LDM5MS4yMzQ0LDU1OSwzOTUuMjM0NCw1NjksMzk5LjIzNDQsNTY1LDM5NS4yMzQ0IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNyIgeD0iNTY1IiB5PSIzNzguNjA5NCI+MjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjUiIHg9IjU3NiIgeT0iMzc4LjYwOTQiPiYjMzUyOTk7JiMyNjUxMjtGZWlnbkNsaWVudCYjMjU1MDk7JiMyMTQ3NTs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNTU4IiB4Mj0iNjAwIiB5MT0iNDQwLjUxOTUiIHkyPSI0NDAuNTE5NSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjYwMCIgeDI9IjYwMCIgeTE9IjQ0MC41MTk1IiB5Mj0iNDUzLjUxOTUiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI1NTkiIHgyPSI2MDAiIHkxPSI0NTMuNTE5NSIgeTI9IjQ1My41MTk1Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI1NjksNDQ5LjUxOTUsNTU5LDQ1My41MTk1LDU2OSw0NTcuNTE5NSw1NjUsNDUzLjUxOTUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3IiB4PSI1NjUiIHk9IjQyOS45Mzc1Ij4zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk5IiB4PSI1NzYiIHk9IjQyMi45ODA1Ij4mIzIxMDE5OyYjMjQzMTQ7RmVpZ25DbGllbnQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzYiIHg9IjU3NiIgeT0iNDM2Ljg5NDUiPkZhY3RvcnlCZWFuPC90ZXh0PjxwYXRoIGQ9Ik0xODcsNDA4LjIzNDQgTDE4Nyw0NTkuMjM0NCBMNTUzLDQ1OS4yMzQ0IEw1NTMsNDE4LjIzNDQgTDU0Myw0MDguMjM0NCBMMTg3LDQwOC4yMzQ0ICIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTU0Myw0MDguMjM0NCBMNTQzLDQxOC4yMzQ0IEw1NTMsNDE4LjIzNDQgTDU0Myw0MDguMjM0NCAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI4NSIgeD0iMTkzIiB5PSI0MjUuNTIzNCI+RmFjdG9yeUJlYW4mIzIwMzgxOyYjMzYxODI7RmVpZ25DaXJjdWl0QnJlYWtlclRhcmdldGVyPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI3OSIgeD0iMTkzIiB5PSI0MzkuNDM3NSI+VGFyZ2V0ZXImIzIwMzgxOyYjMzYxODI7UmVmbGVjdGl2ZUZlaWduJiMyMTAxOTsmIzI0MzE0O0pESyYjMjAxOTU7JiMyOTcwMjsmIzIzNTQ1OyYjMzU5Mzc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM0NSIgeD0iMTkzIiB5PSI0NTMuMzUxNiI+UmVmbGVjdGl2ZUZlaWduJiMyMDM4MTsmIzM2MTgyOyYjMjkwNzY7JiMyNjAyOTtJbnZvY2F0aW9uSGFuZGxlciYjMjM0NTQ7JiMyOTYxNjsmIzI2MDQxOyYjMjc4NjE7JiMyMDE5NTsmIzI5NzAyOzwvdGV4dD48cmVjdCBmaWxsPSIjRUVFRUVFIiBoZWlnaHQ9IjMiIHN0eWxlPSJzdHJva2U6I0VFRUVFRTtzdHJva2Utd2lkdGg6MS4wOyIgd2lkdGg9IjE5OTEiIHg9IjAiIHk9IjQ4NC45MzM2Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMCIgeDI9IjE5OTEiIHkxPSI0ODQuOTMzNiIgeTI9IjQ4NC45MzM2Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMCIgeDI9IjE5OTEiIHkxPSI0ODcuOTMzNiIgeTI9IjQ4Ny45MzM2Ii8+PHJlY3QgZmlsbD0iI0VFRUVFRSIgaGVpZ2h0PSIyMS45MTQxIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIuMDsiIHdpZHRoPSIxODEiIHg9IjkwNSIgeT0iNDc0Ljk3NjYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTY3IiB4PSI5MTEiIHk9IjQ5MS4yNjU2Ij5GZWlnbkNsaWVudCBCZWFuICYjMjc4ODA7JiMyMDgzNzsmIzIzNDM2OyYjMjUxMDQ7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjcxMyIgeDI9Ijc1NSIgeTE9IjUyNi44MDQ3IiB5Mj0iNTI2LjgwNDciLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI3NTUiIHgyPSI3NTUiIHkxPSI1MjYuODA0NyIgeTI9IjUzOS44MDQ3Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iNzE0IiB4Mj0iNzU1IiB5MT0iNTM5LjgwNDciIHkyPSI1MzkuODA0NyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iNzI0LDUzNS44MDQ3LDcxNCw1MzkuODA0Nyw3MjQsNTQzLjgwNDcsNzIwLDUzOS44MDQ3IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNyIgeD0iNzIwIiB5PSI1MjMuMTc5NyI+MTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4MCIgeD0iNzMxIiB5PSI1MjMuMTc5NyI+QmVhbiYjMjU1MDk7JiMyMTQ3NTsmIzM1ODQzOyYjMjk5OTI7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODIxLDU4MC42MzI4LDgzMSw1ODQuNjMyOCw4MjEsNTg4LjYzMjgsODI1LDU4NC42MzI4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI3MTMiIHgyPSI4MjciIHkxPSI1ODQuNjMyOCIgeTI9IjU4NC42MzI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjciIHg9IjcyMCIgeT0iNTgxLjAwNzgiPjI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzgiIHg9IjczMSIgeT0iNTgxLjAwNzgiPiYjMjAxOTU7JiMyOTcwMjsmIzI2MDQxOyYjMjc4NjE7JiMzNTg0MzsmIzI5OTkyOzwvdGV4dD48cGF0aCBkPSJNODM4LDU1Mi44MDQ3IEw4MzgsNjAzLjgwNDcgTDEwNTQsNjAzLjgwNDcgTDEwNTQsNTYyLjgwNDcgTDEwNDQsNTUyLjgwNDcgTDgzOCw1NTIuODA0NyAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjxwYXRoIGQ9Ik0xMDQ0LDU1Mi44MDQ3IEwxMDQ0LDU2Mi44MDQ3IEwxMDU0LDU2Mi44MDQ3IEwxMDQ0LDU1Mi44MDQ3ICIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTg0IiB4PSI4NDQiIHk9IjU3MC4wOTM4Ij4mIzIwMzgxOyYjMzYxODI7RmFsbGJhY2smIzI0MDM3OyYjMjEzNzg7JiMyMTAxOTsmIzI0MzE0OyYjMzg0Nzc7JiMzMjQyMzsmIzIwOTg5OyYjMjU5Njg7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE4MiIgeD0iODQ0IiB5PSI1ODQuMDA3OCI+JiMyMDM4MTsmIzM2MTgyOyYjMjkwNzY7JiMyNjAyOTsmIzIyMTIwOyYjMjU5MDM7JiMyNTM0NTsmIzI5MDc2OyYjMjYwMjk7JiMzODQ3NzsmIzMyNDIzOyYjMjE2NDQ7JiMzODQ4MDsmIzI3OTY5OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOTUiIHg9Ijg0NCIgeT0iNTk3LjkyMTkiPiYjMjAzODE7JiMzNjE4MjsmIzI2MDQxOyYjMjc4NjE7JiMyMjc4ODsmIzI5NzAyOyYjMjIxMjA7JiMzNjgyNzsmIzM0ODkyOyYjMjA4NTU7JiMyMDMwNzsmIzIzNDU0OyYjMjk2MTY7JiMzNTg0MzsmIzI5OTkyOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI4MzMiIHgyPSI4NzUiIHkxPSI2NDMuMzc1IiB5Mj0iNjQzLjM3NSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9Ijg3NSIgeDI9Ijg3NSIgeTE9IjY0My4zNzUiIHkyPSI2NTYuMzc1Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iODM0IiB4Mj0iODc1IiB5MT0iNjU2LjM3NSIgeTI9IjY1Ni4zNzUiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0NCw2NTIuMzc1LDgzNCw2NTYuMzc1LDg0NCw2NjAuMzc1LDg0MCw2NTYuMzc1IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNyIgeD0iODQwIiB5PSI2MzIuNzkzIj4zPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSI4NTEiIHk9IjYyNS44MzU5Ij4mIzMzNzE5OyYjMjE0NjI7JiMyOTA3NjsmIzI2MDI5OyYjMjIxMjA7JiMyMTY0NDs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjUiIHg9Ijg1MSIgeT0iNjM5Ljc1Ij4mIzI2MDQxOyYjMjc4NjE7JiMyMjc4ODsmIzI5NzAyOyYjMjIxMjA7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iOTY3LDY4My4yODkxLDk3Nyw2ODcuMjg5MSw5NjcsNjkxLjI4OTEsOTcxLDY4Ny4yODkxIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI4MzMiIHgyPSI5NzMiIHkxPSI2ODcuMjg5MSIgeTI9IjY4Ny4yODkxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjciIHg9Ijg0MCIgeT0iNjgzLjY2NDEiPjQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjUiIHg9Ijg1MSIgeT0iNjgzLjY2NDEiPiYjMzU4NDM7JiMyOTk5MjsmIzI5MDc2OyYjMjYwMjk7JiMyMjEyMDs8L3RleHQ+PHBhdGggZD0iTTk4NCw2NjkuMzc1IEw5ODQsNjkyLjM3NSBMMTE4OCw2OTIuMzc1IEwxMTg4LDY3OS4zNzUgTDExNzgsNjY5LjM3NSBMOTg0LDY2OS4zNzUgIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMTE3OCw2NjkuMzc1IEwxMTc4LDY3OS4zNzUgTDExODgsNjc5LjM3NSBMMTE3OCw2NjkuMzc1ICIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTgzIiB4PSI5OTAiIHk9IjY4Ni42NjQxIj4mIzM4NDgwOyYjMjc5Njk7JiMyMjc4ODsmIzI5NzAyO29yJiMyMDE5NTsmIzI5NzAyOyYjMzU4NDM7JiMyOTk5MjsmIzI2MDQxOyYjMjc4NjE7JiMyMjc4ODsmIzI5NzAyOyYjMjIxMjA7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTA4Nyw3MTQuMjAzMSwxMDk3LDcxOC4yMDMxLDEwODcsNzIyLjIwMzEsMTA5MSw3MTguMjAzMSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iOTc5IiB4Mj0iMTA5MyIgeTE9IjcxOC4yMDMxIiB5Mj0iNzE4LjIwMzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNyIgeD0iOTg2IiB5PSI3MTQuNTc4MSI+NTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iOTk3IiB5PSI3MTQuNTc4MSI+JiMzNTg0MzsmIzI5OTkyOyYjMjU1MDk7JiMyMTQ3NTsmIzIzNDU0OyYjMjk2MTY7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjEwOTkiIHgyPSIxMTQxIiB5MT0iNzYwLjAzMTMiIHkyPSI3NjAuMDMxMyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjExNDEiIHgyPSIxMTQxIiB5MT0iNzYwLjAzMTMiIHkyPSI3NzMuMDMxMyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjExMDAiIHgyPSIxMTQxIiB5MT0iNzczLjAzMTMiIHkyPSI3NzMuMDMxMyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTExMCw3NjkuMDMxMywxMTAwLDc3My4wMzEzLDExMTAsNzc3LjAzMTMsMTEwNiw3NzMuMDMxMyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjciIHg9IjExMDYiIHk9Ijc0OS40NDkyIj42PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIxMTE3IiB5PSI3NDIuNDkyMiI+JiMzMjQ1MjsmIzM1MDEzOyYjMzU4MzE7JiMyNzcxNDsmIzIxNDQyOyYjMjU5Njg7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIxMTE3IiB5PSI3NTYuNDA2MyI+JiMyMTAxOTsmIzI0MzE0OyYjMzczMjU7JiMzNTc5NzsmIzMyNDUyOyYjMjAyMTQ7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTIxMyw3OTkuOTQ1MywxMjIzLDgwMy45NDUzLDEyMTMsODA3Ljk0NTMsMTIxNyw4MDMuOTQ1MyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTA5OSIgeDI9IjEyMTkiIHkxPSI4MDMuOTQ1MyIgeTI9IjgwMy45NDUzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjciIHg9IjExMDYiIHk9IjgwMC4zMjAzIj43PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkxIiB4PSIxMTE3IiB5PSI4MDAuMzIwMyI+JiMyMzU0NTsmIzM1ODMxOyYjMjc3MTQ7JiMyNTMxODsmIzI1MTMwOyYjMjI2ODY7JiMyNDM3ODs8L3RleHQ+PHBhdGggZD0iTTEyMzAsNzg2LjAzMTMgTDEyMzAsODA5LjAzMTMgTDEzNzcsODA5LjAzMTMgTDEzNzcsNzk2LjAzMTMgTDEzNjcsNzg2LjAzMTMgTDEyMzAsNzg2LjAzMTMgIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMTM2Nyw3ODYuMDMxMyBMMTM2Nyw3OTYuMDMxMyBMMTM3Nyw3OTYuMDMxMyBMMTM2Nyw3ODYuMDMxMyAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEyNiIgeD0iMTIzNiIgeT0iODAzLjMyMDMiPiYjMjAzODE7JiMzNjE4MjtSZXRyeWVyJiMyNTkwMzsmIzI1MzQ1OyYjMzczMjU7JiMzNTc5Nzs8L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxMzE3LjUsODMwLjg1OTQsMTMyNy41LDgzNC44NTk0LDEzMTcuNSw4MzguODU5NCwxMzIxLjUsODM0Ljg1OTQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjEwOTkiIHgyPSIxMzIzLjUiIHkxPSI4MzQuODU5NCIgeTI9IjgzNC44NTk0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjciIHg9IjExMDYiIHk9IjgzMS4yMzQ0Ij44PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyIiB4PSIxMTE3IiB5PSI4MzEuMjM0NCI+JiMzNTgzMTsmIzI3NzE0OyYjMzU4NDM7JiMyOTk5Mjs8L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNDM3LjUsODYxLjc3MzQsMTQ0Ny41LDg2NS43NzM0LDE0MzcuNSw4NjkuNzczNCwxNDQxLjUsODY1Ljc3MzQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjEzMjkuNSIgeDI9IjE0NDMuNSIgeTE9Ijg2NS43NzM0IiB5Mj0iODY1Ljc3MzQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNyIgeD0iMTMzNi41IiB5PSI4NjIuMTQ4NCI+OTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1MiIgeD0iMTM0Ny41IiB5PSI4NjIuMTQ4NCI+JiMzMzcxOTsmIzIxNDYyOyYjMjM0NTQ7JiMyMDM2Mzs8L3RleHQ+PHBhdGggZD0iTTE0NTQsODQ3Ljg1OTQgTDE0NTQsODcwLjg1OTQgTDE2MDUsODcwLjg1OTQgTDE2MDUsODU3Ljg1OTQgTDE1OTUsODQ3Ljg1OTQgTDE0NTQsODQ3Ljg1OTQgIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMTU5NSw4NDcuODU5NCBMMTU5NSw4NTcuODU5NCBMMTYwNSw4NTcuODU5NCBMMTU5NSw4NDcuODU5NCAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzMCIgeD0iMTQ2MCIgeT0iODY1LjE0ODQiPiYjMjU5MDM7JiMyNTM0NTsmIzM2NzE4OyYjMzU4MTA7JiMzNjEyNzsmIzM2NzMzOyYjMjIzNDM7JiMzNDkxMzsmIzMxNTc0OyYjMzAwNTM7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTU1Ny41LDkwMi42NDQ1LDE1NjcuNSw5MDYuNjQ0NSwxNTU3LjUsOTEwLjY0NDUsMTU2MS41LDkwNi42NDQ1IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDQ5LjUiIHgyPSIxNTYzLjUiIHkxPSI5MDYuNjQ0NSIgeTI9IjkwNi42NDQ1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIxNDU2LjUiIHk9IjkwMy4wMTk1Ij4xMDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iMTQ3NC41IiB5PSI5MDMuMDE5NSI+JiMzMzcxOTsmIzIxNDYyOyYjMjM0NTQ7JiMyMDM2MzsmIzIxMDE1OyYjMzQ5MjA7PC90ZXh0PjxwYXRoIGQ9Ik0xNTc0LDg4MS43NzM0IEwxNTc0LDkxOC43NzM0IEwxODY4LDkxOC43NzM0IEwxODY4LDg5MS43NzM0IEwxODU4LDg4MS43NzM0IEwxNTc0LDg4MS43NzM0ICIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTE4NTgsODgxLjc3MzQgTDE4NTgsODkxLjc3MzQgTDE4NjgsODkxLjc3MzQgTDE4NTgsODgxLjc3MzQgIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMDgiIHg9IjE1ODAiIHk9Ijg5OS4wNjI1Ij4mIzI1OTAzOyYjMjUzNDU7JiMzMjUzMTsmIzIzMzg0OyYjMzI0NTI7JiMyMDIxNDsmIzM4NjU2OyYjMzUyMDE7JiMyNDg2MzsmIzMwNjkzOyYjMjE0NjQ7JiMyNjM1NjsmIzI2MzU2OyYjMjYwMzI7JiMzMjUzMTsmIzIzMzg0OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyNzMiIHg9IjE1ODAiIHk9IjkxMi45NzY2Ij4mIzY1MjkyOyYjMjU5MDM7JiMyNTM0NTt6b25lKCYjMjEzMDY7JiMyMjQ5NTspJiM2NTI5MjtIaW50KCYjMjY2MzE7JiMzNTc4MjspJiM2NTI5MjsmIzIwNTgxOyYjMjQyNDc7JiMyNjgxNjsmIzI2NTk3OyYjMzY4MDc7JiMyODM4ODs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTU2OS41IiB4Mj0iMTYxMS41IiB5MT0iOTQ0LjUxNTYiIHkyPSI5NDQuNTE1NiIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjE2MTEuNSIgeDI9IjE2MTEuNSIgeTE9Ijk0NC41MTU2IiB5Mj0iOTU3LjUxNTYiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNTcwLjUiIHgyPSIxNjExLjUiIHkxPSI5NTcuNTE1NiIgeTI9Ijk1Ny41MTU2Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNTgwLjUsOTUzLjUxNTYsMTU3MC41LDk1Ny41MTU2LDE1ODAuNSw5NjEuNTE1NiwxNTc2LjUsOTU3LjUxNTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTU3Ni41IiB5PSI5NDAuODkwNiI+MTE8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTIiIHg9IjE1OTQuNSIgeT0iOTQwLjg5MDYiPiYjMjY1OTc7JiMzNTgxMDsmIzMyNTMxOyYjMjMzODQ7PC90ZXh0PjxwYXRoIGQ9Ik0xMCw5NzIuNTE1NiBMNzQsOTcyLjUxNTYgTDc0LDk3OC40Mjk3IEw2NCw5ODguNDI5NyBMMTAsOTg4LjQyOTcgTDEwLDk3Mi41MTU2ICIgZmlsbD0iI0VFRUVFRSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7Ii8+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyODYuOTY4OCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7IiB3aWR0aD0iMTcyOCIgeD0iMTAiIHk9Ijk3Mi41MTU2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5IiB4PSIyNSIgeT0iOTg1LjgwNDciPmFsdDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjciIHg9Ijg5IiB5PSI5ODQuOTE0MSI+WyYjMzI1MzE7JiMyMzM4NDsmIzE5OTgxOyYjMjMzODQ7JiMyMjMxMjtdPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY3Ny41LDEwMDQuMzQzOCwxNjg3LjUsMTAwOC4zNDM4LDE2NzcuNSwxMDEyLjM0MzgsMTY4MS41LDEwMDguMzQzOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTU2OS41IiB4Mj0iMTY4My41IiB5MT0iMTAwOC4zNDM4IiB5Mj0iMTAwOC4zNDM4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIxNTc2LjUiIHk9IjEwMDQuNzE4OCI+MTI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjYiIHg9IjE1OTQuNSIgeT0iMTAwNC43MTg4Ij4mIzM1ODQzOyYjMjk5OTI7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTk3LDEwMzIuMjU3OCwxODcsMTAzNi4yNTc4LDE5NywxMDQwLjI1NzgsMTkzLDEwMzYuMjU3OCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTkxIiB4Mj0iMTY4OC41IiB5MT0iMTAzNi4yNTc4IiB5Mj0iMTAzNi4yNTc4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIyMDMiIHk9IjEwMzIuNjMyOCI+MTM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzgiIHg9IjIyMSIgeT0iMTAzMi42MzI4Ij4mIzI2NTk3OyYjMzU4MTA7JiMyNjM4MTsmIzIxMTUzOyYjMjM0NTQ7JiMyMDM2Mzs8L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIzMjAsMTA2MC4xNzE5LDMzMCwxMDY0LjE3MTksMzIwLDEwNjguMTcxOSwzMjQsMTA2NC4xNzE5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxODYiIHgyPSIzMjYiIHkxPSIxMDY0LjE3MTkiIHkyPSIxMDY0LjE3MTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjE5MyIgeT0iMTA2MC41NDY5Ij4xNDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iMjExIiB5PSIxMDYwLjU0NjkiPiYjMjY1OTc7JiMzNTgxMDsmIzI2MzgxOyYjMjExNTM7JiMyMzQ1NDsmIzIwMzYzOzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjQ2NiwxMDg4LjA4NTksNDc2LDEwOTIuMDg1OSw0NjYsMTA5Ni4wODU5LDQ3MCwxMDkyLjA4NTkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjMzMiIgeDI9IjQ3MiIgeTE9IjEwOTIuMDg1OSIgeTI9IjEwOTIuMDg1OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMzM5IiB5PSIxMDg4LjQ2MDkiPjE1PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIzNTciIHk9IjEwODguNDYwOSI+JiMzNTc0NjsmIzM4NDA1OyYjMjYzODE7JiMyMTE1MzsmIzIxNDY0OyYjMjYzNTY7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMzQzLDExMzkuODcxMSwzMzMsMTE0My44NzExLDM0MywxMTQ3Ljg3MTEsMzM5LDExNDMuODcxMSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjMzNyIgeDI9IjQ3NyIgeTE9IjExNDMuODcxMSIgeTI9IjExNDMuODcxMSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMzQ5IiB5PSIxMTQwLjI0NjEiPjE2PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwNCIgeD0iMzY3IiB5PSIxMTQwLjI0NjEiPiYjMzY4MjA7JiMyMjIzODsmIzI0NDAzOyYjMjEwNjk7JiMyNjM4MTsmIzIxMTUzOyYjMjEwMTU7JiMzNDkyMDs8L3RleHQ+PHBhdGggZD0iTTIwLDExMDUuMDg1OSBMMjAsMTE3MC4wODU5IEwzMjcsMTE3MC4wODU5IEwzMjcsMTExNS4wODU5IEwzMTcsMTEwNS4wODU5IEwyMCwxMTA1LjA4NTkgIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMzE3LDExMDUuMDg1OSBMMzE3LDExMTUuMDg1OSBMMzI3LDExMTUuMDg1OSBMMzE3LDExMDUuMDg1OSAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5NSIgeD0iMjYiIHk9IjExMjIuMzc1Ij4mIzIxMTYwOyYjMjQ1Nzc7JiMyNDg2MzsmIzMwNjkzOyYjMjYzODE7JiMyMTE1MzsmIzIxNDY0OyYjMjExNjA7JiM2NTI5MjsmIzI2MzU2OyYjMjYwMzI7JiMzMjUzMTsmIzIzMzg0OyYjMjA0NDk7JiMyNDY4Nzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTk1IiB4PSIyNiIgeT0iMTEzNi4yODkxIj4mIzMwNDE3OyYjMjE1NDg7JiMzNjgzMDsmIzI1NTA5OyYjNjUyOTI7JiMzNzMyNTsmIzM2ODMwOyYjMjAxMDc7JiMyMDIxNDsmIzY1MjkyOyYjMzUzMDI7JiMyMTQ1NzsmIzMwNDE3OyYjMjE1NDg7JiMzMjc3Mzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjg2IiB4PSIyNiIgeT0iMTE1MC4yMDMxIj4mIzIwMzgxOyYjMzYxODI7UmVkb1NjaGVkdWxlZFRhc2smIzIzNDUwOyYjMjYxMDI7JiMzNTMwMjsmIzIxNDU3OyYjMzczMjU7JiMyNjAzMjsmIzI3ODgwOyYjMjA4NzY7JiMyMTY0NDsmIzM1NzQ2OyYjMzg0MDU7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE3NiIgeD0iMjYiIHk9IjExNjQuMTE3MiI+JiMyMjc4ODsmIzI5NzAyOyYjMjYzODE7JiMyMTE1MzsmIzMxNDcxOyYjMjU1MDY7JiMyNzk2MzsmIzM1ODMxOyYjMjc3MTQ7KDIwUyYjMzEzNTQ7JiMzODM4NjspPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTk3LDExOTEuNjU2MywxODcsMTE5NS42NTYzLDE5NywxMTk5LjY1NjMsMTkzLDExOTUuNjU2MyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjE5MSIgeDI9IjMzMSIgeTE9IjExOTUuNjU2MyIgeTI9IjExOTUuNjU2MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMjAzIiB5PSIxMTkyLjAzMTMiPjE3PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwNCIgeD0iMjIxIiB5PSIxMTkyLjAzMTMiPiYjMzY4MjA7JiMyMjIzODsmIzI0NDAzOyYjMjEwNjk7JiMyNjM4MTsmIzIxMTUzOyYjMjEwMTU7JiMzNDkyMDs8L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNjc3LjUsMTIxOS41NzAzLDE2ODcuNSwxMjIzLjU3MDMsMTY3Ny41LDEyMjcuNTcwMywxNjgxLjUsMTIyMy41NzAzIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDtzdHJva2UtZGFzaGFycmF5OjIuMCwyLjA7IiB4MT0iMTg2IiB4Mj0iMTY4My41IiB5MT0iMTIyMy41NzAzIiB5Mj0iMTIyMy41NzAzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIxOTMiIHk9IjEyMTkuOTQ1MyI+MTg8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA0IiB4PSIyMTEiIHk9IjEyMTkuOTQ1MyI+JiMzNjgyMDsmIzIyMjM4OyYjMjQ0MDM7JiMyMTA2OTsmIzI2MzgxOyYjMjExNTM7JiMyMTAxNTsmIzM0OTIwOzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE1ODAuNSwxMjQ3LjQ4NDQsMTU3MC41LDEyNTEuNDg0NCwxNTgwLjUsMTI1NS40ODQ0LDE1NzYuNSwxMjUxLjQ4NDQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSIxNTc0LjUiIHgyPSIxNjg4LjUiIHkxPSIxMjUxLjQ4NDQiIHkyPSIxMjUxLjQ4NDQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjE1ODYuNSIgeT0iMTI0Ny44NTk0Ij4xOTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iMTYwNC41IiB5PSIxMjQ3Ljg1OTQiPiYjMzY4MjA7JiMyMjIzODsmIzIzNDU0OyYjMjAzNjM7JiMyMTAxNTsmIzM0OTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDQ5LjUiIHgyPSIxNDkxLjUiIHkxPSIxMjg2LjM5ODQiIHkyPSIxMjg2LjM5ODQiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDkxLjUiIHgyPSIxNDkxLjUiIHkxPSIxMjg2LjM5ODQiIHkyPSIxMjk5LjM5ODQiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxNDUwLjUiIHgyPSIxNDkxLjUiIHkxPSIxMjk5LjM5ODQiIHkyPSIxMjk5LjM5ODQiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0NjAuNSwxMjk1LjM5ODQsMTQ1MC41LDEyOTkuMzk4NCwxNDYwLjUsMTMwMy4zOTg0LDE0NTYuNSwxMjk5LjM5ODQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTQ1Ni41IiB5PSIxMjgyLjc3MzQiPjIwPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIxNDc0LjUiIHk9IjEyODIuNzczNCI+JiMzNjcxODsmIzM1ODEwOyYjMzM3MTk7JiMyMTQ2MjsmIzIzNDU0OyYjMjAzNjM7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTM0MC41LDEzMjMuMzEyNSwxMzMwLjUsMTMyNy4zMTI1LDEzNDAuNSwxMzMxLjMxMjUsMTMzNi41LDEzMjcuMzEyNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjEzMzQuNSIgeDI9IjE0NDguNSIgeTE9IjEzMjcuMzEyNSIgeTI9IjEzMjcuMzEyNSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTM0Ni41IiB5PSIxMzIzLjY4NzUiPjIxPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIxMzY0LjUiIHk9IjEzMjMuNjg3NSI+JiMzNjgyMDsmIzIyMjM4OyYjMjM0NTQ7JiMyMDM2MzsmIzIwNDQ5OyYjMjQ2ODc7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTc2MSwxMzU0LjIyNjYsMTc3MSwxMzU4LjIyNjYsMTc2MSwxMzYyLjIyNjYsMTc2NSwxMzU4LjIyNjYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjEzMjkuNSIgeDI9IjE3NjciIHkxPSIxMzU4LjIyNjYiIHkyPSIxMzU4LjIyNjYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjEzMzYuNSIgeT0iMTM1NC42MDE2Ij4yMjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iMTM1NC41IiB5PSIxMzU0LjYwMTYiPiYjMjE0NTc7JiMzNjIxNTsmIzI2MzgxOyYjMjExNTM7JiMzNTg0MzsmIzI5OTkyOzwvdGV4dD48cGF0aCBkPSJNMTc3OCwxMzQwLjMxMjUgTDE3NzgsMTM2My4zMTI1IEwxODk3LDEzNjMuMzEyNSBMMTg5NywxMzUwLjMxMjUgTDE4ODcsMTM0MC4zMTI1IEwxNzc4LDEzNDAuMzEyNSAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjxwYXRoIGQ9Ik0xODg3LDEzNDAuMzEyNSBMMTg4NywxMzUwLjMxMjUgTDE4OTcsMTM1MC4zMTI1IEwxODg3LDEzNDAuMzEyNSAiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk4IiB4PSIxNzg0IiB5PSIxMzU3LjYwMTYiPiYjMjU5MDM7JiMyNTM0NTtIdHRwICYjMzY4MzA7JiMyNTUwOTsmIzI3NzQ0OzwvdGV4dD48cGF0aCBkPSJNNjU3LjUsMTM3Ni4yMjY2IEw3MjEuNSwxMzc2LjIyNjYgTDcyMS41LDEzODIuMTQwNiBMNzExLjUsMTM5Mi4xNDA2IEw2NTcuNSwxMzkyLjE0MDYgTDY1Ny41LDEzNzYuMjI2NiAiIGZpbGw9IiNFRUVFRUUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41OyIvPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iNTMzLjE0MDYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41OyIgd2lkdGg9IjEzMjMuNSIgeD0iNjU3LjUiIHk9IjEzNzYuMjI2NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOSIgeD0iNjcyLjUiIHk9IjEzODkuNTE1NiI+YWx0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NiIgeD0iNzM2LjUiIHk9IjEzODguNjI1Ij5bJiMzNTgzMTsmIzI3NzE0OyYjMjUxMDQ7JiMyMTE1MTtdPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTM0MC41LDE0MDguMDU0NywxMzMwLjUsMTQxMi4wNTQ3LDEzNDAuNSwxNDE2LjA1NDcsMTMzNi41LDE0MTIuMDU0NyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjEzMzQuNSIgeDI9IjE3NzIiIHkxPSIxNDEyLjA1NDciIHkyPSIxNDEyLjA1NDciLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjEzNDYuNSIgeT0iMTQwOC40Mjk3Ij4yMzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDMiIHg9IjEzNjQuNSIgeT0iMTQwOC40Mjk3Ij4mIzM1ODQzOyYjMjk5OTI7JiMyNjM4MTsmIzIxMTUzOyYjNjUyOTI7JiMzNjgyMDsmIzIyMjM4OyYjMjUxMDQ7JiMyMTE1MTsmIzIxNzA5OyYjMjQyMTI7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTExMCwxNDM1Ljk2ODgsMTEwMCwxNDM5Ljk2ODgsMTExMCwxNDQzLjk2ODgsMTEwNiwxNDM5Ljk2ODgiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSIxMTA0IiB4Mj0iMTMyOC41IiB5MT0iMTQzOS45Njg4IiB5Mj0iMTQzOS45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIxMTE2IiB5PSIxNDM2LjM0MzgiPjI0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIxMTM0IiB5PSIxNDM2LjM0MzgiPiYjMzY4MjA7JiMyMjIzODsmIzI1MTA0OyYjMjExNTE7JiMyMTcwOTsmIzI0MjEyOzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE4NDEsMTQ2My44ODI4LDE4NTEsMTQ2Ny44ODI4LDE4NDEsMTQ3MS44ODI4LDE4NDUsMTQ2Ny44ODI4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxMDk5IiB4Mj0iMTg0NyIgeTE9IjE0NjcuODgyOCIgeTI9IjE0NjcuODgyOCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTEwNiIgeT0iMTQ2NC4yNTc4Ij4yNTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNTYiIHg9IjExMjQiIHk9IjE0NjQuMjU3OCI+JiMyMzU0NTsmIzI1MTA0OyYjMjExNTE7JiMzNjgyMDsmIzIyMjM4OyYjMjU5Njg7JiMyNTQ1NDsmIzM1Mjk5OyYjMzA3MjE7JiMyMDAyNjsmIzIzNTQ1OyYjMzU5Mzc7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTExMCwxNDkxLjc5NjksMTEwMCwxNDk1Ljc5NjksMTExMCwxNDk5Ljc5NjksMTEwNiwxNDk1Ljc5NjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSIxMTA0IiB4Mj0iMTg1MiIgeTE9IjE0OTUuNzk2OSIgeTI9IjE0OTUuNzk2OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTExNiIgeT0iMTQ5Mi4xNzE5Ij4yNjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDQiIHg9IjExMzQiIHk9IjE0OTIuMTcxOSI+JiMzNjgyMDsmIzIyMjM4OyYjMzUyOTk7JiMzMDcyMTsmIzIxNTE4OyYjMzAzNDA7JiMyMzU0NTsmIzM1OTM3OzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijk5MCwxNTE5LjcxMDksOTgwLDE1MjMuNzEwOSw5OTAsMTUyNy43MTA5LDk4NiwxNTIzLjcxMDkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSI5ODQiIHgyPSIxMDk4IiB5MT0iMTUyMy43MTA5IiB5Mj0iMTUyMy43MTA5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSI5OTYiIHk9IjE1MjAuMDg1OSI+Mjc8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzgiIHg9IjEwMTQiIHk9IjE1MjAuMDg1OSI+JiMzNjgyMDsmIzIyMjM4OyYjMjUxMDQ7JiMyMTE1MTsmIzIxNzA5OyYjMjQyMTI7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iOTY3LDE1NDcuNjI1LDk3NywxNTUxLjYyNSw5NjcsMTU1NS42MjUsOTcxLDE1NTEuNjI1IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSI4MzMiIHgyPSI5NzMiIHkxPSIxNTUxLjYyNSIgeTI9IjE1NTEuNjI1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSI4NDAiIHk9IjE1NDgiPjI4PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwNCIgeD0iODU4IiB5PSIxNTQ4Ij4mIzI2MzU2OyYjMjYwMzI7JiMyNTUwOTsmIzIxNDc1OyYjMzU4NDM7JiMyOTk5MjsmIzMyNDc5OyYjMzU3NDU7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iNzI0LDE1NzUuNTM5MSw3MTQsMTU3OS41MzkxLDcyNCwxNTgzLjUzOTEsNzIwLDE1NzkuNTM5MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjcxOCIgeDI9IjgzMiIgeTE9IjE1NzkuNTM5MSIgeTI9IjE1NzkuNTM5MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iNzMwIiB5PSIxNTc1LjkxNDEiPjI5PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSI3NDgiIHk9IjE1NzUuOTE0MSI+JiMzNjgyMDsmIzIyMjM4OyYjMzU4NDM7JiMyOTk5MjsmIzMyNDY3OyYjMjY1MjQ7PC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSI2NTcuNSIgeDI9IjE5ODEiIHkxPSIxNTg4LjUzOTEiIHkyPSIxNTg4LjUzOTEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTYiIHg9IjY2Mi41IiB5PSIxNTk4LjkzNzUiPlsmIzM1ODMxOyYjMjc3MTQ7JiMyMjgzMzsmIzM2MTMzO108L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxMzQwLjUsMTYxNy4yMjY2LDEzMzAuNSwxNjIxLjIyNjYsMTM0MC41LDE2MjUuMjI2NiwxMzM2LjUsMTYyMS4yMjY2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDtzdHJva2UtZGFzaGFycmF5OjIuMCwyLjA7IiB4MT0iMTMzNC41IiB4Mj0iMTc3MiIgeTE9IjE2MjEuMjI2NiIgeTI9IjE2MjEuMjI2NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTM0Ni41IiB5PSIxNjE3LjYwMTYiPjMwPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0MyIgeD0iMTM2NC41IiB5PSIxNjE3LjYwMTYiPiYjMzU4NDM7JiMyOTk5MjsmIzI2MzgxOyYjMjExNTM7JiM2NTI5MjsmIzM2ODIwOyYjMjIyMzg7JiMzODE2OTsmIzM1ODIzOyYjMjE3MDk7JiMyNDIxMjs8L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxMTEwLDE2NDUuMTQwNiwxMTAwLDE2NDkuMTQwNiwxMTEwLDE2NTMuMTQwNiwxMTA2LDE2NDkuMTQwNiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjExMDQiIHgyPSIxMzI4LjUiIHkxPSIxNjQ5LjE0MDYiIHkyPSIxNjQ5LjE0MDYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjExMTYiIHk9IjE2NDUuNTE1NiI+MzE8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzgiIHg9IjExMzQiIHk9IjE2NDUuNTE1NiI+JiMzNjgyMDsmIzIyMjM4OyYjMzgxNjk7JiMzNTgyMzsmIzIxNzA5OyYjMjQyMTI7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTkxNy41LDE2NzMuMDU0NywxOTI3LjUsMTY3Ny4wNTQ3LDE5MTcuNSwxNjgxLjA1NDcsMTkyMS41LDE2NzcuMDU0NyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTA5OSIgeDI9IjE5MjMuNSIgeTE9IjE2NzcuMDU0NyIgeTI9IjE2NzcuMDU0NyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iMTEwNiIgeT0iMTY3My40Mjk3Ij4zMjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI5MSIgeD0iMTEyNCIgeT0iMTY3My40Mjk3Ij4mIzIzNTQ1OyYjMzgxNjk7JiMzNTgyMzsmIzIwNDQ5OyYjMjQ2ODc7JiMzNTI5OTsmIzMwNzIxOzwvdGV4dD48cGF0aCBkPSJNMTA0NywxNjkyLjA1NDcgTDExMTEsMTY5Mi4wNTQ3IEwxMTExLDE2OTcuOTY4OCBMMTEwMSwxNzA3Ljk2ODggTDEwNDcsMTcwNy45Njg4IEwxMDQ3LDE2OTIuMDU0NyAiIGZpbGw9IiNFRUVFRUUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41OyIvPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iOTguNjU2MyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7IiB3aWR0aD0iOTI0IiB4PSIxMDQ3IiB5PSIxNjkyLjA1NDciLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTkiIHg9IjEwNjIiIHk9IjE3MDUuMzQzOCI+YWx0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iMTEyNiIgeT0iMTcwNC40NTMxIj5bJiMyNjE1OTsmIzIxNTQyOyYjMzg2NTY7JiMzNTIwMTsmIzM3MzI1OyYjMzU3OTc7XTwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjExMTAsMTcyMy44ODI4LDExMDAsMTcyNy44ODI4LDExMTAsMTczMS44ODI4LDExMDYsMTcyNy44ODI4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxMTA0IiB4Mj0iMTkyOC41IiB5MT0iMTcyNy44ODI4IiB5Mj0iMTcyNy44ODI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSIxMTE2IiB5PSIxNzI0LjI1NzgiPjMzPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSIxMTM0IiB5PSIxNzI0LjI1NzgiPiYjMzY4MjA7JiMyMjIzODsmIzM3MzI1OyYjMzU3OTc7JiMyNDMyMjsmIzI0MTIwOzwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiIHgxPSIxMDk5IiB4Mj0iMTE0MSIgeTE9IjE3NjkuNzEwOSIgeTI9IjE3NjkuNzEwOSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIgeDE9IjExNDEiIHgyPSIxMTQxIiB5MT0iMTc2OS43MTA5IiB5Mj0iMTc4Mi43MTA5Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iMTEwMCIgeDI9IjExNDEiIHkxPSIxNzgyLjcxMDkiIHkyPSIxNzgyLjcxMDkiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjExMTAsMTc3OC43MTA5LDExMDAsMTc4Mi43MTA5LDExMTAsMTc4Ni43MTA5LDExMDYsMTc4Mi43MTA5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjEuMDsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjExMDYiIHk9IjE3NTkuMTI4OSI+MzQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTIiIHg9IjExMjQiIHk9IjE3NTIuMTcxOSI+JiMzNzMyNTsmIzM1Nzk3OyYjMzI0NTI7JiMyMDIxNDs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTIiIHg9IjExMjQiIHk9IjE3NjYuMDg1OSI+JiMzNjgyNzsmIzM0ODkyOyYjMzczMjU7JiMzNTc5Nzs8L3RleHQ+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI5OTAsMTgxMy42MjUsOTgwLDE4MTcuNjI1LDk5MCwxODIxLjYyNSw5ODYsMTgxNy42MjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSI5ODQiIHgyPSIxMDk4IiB5MT0iMTgxNy42MjUiIHkyPSIxODE3LjYyNSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iOTk2IiB5PSIxODE0Ij4zNTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iMTAxNCIgeT0iMTgxNCI+JiMzNjgyMDsmIzIyMjM4OyYjMzgxNjk7JiMzNTgyMzsmIzIxNzA5OyYjMjQyMTI7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQ0LDE4NDEuNTM5MSw4MzQsMTg0NS41MzkxLDg0NCwxODQ5LjUzOTEsODQwLDE4NDUuNTM5MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7c3Ryb2tlLWRhc2hhcnJheToyLjAsMi4wOyIgeDE9IjgzOCIgeDI9Ijk3OCIgeTE9IjE4NDUuNTM5MSIgeTI9IjE4NDUuNTM5MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNCIgeD0iODUwIiB5PSIxODQxLjkxNDEiPjM2PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4IiB4PSI4NjgiIHk9IjE4NDEuOTE0MSI+JiMzODQ3NzsmIzMyNDIzOyYjMzY4MjA7JiMyMjIzODsmIzMyNDY3OyYjMjY1MjQ7PC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iOTY3LDE4NjkuNDUzMSw5NzcsMTg3My40NTMxLDk2NywxODc3LjQ1MzEsOTcxLDE4NzMuNDUzMSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxLjA7IiB4MT0iODMzIiB4Mj0iOTczIiB5MT0iMTg3My40NTMxIiB5Mj0iMTg3My40NTMxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSJib2xkIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0IiB4PSI4NDAiIHk9IjE4NjkuODI4MSI+Mzc8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA0IiB4PSI4NTgiIHk9IjE4NjkuODI4MSI+JiMyNjM1NjsmIzI2MDMyOyYjMjU1MDk7JiMyMTQ3NTsmIzM1ODQzOyYjMjk5OTI7JiMzMjQ3OTsmIzM1NzQ1OzwvdGV4dD48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjcyNCwxODk3LjM2NzIsNzE0LDE5MDEuMzY3Miw3MjQsMTkwNS4zNjcyLDcyMCwxOTAxLjM2NzIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MS4wO3N0cm9rZS1kYXNoYXJyYXk6Mi4wLDIuMDsiIHgxPSI3MTgiIHgyPSI4MzIiIHkxPSIxOTAxLjM2NzIiIHkyPSIxOTAxLjM2NzIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9ImJvbGQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQiIHg9IjczMCIgeT0iMTg5Ny43NDIyIj4zODwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OCIgeD0iNzQ4IiB5PSIxODk3Ljc0MjIiPiYjMzY4MjA7JiMyMjIzODsmIzM1ODQzOyYjMjk5OTI7JiMzMjQ2NzsmIzI2NTI0OzwvdGV4dD48IS0tU1JDPVtyTFRSS25INzU3d1ZOcDZiQl9mMExJZ0ZMNDVMWjRQcENvY21BZk1nVkhic012bm9kVGRDM1lSYTJQMlJraTBnNXE2R1RLNkdRRFk1WTg4Qm85X1B4ZmJ6b2J6OFR2LVVmTmtjNXk3YTlMRU1uTlFWeXZzbEp2elJ2b3BGanpEc3BkOXl5bm52aXU1NzJzSGYwWnllZnZtcy1nTVN3clJRcFFVU0JqSGh2dHNsX3ZuZnZLcy01Z3FPSGF4Nm04eUVTTjUybkowNW83Tmhaa3RxZmZua3ZEc3JxLVdPMnBSNGlkYy1ycUY4WVM1TUxpWnVSbDJ3NmlVeXdrTklBVVZCaDhxU05tMG9CQk9DWXB6d3hjX3pBWFlTaXh3dFlPX2tuU3g5RTIzbGMxZHlEaV9fWkI5UHp6VWgyTThjTzBOeG1fTnpUcXBoQXNKdDJaZ0hZb29nX3FGTWxlaUtKS2FtZmdVSTNLUGRvRG5jVk55ckE4dzJjT1dvTHc1ZGp4cnFkLXJWeWYxcjZ0YWZ2c2xkaGZrc1ZEa2JVelNpOXZDTHZtNEJZbDJuZzEzS2NTT0I2djU1ZVByb1gzeDdMSTVaZGZ2eEp6eEN1WFYzYkJvNHlwdG9SeGFQYkh3aVFOYzRyTHNvRktHVWhmRm5MbjlBNV9nYjMtTHpUYzhWVU1jS3lyczA0WGxJU1dubGZuR1U3azlkT3M2dmhCaHFFelZBTkJBb2JmRGNkZklZSWp4R3RMOXVNMGNoQW9mT2J6bGRQQmhTN2pqSFdPNVpTckZVWWRjRlBuNmtCRFNfRjRtdlBBZk9feDJlY1gwZm1yb0d6bmEyaktIM2hoaWxid0NhbVBBR1lJSmFWUXN2Z0tWMXY1UjJtNkt4ZHRQZkFsSkJjQ3I1NVVZUXgtVEtkYl9haEZHallpOXM1Ql8yMWJsTVVsTmJRbDF5S0Jkb1ZDdnJ5WEpmWWtGUlZaX2JYVDlrOWxBZnM4S3ppSEVoOG1UM1U2eWx2SUlHaHRZVXd3Ym1WMmIyQ1JJOXRUUWZOTXhOaFhnNnJVVXhKai1UN2VnZHI1MnBoTERKMkRsRFNFbUxWaDAxOVNQbU4xLVBkanJ4b3N5dFd5TDdrRlpkSndXNzV3aktlYnZ4STlyajY5ZllvZjRyNVI3VGYxU1RsanFMdTVnUDlZc2VXa3NjdDIwV0IyTE1mZGpKYUdPbktDNkwwWGFsNlhxVFBkQXJlcUZzWXh2LUtZOXdIdmxhX2Npb0RJTGphaWFyRkJMd1BYbVE0Nkl2LUV6bnlGV1l0Z3o5Y3hIRU1zYlFXbGVsOFNpMVRzTkhKVHltZlVOd1hzVlhzcGJEV1J2WFVSczhMWjczWkZ1MnFJdnFDdWxJRmtxZk4wY0NWZEZ2TXNXSmtGZS10MnVSUGFtQUxBNmU5b2VfbEt3UXpiMmwwU0wwSmlQYVYwcnNSdEF4T2ZIdkI4b2lWVUdBT3V2Z3Z3aFdzTjNoTloycGVIUy1rS2NyY3EwR28wZVNBR3VEdUt1aGMtc25xaFZueFhnVTcwOE5ESE9jV2pmQkY3UDhQaFNDc0gtcTRmMlBBWWFDbWF5WHp4WkdNMllJanVEMkREUkRtZ0Y1aTVwMDh4bHJtc2JtZC0zSVREbmZKZEZ3S3VVSmt0WmdjMnpiSHZrMklpYXVqS2JMWDg5cHdhcm1mVGcwNHkyOHd1N3BHSnZYTmVMYlhmSS03amMxNDAyZDZPT1llajZYbElIUzdPNGYwNHlEcVJqQllQMWxaNHM0ckxkZURIZ1N2MjEwNHZHY1hwbkZoMnBaV3Zmb3QyWjVRNjU2N2FHNXM0YVFJOHU1ejhHU05PSTJhUEpXbkJKVEZ4aFlINmNiUE94SlcyYjM2THlzdnVCUERLRUZub29UcUZyTFN0WnlJTFpVcTFXRDNnUm52WnB1a0I0cTRBdUZhazVJS0E4TkU0eU1Uellfa0lzR0lKYl83bkgwd05WTkdIVG1lT1BCZk9qcXlQaGotMVY4eXg2bUVpZi11aTRyTkRpYmdtRWFqMU9VWlA3ejV5TzlGM3p3MzhQMlhvX0VXSlJQaDZfMnRfTXoyVmVfTmplbUpGZ1RwYTlwZjhiMkxUUGpSaFBnc0MxNFFQMUNfS256a0lONlFKZnFNNWJmcDh6NGFub3hlNkMydVl0SnJqOXFVM0kzNXZTbmhNUnRuR2pFMTBNM2EzZU5fVFhPQ1kwMmVNY0RCaDgwYTJBWVZiR2NXck1rMElEQlVCSENTdnpBaU9td01lUjFYVnVDTnd3cG1IRGExYVF1SGZJNzZSVVJwZVlQbFlwQXRCM29qdDdiQU5kbzNYR2UyaEtiZmVkNzFKV3o0RUdyMlFaSFBvRVBOMjR4LXYyUTVweF9oM2x1ZXpQdXlqVDVCamVpcm9VdWtUTTBUZkI3VEJVazN4SUpLOUFYeno2aTFaV3ZnLWFIWkhFQUhDam8xRkw2QmFnakdEZXdqUkxHZVk5WUdMeUd1LSAtMHZkWkF0UDdleUw1ak9XZWNuMUpQVld3dkJ3aHhVMTRfQTc0Rm5oNnYxeExpZUpUbmFvbWNFTmEwbWpDSmszUjN1Tkc3cUZHdmxSQWNITWRVQkJuQldReDBjVHFZNG5MdWpESnRRajYwSHAtalZjajJ1anJKZDBvVTNhaWVDTGd3LUsxX2RheVREdzE4bzlEV2k1eUFBLUtwV0NQN0l0NTAwSlBEYmZTQ2JDcVo0R191bk5RdWlfT1ZuNERaUFk2aUxaeW43WEJBWU5ZRzd2cXkzNDA1YVdUa1pva29JMlZwTExuU1h2dWk5WEhKVjNBQ3NQOERydTRkU0xESmFNcGhaMmRBMG5UekhWQzlNM0JEd2luUHVZZFhaX1p5VUVoWDYyUHNHMU10X3AtOEpvVnAzbTAwXS0tPjwvZz48L3N2Zz4=;" parent="1" vertex="1">
<mxGeometry x="-970" y="2850" width="1998" height="2030" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="4oGO_xSFCiCbPG5GA00L-3" value="spring cloud alibaba 组件原理" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="-990" y="2800" width="180" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>