Re: [Luv] Results and a few questions
Loucaides, John <[email protected]> Thu, 29 Oct 2015 05:54:28 +0000
| Newsgroups | dev.linux.lists.oe-chipsec |
|---|---|
| Message-ID | <F2C8915217E2664AB33302D7A9ED9C0A258D51CD@hasmsx108.ger.corp.intel.com> |
--===============4879582241081234213== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Interesting=E2=80=A6 I=E2=80=99m looking into this. We=E2=80=99re trying to= finish up a 1.2.2 release, and I plan to go through the pull requests over= the next day or two. Btw, have you seen bugs related to setup.py outside LUV as well? Thanks, - John From: chipsec [mailto:chipsec-bounces(a)lists.01.org] On Behalf Of Darren B= ilby Sent: Wednesday, October 28, 2015 5:55 PM To: Ricardo Neri <[email protected]>; kusuriya(a)corr= upted.io Cc: chipsec(a)lists.01.org; luv(a)lists.01.org Subject: Re: [chipsec] [Luv] Results and a few questions I'm actually not convinced Chipsec on LUV has ever worked. The configuration in setup.py for Chipsec doesn't include the XML files in = the deployment, thus no XML files in LUV, and therefore the errors. There is a fix for it in a pull request here https://github.com/chipsec/chi= psec/pull/7 but there are a bunch of other very old pull requests that don'= t seem to be being looked at. On Thu, Oct 29, 2015 at 9:26 AM Ricardo Neri <ricardo.neri-calderon(a)linux= .intel.com<mailto:[email protected]>> wrote: Actually including the CHIPSEC mailing list this time. On Mon, 2015-10-26 at 19:51 +0000, Neri, Ricardo wrote: > +CHIPSEC mailing list > > Hi Jason, > > Thanks for your report. > > On Mon, 2015-10-26 at 12:04 -0700, Jason Barbier wrote: > > Hey all, > > I ran LUV-Live and my results are attached as a zip, I sort of was > > wondering about the errors in the chipsec log though, > > These were similar errors that I got last week that caused some issu= es > > with my clock being reset using version 1.2, the latest RC seems to = not > > do that but It still can not seem to run all the tests. > > > > -- > > WARNING: 'SPIBAR' MMIO BAR definition not found/correct in XML config > > [pci] reading B/D/F: 0/31/0, offset: 0xF0, value: 0xFED1C001 > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB) > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB) > > [-] Traceback (most recent call last): > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291,= in > > run_module > > result =3D modx.run( module_argv ) > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 69= , in > > run > > result =3D self.get_module_object() > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 10= 1, > > in get_module_object > > self.mod_obj =3D iref() > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/bios_wp.p= y", > > line 51, in __init__ > > self.spi =3D SPI( self.cs ) > > File "/usr/lib/python2.7/site-packages/chipsec/hal/spi.py", line 1= 76, > > in __init__ > > self.hsfs_off =3D int(chipsec.chipset.get_register_def( self.c= s, > > "HSFS" )['offset'],16) > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 4= 67, > > in get_register_def > > return _cs.Cfg.REGISTERS[ reg_name ] > > KeyError: 'HSFS' > > -- > > [-] Traceback (most recent call last): > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291,= in > > run_module > > result =3D modx.run( module_argv ) > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80= , in > > run > > result =3D self.mod_obj.run(module_argv) > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.= py", > > line 68, in run > > return self.check_flash_access_permissions() > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.= py", > > line 48, in check_flash_access_permissions > > frap =3D chipsec.chipset.read_register( self.cs, 'FRAP' ) > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 4= 70, > > in read_register > > reg =3D _cs.Cfg.REGISTERS[ reg_name ] > > KeyError: 'FRAP' > > > > ERROR: Exception occurred during chipsec.modules.common.spi_desc.run= (): > > ''FRAP'' > > -- > > [-] Traceback (most recent call last): > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291,= in > > run_module > > result =3D modx.run( module_argv ) > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80= , in > > run > > result =3D self.mod_obj.run(module_argv) > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.= py", > > line 59, in run > > return self.check_spi_lock() > > File > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.= py", > > line 46, in check_spi_lock > > hsfs_reg =3D chipsec.chipset.read_register( self.cs, 'HSFS' ) > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 4= 70, > > in read_register > > reg =3D _cs.Cfg.REGISTERS[ reg_name ] > > KeyError: 'HSFS' > > > > ERROR: Exception occurred during chipsec.modules.common.spi_lock.run= (): > > ''HSFS'' > > -- > > > I added the CHIPSEC mailing list. Perhaps they can give further insight > on what the problem might be. > > As per LUV, it seems that this exception somehow caused a crash in the > LUV test manager and it prevented it from running the tests of the > tests. It seems we need to add some safeguards so that LUV can handle > these errors more gracefully. > > Thanks and BR, > Ricardo > > > > > _______________________________________________ > > Luv mailing list > > Luv(a)lists.01.org<mailto:[email protected]> > > https://lists.01.org/mailman/listinfo/luv > > _______________________________________________ > Luv mailing list > Luv(a)lists.01.org<mailto:[email protected]> > https://lists.01.org/mailman/listinfo/luv _______________________________________________ chipsec mailing list chipsec(a)lists.01.org<mailto:[email protected]> https://lists.01.org/mailman/listinfo/chipsec --===============4879582241081234213== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6ZHQ9InV1aWQ6QzJGNDEwMTAtNjVC My0xMWQxLUEyOUYtMDBBQTAwQzE0ODgyIiB4bWxuczptPSJodHRwOi8vc2NoZW1hcy5taWNyb3Nv ZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9S RUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250 ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBj b250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQgbWVkaXVtKSI+DQo8c3R5bGU+PCEt LQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpXaW5n ZGluZ3M7DQoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9DQpAZm9udC1mYWNlDQoJe2Zv bnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOw0KCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7 fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUgNSAy IDIgMiA0IDMgMiA0O30NCi8qIFN0eWxlIERlZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGku TXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJe21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTou MDAwMXB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21h biIsc2VyaWY7fQ0KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3Jp dHk6OTk7DQoJY29sb3I6Ymx1ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmE6dmlz aXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZA0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7 DQoJY29sb3I6cHVycGxlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KcC5Nc29MaXN0 UGFyYWdyYXBoLCBsaS5Nc29MaXN0UGFyYWdyYXBoLCBkaXYuTXNvTGlzdFBhcmFncmFwaA0KCXtt c28tc3R5bGUtcHJpb3JpdHk6MzQ7DQoJbWFyZ2luLXRvcDowaW47DQoJbWFyZ2luLXJpZ2h0OjBp bjsNCgltYXJnaW4tYm90dG9tOjBpbjsNCgltYXJnaW4tbGVmdDouNWluOw0KCW1hcmdpbi1ib3R0 b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcg Um9tYW4iLHNlcmlmO30NCnNwYW4uRW1haWxTdHlsZTE3DQoJe21zby1zdHlsZS10eXBlOnBlcnNv bmFsLXJlcGx5Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOiMx RjQ5N0Q7fQ0KLk1zb0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJ Zm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJ e3NpemU6OC41aW4gMTEuMGluOw0KCW1hcmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9DQpk aXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6V29yZFNlY3Rpb24xO30NCi8qIExpc3QgRGVmaW5pdGlv bnMgKi8NCkBsaXN0IGwwDQoJe21zby1saXN0LWlkOjEzNjU5ODcwNzc7DQoJbXNvLWxpc3QtdHlw ZTpoeWJyaWQ7DQoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjM3MTA3MzMyIC0xNzk4MTI1Njc2IDY3 Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4 NjkxIDY3Njk4NjkzO30NCkBsaXN0IGwwOmxldmVsMQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1h dDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6LTsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsN Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MjAuMjVwdDsN Cgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7 DQoJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgltc28tYmlkaS1mb250LWZhbWls eToiVGltZXMgTmV3IFJvbWFuIjt9DQpAbGlzdCBsMDpsZXZlbDINCgl7bXNvLWxldmVsLW51bWJl ci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9w Om5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjU2 LjI1cHQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7 fQ0KQGxpc3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCglt c28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVs LW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjkyLjI1cHQ7DQoJdGV4dC1pbmRl bnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9DQpAbGlzdCBsMDpsZXZlbDQNCgl7 bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CtzsNCglt c28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7 DQoJbWFyZ2luLWxlZnQ6MTI4LjI1cHQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFt aWx5OlN5bWJvbDt9DQpAbGlzdCBsMDpsZXZlbDUNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6 YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJ bXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjE2NC4yNXB0Ow0K CXRleHQtaW5kZW50Oi0uMjVpbjsNCglmb250LWZhbWlseToiQ291cmllciBOZXciO30NCkBsaXN0 IGwwOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVs LXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXIt cG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDoyMDAuMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1 aW47DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwwOmxldmVsNw0KCXttc28tbGV2 ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674K3Ow0KCW1zby1sZXZl bC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJn aW4tbGVmdDoyMzYuMjVwdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJZm9udC1mYW1pbHk6U3lt Ym9sO30NCkBsaXN0IGwwOmxldmVsOA0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7 DQoJbXNvLWxldmVsLXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2 ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6MjcyLjI1cHQ7DQoJdGV4dC1p bmRlbnQ6LS4yNWluOw0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQ0KQGxpc3QgbDA6bGV2 ZWw5DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrv gqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlv bjpsZWZ0Ow0KCW1hcmdpbi1sZWZ0OjMwOC4yNXB0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCglm b250LWZhbWlseTpXaW5nZGluZ3M7fQ0Kb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwNCgl7 bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4N CjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYiIC8+DQo8L3htbD48 IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6ZXh0 PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBlbGF5 b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9 ImJsdWUiIHZsaW5rPSJwdXJwbGUiPg0KPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5JbnRlcmVzdGlu Z+KApiBJ4oCZbSBsb29raW5nIGludG8gdGhpcy4gV2XigJlyZSB0cnlpbmcgdG8gZmluaXNoIHVw IGEgMS4yLjIgcmVsZWFzZSwgYW5kIEkgcGxhbiB0byBnbyB0aHJvdWdoIHRoZSBwdWxsIHJlcXVl c3RzIG92ZXIgdGhlIG5leHQgZGF5IG9yIHR3by4NCjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6IzFGNDk3RCI+QnR3LCBoYXZlIHlvdSBzZWVuIGJ1Z3MgcmVsYXRlZCB0byBzZXR1 cC5weSBvdXRzaWRlIExVViBhcyB3ZWxsPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZuYnNwOzwv bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6IzFGNDk3RCI+VGhhbmtzLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29M aXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjAuMjVwdDt0ZXh0LWluZGVudDotLjI1 aW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzEiPg0KPCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJZ25vcmUiPi08 c3BhbiBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFu Pjwvc3Bhbj48L3NwYW4+PCFbZW5kaWZdPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj5K b2huPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmO2NvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYg c3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzow aW4gMGluIDBpbiA0LjBwdCI+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVy LXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1m YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj5Gcm9tOjwvc3Bhbj48L2I+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90 OyxzYW5zLXNlcmlmIj4gY2hpcHNlYyBbbWFpbHRvOmNoaXBzZWMtYm91bmNlc0BsaXN0cy4wMS5v cmddDQo8Yj5PbiBCZWhhbGYgT2YgPC9iPkRhcnJlbiBCaWxieTxicj4NCjxiPlNlbnQ6PC9iPiBX ZWRuZXNkYXksIE9jdG9iZXIgMjgsIDIwMTUgNTo1NSBQTTxicj4NCjxiPlRvOjwvYj4gUmljYXJk byBOZXJpICZsdDtyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tJmd0Ozsga3Vz dXJpeWFAY29ycnVwdGVkLmlvPGJyPg0KPGI+Q2M6PC9iPiBjaGlwc2VjQGxpc3RzLjAxLm9yZzsg bHV2QGxpc3RzLjAxLm9yZzxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogW2NoaXBzZWNdIFtMdXZd IFJlc3VsdHMgYW5kIGEgZmV3IHF1ZXN0aW9uczxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjwvZGl2 Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxk aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JJ20gYWN0dWFsbHkgbm90IGNvbnZpbmNlZCBDaGlw c2VjIG9uIExVViBoYXMgZXZlciB3b3JrZWQuJm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhlIGNvbmZpZ3VyYXRpb24gaW4gc2V0dXAucHkgZm9yIENo aXBzZWMgZG9lc24ndCBpbmNsdWRlIHRoZSBYTUwgZmlsZXMgaW4gdGhlIGRlcGxveW1lbnQsIHRo dXMgbm8gWE1MIGZpbGVzIGluIExVViwgYW5kIHRoZXJlZm9yZSB0aGUgZXJyb3JzLiZuYnNwOzxv OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhlcmUg aXMgYSBmaXggZm9yIGl0IGluIGEgcHVsbCByZXF1ZXN0IGhlcmUgPGEgaHJlZj0iaHR0cHM6Ly9n aXRodWIuY29tL2NoaXBzZWMvY2hpcHNlYy9wdWxsLzciPg0KaHR0cHM6Ly9naXRodWIuY29tL2No aXBzZWMvY2hpcHNlYy9wdWxsLzc8L2E+Jm5ic3A7YnV0IHRoZXJlIGFyZSBhIGJ1bmNoIG9mIG90 aGVyIHZlcnkgb2xkIHB1bGwgcmVxdWVzdHMgdGhhdCBkb24ndCBzZWVtIHRvIGJlIGJlaW5nIGxv b2tlZCBhdC4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgOToyNiBBTSBSaWNhcmRvIE5lcmkg Jmx0OzxhIGhyZWY9Im1haWx0bzpyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29t Ij5yaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPC9hPiZndDsgd3JvdGU6PG86 cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3Jk ZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFy Z2luLWxlZnQ6NC44cHQ7bWFyZ2luLXJpZ2h0OjBpbiI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5B Y3R1YWxseSBpbmNsdWRpbmcgdGhlIENISVBTRUMgbWFpbGluZyBsaXN0IHRoaXMgdGltZS48YnI+ DQpPbiBNb24sIDIwMTUtMTAtMjYgYXQgMTk6NTEgJiM0MzswMDAwLCBOZXJpLCBSaWNhcmRvIHdy b3RlOjxicj4NCiZndDsgJiM0MztDSElQU0VDIG1haWxpbmcgbGlzdDxicj4NCiZndDs8YnI+DQom Z3Q7IEhpIEphc29uLDxicj4NCiZndDs8YnI+DQomZ3Q7IFRoYW5rcyBmb3IgeW91ciByZXBvcnQu PGJyPg0KJmd0Ozxicj4NCiZndDsgT24gTW9uLCAyMDE1LTEwLTI2IGF0IDEyOjA0IC0wNzAwLCBK YXNvbiBCYXJiaWVyIHdyb3RlOjxicj4NCiZndDsgJmd0OyBIZXkgYWxsLDxicj4NCiZndDsgJmd0 OyBJIHJhbiBMVVYtTGl2ZSBhbmQgbXkgcmVzdWx0cyBhcmUgYXR0YWNoZWQgYXMgYSB6aXAsIEkg c29ydCBvZiB3YXM8YnI+DQomZ3Q7ICZndDsgd29uZGVyaW5nIGFib3V0IHRoZSBlcnJvcnMgaW4g dGhlIGNoaXBzZWMgbG9nIHRob3VnaCw8YnI+DQomZ3Q7ICZndDsgVGhlc2Ugd2VyZSBzaW1pbGFy IGVycm9ycyB0aGF0IEkgZ290IGxhc3Qgd2VlayB0aGF0IGNhdXNlZCBzb21lIGlzc3Vlczxicj4N CiZndDsgJmd0OyB3aXRoIG15IGNsb2NrIGJlaW5nIHJlc2V0IHVzaW5nIHZlcnNpb24gMS4yLCB0 aGUgbGF0ZXN0IFJDIHNlZW1zIHRvIG5vdDxicj4NCiZndDsgJmd0OyBkbyB0aGF0IGJ1dCBJdCBz dGlsbCBjYW4gbm90IHNlZW0gdG8gcnVuIGFsbCB0aGUgdGVzdHMuPGJyPg0KJmd0OyAmZ3Q7PGJy Pg0KJmd0OyAmZ3Q7IC0tPGJyPg0KJmd0OyAmZ3Q7IFdBUk5JTkc6ICdTUElCQVInIE1NSU8gQkFS IGRlZmluaXRpb24gbm90IGZvdW5kL2NvcnJlY3QgaW4gWE1MIGNvbmZpZzxicj4NCiZndDsgJmd0 OyBbcGNpXSByZWFkaW5nIEIvRC9GOiAwLzMxLzAsIG9mZnNldDogMHhGMCwgdmFsdWU6IDB4RkVE MUMwMDE8YnI+DQomZ3Q7ICZndDsgW3NwaV0gU1BJIE1NSU8gYmFzZTogMHgwMDAwMDAwMEZFRDFG ODAwIChhc3N1bWluZyBiZWxvdyA0R0IpPGJyPg0KJmd0OyAmZ3Q7IFtzcGldIFNQSSBNTUlPIGJh c2U6IDB4MDAwMDAwMDBGRUQxRjgwMCAoYXNzdW1pbmcgYmVsb3cgNEdCKTxicj4NCiZndDsgJmd0 OyBbLV0gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjxicj4NCiZndDsgJmd0OyZu YnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2No aXBzZWNfbWFpbi5weSZxdW90OywgbGluZSAyOTEsIGluPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZu YnNwO3J1bl9tb2R1bGU8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9 IG1vZHgucnVuKCBtb2R1bGVfYXJndiApPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUg JnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGUucHkm cXVvdDssIGxpbmUgNjksIGluPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO3J1bjxicj4NCiZn dDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7cmVzdWx0ID0gc2VsZi5nZXRfbW9kdWxlX29iamVj dCgpPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9u Mi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGUucHkmcXVvdDssIGxpbmUgMTAxLDxicj4N CiZndDsgJmd0OyZuYnNwOyAmbmJzcDtpbiBnZXRfbW9kdWxlX29iamVjdDxicj4NCiZndDsgJmd0 OyZuYnNwOyAmbmJzcDsgJm5ic3A7c2VsZi5tb2Rfb2JqID0gaXJlZigpPGJyPg0KJmd0OyAmZ3Q7 Jm5ic3A7ICZuYnNwO0ZpbGU8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9s aWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9iaW9zX3dw LnB5JnF1b3Q7LDxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtsaW5lIDUxLCBpbiBfX2luaXRf Xzxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7c2VsZi5zcGkmbmJzcDsgJm5ic3A7 ID0gU1BJKCBzZWxmLmNzICk8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsv dXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL2hhbC9zcGkucHkmcXVvdDss IGxpbmUgMTc2LDxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtpbiBfX2luaXRfXzxicj4NCiZn dDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7c2VsZi5oc2ZzX29mZiZuYnNwOyAmbmJzcDs9IGlu dChjaGlwc2VjLmNoaXBzZXQuZ2V0X3JlZ2lzdGVyX2RlZiggc2VsZi5jcyw8YnI+DQomZ3Q7ICZn dDsmbmJzcDsgJm5ic3A7ICZuYnNwOyZxdW90O0hTRlMmcXVvdDsgKVsnb2Zmc2V0J10sMTYpPGJy Pg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3Np dGUtcGFja2FnZXMvY2hpcHNlYy9jaGlwc2V0LnB5JnF1b3Q7LCBsaW5lIDQ2Nyw8YnI+DQomZ3Q7 ICZndDsmbmJzcDsgJm5ic3A7aW4gZ2V0X3JlZ2lzdGVyX2RlZjxicj4NCiZndDsgJmd0OyZuYnNw OyAmbmJzcDsgJm5ic3A7cmV0dXJuIF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJyPg0K Jmd0OyAmZ3Q7IEtleUVycm9yOiAnSFNGUyc8YnI+DQomZ3Q7ICZndDsgLS08YnI+DQomZ3Q7ICZn dDsgWy1dIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8YnI+DQomZ3Q7ICZndDsm bmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9j aGlwc2VjX21haW4ucHkmcXVvdDssIGxpbmUgMjkxLCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAm bmJzcDtydW5fbW9kdWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDtyZXN1bHQg PSBtb2R4LnJ1biggbW9kdWxlX2FyZ3YgKTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxl ICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlLnB5 JnF1b3Q7LCBsaW5lIDgwLCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtydW48YnI+DQom Z3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9IHNlbGYubW9kX29iai5ydW4obW9k dWxlX2FyZ3YpPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGU8YnI+DQomZ3Q7ICZndDsm bmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNl Yy9tb2R1bGVzL2NvbW1vbi9zcGlfZGVzYy5weSZxdW90Oyw8YnI+DQomZ3Q7ICZndDsmbmJzcDsg Jm5ic3A7bGluZSA2OCwgaW4gcnVuPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gc2VsZi5jaGVja19mbGFzaF9hY2Nlc3NfcGVybWlzc2lvbnMoKTxicj4NCiZndDsgJmd0 OyZuYnNwOyAmbmJzcDtGaWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyZxdW90Oy91c3Iv bGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlcy9jb21tb24vc3BpX2Rl c2MucHkmcXVvdDssPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2xpbmUgNDgsIGluIGNoZWNr X2ZsYXNoX2FjY2Vzc19wZXJtaXNzaW9uczxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5i c3A7ZnJhcCA9IGNoaXBzZWMuY2hpcHNldC5yZWFkX3JlZ2lzdGVyKCBzZWxmLmNzLCAnRlJBUCcg KTxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIu Ny9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZxdW90OywgbGluZSA0NzAsPGJyPg0K Jmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO2luIHJlYWRfcmVnaXN0ZXI8YnI+DQomZ3Q7ICZndDsmbmJz cDsgJm5ic3A7ICZuYnNwO3JlZyA9IF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJyPg0K Jmd0OyAmZ3Q7IEtleUVycm9yOiAnRlJBUCc8YnI+DQomZ3Q7ICZndDs8YnI+DQomZ3Q7ICZndDsg RVJST1I6IEV4Y2VwdGlvbiBvY2N1cnJlZCBkdXJpbmcgY2hpcHNlYy5tb2R1bGVzLmNvbW1vbi5z cGlfZGVzYy5ydW4oKTo8YnI+DQomZ3Q7ICZndDsgJydGUkFQJyc8YnI+DQomZ3Q7ICZndDsgLS08 YnI+DQomZ3Q7ICZndDsgWy1dIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8YnI+ DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0 ZS1wYWNrYWdlcy9jaGlwc2VjX21haW4ucHkmcXVvdDssIGxpbmUgMjkxLCBpbjxicj4NCiZndDsg Jmd0OyZuYnNwOyAmbmJzcDtydW5fbW9kdWxlPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwOyAm bmJzcDtyZXN1bHQgPSBtb2R4LnJ1biggbW9kdWxlX2FyZ3YgKTxicj4NCiZndDsgJmd0OyZuYnNw OyAmbmJzcDtGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBz ZWMvbW9kdWxlLnB5JnF1b3Q7LCBsaW5lIDgwLCBpbjxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJz cDtydW48YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO3Jlc3VsdCA9IHNlbGYubW9k X29iai5ydW4obW9kdWxlX2FyZ3YpPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZuYnNwO0ZpbGU8YnI+ DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFj a2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfbG9jay5weSZxdW90Oyw8YnI+DQomZ3Q7 ICZndDsmbmJzcDsgJm5ic3A7bGluZSA1OSwgaW4gcnVuPGJyPg0KJmd0OyAmZ3Q7Jm5ic3A7ICZu YnNwOyAmbmJzcDtyZXR1cm4gc2VsZi5jaGVja19zcGlfbG9jaygpPGJyPg0KJmd0OyAmZ3Q7Jm5i c3A7ICZuYnNwO0ZpbGU8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7JnF1b3Q7L3Vzci9saWIv cHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfbG9jay5w eSZxdW90Oyw8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7bGluZSA0NiwgaW4gY2hlY2tfc3Bp X2xvY2s8YnI+DQomZ3Q7ICZndDsmbmJzcDsgJm5ic3A7ICZuYnNwO2hzZnNfcmVnID0gY2hpcHNl Yy5jaGlwc2V0LnJlYWRfcmVnaXN0ZXIoIHNlbGYuY3MsICdIU0ZTJyApPGJyPg0KJmd0OyAmZ3Q7 Jm5ic3A7ICZuYnNwO0ZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMv Y2hpcHNlYy9jaGlwc2V0LnB5JnF1b3Q7LCBsaW5lIDQ3MCw8YnI+DQomZ3Q7ICZndDsmbmJzcDsg Jm5ic3A7aW4gcmVhZF9yZWdpc3Rlcjxicj4NCiZndDsgJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7 cmVnID0gX2NzLkNmZy5SRUdJU1RFUlNbIHJlZ19uYW1lIF08YnI+DQomZ3Q7ICZndDsgS2V5RXJy b3I6ICdIU0ZTJzxicj4NCiZndDsgJmd0Ozxicj4NCiZndDsgJmd0OyBFUlJPUjogRXhjZXB0aW9u IG9jY3VycmVkIGR1cmluZyBjaGlwc2VjLm1vZHVsZXMuY29tbW9uLnNwaV9sb2NrLnJ1bigpOjxi cj4NCiZndDsgJmd0OyAnJ0hTRlMnJzxicj4NCiZndDsgJmd0OyAtLTxicj4NCiZndDsgJmd0Ozxi cj4NCiZndDsgSSBhZGRlZCB0aGUgQ0hJUFNFQyBtYWlsaW5nIGxpc3QuIFBlcmhhcHMgdGhleSBj YW4gZ2l2ZSBmdXJ0aGVyIGluc2lnaHQ8YnI+DQomZ3Q7IG9uIHdoYXQgdGhlIHByb2JsZW0gbWln aHQgYmUuPGJyPg0KJmd0Ozxicj4NCiZndDsgQXMgcGVyIExVViwgaXQgc2VlbXMgdGhhdCB0aGlz IGV4Y2VwdGlvbiBzb21laG93IGNhdXNlZCBhIGNyYXNoIGluIHRoZTxicj4NCiZndDsgTFVWIHRl c3QgbWFuYWdlciBhbmQgaXQgcHJldmVudGVkIGl0IGZyb20gcnVubmluZyB0aGUgdGVzdHMgb2Yg dGhlPGJyPg0KJmd0OyB0ZXN0cy4gSXQgc2VlbXMgd2UgbmVlZCB0byBhZGQgc29tZSBzYWZlZ3Vh cmRzIHNvIHRoYXQgTFVWIGNhbiBoYW5kbGU8YnI+DQomZ3Q7IHRoZXNlIGVycm9ycyBtb3JlIGdy YWNlZnVsbHkuPGJyPg0KJmd0Ozxicj4NCiZndDsgVGhhbmtzIGFuZCBCUiw8YnI+DQomZ3Q7IFJp Y2FyZG88YnI+DQomZ3Q7PGJyPg0KJmd0OyAmZ3Q7PGJyPg0KJmd0OyAmZ3Q7IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KJmd0OyAmZ3Q7IEx1diBt YWlsaW5nIGxpc3Q8YnI+DQomZ3Q7ICZndDsgPGEgaHJlZj0ibWFpbHRvOkx1dkBsaXN0cy4wMS5v cmciIHRhcmdldD0iX2JsYW5rIj5MdXZAbGlzdHMuMDEub3JnPC9hPjxicj4NCiZndDsgJmd0OyA8 YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2x1diIgdGFyZ2V0 PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vbHV2PC9hPjxi cj4NCiZndDs8YnI+DQomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fPGJyPg0KJmd0OyBMdXYgbWFpbGluZyBsaXN0PGJyPg0KJmd0OyA8YSBocmVmPSJt YWlsdG86THV2QGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkx1dkBsaXN0cy4wMS5vcmc8 L2E+PGJyPg0KJmd0OyA8YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2x1diIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz dGluZm8vbHV2PC9hPjxicj4NCjxicj4NCjxicj4NCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fPGJyPg0KY2hpcHNlYyBtYWlsaW5nIGxpc3Q8YnI+DQo8YSBo cmVmPSJtYWlsdG86Y2hpcHNlY0BsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlwc2Vj QGxpc3RzLjAxLm9yZzwvYT48YnI+DQo8YSBocmVmPSJodHRwczovL2xpc3RzLjAxLm9yZy9tYWls bWFuL2xpc3RpbmZvL2NoaXBzZWMiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2NoaXBzZWM8L2E+PG86cD48L286cD48L3A+DQo8L2Jsb2NrcXVv dGU+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --===============4879582241081234213==--