From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============8682101733412270643==" MIME-Version: 1.0 From: Sreeni (Sreenivasa) Busam (Stellus) Subject: Re: [SPDK] Regarding NVMe driver command queue depth. Date: Fri, 17 Nov 2017 20:18:50 +0000 Message-ID: In-Reply-To: 82C9F782B054C94B9FC04A331649C77A9D431F55@FMSMSX108.amr.corp.intel.com List-ID: To: spdk@lists.01.org --===============8682101733412270643== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Paul, It is correct. It is working fine. Thanks, Sreeni From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Luse, Paul E Sent: Friday, November 17, 2017 11:02 AM To: Storage Performance Development Kit Subject: Re: [SPDK] Regarding NVMe driver command queue depth. Cool, so working as you would expect now? From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sreeni= vasa) Busam (Stellus) Sent: Friday, November 17, 2017 11:52 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Regarding NVMe driver command queue depth. Hi Jim, Thanks for taking a look at the problem. It is a logical bug. I fixed it. The memory for the qpair was allocated outside the ns_entry loop. I have two SSD devices and the memory was not allocated for the qpair for s= econd ns_entry. Here is the problem. ns_entry =3D g_namespaces; ns_entry->qpair_2 =3D spdk_nvme_ctrlr_alloc_io_qpair(ns_entry->ctrlr, = NULL, 0); if (ns_entry->qpair_2 =3D=3D NULL) { printf("The qpair allocation failed.\n"); exit (0); } while (ns_entry !=3D NULL) { cnt =3D 1; while (cnt) { // Fails to be successfully submit rc =3D stellus_spdk_nvme_ns_cmd_write(ns_entry, ns_entry->q= pair_2, sequence->buf, 0, /* LBA start */ 1, /* number of LBAs */ io_complete, sequence, 0) =E2=80=A6. Sreeni From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Harris, James R Sent: Friday, November 17, 2017 8:44 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Regarding NVMe driver command queue depth. Hi Sreeni, Can you step through your second call to spdk_nvme_ctrlr_alloc_io_qpair? T= he callstack clearly shows that qpair=3D0x0 was passed into stellus_spdk_nv= me_ns_cmd_write() at frame #3. So I think we should back up and figure out= why no I/O qpair was allocated (or maybe it was allocated but not saved in= a structure or something). -Jim From: SPDK = > on behalf of "Sreeni (Sreenivasa) Busam (Stellus)" > Reply-To: Storage Performance Development Kit > Date: Thursday, November 16, 2017 at 4:57 PM To: Storage Performance Development Kit > Subject: Re: [SPDK] Regarding NVMe driver command queue depth. I have been trying to test the number of commands that can be given to the = device at a time. I verified that a maximum of 254 commands could be issued= for a qpair. So I created a 2nd qpair for ns_entry and issued the I/O comm= ands, it was failing in the first command itself. Is it invalid to create 2= qpair for the same ns_entry and send command to device? The qpair is succe= ssfully created, but I could not submit command. I modified the hello_world program to test this and attached the related co= de. Please take a look and let me know what is the problem. 0x000000000040bae2 in nvme_allocate_request (qpair=3D0x0, payload=3D0x7fffa4726ba0, payload_size=3D512, cb_fn=3D0x4041a4 , cb_arg=3D0x7b4270) at nvme.c:85 #1 0x000000000040996c in _nvme_ns_cmd_rw (ns=3D0x100ff8ee40, qpair=3D0x0, payload=3D0x7fffa4726ba0, payload_offset=3D0, md_offset=3D0, lba=3D0, l= ba_count=3D1, cb_fn=3D0x4041a4 , cb_arg=3D0x7b4270, opc=3D1, io_flags= =3D0, apptag_mask=3D0, apptag=3D0, check_sgl=3Dtrue) at nvme_ns_cmd.c:440 #2 0x0000000000409fea in spdk_nvme_ns_cmd_write (ns=3D0x100ff8ee40, qpair= =3D0x0, buffer=3D0x10000f7000, lba=3D0, lba_count=3D1, cb_fn=3D0x4041a4 , cb_arg=3D0x7b4270, io_flags=3D0) at nvme_ns_cmd.c:649 #3 0x000000000040439d in stellus_spdk_nvme_ns_cmd_write (ns_entry=3D0x7b13= c0, qpair=3D0x0, buffer=3D0x10000f7000, lba=3D0, lba_count=3D1, cb_fn=3D0x40420d , cb_arg=3D0x7b4270, ioflags=3D0) at iost= at.c:233 #4 0x00000000004046b8 in test_io_func1 () at iostat.c:342 #5 0x0000000000404a94 in main (argc=3D1, argv=3D0x7fffa4726db8) at iostat.= c:503 (gdb) f 3 #3 0x000000000040439d in stellus_spdk_nvme_ns_cmd_write (ns_entry=3D0x7b13= c0, qpair=3D0x0, buffer=3D0x10000f7000, lba=3D0, lba_count=3D1, cb_fn=3D0x40420d , cb_arg=3D0x7b4270, ioflags=3D0) at iost= at.c:233 233 rc =3D spdk_nvme_ns_cmd_write(ns_entry->ns, qpair, = buffer, (gdb) p qpair $1 =3D (struct spdk_nvme_qpair *) 0x0 If any of you get time, please look at it. Thank you for your suggestion. From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Sreeni (Sreeni= vasa) Busam (Stellus) Sent: Thursday, November 16, 2017 11:26 AM To: spdk(a)lists.01.org Subject: [SPDK] Regarding NVMe driver command queue depth. Hi Paul, I was reading about the driver from SPDK site, and interested in understand= ing the queue depth for a device. =E2=80=9CThe specification allows for thousands, but most devices support b= etween 32 and 128. The specification makes no guarantees about the performa= nce available from each queue pair, but in practice the full performance of= a device is almost always achievable using just one queue pair. For exampl= e, if a device claims to be capable of 450,000 I/O per second at queue dept= h 128, in practice it does not matter if the driver is using 4 queue pairs = each with queue depth 32, or a single queue pair with queue depth 128=E2=80= =9D When queue depth is mentioned for device, is it the number of commands that= can be issued from application to controller, and outstanding at any time? Is there NVMe driver API to set the queue depth? Is my understanding correc= t if I think that the size of queue is at firmware level? Please give some detail about the parameter. Thanks, Sreeni --===============8682101733412270643== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OiJNYWxndW4gR290aGljIjsNCglwYW5vc2UtMToyIDExIDUgMyAy IDAgMCAyIDAgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3Nl LTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseToiXEBN YWxndW4gR290aGljIjsNCglwYW5vc2UtMToyIDExIDUgMyAyIDAgMCAyIDAgNDt9DQovKiBTdHls ZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1h bA0KCXttYXJnaW46MGluOw0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTEu MHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmO30NCmE6bGluaywgc3Bhbi5N c29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOiMwNTYzQzE7DQoJ dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5r Rm9sbG93ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOiM5NTRGNzI7DQoJdGV4 dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQpzcGFuLkVtYWlsU3R5bGUxNw0KCXttc28tc3R5bGUt dHlwZTpwZXJzb25hbDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgljb2xv cjp3aW5kb3d0ZXh0O30NCnNwYW4uRW1haWxTdHlsZTE4DQoJe21zby1zdHlsZS10eXBlOnBlcnNv bmFsOw0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOiMxRjQ5N0Q7 fQ0Kc3Bhbi5FbWFpbFN0eWxlMTkNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWw7DQoJZm9udC1m YW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJY29sb3I6d2luZG93dGV4dDt9DQpzcGFuLkVt YWlsU3R5bGUyMA0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsNCglmb250LWZhbWlseToiQ2Fs aWJyaSIsc2Fucy1zZXJpZjsNCgljb2xvcjojMUY0OTdEO30NCnNwYW4uRW1haWxTdHlsZTIxDQoJ e21zby1zdHlsZS10eXBlOnBlcnNvbmFsOw0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNl cmlmOw0KCWNvbG9yOiMxRjQ5N0Q7fQ0Kc3Bhbi5FbWFpbFN0eWxlMjINCgl7bXNvLXN0eWxlLXR5 cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJ Y29sb3I6IzFGNDk3RDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQt b25seTsNCglmb250LXNpemU6MTAuMHB0O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjgu NWluIDExLjBpbjsNCgltYXJnaW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRT ZWN0aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1z byA5XT48eG1sPg0KPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIg Lz4NCjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVs YXlvdXQgdjpleHQ9ImVkaXQiPg0KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8 L286c2hhcGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBiZ2NvbG9y PSJ3aGl0ZSIgbGFuZz0iRU4tVVMiIGxpbms9IiMwNTYzQzEiIHZsaW5rPSIjOTU0RjcyIj4NCjxk aXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iY29sb3I6IzFGNDk3RCI+SGkgUGF1bCw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMx RjQ5N0QiPkl0IGlzIGNvcnJlY3QuIEl0IGlzIHdvcmtpbmcgZmluZS48bzpwPjwvbzpwPjwvc3Bh bj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+ PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g c3R5bGU9ImNvbG9yOiMxRjQ5N0QiPlRoYW5rcyw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+U3JlZW5pPG86cD48 L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGEgbmFtZT0iX01haWxFbmRD b21wb3NlIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3Nw YW4+PC9hPjwvcD4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNv bGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48Yj5Gcm9tOjwvYj4gU1BESyBbbWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4w MS5vcmddIDxiPk9uIEJlaGFsZiBPZg0KPC9iPkx1c2UsIFBhdWwgRTxicj4NCjxiPlNlbnQ6PC9i PiBGcmlkYXksIE5vdmVtYmVyIDE3LCAyMDE3IDExOjAyIEFNPGJyPg0KPGI+VG86PC9iPiBTdG9y YWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7c3Bka0BsaXN0cy4wMS5vcmcmZ3Q7 PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gUmVnYXJkaW5nIE5WTWUgZHJpdmVyIGNv bW1hbmQgcXVldWUgZGVwdGguPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Q29vbCwgc28gd29ya2luZyBhcyB5b3Ugd291 bGQgZXhwZWN0IG5vdz88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFF MSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PjxhIG5hbWU9Il9fX19fcmVwbHlzZXBhcmF0b3IiPjwvYT48Yj5Gcm9tOjwvYj4gU1BESyBbPGEg aHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1haWx0bzpzcGRrLWJvdW5j ZXNAbGlzdHMuMDEub3JnPC9hPl0NCjxiPk9uIEJlaGFsZiBPZiA8L2I+U3JlZW5pIChTcmVlbml2 YXNhKSBCdXNhbSAoU3RlbGx1cyk8YnI+DQo8Yj5TZW50OjwvYj4gRnJpZGF5LCBOb3ZlbWJlciAx NywgMjAxNyAxMTo1MiBBTTxicj4NCjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZl bG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0Bs aXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogW1NQREtdIFJlZ2Fy ZGluZyBOVk1lIGRyaXZlciBjb21tYW5kIHF1ZXVlIGRlcHRoLjxvOnA+PC9vOnA+PC9wPg0KPC9k aXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPkhpIEppbSw8 bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Y29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPlRoYW5rcyBmb3IgdGFraW5nIGEg bG9vayBhdCB0aGUgcHJvYmxlbS4gSXQgaXMgYSBsb2dpY2FsIGJ1Zy4gSSBmaXhlZCBpdC4NCjxv OnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJj b2xvcjojMUY0OTdEIj5UaGUgbWVtb3J5IGZvciB0aGUgcXBhaXIgd2FzIGFsbG9jYXRlZCBvdXRz aWRlIHRoZSBuc19lbnRyeSBsb29wLg0KPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPkkgaGF2ZSB0d28gU1NEIGRl dmljZXMgYW5kIHRoZSBtZW1vcnkgd2FzIG5vdCBhbGxvY2F0ZWQgZm9yIHRoZSBxcGFpciBmb3Ig c2Vjb25kIG5zX2VudHJ5LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj5IZXJlIGlzIHRoZSBwcm9ibGVtLjxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9z cGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVv dDsiPm5zX2VudHJ5ID0gZ19uYW1lc3BhY2VzOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOw0KPGI+bnNfZW50cnktJmd0O3FwYWlyXzIgPSBzcGRrX252bWVfY3RybHJfYWxsb2NfaW9f cXBhaXIobnNfZW50cnktJmd0O2N0cmxyLCBOVUxMLCAwKTs8bzpwPjwvbzpwPjwvYj48L3NwYW4+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxz cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IGlmIChuc19lbnRyeS0mZ3Q7cXBhaXJfMiA9PSBOVUxMKSB7PG86cD48 L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3Nw YWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90 OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IHByaW50ZigmcXVvdDtUaGUgcXBhaXIgYWxsb2NhdGlvbiBmYWlsZWQuXG4mcXVvdDsp OzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0 LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBO ZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBleGl0ICgwKTs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg fTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IHdoaWxlIChuc19lbnRyeSAhPSBOVUxMKSB7PG86cD48L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0 eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNudCA9IDE7PG86 cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0 b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZx dW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7IHdoaWxlIChjbnQpIHs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQt ZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLy8gRmFpbHMgdG8gYmUgc3VjY2Vz c2Z1bGx5IHN1Ym1pdDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi IHN0eWxlPSJ0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBy YyA9IHN0ZWxsdXNfc3Bka19udm1lX25zX2NtZF93cml0ZShuc19lbnRyeSwgbnNfZW50cnktJmd0 O3FwYWlyXzIsIHNlcXVlbmNlLSZndDtidWYsPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJm b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICZuYnNwOyZuYnNwOyZuYnNwOyAwLCAvKiBMQkEgc3RhcnQgKi88bzpwPjwvbzpwPjwvc3Bhbj48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNw YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7IDEsIC8qIG51bWJlciBvZiBMQkFzICovPG86 cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlvX2NvbXBsZXRlLCBzZXF1ZW5jZSwgMCk8bzpwPjwvbzpwPjwv c3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyDigKYuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xv cjojMUY0OTdEIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5i c3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJj b2xvcjojMUY0OTdEIj5TcmVlbmk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+PG86cD4mbmJzcDs8L286cD48L3Nw YW4+PC9wPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQg I0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxiPkZyb206PC9iPiBTUERLIFs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxp c3RzLjAxLm9yZyI+bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XQ0KPGI+T24g QmVoYWxmIE9mIDwvYj5IYXJyaXMsIEphbWVzIFI8YnI+DQo8Yj5TZW50OjwvYj4gRnJpZGF5LCBO b3ZlbWJlciAxNywgMjAxNyA4OjQ0IEFNPGJyPg0KPGI+VG86PC9iPiBTdG9yYWdlIFBlcmZvcm1h bmNlIERldmVsb3BtZW50IEtpdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3Jn Ij5zcGRrQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BE S10gUmVnYXJkaW5nIE5WTWUgZHJpdmVyIGNvbW1hbmQgcXVldWUgZGVwdGguPG86cD48L286cD48 L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286 cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSBTcmVlbmksPG86cD48L286cD48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPkNhbiB5b3Ugc3RlcCB0aHJvdWdoIHlvdXIgc2Vjb25kIGNhbGwgdG8gc3Bka19udm1l X2N0cmxyX2FsbG9jX2lvX3FwYWlyPyZuYnNwOyBUaGUgY2FsbHN0YWNrIGNsZWFybHkgc2hvd3Mg dGhhdCBxcGFpcj0weDAgd2FzIHBhc3NlZCBpbnRvIHN0ZWxsdXNfc3Bka19udm1lX25zX2NtZF93 cml0ZSgpIGF0IGZyYW1lICMzLiZuYnNwOyBTbyBJIHRoaW5rIHdlIHNob3VsZCBiYWNrIHVwIGFu ZCBmaWd1cmUgb3V0IHdoeSBubyBJL08gcXBhaXINCiB3YXMgYWxsb2NhdGVkIChvciBtYXliZSBp dCB3YXMgYWxsb2NhdGVkIGJ1dCBub3Qgc2F2ZWQgaW4gYSBzdHJ1Y3R1cmUgb3Igc29tZXRoaW5n KS48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+LUppbTxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6 c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48Yj48c3BhbiBzdHlsZT0iY29s b3I6YmxhY2siPkZyb206IDwvc3Bhbj4NCjwvYj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPlNQ REsgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIj5zcGRrLWJv dW5jZXNAbGlzdHMuMDEub3JnPC9hPiZndDsgb24gYmVoYWxmIG9mICZxdW90O1NyZWVuaSAoU3Jl ZW5pdmFzYSkgQnVzYW0gKFN0ZWxsdXMpJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86cy5idXNh bUBzdGVsbHVzLmNvbSI+cy5idXNhbUBzdGVsbHVzLmNvbTwvYT4mZ3Q7PGJyPg0KPGI+UmVwbHkt VG86IDwvYj5TdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7PGEgaHJlZj0i bWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7PGJyPg0K PGI+RGF0ZTogPC9iPlRodXJzZGF5LCBOb3ZlbWJlciAxNiwgMjAxNyBhdCA0OjU3IFBNPGJyPg0K PGI+VG86IDwvYj5TdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7PGEgaHJl Zj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7PGJy Pg0KPGI+U3ViamVjdDogPC9iPlJlOiBbU1BES10gUmVnYXJkaW5nIE5WTWUgZHJpdmVyIGNvbW1h bmQgcXVldWUgZGVwdGguPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9y OmJsYWNrIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt aWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZiI+PG86cD4mbmJzcDs8L286cD48 L3NwYW4+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPkkgaGF2ZSBiZWVuIHRyeWluZyB0 byB0ZXN0IHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhhdCBjYW4gYmUgZ2l2ZW4gdG8gdGhlIGRl dmljZSBhdCBhIHRpbWUuIEkgdmVyaWZpZWQgdGhhdCBhIG1heGltdW0gb2YgMjU0IGNvbW1hbmRz IGNvdWxkIGJlIGlzc3VlZCBmb3IgYSBxcGFpci4gU28gSSBjcmVhdGVkIGEgMjxzdXA+bmQ8L3N1 cD4NCiBxcGFpciBmb3IgbnNfZW50cnkgYW5kIGlzc3VlZCB0aGUgSS9PIGNvbW1hbmRzLCBpdCB3 YXMgZmFpbGluZyBpbiB0aGUgZmlyc3QgY29tbWFuZCBpdHNlbGYuIElzIGl0IGludmFsaWQgdG8g Y3JlYXRlIDIgcXBhaXIgZm9yIHRoZSBzYW1lIG5zX2VudHJ5IGFuZCBzZW5kIGNvbW1hbmQgdG8g ZGV2aWNlPyBUaGUgcXBhaXIgaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIGJ1dCBJIGNvdWxkIG5v dCBzdWJtaXQgY29tbWFuZC48L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0Qi PkkgbW9kaWZpZWQgdGhlIGhlbGxvX3dvcmxkIHByb2dyYW0gdG8gdGVzdCB0aGlzIGFuZCBhdHRh Y2hlZCB0aGUgcmVsYXRlZCBjb2RlLiAmbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImNv bG9yOiMxRjQ5N0QiPlBsZWFzZSB0YWtlIGEgbG9vayBhbmQgbGV0IG1lIGtub3cgd2hhdCBpcyB0 aGUgcHJvYmxlbS48L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPiZuYnNw Ozwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJn aW4tbGVmdDouNWluO3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls eTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+MHgwMDAwMDAwMDAwNDBiYWUyIGluIG52bWVfYWxs b2NhdGVfcmVxdWVzdCAocXBhaXI9MHgwLDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtYXV0b3NwYWNlOm5vbmUi PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7IHBheWxvYWQ9MHg3ZmZmYTQ3MjZiYTAsIHBheWxvYWRfc2l6ZT01MTIsIGNi X2ZuPTB4NDA0MWE0ICZsdDt3cml0ZV9jb21wbGV0ZSZndDssPC9zcGFuPjxvOnA+PC9vOnA+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1hdXRv c3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1 b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsgY2JfYXJnPTB4N2I0MjcwKSBhdCBudm1lLmM6ODU8L3Nw YW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6LjVpbjt0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 b3Q7Q291cmllciBOZXcmcXVvdDsiPiMxJm5ic3A7IDB4MDAwMDAwMDAwMDQwOTk2YyBpbiBfbnZt ZV9uc19jbWRfcncgKG5zPTB4MTAwZmY4ZWU0MCwgcXBhaXI9MHgwLDwvc3Bhbj48bzpwPjwvbzpw PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQt YXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5l dyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHBheWxvYWQ9MHg3ZmZmYTQ3MjZiYTAsIHBheWxv YWRfb2Zmc2V0PTAsIG1kX29mZnNldD0wLCBsYmE9MCwgbGJhX2NvdW50PTEsPC9zcGFuPjxvOnA+ PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47 dGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJp ZXIgTmV3JnF1b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsgY2JfZm49MHg0MDQxYTQgJmx0O3dyaXRl X2NvbXBsZXRlJmd0OywgY2JfYXJnPTB4N2I0MjcwLCBvcGM9MSwgaW9fZmxhZ3M9MCw8L3NwYW4+ PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 LjVpbjt0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7 Q291cmllciBOZXcmcXVvdDsiPiZuYnNwOyZuYnNwOyZuYnNwOyBhcHB0YWdfbWFzaz0wLCBhcHB0 YWc9MCwgY2hlY2tfc2dsPXRydWUpIGF0IG52bWVfbnNfY21kLmM6NDQwPC9zcGFuPjxvOnA+PC9v OnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4 dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIg TmV3JnF1b3Q7Ij4jMiZuYnNwOyAweDAwMDAwMDAwMDA0MDlmZWEgaW4gc3Bka19udm1lX25zX2Nt ZF93cml0ZSAobnM9MHgxMDBmZjhlZTQwLCBxcGFpcj0weDAsPC9zcGFuPjxvOnA+PC9vOnA+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1hdXRv c3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1 b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsgYnVmZmVyPTB4MTAwMDBmNzAwMCwgbGJhPTAsIGxiYV9j b3VudD0xLCBjYl9mbj0weDQwNDFhNCAmbHQ7d3JpdGVfY29tcGxldGUmZ3Q7LDwvc3Bhbj48bzpw PjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu O3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy aWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNiX2FyZz0weDdiNDI3MCwgaW9fZmxh Z3M9MCkgYXQgbnZtZV9uc19jbWQuYzo2NDk8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbjt0ZXh0LWF1dG9zcGFjZTpub25l Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiMzJm5i c3A7IDB4MDAwMDAwMDAwMDQwNDM5ZCBpbiBzdGVsbHVzX3NwZGtfbnZtZV9uc19jbWRfd3JpdGUg KG5zX2VudHJ5PTB4N2IxM2MwLDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7IHFwYWlyPTB4MCwgYnVmZmVyPTB4MTAwMDBmNzAwMCwgbGJhPTAsIGxiYV9jb3VudD0x LDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJn aW4tbGVmdDouNWluO3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls eTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNiX2ZuPTB4NDA0 MjBkICZsdDtpb19jb21wbGV0ZSZndDssIGNiX2FyZz0weDdiNDI3MCwgaW9mbGFncz0wKSBhdCBp b3N0YXQuYzoyMzM8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWxlZnQ6LjVpbjt0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiM0Jm5ic3A7IDB4MDAwMDAwMDAw MDQwNDZiOCBpbiB0ZXN0X2lvX2Z1bmMxICgpIGF0IGlvc3RhdC5jOjM0Mjwvc3Bhbj48bzpwPjwv bzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3Rl eHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVy IE5ldyZxdW90OyI+IzUmbmJzcDsgMHgwMDAwMDAwMDAwNDA0YTk0IGluIG1haW4gKGFyZ2M9MSwg YXJndj0weDdmZmZhNDcyNmRiOCkgYXQgaW9zdGF0LmM6NTAzPC9zcGFuPjxvOnA+PC9vOnA+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW47dGV4dC1hdXRv c3BhY2U6bm9uZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1 b3Q7Ij4oZ2RiKSBmIDM8L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbjt0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHls ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiMzJm5ic3A7IDB4MDAwMDAw MDAwMDQwNDM5ZCBpbiBzdGVsbHVzX3NwZGtfbnZtZV9uc19jbWRfd3JpdGUgKG5zX2VudHJ5PTB4 N2IxM2MwLDwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tbGVmdDouNWluO3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250 LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHFwYWly PTB4MCwgYnVmZmVyPTB4MTAwMDBmNzAwMCwgbGJhPTAsIGxiYV9jb3VudD0xLDwvc3Bhbj48bzpw PjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu O3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3Vy aWVyIE5ldyZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNiX2ZuPTB4NDA0MjBkICZsdDtpb19j b21wbGV0ZSZndDssIGNiX2FyZz0weDdiNDI3MCwgaW9mbGFncz0wKSBhdCBpb3N0YXQuYzoyMzM8 L3NwYW4+PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2lu LWxlZnQ6LjVpbjt0ZXh0LWF1dG9zcGFjZTpub25lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPjIzMyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByYyA9IHNwZGtfbnZtZV9uc19jbWRf d3JpdGUobnNfZW50cnktJmd0O25zLCBxcGFpciwgYnVmZmVyLDwvc3Bhbj48bzpwPjwvbzpwPjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluO3RleHQtYXV0 b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZx dW90OyI+KGdkYikgcCBxcGFpcjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPiQxID0gKHN0cnVjdCBzcGRrX252bWVfcXBhaXIgKikg MHgwPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMUY0OTdEIj4mbmJzcDs8L3NwYW4+ PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 LjVpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxRjQ5N0QiPklmIGFueSBvZiB5b3UgZ2V0IHRpbWUs IHBsZWFzZSBsb29rIGF0IGl0LiBUaGFuayB5b3UgZm9yIHlvdXIgc3VnZ2VzdGlvbi4NCjwvc3Bh bj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm dDouNWluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjxvOnA+PC9v OnA+PC9wPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQg I0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48Yj5Gcm9tOjwvYj4gU1BESyBbPGEgaHJl Zj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1haWx0bzpzcGRrLWJvdW5jZXNA bGlzdHMuMDEub3JnPC9hPl0NCjxiPk9uIEJlaGFsZiBPZiA8L2I+U3JlZW5pIChTcmVlbml2YXNh KSBCdXNhbSAoU3RlbGx1cyk8YnI+DQo8Yj5TZW50OjwvYj4gVGh1cnNkYXksIE5vdmVtYmVyIDE2 LCAyMDE3IDExOjI2IEFNPGJyPg0KPGI+VG86PC9iPiA8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0 cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPjxicj4NCjxiPlN1YmplY3Q6PC9iPiBbU1BE S10gUmVnYXJkaW5nIE5WTWUgZHJpdmVyIGNvbW1hbmQgcXVldWUgZGVwdGguPG86cD48L286cD48 L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s ZWZ0Oi41aW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPkhpIFBhdWwsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Jm5ic3A7PG86cD48L286cD48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+SSB3YXMgcmVh ZGluZyBhYm91dCB0aGUgZHJpdmVyIGZyb20gU1BESyBzaXRlLCBhbmQgaW50ZXJlc3RlZCBpbiB1 bmRlcnN0YW5kaW5nIHRoZSBxdWV1ZSBkZXB0aCBmb3IgYSBkZXZpY2UuPG86cD48L286cD48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMy41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1z ZXJpZjtjb2xvcjojMzMzMzMzO2JhY2tncm91bmQ6d2hpdGUiPuKAnFRoZSBzcGVjaWZpY2F0aW9u IGFsbG93cyBmb3IgdGhvdXNhbmRzLCBidXQgbW9zdCBkZXZpY2VzIHN1cHBvcnQgYmV0d2VlbiAz MiBhbmQgMTI4LiBUaGUgc3BlY2lmaWNhdGlvbiBtYWtlcyBubyBndWFyYW50ZWVzDQogYWJvdXQg dGhlIHBlcmZvcm1hbmNlIGF2YWlsYWJsZSBmcm9tIGVhY2ggcXVldWUgcGFpciwgYnV0IGluIHBy YWN0aWNlIHRoZSBmdWxsIHBlcmZvcm1hbmNlIG9mIGEgZGV2aWNlIGlzIGFsbW9zdCBhbHdheXMg YWNoaWV2YWJsZSB1c2luZyBqdXN0IG9uZSBxdWV1ZSBwYWlyLiBGb3IgZXhhbXBsZSwgaWYgYSBk ZXZpY2UgY2xhaW1zIHRvIGJlIGNhcGFibGUgb2YgNDUwLDAwMCBJL08gcGVyIHNlY29uZCBhdCBx dWV1ZSBkZXB0aCAxMjgsIGluIHByYWN0aWNlDQogaXQgZG9lcyBub3QgbWF0dGVyIGlmIHRoZSBk cml2ZXIgaXMgdXNpbmcgNCBxdWV1ZSBwYWlycyBlYWNoIHdpdGggcXVldWUgZGVwdGggMzIsIG9y IGEgc2luZ2xlIHF1ZXVlIHBhaXIgd2l0aCBxdWV1ZSBkZXB0aCAxMjjigJ08L3NwYW4+PG86cD48 L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+ V2hlbiBxdWV1ZSBkZXB0aCBpcyBtZW50aW9uZWQgZm9yIGRldmljZSwgaXMgaXQgdGhlIG51bWJl ciBvZiBjb21tYW5kcyB0aGF0IGNhbiBiZSBpc3N1ZWQgZnJvbSBhcHBsaWNhdGlvbiB0byBjb250 cm9sbGVyLCBhbmQgb3V0c3RhbmRpbmcgYXQgYW55IHRpbWU/DQo8bzpwPjwvbzpwPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj5JcyB0aGVyZSBOVk1l IGRyaXZlciBBUEkgdG8gc2V0IHRoZSBxdWV1ZSBkZXB0aD8gSXMgbXkgdW5kZXJzdGFuZGluZyBj b3JyZWN0IGlmIEkgdGhpbmsgdGhhdCB0aGUgc2l6ZSBvZiBxdWV1ZSBpcyBhdCBmaXJtd2FyZSBs ZXZlbD8NCjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0Oi41aW4iPlBsZWFzZSBnaXZlIHNvbWUgZGV0YWlsIGFib3V0IHRoZSBwYXJhbWV0ZXIu PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 LjVpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0i bWFyZ2luLWxlZnQ6LjVpbiI+VGhhbmtzLDxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPlNyZWVuaTxvOnA+PC9vOnA+PC9wPg0KPC9k aXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --===============8682101733412270643==--