From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============9046602708311385976==" MIME-Version: 1.0 From: Verkamp, Daniel Subject: Re: [SPDK] SPDK + user space appliance Date: Thu, 03 May 2018 17:50:38 +0000 Message-ID: In-Reply-To: AM3PR04MB370E86EE25048BBF492198E89870@AM3PR04MB370.eurprd04.prod.outlook.com List-ID: To: spdk@lists.01.org --===============9046602708311385976== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Shahar, The target branch for the push should be 'refs/for/master', not 'master' - = if you configured a remote as specified in http://www.spdk.io/development/ = it should look like: [remote "review"] url =3D https://review.gerrithub.io/spdk/spdk push =3D HEAD:refs/for/master From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzman Sent: Thursday, May 3, 2018 1:00 AM To: Storage Performance Development Kit Subject: Re: [SPDK] SPDK + user space appliance Hi Ben, I have the code ready for review (spdk/master on dpdk/18.02), but I do not = have push rights for gerrithub: shahar.salzman(a)shahars-vm:~/Kaminario/git/spdk$ git push spdk-review HEAD:master Password for 'https://ShaharSalzman-K(a)review.gerrithub.io': Counting objects: 109, done. Compressing objects: 100% (22/22), done. Writing objects: 100% (22/22), 8.70 KiB | 0 bytes/s, done. Total 22 (delta 14), reused 0 (delta 0) remote: Resolving deltas: 100% (14/14) remote: Branch refs/heads/master: remote: You are not allowed to perform this operation. remote: To push into this reference you need 'Push' rights. remote: User: ShaharSalzman-K remote: Please read the documentation and contact an administrator remote: if you feel the configuration is incorrect remote: Processing changes: refs: 1, done To https://ShaharSalzman-K(a)review.gerrithub.io/a/spdk/spdk ! [remote rejected] HEAD -> master (prohibited by Gerrit: ref update acces= s denied) error: failed to push some refs to 'https://ShaharSalzman-K(a)review.gerrit= hub.io/a/spdk/spdk' Am I doing something incorrect, or is this just a permission issue? Thanks, Shahar ________________________________ From: SPDK = > on behalf of Shahar Salzman > Sent: Wednesday, April 25, 2018 9:02:38 AM To: Storage Performance Development Kit Subject: Re: [SPDK] SPDK + user space appliance Hi Ben, The code is currently working on v17.07, we are planning on bumping the ver= sion to one of the latest stable versions (18.01?) + master. It will take me (hopefully) a few days to update the code and have our inte= rnal CI start running on this version, not sure it would be useful, but I c= an get our working 17.07 code (+ reference application) for review much fas= ter. What is the best course of action? Shahar ________________________________ From: SPDK = > on behalf of Walker, Benjamin > Sent: Tuesday, April 24, 2018 7:19:12 PM To: Storage Performance Development Kit Subject: Re: [SPDK] SPDK + user space appliance Hi Shahar, Would you be willing to submit your bdev module as a patch on GerritHub? Th= at way everyone can take a look and provide feedback. If you don't want it = to run the tests, you can put [RFC] and the beginning of the commit message. Thanks, Ben From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzman Sent: Monday, April 23, 2018 8:45 AM To: spdk(a)lists.01.org Subject: Re: [SPDK] SPDK + user space appliance Hi Ben, Bumping this thread since I've been having some new thoughts on the issue n= ow that we are starting integration with newer spdk versions. Unfortunately the merge isn't as smooth as I'd like it to be since the bdev= module is pretty tightly integrated into spdk, perhaps we made some false = assumptions writing the module, but it seems some of the newer spdk feature= s are complicating the integration. My question is, if this passthrough module is useful, wouldn't it be better= to maintain it as part of spdk so that we can catch issues as soon as they= show up? We would be happy to help with maintaining this module, the module with is = currently part of our CI with our "frozen" spdk version, but once integrate= d into the newer version we choose, I'll add it to the CI our CI as well. Shahar ________________________________ From: SPDK = > on behalf of Walker, Benjamin > Sent: Friday, February 2, 2018 11:43:58 PM To: spdk(a)lists.01.org Subject: Re: [SPDK] SPDK + user space appliance On Thu, 2018-02-01 at 08:29 +0000, Shahar Salzman wrote: > Hi Ben, > > Would you also like to take a look at the bdev_user module? > It still needs some patching (as some of the stuff is still hard coded), = but I > think we can get most of it cleaned up in a couple of days. > > In any case, is it the intention that the user write his own bdev module,= or > would this user appliance glue be a useful generic module? For existing storage stacks that serve block I/O, like the internals of a S= AN, the idea is that you write your own bdev module to forward I/O coming out o= f the SPDK bdev layer. Then you can use the SPDK iSCSI/NVMe-oF/vhost targets most= ly as-is. In some cases, the actual iSCSI/NVMe-oF/vhost target applications won't integrate nicely directly into an existing storage application because they spawn their own threads and allocate their own memory. To support that, the libraries may be consumed directly instead of the applications (lib/iscsi, lib/scsi, lib/nvmf, etc.). The libraries don't spawn any of their own threa= ds, but instead rely on SPDK's abstractions in include/spdk/io_channel.h. See http://www.spdk.io/doc/concurrency.html We don't currently have a way to write a custom bdev module that resides ou= tside of the SPDK source tree, but it's very possible to add support for that. But beyond that inconvenience (just drop your module in lib/bdev for now), writ= ing a bdev module is the recommended way of interacting with the bottom end of the SPDK bdev layer. I think that's what you really want to be doing in your co= de, from what I can tell. I hope that helps! _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk --===============9046602708311385976== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8IS0tW2lm ICFtc29dPjxzdHlsZT52XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9Cm9cOioge2Jl aGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZN TCk7fQouc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KPC9zdHlsZT48IVtlbmRp Zl0tLT48c3R5bGU+PCEtLQovKiBGb250IERlZmluaXRpb25zICovCkBmb250LWZhY2UKCXtmb250 LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsKCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7fQpA Zm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsKCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0 IDMgMiA0O30KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1h bCwgZGl2Lk1zb05vcm1hbAoJe21hcmdpbjowaW47CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglm b250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7fQph OmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6 Ymx1ZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlw ZXJsaW5rRm9sbG93ZWQKCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjpwdXJwbGU7Cgl0 ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KcAoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCW1h cmdpbjowaW47CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTIuMHB0OwoJZm9u dC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7fQpwLnh4bXNvbm9ybWFsLCBsaS54eG1z b25vcm1hbCwgZGl2Lnh4bXNvbm9ybWFsCgl7bXNvLXN0eWxlLW5hbWU6eF94X21zb25vcm1hbDsK CW1hcmdpbjowaW47CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTIuMHB0OwoJ Zm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7fQpwLnh4bXNvY2hwZGVmYXVsdCwg bGkueHhtc29jaHBkZWZhdWx0LCBkaXYueHhtc29jaHBkZWZhdWx0Cgl7bXNvLXN0eWxlLW5hbWU6 eF94X21zb2NocGRlZmF1bHQ7CgltYXJnaW46MGluOwoJbWFyZ2luLWJvdHRvbTouMDAwMXB0OwoJ Zm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmO30K c3Bhbi54eGVtYWlsc3R5bGUxOAoJe21zby1zdHlsZS1uYW1lOnhfeF9lbWFpbHN0eWxlMTg7Cglm b250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsKCWNvbG9yOiMxRjQ5N0Q7fQpzcGFuLkVt YWlsU3R5bGUyMQoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsLXJlcGx5OwoJZm9udC1mYW1pbHk6 IkNhbGlicmkiLHNhbnMtc2VyaWY7Cgljb2xvcjojMUY0OTdEO30KLk1zb0NocERlZmF1bHQKCXtt c28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtc2l6ZToxMC4wcHQ7fQpAcGFnZSBXb3Jk U2VjdGlvbjEKCXtzaXplOjguNWluIDExLjBpbjsKCW1hcmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAx LjBpbjt9CmRpdi5Xb3JkU2VjdGlvbjEKCXtwYWdlOldvcmRTZWN0aW9uMTt9Ci0tPjwvc3R5bGU+ PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNw aWRtYXg9IjEwMjYiIC8+CjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1s Pgo8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+CjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRh PSIxIiAvPgo8L286c2hhcGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+CjwvaGVhZD4KPGJvZHkg bGFuZz0iRU4tVVMiIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiPgo8ZGl2IGNsYXNzPSJXb3Jk U2VjdGlvbjEiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFG NDk3RCI+SGkgU2hhaGFyLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy aSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu PjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7 Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Qi PlRoZSB0YXJnZXQgYnJhbmNoIGZvciB0aGUgcHVzaCBzaG91bGQgYmUgJiM4MjE2O3JlZnMvZm9y L21hc3RlciYjODIxNzssIG5vdCAmIzgyMTY7bWFzdGVyJiM4MjE3OyAmIzgyMTE7IGlmIHlvdSBj b25maWd1cmVkIGEgcmVtb3RlIGFzIHNwZWNpZmllZCBpbgo8YSBocmVmPSJodHRwOi8vd3d3LnNw ZGsuaW8vZGV2ZWxvcG1lbnQvIj5odHRwOi8vd3d3LnNwZGsuaW8vZGV2ZWxvcG1lbnQvPC9hPiBp dCBzaG91bGQgbG9vayBsaWtlOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2Fs aWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9z cGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5 N0QiPltyZW1vdGUgJnF1b3Q7cmV2aWV3JnF1b3Q7XTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPiZuYnNwOyB1 cmwgPSBodHRwczovL3Jldmlldy5nZXJyaXRodWIuaW8vc3Bkay9zcGRrPG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw dDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3 RCI+Jm5ic3A7IHB1c2ggPSBIRUFEOnJlZnMvZm9yL21hc3Rlcgo8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48 bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRl ci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowaW4gMGluIDBpbiA0LjBwdCI+CjxkaXY+ CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtw YWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGEgbmFtZT0i X19fX19yZXBseXNlcGFyYXRvciI+PC9hPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+RnJvbTo8L3NwYW4+ PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssc2Fucy1zZXJpZiI+IFNQREsgW21haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEu b3JnXQo8Yj5PbiBCZWhhbGYgT2YgPC9iPlNoYWhhciBTYWx6bWFuPGJyPgo8Yj5TZW50OjwvYj4g VGh1cnNkYXksIE1heSAzLCAyMDE4IDE6MDAgQU08YnI+CjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJm b3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0O3NwZGtAbGlzdHMuMDEub3JnJmd0Ozxicj4KPGI+ U3ViamVjdDo8L2I+IFJlOiBbU1BES10gU1BESyAmIzQzOyB1c2VyIHNwYWNlIGFwcGxpYW5jZTxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 bzpwPiZuYnNwOzwvbzpwPjwvcD4KPGRpdiBpZD0iZGl2dGFnZGVmYXVsdHdyYXBwZXIiPgo8ZGl2 IGlkPSJkaXZ0YWdkZWZhdWx0d3JhcHBlciI+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPkhpIEJlbiw8bzpwPjwv bzpwPjwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwv cD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZjtjb2xvcjpibGFjayI+SSBoYXZlIHRoZSBjb2RlIHJlYWR5IGZvciByZXZpZXcgKHNwZGsv bWFzdGVyIG9uIGRwZGsvMTguMDIpLCBidXQgSSBkbyBub3QgaGF2ZSBwdXNoIHJpZ2h0cyBmb3Ig Z2Vycml0aHViOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjpibGFjayI+PGEgaHJlZj0ibWFpbHRvOnNoYWhhci5zYWx6bWFuQHNoYWhhcnMtdm06 fi9LYW1pbmFyaW8vZ2l0L3NwZGskIj5zaGFoYXIuc2Fsem1hbkBzaGFoYXJzLXZtOn4vS2FtaW5h cmlvL2dpdC9zcGRrJDwvYT4gZ2l0IHB1c2ggc3Bkay1yZXZpZXcgSEVBRDptYXN0ZXI8bzpwPjwv bzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJs YWNrIj5QYXNzd29yZCBmb3IgJ2h0dHBzOi8vU2hhaGFyU2Fsem1hbi1LQHJldmlldy5nZXJyaXRo dWIuaW8nOiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPkNvdW50aW5nIG9iamVjdHM6IDEwOSwgZG9uZS48bzpw PjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OmJsYWNrIj5Db21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyMi8yMiksIGRvbmUuPG86cD48L286 cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFj ayI+V3JpdGluZyBvYmplY3RzOiAxMDAlICgyMi8yMiksIDguNzAgS2lCIHwgMCBieXRlcy9zLCBk b25lLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6YmxhY2siPlRvdGFsIDIyIChkZWx0YSAxNCksIHJldXNlZCAwIChkZWx0YSAwKTxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6YmxhY2siPnJlbW90ZTogUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTQvMTQpPG86cD48L286 cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFj ayI+cmVtb3RlOiBCcmFuY2ggcmVmcy9oZWFkcy9tYXN0ZXI6PG86cD48L286cD48L3NwYW4+PC9w Pgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+cmVtb3RlOiBZ b3UgYXJlIG5vdCBhbGxvd2VkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uPG86cD48L286cD48 L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9 ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+ cmVtb3RlOiBUbyBwdXNoIGludG8gdGhpcyByZWZlcmVuY2UgeW91IG5lZWQgJ1B1c2gnIHJpZ2h0 cy48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOmJsYWNrIj5yZW1vdGU6IFVzZXI6IFNoYWhhclNhbHptYW4tSzxvOnA+PC9vOnA+PC9z cGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPnJl bW90ZTogUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gYW5kIGNvbnRhY3QgYW4gYWRtaW5p c3RyYXRvcjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWY7Y29sb3I6YmxhY2siPnJlbW90ZTogaWYgeW91IGZlZWwgdGhlIGNvbmZpZ3VyYXRpb24g aXMgaW5jb3JyZWN0PG86cD48L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjtjb2xvcjpibGFjayI+cmVtb3RlOiBQcm9jZXNzaW5nIGNoYW5nZXM6IHJlZnM6 IDEsIGRvbmUmbmJzcDsgJm5ic3A7Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPgo8L2Rpdj4K PGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+VG8KPGEgaHJlZj0iaHR0cHM6 Ly9TaGFoYXJTYWx6bWFuLUtAcmV2aWV3LmdlcnJpdGh1Yi5pby9hL3NwZGsvc3BkayI+aHR0cHM6 Ly9TaGFoYXJTYWx6bWFuLUtAcmV2aWV3LmdlcnJpdGh1Yi5pby9hL3NwZGsvc3BkazwvYT48bzpw PjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OmJsYWNrIj4mbmJzcDshIFtyZW1vdGUgcmVqZWN0ZWRdIEhFQUQgLSZndDsgbWFzdGVyIChwcm9o aWJpdGVkIGJ5IEdlcnJpdDogcmVmIHVwZGF0ZSBhY2Nlc3MgZGVuaWVkKTxvOnA+PC9vOnA+PC9z cGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPmVy cm9yOiBmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJ2h0dHBzOi8vU2hhaGFyU2Fsem1hbi1L QHJldmlldy5nZXJyaXRodWIuaW8vYS9zcGRrL3NwZGsnPG86cD48L286cD48L3NwYW4+PC9wPgo8 L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPgo8L2Rpdj4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+QW0gSSBkb2luZyBzb21ldGhp bmcgaW5jb3JyZWN0LCBvciBpcyB0aGlzIGp1c3QgYSBwZXJtaXNzaW9uIGlzc3VlPzxvOnA+PC9v OnA+PC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmO2NvbG9yOmJsYWNrIj5UaGFua3MsPG86cD48L286cD48L3NwYW4+PC9wPgo8cD48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJs YWNrIj5TaGFoYXI8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJNc29O b3JtYWwiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFj ayI+CjxociBzaXplPSIzIiB3aWR0aD0iOTglIiBhbGlnbj0iY2VudGVyIj4KPC9zcGFuPjwvZGl2 Pgo8ZGl2IGlkPSJkaXZScGx5RndkTXNnIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOmJsYWNrIj4gU1BESyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4w MS5vcmciPnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+Jmd0Owogb24gYmVoYWxmIG9mIFNo YWhhciBTYWx6bWFuICZsdDs8YSBocmVmPSJtYWlsdG86c2hhaGFyLnNhbHptYW5Aa2FtaW5hcmlv LmNvbSI+c2hhaGFyLnNhbHptYW5Aa2FtaW5hcmlvLmNvbTwvYT4mZ3Q7PGJyPgo8Yj5TZW50Ojwv Yj4gV2VkbmVzZGF5LCBBcHJpbCAyNSwgMjAxOCA5OjAyOjM4IEFNPGJyPgo8Yj5Ubzo8L2I+IFN0 b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6 IFtTUERLXSBTUERLICYjNDM7IHVzZXIgc3BhY2UgYXBwbGlhbmNlPC9zcGFuPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2si Pgo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6 YmxhY2siPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8 ZGl2IGlkPSJ4X2RpdnRhZ2RlZmF1bHR3cmFwcGVyIj4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+SGkgQmVuLDxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+PG86cD4mbmJzcDs8L286cD48L3Nw YW4+PC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5UaGUgY29kZSBpcyBjdXJyZW50bHkgd29ya2luZyBvbiB2 MTcuMDcsIHdlIGFyZSBwbGFubmluZyBvbiBidW1waW5nIHRoZSB2ZXJzaW9uIHRvIG9uZSBvZiB0 aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9ucyAoMTguMDE/KSAmIzQzOyBtYXN0ZXIuPG86cD48L286 cD48L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx dW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5JdCB3aWxsIHRha2UgbWUgKGhvcGVmdWxseSkm bmJzcDthIGZldyBkYXlzIHRvIHVwZGF0ZSB0aGUgY29kZSBhbmQgaGF2ZSBvdXIgaW50ZXJuYWwg Q0kgc3RhcnQgcnVubmluZyBvbiB0aGlzIHZlcnNpb24sIG5vdCBzdXJlIGl0IHdvdWxkIGJlIHVz ZWZ1bCwgYnV0IEkgY2FuIGdldCBvdXIgd29ya2luZyAxNy4wNyBjb2RlICgmIzQzOyByZWZlcmVu Y2UgYXBwbGljYXRpb24pCiBmb3IgcmV2aWV3IG11Y2ggZmFzdGVyLjxvOnA+PC9vOnA+PC9zcGFu PjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjpibGFjayI+V2hhdCBpcyB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uPzxv OnA+PC9vOnA+PC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+PG86cD4mbmJzcDs8L286cD48L3Nw YW4+PC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5TaGFoYXI8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2 Pgo8ZGl2IGNsYXNzPSJNc29Ob3JtYWwiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ0ZXh0LWFsaWdu OmNlbnRlciI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjpibGFjayI+CjxociBzaXplPSIzIiB3aWR0aD0iOTglIiBhbGlnbj0iY2Vu dGVyIj4KPC9zcGFuPjwvZGl2Pgo8ZGl2IGlkPSJ4X2RpdlJwbHlGd2RNc2ciPgo8cCBjbGFzcz0i TXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPkZyb206PC9zcGFuPjwv Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPiBTUERLICZsdDs8YSBocmVmPSJtYWlsdG86 c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT4m Z3Q7CiBvbiBiZWhhbGYgb2YgV2Fsa2VyLCBCZW5qYW1pbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmJl bmphbWluLndhbGtlckBpbnRlbC5jb20iPmJlbmphbWluLndhbGtlckBpbnRlbC5jb208L2E+Jmd0 Ozxicj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEFwcmlsIDI0LCAyMDE4IDc6MTk6MTIgUE08YnI+ CjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+CjxiPlN1 YmplY3Q6PC9iPiBSZTogW1NQREtdIFNQREsgJiM0MzsgdXNlciBzcGFjZSBhcHBsaWFuY2U8L3Nw YW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp Zjtjb2xvcjpibGFjayI+CjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPGRpdj4KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjpibGFjayI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPgo8L2Rpdj4K PC9kaXY+CjxkaXY+CjxkaXY+CjxwIGNsYXNzPSJ4eG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm O2NvbG9yOiMxRjQ5N0QiPkhpIFNoYWhhciw8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNr Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJ4eG1zb25vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmO2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6Ymxh Y2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Inh4bXNvbm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNh bnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+V291bGQgeW91IGJlIHdpbGxpbmcgdG8gc3VibWl0IHlv dXIgYmRldiBtb2R1bGUgYXMgYSBwYXRjaCBvbiBHZXJyaXRIdWI/IFRoYXQgd2F5IGV2ZXJ5b25l IGNhbiB0YWtlIGEgbG9vayBhbmQgcHJvdmlkZSBmZWVkYmFjay4gSWYgeW91IGRvbiYjODIxNzt0 IHdhbnQgaXQgdG8gcnVuCiB0aGUgdGVzdHMsIHlvdSBjYW4gcHV0IFtSRkNdIGFuZCB0aGUgYmVn aW5uaW5nIG9mIHRoZSBjb21taXQgbWVzc2FnZS48L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOmJs YWNrIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJ4eG1zb25vcm1hbCI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6 YmxhY2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Inh4bXNvbm9ybWFsIj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+VGhhbmtzLDwvc3Bhbj48c3BhbiBzdHlsZT0iY29s b3I6YmxhY2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Inh4bXNvbm9ybWFsIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RCI+QmVuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xv cjpibGFjayI+PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0ieHhtc29ub3JtYWwiPjxh IG5hbWU9InhfeF9fTWFpbEVuZENvbXBvc2UiIGlkPSJMUGxuazQxNzA4MiI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmO2NvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48L2E+PHNwYW4gc3R5bGU9ImNvbG9yOmJs YWNrIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRl ci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowaW4gMGluIDBpbiA0LjBwdCI+CjxkaXY+ CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtw YWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4KPHAgY2xhc3M9Inh4bXNvbm9ybWFsIj48YSBuYW1l PSJ4X3hfX19fX19yZXBseXNlcGFyYXRvciIgaWQ9IkxQbG5rMzYyNjEyIj48L2E+PGI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOmJsYWNrIj4gU1BESyBbPGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5v cmciPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPl0KPGI+T24gQmVoYWxmIE9m IDwvYj5TaGFoYXIgU2Fsem1hbjxicj4KPGI+U2VudDo8L2I+IE1vbmRheSwgQXByaWwgMjMsIDIw MTggODo0NSBBTTxicj4KPGI+VG86PC9iPiA8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5v cmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10g U1BESyAmIzQzOyB1c2VyIHNwYWNlIGFwcGxpYW5jZTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6 YmxhY2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8cCBjbGFzcz0ieHht c29ub3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+Jm5ic3A7PG86cD48L286cD48L3Nw YW4+PC9wPgo8ZGl2IGlkPSJ4X3hfZGl2dGFnZGVmYXVsdHdyYXBwZXIiPgo8cD48c3BhbiBzdHls ZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNr Ij5IaSBCZW4sPG86cD48L286cD48L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj4mbmJzcDs8bzpw PjwvbzpwPjwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPkJ1bXBpbmcgdGhpcyB0aHJlYWQgc2lu Y2UgSSd2ZSBiZWVuIGhhdmluZyBzb21lIG5ldyZuYnNwO3Rob3VnaHRzIG9uIHRoZSBpc3N1ZSBu b3cgdGhhdCB3ZSBhcmUgc3RhcnRpbmcgaW50ZWdyYXRpb24gd2l0aCBuZXdlciBzcGRrIHZlcnNp b25zLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjpibGFjayI+VW5mb3J0dW5hdGVseSB0 aGUgbWVyZ2UgaXNuJ3QgYXMgc21vb3RoIGFzIEknZCBsaWtlIGl0IHRvIGJlIHNpbmNlIHRoZSBi ZGV2IG1vZHVsZSBpcyBwcmV0dHkgdGlnaHRseSBpbnRlZ3JhdGVkIGludG8gc3BkaywgcGVyaGFw cyB3ZSBtYWRlIHNvbWUgZmFsc2UgYXNzdW1wdGlvbnMgd3JpdGluZyB0aGUgbW9kdWxlLCBidXQg aXQgc2VlbXMKIHNvbWUgb2YgdGhlIG5ld2VyIHNwZGsgZmVhdHVyZXMgYXJlIGNvbXBsaWNhdGlu ZyB0aGUgaW50ZWdyYXRpb24uPG86cD48L286cD48L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5N eSBxdWVzdGlvbiBpcywgaWYgdGhpcyBwYXNzdGhyb3VnaCBtb2R1bGUgaXMgdXNlZnVsLCB3b3Vs ZG4ndCBpdCBiZSBiZXR0ZXIgdG8gbWFpbnRhaW4gaXQgYXMgcGFydCBvZiBzcGRrIHNvIHRoYXQg d2UgY2FuIGNhdGNoIGlzc3VlcyBhcyBzb29uIGFzIHRoZXkgc2hvdyB1cD88bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPldlIHdvdWxkIGJlIGhhcHB5IHRvIGhlbHAgd2l0aCBt YWludGFpbmluZyB0aGlzIG1vZHVsZSwgdGhlIG1vZHVsZSB3aXRoIGlzIGN1cnJlbnRseSBwYXJ0 IG9mIG91ciBDSSB3aXRoIG91ciAmcXVvdDtmcm96ZW4mcXVvdDsgc3BkayB2ZXJzaW9uLCBidXQg b25jZSBpbnRlZ3JhdGVkIGludG8gdGhlIG5ld2VyIHZlcnNpb24gd2UgY2hvb3NlLCBJJ2xsIGFk ZAogaXQgdG8gdGhlIENJIG91ciBDSSBhcyB3ZWxsLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHA+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtj b2xvcjpibGFjayI+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOmJsYWNrIj5T aGFoYXI8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJNc29Ob3JtYWwi IGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PHNwYW4gc3R5bGU9ImNv bG9yOmJsYWNrIj4KPGhyIHNpemU9IjMiIHdpZHRoPSI5OCUiIGFsaWduPSJjZW50ZXIiPgo8L3Nw YW4+PC9kaXY+CjxkaXYgaWQ9InhfeF9kaXZScGx5RndkTXNnIj4KPHAgY2xhc3M9Inh4bXNvbm9y bWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPkZyb206PC9zcGFuPjwvYj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7Y29sb3I6YmxhY2siPiBTUERLICZsdDs8YSBocmVmPSJtYWlsdG86c3Bkay1i b3VuY2VzQGxpc3RzLjAxLm9yZyIgaWQ9IkxQbG5rNTA2NjEwIj5zcGRrLWJvdW5jZXNAbGlzdHMu MDEub3JnPC9hPiZndDsKIG9uIGJlaGFsZiBvZiBXYWxrZXIsIEJlbmphbWluICZsdDs8YSBocmVm PSJtYWlsdG86YmVuamFtaW4ud2Fsa2VyQGludGVsLmNvbSIgaWQ9IkxQbG5rMTc5NjMxIj5iZW5q YW1pbi53YWxrZXJAaW50ZWwuY29tPC9hPiZndDs8YnI+CjxiPlNlbnQ6PC9iPiBGcmlkYXksIEZl YnJ1YXJ5IDIsIDIwMTggMTE6NDM6NTggUE08YnI+CjxiPlRvOjwvYj4gPGEgaHJlZj0ibWFpbHRv OnNwZGtAbGlzdHMuMDEub3JnIiBpZD0iTFBsbmszMTIzMjIiPnNwZGtAbGlzdHMuMDEub3JnPC9h Pjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gU1BESyAmIzQzOyB1c2VyIHNwYWNlIGFw cGxpYW5jZTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPgo8bzpwPjwvbzpwPjwvc3Bh bj48L3A+CjxkaXY+CjxwIGNsYXNzPSJ4eG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOmJs YWNrIj4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRp dj4KPHAgY2xhc3M9Inh4bXNvbm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMi4wcHQiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2NvbG9yOmJsYWNrIj5PbiBUaHUsIDIwMTgtMDIt MDEgYXQgMDg6MjkgJiM0MzswMDAwLCBTaGFoYXIgU2Fsem1hbiB3cm90ZTo8YnI+CiZndDsgSGkg QmVuLDxicj4KJmd0OyA8YnI+CiZndDsgV291bGQgeW91IGFsc28gbGlrZSB0byB0YWtlIGEgbG9v ayBhdCB0aGUgYmRldl91c2VyIG1vZHVsZT88YnI+CiZndDsgSXQgc3RpbGwgbmVlZHMgc29tZSBw YXRjaGluZyAoYXMgc29tZSBvZiB0aGUgc3R1ZmYgaXMgc3RpbGwgaGFyZCBjb2RlZCksIGJ1dCBJ PGJyPgomZ3Q7IHRoaW5rIHdlIGNhbiBnZXQgbW9zdCBvZiBpdCBjbGVhbmVkIHVwIGluIGEgY291 cGxlIG9mIGRheXMuPGJyPgomZ3Q7IDxicj4KJmd0OyBJbiBhbnkgY2FzZSwgaXMgaXQgdGhlIGlu dGVudGlvbiB0aGF0IHRoZSB1c2VyIHdyaXRlIGhpcyBvd24gYmRldiBtb2R1bGUsIG9yPGJyPgom Z3Q7IHdvdWxkIHRoaXMgdXNlciBhcHBsaWFuY2UgZ2x1ZSBiZSBhIHVzZWZ1bCBnZW5lcmljIG1v ZHVsZT88YnI+Cjxicj4KRm9yIGV4aXN0aW5nIHN0b3JhZ2Ugc3RhY2tzIHRoYXQgc2VydmUgYmxv Y2sgSS9PLCBsaWtlIHRoZSBpbnRlcm5hbHMgb2YgYSBTQU4sPGJyPgp0aGUgaWRlYSBpcyB0aGF0 IHlvdSB3cml0ZSB5b3VyIG93biBiZGV2IG1vZHVsZSB0byBmb3J3YXJkIEkvTyBjb21pbmcgb3V0 IG9mIHRoZTxicj4KU1BESyBiZGV2IGxheWVyLiBUaGVuIHlvdSBjYW4gdXNlIHRoZSBTUERLIGlT Q1NJL05WTWUtb0Yvdmhvc3QgdGFyZ2V0cyBtb3N0bHk8YnI+CmFzLWlzLjxicj4KPGJyPgpJbiBz b21lIGNhc2VzLCB0aGUgYWN0dWFsIGlTQ1NJL05WTWUtb0Yvdmhvc3QgdGFyZ2V0IGFwcGxpY2F0 aW9ucyB3b24ndDxicj4KaW50ZWdyYXRlIG5pY2VseSBkaXJlY3RseSBpbnRvIGFuIGV4aXN0aW5n IHN0b3JhZ2UgYXBwbGljYXRpb24gYmVjYXVzZSB0aGV5PGJyPgpzcGF3biB0aGVpciBvd24gdGhy ZWFkcyBhbmQgYWxsb2NhdGUgdGhlaXIgb3duIG1lbW9yeS4gVG8gc3VwcG9ydCB0aGF0LCB0aGU8 YnI+CmxpYnJhcmllcyBtYXkgYmUgY29uc3VtZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgYXBw bGljYXRpb25zIChsaWIvaXNjc2ksPGJyPgpsaWIvc2NzaSwgbGliL252bWYsIGV0Yy4pLiBUaGUg bGlicmFyaWVzIGRvbid0IHNwYXduIGFueSBvZiB0aGVpciBvd24gdGhyZWFkcyw8YnI+CmJ1dCBp bnN0ZWFkIHJlbHkgb24gU1BESydzIGFic3RyYWN0aW9ucyBpbiBpbmNsdWRlL3NwZGsvaW9fY2hh bm5lbC5oLiBTZWU8YnI+Cjxicj4KPGEgaHJlZj0iaHR0cDovL3d3dy5zcGRrLmlvL2RvYy9jb25j dXJyZW5jeS5odG1sIiBpZD0iTFBsbmszNzYyMDciPmh0dHA6Ly93d3cuc3Bkay5pby9kb2MvY29u Y3VycmVuY3kuaHRtbDwvYT48YnI+Cjxicj4KV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSB3YXkg dG8gd3JpdGUgYSBjdXN0b20gYmRldiBtb2R1bGUgdGhhdCByZXNpZGVzIG91dHNpZGU8YnI+Cm9m IHRoZSBTUERLIHNvdXJjZSB0cmVlLCBidXQgaXQncyB2ZXJ5IHBvc3NpYmxlIHRvIGFkZCBzdXBw b3J0IGZvciB0aGF0LiBCdXQ8YnI+CmJleW9uZCB0aGF0IGluY29udmVuaWVuY2UgKGp1c3QgZHJv cCB5b3VyIG1vZHVsZSBpbiBsaWIvYmRldiBmb3Igbm93KSwgd3JpdGluZyBhPGJyPgpiZGV2IG1v ZHVsZSBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGJvdHRv bSBlbmQgb2YgdGhlPGJyPgpTUERLIGJkZXYgbGF5ZXIuIEkgdGhpbmsgdGhhdCdzIHdoYXQgeW91 IHJlYWxseSB3YW50IHRvIGJlIGRvaW5nIGluIHlvdXIgY29kZSw8YnI+CmZyb20gd2hhdCBJIGNh biB0ZWxsLjxicj4KPGJyPgpJIGhvcGUgdGhhdCBoZWxwcyE8YnI+Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpTUERLIG1haWxpbmcgbGlzdDxicj4K PGEgaHJlZj0ibWFpbHRvOlNQREtAbGlzdHMuMDEub3JnIiBpZD0iTFBsbmsxNTU5MTIiPlNQREtA bGlzdHMuMDEub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1h bi9saXN0aW5mby9zcGRrIiBpZD0iTFBsbms4MDc3MTMiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21h aWxtYW4vbGlzdGluZm8vc3BkazwvYT48L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj48 bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4K PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo= --===============9046602708311385976==--