<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>3712</bug_id>
          
          <creation_ts>2013-01-14 12:34:07 +0000</creation_ts>
          <short_desc>Testopia mediawiki extension</short_desc>
          <delta_ts>2013-02-14 11:33:18 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>5</classification_id>
          <classification>Infrastructure</classification>
          <product>Wiki</product>
          <component>wiki</component>
          <version>unspecified</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>1.4</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stoicescu Cornel">corneliux.stoicescu</reporter>
          <assigned_to name="Michael Halstead">mhalstead</assigned_to>
          <cc>sgw</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>---</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28805</commentid>
    <comment_count>0</comment_count>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-01-14 12:34:07 +0000</bug_when>
    <thetext>In order to create easy test reports, please install the Testopia mediawiki extension. Here is the link to the extension page: http://www.mediawiki.org/wiki/Extension:Testopia_Reports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28926</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Halstead">mhalstead</who>
    <bug_when>2013-01-18 02:27:22 +0000</bug_when>
    <thetext>The extension is present but not 100% functional.

The report generated by the below appears to work correctly.


{{#testopia:
|report_id=testplan
|plan_id=5
|showhide=true
|hidden=true
|chart=testers,tstatus,category,tprio
|charttype=pie3,pie,pie3,bar
|chartpos=top
|chartlayout=2
|chartwidth=500,400,450,400}}

Fixing priority reports is my next objective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28937</commentid>
    <comment_count>2</comment_count>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-01-18 07:46:42 +0000</bug_when>
    <thetext>Very nice! we can use this type of report to detail our testing cycles. I am looking forward to working with this extension. 

I will keep this bug up to date with any issues I encounter using this extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29451</commentid>
    <comment_count>3</comment_count>
      <attachid>1049</attachid>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-02-01 11:30:47 +0000</bug_when>
    <thetext>Created attachment 1049
patch files + readme</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29453</commentid>
    <comment_count>4</comment_count>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-02-01 11:31:05 +0000</bug_when>
    <thetext>Here is a patch that will fix the Agenda and Priority reports as well as add some tweaks to the way other reports look.

Also please look inside the README for the necessary steps to fix all the reports issues using this patch.

Some charts might require further fixing, as they are showing incorrect information, but I will cover that in a future bug/patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29459</commentid>
    <comment_count>5</comment_count>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-02-01 14:03:02 +0000</bug_when>
    <thetext>Please postpone the patch as I have found some issues we need to correct regarding test runs in the majority of reports. When case runs have multiple environments/builds in the same test run, they will show up for each of those in the report. We only use one build/environment per case run, even though case runs within the same test run can have different environments.

From the Testopia point of view this is correct, but we are not using this functionality; thus it needs removing or it will generate incorrect reports.

I will give the patch asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29463</commentid>
    <comment_count>6</comment_count>
      <attachid>1052</attachid>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-02-01 17:46:38 +0000</bug_when>
    <thetext>Created attachment 1052
patch_final + readme

The patch is ready. I have addressed all the issues mentioned above and also added fields like a &quot;Last Changed&quot; to the test plan report.

Read the README file inside the archive for instructions.

Cornel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29464</commentid>
    <comment_count>7</comment_count>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-02-01 17:47:10 +0000</bug_when>
    <thetext>Changing to resolved - fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29800</commentid>
    <comment_count>8</comment_count>
    <who name="Stoicescu Cornel">corneliux.stoicescu</who>
    <bug_when>2013-02-14 11:33:18 +0000</bug_when>
    <thetext>The MediaWiki extension for Testopia is functional. 

Further bugs can be opened to enhance functionality and fix issues.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1049</attachid>
            <date>2013-02-01 11:30:47 +0000</date>
            <delta_ts>2013-02-01 11:30:47 +0000</delta_ts>
            <desc>patch files + readme</desc>
            <filename>TestopiaReports.tgz</filename>
            <type>application/x-compressed</type>
            <size>71680</size>
            <attacher name="Stoicescu Cornel">corneliux.stoicescu</attacher>
            
              <data encoding="base64">UkVBRE1FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAw
MAAwMDAwMDAwADAwMDAwMDAxMTI1ADEyMTAyNzMzMjU2ADAxMDQzNAAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU
byBhcHBseSB0aGlzIHBhdGNoLCByZXBsYWNlIHRoZSBvcmlnaW5hbCBmaWxlcyBpbnNpZGUgL21l
ZGlhd2lraSovZXh0ZW5zaW9ucy9UZXN0b3BpYVJlcG9ydHMvIHdpdGggdGhlIGZpbGVzIGluIHRo
aXMgYXJjaGl2ZS4gUGxlYXNlIG1ha2UgYmFja3VwcyB0byBiZSBzYWZlLgoKVG8gZmluaXNoIGZp
eGluZyB0aGUgQWdlbmRhIHJlcG9ydCB0eXBlLCBjb21tZW50IG91dCB0aGUgZ3JhcGh2aXogbGlu
ZSBpbnNpZGUgTG9jYWxTZXR0aW5ncy5waHAgYW5kIHJlbW92ZSB0aGUgY29tbWEgYmVoaW5kIHRo
ZSBwcmV2aW91cyBsaW5lIGxpa2Ugc286Cgokd2dUZXN0b3BpYVJlcG9ydHMgPSBhcnJheSgKICdo
b3N0JyAgICAgICAgPT4gImxvY2FsaG9zdCIsLgogJ2RhdGFiYXNlJyAgICA9PiAiYnVnemlsbGEi
LAogJ3VzZXInICAgICAgICA9PiAiYnVnemlsbGEiLAogJ3Bhc3N3b3JkJyAgICA9PiAic29tZXBh
c3N3b3JkIiwKICdienNlcnZlcicgICAgPT4gImh0dHA6Ly9sb2NhbGhvc3QvYnVnemlsbGEiLAog
J2NoYXJ0ZGV2aWNlJyA9PiAiZ29vZ2xlIgojICdncmFwaHZpeicgICAgPT4gIi91c3IvYmluL2Rv
dCIKKTsKCgpUaGF0IHNob3VsZCBkbyBpdCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFJf
cmVwQWdlbmRhLnBocAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAw
MDAwMDAwADAwMDAwMDUxNzY3ADEyMTAyNzMyMDI3ADAxMjU3NAAgMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P3Bo
cA0KDQppbmlfc2V0KCJtZW1vcnlfbGltaXQiLCIxMjhNIik7CmNsYXNzIFRSX3JlcEFnZW5kYSBl
eHRlbmRzIFRSX1RlbXBsYXRlew0KDQoJcHJpdmF0ZSAkc3RhcnRIb3VyOw0KCXByaXZhdGUgJHN0
YXJ0TWludXRlOw0KCXByaXZhdGUgJGVuZEhvdXI7DQoJcHJpdmF0ZSAkZW5kTWludXRlOw0KCXBy
aXZhdGUgJGN1cnJIb3VyOw0KCXByaXZhdGUgJGN1cnJNaW51dGU7DQoJDQoJcHJpdmF0ZSAkbnVt
T2ZEYXlzOw0KCXByaXZhdGUgJG51bU9mSG91cnM7DQoJcHJpdmF0ZSAkbnVtT2ZNaW51dGVzOw0K
CQ0KCXByaXZhdGUgJHN0YXJ0RGF0ZTsNCglwcml2YXRlICRjdXJyZW50RGF0ZTsNCglwcml2YXRl
ICRpZ25vcmVXZWVrZW5kOw0KCXByaXZhdGUgJHRvZGF5Ow0KCXByaXZhdGUgJGhpZ2hsaWdodFJl
c291cmNlQ29uZmxpY3RzOw0KCXByaXZhdGUgJGRlcGVuZGVuY3lHcmFwaE9ubHk7DQoJDQoJIyB0
cnVlID0gbW9yZSB0aGFuIG9uZSByb290IGNhc2Ugd2FzIGZvdW5kDQoJcHJpdmF0ZSAkbW9yZVJv
b3RzOw0KCSMgdHJ1ZSA9IG9ubHkgY2FzZXMgd2l0aCBkZXBlbmRlbmNpZXMgLyBmYWxzZSA9IGNh
c2VzIHdpdGggYW5kIHdpdGhvdXQgZGVwZW5kZW5jaWVzDQoJcHJpdmF0ZSAkd2l0aERlcGVuZGVu
Y3k7DQoJDQoJcHJpdmF0ZSAkY3JlYXRlTmV3TGluZTsNCglwcml2YXRlICRudW1EYXk7DQoJcHJp
dmF0ZSAkY3VyckRheTsNCgkNCglwcml2YXRlICRkZXBlbmRlbmNpZXMgPSBhcnJheSgpOw0KCXBy
aXZhdGUgJGVuZFRpbWVzID0gYXJyYXkoKTsNCglwcml2YXRlICRjYXNlTGlzdCA9IGFycmF5KCk7
DQoJcHJpdmF0ZSAkY2FzZURhdGEgPSBhcnJheSgpOw0KCXByaXZhdGUgJGNvbmZsaWN0cyA9IGFy
cmF5KCk7DQoJDQoJcHJpdmF0ZSAkc3VwcG9ydGVkQ2hhcnRzID0gYXJyYXkoKTsNCg0KCXByaXZh
dGUgJHN1cHBvcnRlZENoYXJ0VHlwZXMgPSBhcnJheSgNCgkJImdvb2dsZSIgICA9PiBhcnJheSgp
LA0KCQkicGxvdGljdXMiID0+IGFycmF5KCkNCgkpOw0KCQ0KCXByaXZhdGUgJGNvbHVtbkZvcm1h
dHMgPSBhcnJheSgNCgkJIkNhdGVnb3J5IiA9PiAidGV4dC1hbGlnbjpjZW50ZXIiDQoJKTsgDQoJ
DQoJcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0c0FycigpIHsNCgkJcmV0dXJuICR0
aGlzLT5zdXBwb3J0ZWRDaGFydHM7DQoJfQ0KCQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0
ZWRDaGFydFR5cGVzQXJyKCkgew0KCQlyZXR1cm4gJHRoaXMtPnN1cHBvcnRlZENoYXJ0VHlwZXM7
DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbkZvcm1hdHMoKSB7DQoJCXJldHVybiAk
dGhpcy0+Y29sdW1uRm9ybWF0czsNCgl9DQoJDQoJLyoqDQoJICoJQ3JlYXRpbmcgdGhlIGRhdGUg
Zm9yIGEgZGlyZWN0IGdyYXBoIGZvciBncmFwaHZpeg0KCSAqLw0KCXByaXZhdGUgZnVuY3Rpb24g
ZGlncmFwaCgpIHsNCgkJJG91dHB1dFtdID0gImRpZ3JhcGggRyB7IjsNCgkJd2hpbGUgKCRkZXBl
bmRlbmN5ID0gY3VycmVudCgkdGhpcy0+ZGVwZW5kZW5jaWVzKSkgew0KCQkJZm9yZWFjaCAoJGRl
cGVuZGVuY3kgYXMgJG5vZGUpIHsNCgkJCQkkb3V0cHV0W109JG5vZGUuIi0+Ii5rZXkoJHRoaXMt
PmRlcGVuZGVuY2llcyk7DQoJCQl9DQoJCQluZXh0KCR0aGlzLT5kZXBlbmRlbmNpZXMpOw0KCQl9
DQoJCSRvdXRwdXRbXT0gIn0iOw0KCQlyZXR1cm4gJG91dHB1dDsNCgl9CQ0KCQ0KCXB1YmxpYyBm
dW5jdGlvbiBpbml0KCkgIHsKCQkjIGdldCByZXBvcnQgb3B0aW9ucw0KCQkkdGhpcy0+c3RhcnRI
b3VyIAkJCQkJPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInN0YXJ0aG91ciIsIHRydWUsIDgpOw0K
CQkkdGhpcy0+c3RhcnRNaW51dGUgCQkJCQk9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgic3RhcnRt
aW51dGUiLCB0cnVlICwwKTsNCgkJJHRoaXMtPmVuZEhvdXIgCQkJCQkJPSAkdGhpcy0+Z2V0QXJn
cygpLT5nZXQoImVuZGhvdXIiLCB0cnVlLCAxOCk7DQoJCSR0aGlzLT5lbmRNaW51dGUJCQkgCQk9
ICR0aGlzLT5nZXRBcmdzKCktPmdldCgiZW5kbWludXRlIiwgdHJ1ZSwgMCk7DQoJCSR0aGlzLT5z
dGFydERhdGUJCQkJCT0gJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJzdGFydGRhdGUiLCB0cnVlLCBk
YXRlKCJZLW0taiIsc3RydG90aW1lKCJub3ciKSkpOw0KCQkkdGhpcy0+aWdub3JlV2Vla2VuZCAJ
CQkgCT0gJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJpZ25vcmV3ZWVrZW5kcyIsIHRydWUsICJ0cnVl
Iik7DQoJCSR0aGlzLT53aXRoRGVwZW5kZW5jeSAJCQkJPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQo
IndpdGhkZXBlbmRlbmN5IiwgdHJ1ZSwgInRydWUiKTsNCiR0aGlzLT53aXRoRGVwZW5kZW5jeT0i
ZmFsc2UiOyAjaW50cm9kdWNlIG1hbnVhbGx5IHRoZSAiZmFsc2UiIHZhbHVlIHRvIGF2b2lkIGVy
cm9ycwoJCSR0aGlzLT5oaWdobGlnaHRSZXNvdXJjZUNvbmZsaWN0cyAJPSAkdGhpcy0+Z2V0QXJn
cygpLT5nZXQoImhpZ2hsaWdodHJlc2NvbmZsIiwgdHJ1ZSwgdHJ1ZSk7DQoJCSR0aGlzLT5kZXBl
bmRlbmN5R3JhcGhPbmx5IAkJCT0gJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJkZXBlbmRlbmN5Z3Jh
cGhvbmx5IiwgdHJ1ZSwgZmFsc2UpOw0KCQkNCgkJJHRoaXMtPmN1cnJlbnREYXRlID0gJHRoaXMt
PnN0YXJ0RGF0ZTsNCiMJCQ0KIwkJaWYgKCR0aGlzLT5pZ25vcmVXZWVrZW5kID09ICJmYWxzZSIp
IHsNCiMJCQkkbm93ID0gZ2V0RGF0ZShzdHJ0b3RpbWUoJHRoaXMtPmN1cnJlbnREYXRlKSk7DQoj
CQkJc3dpdGNoICgkbm93WyJ3ZGF5Il0pIHsNCiMJCQkJY2FzZSAwOiAkdGhpcy0+Y3VycmVudERh
dGUgPSBkYXRlICggJ1ktbS1qJyAsIHN0cnRvdGltZSAoICcrMSBkYXknICwgc3RydG90aW1lICgg
JHRoaXMtPmN1cnJlbnREYXRlICkgKSApOyBicmVhazsNCiMJCQkJY2FzZSA2OiAkdGhpcy0+Y3Vy
cmVudERhdGUgPSBkYXRlICggJ1ktbS1qJyAsIHN0cnRvdGltZSAoICcrMiBkYXknICwgc3RydG90
aW1lICggJHRoaXMtPmN1cnJlbnREYXRlICkgKSApOyBicmVhazsNCiMJCQl9CQ0KIwkJfQ0KCQkN
CiMJCSNmb3IgaGlnaGxpZ2h0aW5nIHRoZSBjb3JyZWN0IGRheQ0KIwkJJG5vdyA9IGdldERhdGUo
KTsNCiMJCSR0aGlzLT50b2RheSA9IGRhdGUoJ1ktbS1qJyAsIHN0cnRvdGltZSgkbm93WyJ5ZWFy
Il0uIi0iLiRub3dbIm1vbiJdLiItIi4kbm93WyJtZGF5Il0pKTsNCgkJDQoJCSMgaW5pdGlhbCBu
ZXcgbGluZQ0KCQkkdGhpcy0+Y3JlYXRlTmV3TGluZSA9IHRydWU7DQojCQkjIGNvdW50ZXIgZm9y
IHRoZSBkYXlzDQojCQkkdGhpcy0+bnVtRGF5ID0gMDsNCiMJCSMgY3VycmVudCBjb3VudGVyIGZv
ciBkYXlzDQojCQkkdGhpcy0+Y3VyckRheSA9IDA7DQoJCQkJDQoJCSNnZXQgZGVwZW5kZW5jaWVz
DQoJCSRzcWwgPSBuZXcgVFJfU1FMOw0KCQkkc3FsLT5zZXRDb25uZWN0b3IoJHRoaXMtPmdldENv
bm5lY3RvcigpKTsNCgkJDQoJCSRzcWwtPnNldEZyb20oInRlc3RfY2FzZV9ydW5zIik7DQoJCSRz
cWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfZGVwZW5kZW5jaWVzIiwiYmxvY2tlZCIpOwkJDQoJCSRz
cWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfZGVwZW5kZW5jaWVzIiwiZGVwZW5kc29uIik7DQoJCSRz
cWwtPmFkZEpvaW4oIklubmVyIiwiPSIsInRlc3RfY2FzZV9kZXBlbmRlbmNpZXMiLCJibG9ja2Vk
IiwidGVzdF9jYXNlX3J1bnMiLCJjYXNlX2lkIik7DQoJCSRzcWwtPmFkZFdoZXJlKCJ0ZXN0X2Nh
c2VfcnVucyIsInJ1bl9pZCIsIj0iLCR0aGlzLT5nZXRSdW5JRCgpKTsNCgkJJHNxbC0+YWRkR3Jv
dXBTb3J0KCJPcmRlciIsInRlc3RfY2FzZV9kZXBlbmRlbmNpZXMiLCJibG9ja2VkIik7DQoJCSRy
ZXN1bHQgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmV4ZWN1dGUoJHNxbC0+dG9TUUwoKSk7IA0K
DQoJCXdoaWxlICgkbGluZSA9ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZmV0Y2goJHJlc3VsdCkp
IHsNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRsaW5lWyJkZXBlbmRzb24iXSwkdGhpcy0+ZGVw
ZW5kZW5jaWVzKSA9PSBmYWxzZSkgew0KCQkJCSR0aGlzLT5kZXBlbmRlbmNpZXNbJGxpbmVbImRl
cGVuZHNvbiJdXSA9IGFycmF5KCk7DQoJCQl9DQoJCQkkdGhpcy0+ZGVwZW5kZW5jaWVzWyRsaW5l
WyJkZXBlbmRzb24iXV1bXSA9ICRsaW5lWyJibG9ja2VkIl07IA0KCQl9DQoJCQ0KCQkkdGhpcy0+
bnVtT2ZEYXlzID0gMTsNCgkJJHRoaXMtPm51bU9mSG91cnMgPSAwOw0KCQkkdGhpcy0+bnVtT2ZN
aW51dGVzID0gMDsNCgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIG5ld0RhdGFMaW5lKCRsaW5lKSB7
DQoJCSRvdXRwdXQgPSAiIjsNCg0KCQlpZiAoaXNzZXQoJHRoaXMtPnByZXZpb3VzTGluZSkpIHsN
CgkJCSR0aW1lMiA9IGV4cGxvZGUoIjoiLCAkbGluZVsiU3RhcnQgVGltZSJdKTsNCgkJCSR0aW1l
MiA9ICR0aW1lMlswXSo2MCskdGltZTJbMV07DQoJCQkkdGltZTEgPSBleHBsb2RlKCI6IiwgJHRo
aXMtPnByZXZpb3VzTGluZVsiU3RhcnQgVGltZSJdKTsNCgkJCSR0aW1lMSA9ICR0aW1lMVswXSo2
MCskdGltZTFbMV07DQoJCQlpZiAoJHRpbWUxID4gJHRpbWUyKSB7DQoJCQkJJHRoaXMtPmNyZWF0
ZU5ld0xpbmUgPSB0cnVlOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhpcy0+Y3JlYXRlTmV3TGluZSA9
IGZhbHNlOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJJHRoaXMtPmNyZWF0ZU5ld0xpbmUgPSB0cnVl
Ow0KCQl9CQkNCgkJDQojCQlpZiAoJHRoaXMtPmNyZWF0ZU5ld0xpbmUpIHsNCiMJCQkkdGhpcy0+
Y3VyckRheSsrOw0KIwkJCSRvdXRwdXQgPSAiPHRyPjx0ZCBjbGFzcz1cInRlc3RvcGlhX05ld0Rh
eVwiIGNvbHNwYW49XCIxMVwiPjxiPiIuIkRheSAiLiR0aGlzLT5jdXJyRGF5LiIvIi4kdGhpcy0+
bnVtRGF5LiIgLSAiLiR0aGlzLT5jdXJyZW50RGF0ZS4iPC9iPjwvdGQ+PC90cj4iOw0KIwkJfQ0K
CQkNCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCXB1YmxpYyBmdW5jdGlvbiBuZXdMaW5lQmVn
aW4oJGxpbmUpIHsNCgkJJG91dHB1dCA9ICIiOw0KCQkjIHJlc291cmNlIGNvbmZsaWN0Pw0KCQlp
ZiAoaXNzZXQoJHRoaXMtPnByZXZpb3VzTGluZSkgYW5kICR0aGlzLT5oaWdobGlnaHRSZXNvdXJj
ZUNvbmZsaWN0cyA9PSAidHJ1ZSIpIHsNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRsaW5lWyJU
ZXN0IENhc2UiXSwgJHRoaXMtPmNvbmZsaWN0cykpIHsNCgkJCQlyZXR1cm4gIjx0ciBjbGFzcz1c
InRlc3RvcGlhX1Jvd1Jlc291cmNlQ29uZmxpY3RcIj4iOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAk
b3V0cHV0Ow0KCX0NCgkNCglwdWJsaWMgZnVuY3Rpb24gaW5qZWN0Qm9keSggJHJlc3VsdCApIHsN
CiMJCWlmICgkdGhpcy0+ZGVwZW5kZW5jeUdyYXBoT25seSA9PSAidHJ1ZSIpIHsNCiMJCQlyZXR1
cm4gJHRoaXMtPnJlbmRlckRpZ3JhcGgoImltZyIpOw0KIwkJfSBlbHNlIHsNCgkJCXJldHVybiAk
dGhpcy0+cmVuZGVyUGxhaW5IVE1MQm9keSgkcmVzdWx0KTsNCiMJCX0NCgl9DQoJDQojCXByaXZh
dGUgZnVuY3Rpb24gcmVjdXJzZUxpc3QoJGxpc3QsICRrZXkpIHsNCiMJCWlmIChhcnJheV9rZXlf
ZXhpc3RzKCRrZXksICRsaXN0KSkgew0KIwkJCSRuZXh0ID0gJGxpc3RbJGtleV07DQojDQojCQkJ
Zm9yZWFjaCAoJG5leHQgYXMgJGVsZW0pIHsNCiMJCQkJI21ha2Ugc3VyZSB0aGF0IHRoZSBlbGVt
ZW50IGlzIG5vdCBpbnNlcnRlZCB0d2ljZSBkdWUgdG8gYSBmb3JtZXIgZGVwZW5kZW5jeQ0KIwkJ
CQkka2V5ID0gYXJyYXlfc2VhcmNoKCRlbGVtLCAkdGhpcy0+Y2FzZUxpc3QpOw0KIwkJCQl3aGls
ZSAoJGtleSkgew0KIwkJCQkJdW5zZXQoJHRoaXMtPmNhc2VMaXN0WyRrZXldKTsNCiMJCQkJCSRr
ZXkgPSBhcnJheV9zZWFyY2goJGVsZW0sICR0aGlzLT5jYXNlTGlzdCk7DQojCQkJCX0NCiMJCQ0K
IwkJCQkkdGhpcy0+Y2FzZUxpc3RbXSA9ICRlbGVtOw0KIwkJCX0NCiMJCQlmb3JlYWNoICgkbmV4
dCBhcyAkZWxlbSkgew0KIwkJCQkkdGhpcy0+cmVjdXJzZUxpc3QoJGxpc3QsICRlbGVtKTsJCQkN
CiMJCQl9DQojCQl9DQojCX0NCgkvKioNCgkqIGN1c3RvbSBmdW5jdGlvbiBmb3Igc29ydGluZyB0
aGUgdGVzdCBjYXNlcyBhY2NvcmRpbmcgdG8gdGhlIHN0YXJ0IHRpbWUgLS0+IG1vZGlmaWVkIGl0
IHRvIHVzZSB0aGUgQ2F0ZWdvcnkgZmllbGQKCSovDQoJcHJpdmF0ZSBmdW5jdGlvbiBzb3J0Q2Fz
ZXMoJGEsICRiKSB7DQoJCWlmICgkYVsiQ2F0ZWdvcnkiXSA9PSAkYlsiQ2F0ZWdvcnkiXSkgew0K
CQkJcmV0dXJuIDA7DQoJCX0NCgkJcmV0dXJuICgkYVsiQ2F0ZWdvcnkiXSA8ICRiWyJDYXRlZ29y
eSJdKSA/IC0xIDogMTsNCgl9CQ0KCQ0KCS8qKg0KCSogaW1wbGVtZW50YXRpb24gb2YgdGhlIGFi
c3RyYWN0IGZ1bmN0aW9uIG9mIHRoZSBzdXBlciBjbGFzcw0KCSovDQoJZnVuY3Rpb24gZ2V0UmVw
b3J0KCAkcmVzdWx0ICkgew0KCQkjIGNoZWNrIGFuZCBzZXQgc29tZSBwYXJhbWV0ZXJzDQoJCSMg
ZmllbGQgZm9yIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBudW1iZXI7IGNvdWxkIGJlIHNldCB0byBh
IGZpZWxkIHRoYXQgaXMgaW5jbHVkZWQgaW4gdGhlIGZpZWxkIGxpc3Qgb2YgdGhlIHNlbGVjdCBz
dGF0ZW1lbnQgb3IgdG8gcm93Y291bnQsIHdoaWNoIHdpbGwgc2ltcGx5IGNvdW50IG51bWJlciBv
ZiByb3dzCQ0KCQlpZiAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJ0b3RhbCIpID09ICJ0cnVlIikg
ew0KCQkJJHRoaXMtPmdldEFyZ3MoKS0+c2V0KCJ0b3RhbCIsICIiKTsNCgkJfQ0KCQkNCiMjCQkj
Z2V0IHRoZSBkZXBlbmRpbmcgdGVzdCBjYXNlcyBmb3IgdGhlIHRlc3QgcnVuDQojIwkJJHNxbFN0
ciA9ICIiOw0KIyMJCSRzcWxTdHIuPSAic2VsZWN0ICogZnJvbSAiLiR0aGlzLT5nZXRDb25uZWN0
b3IoKS0+Z2V0VGFibGUoInRlc3RfY2FzZV9kZXBlbmRlbmNpZXMiKS4iIHdoZXJlICI7DQojIwkJ
JHNxbFN0ci49ICIgYmxvY2tlZCBpbiAoc2VsZWN0IGNhc2VfaWQgZnJvbSAiLiR0aGlzLT5nZXRD
b25uZWN0b3IoKS0+Z2V0VGFibGUoInRlc3RfY2FzZV9ydW5zIikuIiB3aGVyZSBydW5faWQgPSAi
LiR0aGlzLT5nZXRSdW5JRCgpLiIpIjsNCiMjCQkkc3FsU3RyLj0gIiBvciBkZXBlbmRzb24gaW4g
KHNlbGVjdCBjYXNlX2lkIGZyb20gIi4kdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0
ZXN0X2Nhc2VfcnVucyIpLiIgd2hlcmUgcnVuX2lkID0gIi4kdGhpcy0+Z2V0UnVuSUQoKS4iKSI7
DQojIwkJJHJlc3VsdCA9ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZXhlY3V0ZSgkc3FsU3RyKTsN
CiMjCQkNCiMjCQkkY2FzZXMgPSBhcnJheSgpOw0KIyMJCXdoaWxlICgkbGluZSA9ICR0aGlzLT5n
ZXRDb25uZWN0b3IoKS0+ZmV0Y2goJHJlc3VsdCkpIHsNCiMjCQkJJGNhc2UgPSBhcnJheSgiaWQi
ID0+ICRsaW5lWyJibG9ja2VkIl0sICJkZXBlbmRzb24iID0+ICRsaW5lWyJkZXBlbmRzb24iXSk7
IA0KIyMJCQkkY2FzZXNbXSA9ICRjYXNlOw0KIyMJCX0NCiMjCQkNCiMjCQkjZmluZGluZyB0aGUg
Zmlyc3QgY2FzZSAocm9vdCkgb2YgdGhlIGFnZW5kYQ0KIyMJCSRyb290ID0gLTE7DQojIwkJJHJv
b3RJZCA9IDA7DQojIwkJJGlkeCA9IDA7DQojdmFyX2R1bXAoJGNhc2VzKTsKIyMJCSR0aGlzLT5t
b3JlUm9vdHMgPSB0cnVlOw0KIyMJCWZvcmVhY2goJGNhc2VzIGFzICRjYXNlKSB7DQojIwkJCSRm
b3VuZD1mYWxzZTsNCiMjCQkJZm9yZWFjaCgkY2FzZXMgYXMgJGNhc2UyKSB7DQojdmFyX2R1bXAo
JGNhc2VbImRlcGVuZHNvbiJdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojIwkJ
CQlpZiAoJGNhc2VbImlkIl0gPT0gJGNhc2UyWyJkZXBlbmRzb24iXSkgew0KIyMJCQkJCSRmb3Vu
ZD10cnVlOw0KIyMJCQkJCWJyZWFrOw0KIyMJCQkJfQ0KIyMJCQl9DQojIwkJCQ0KIyMJCQlpZiAo
ISRmb3VuZCkgew0KIyMJCQkJaWYgKCRyb290ICE9IC0xIGFuZCAkY2FzZXNbJHJvb3RdICE9ICRy
b290SWQpIHsNCiMjCQkJCQkjbW9yZSB0aGFuIG9uZSByb290IHByZXNlbnQgLT4gZXJyb3INCiMj
CQkJCQkkdGhpcy0+bW9yZVJvb3RzID0gdHJ1ZTsNCiMjCQkJCX0gZWxzZSB7DQojIwkJCQkJJHJv
b3QgPSAkaWR4Ow0KIyMJCQkJCSRyb290SWQgPSAkY2FzZXNbJHJvb3RdOw0KIyMJCQkJfQ0KIyMJ
CQl9DQojIwkJCSRpZHgrKzsNCiMjCQl9DQojdmFyX2R1bXAoJHJvb3QpOwojJHJvb3QyID0gJGNh
c2VzWzJdWyJpZCJdCiN2YXJfZHVtcCgkcm9vdDIpOwojcHJpbnQgJGNhc2VzWyIzIl1bImlkIl07
CiMjCQkkcm9vdCA9ICRjYXNlc1skcm9vdF1bImlkIl07DQojIwojdmFyX2R1bXAoJHJvb3QpOwoj
IwkJDQojIwkJJGxpc3QgPSBhcnJheSgpOw0KIyMJCWZvcmVhY2ggKCRjYXNlcyBhcyAkY2FzZSkg
ew0KI3ByaW50ICJjYXNlW2lkXT0iOwojdmFyX2R1bXAoJGNhc2VbImlkIl0pOwojcHJpbnQgImxp
c3Q6IjsKI3Zhcl9kdW1wKCRsaXN0KTsKI3Zhcl9kdW1wKCRjYXNlKTsKIyMJCQlpZiAoYXJyYXlf
a2V5X2V4aXN0cygkY2FzZVsiaWQiXSwgJGxpc3QpKXsKIyMJCQkJJG5leHQgPSAkbGlzdFskY2Fz
ZVsiaWQiXV07DQojIwkJCQkkbmV4dFtdID0gJGNhc2VbImRlcGVuZHNvbiJdOw0KIyMJCQkJJGxp
c3RbJGNhc2VbImlkIl1dID0gJG5leHQ7DQojIwkJCX0gZWxzZSB7DQojIwkJCQkkbmV4dCA9IGFy
cmF5KCRjYXNlWyJkZXBlbmRzb24iXSk7DQojIwkJCQkkbGlzdFskY2FzZVsiaWQiXV0gPSAkbmV4
dDsNCiMjCQkJfQ0KIyMJCX0NCiMjCQkNCiMjCQkjc2VyaWFsaXppbmcgdGhlIGRlcGVuZGVudCBj
YXNlcyBvZiB0aGUgYWdlbmRhDQojIwkJJHRoaXMtPmNhc2VMaXN0W10gPSAkcm9vdDsNCiN2YXJf
ZHVtcCgkbGlzdCk7CiMjCQkkdGhpcy0+cmVjdXJzZUxpc3QoJGxpc3QsICRyb290KTsNCiN2YXJf
ZHVtcCgkdGhpcy0+Y2FzZUxpc3QpOwojIwkJDQoJCSNzZWxlY3RpbmcgdGhlIHJlc3Qgb2YgdGhl
IHRlc3QgY2FzZSB3aXRob3V0IGRlcGVuZGVuY2llcyANCgkJaWYgKCR0aGlzLT53aXRoRGVwZW5k
ZW5jeSA9PSAiZmFsc2UiKSB7DQoJCQkkc3FsU3RyID0gInNlbGVjdCBjYXNlX2lkIGZyb20gIi4k
dGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X2Nhc2VfcnVucyIpLiIgIjsNCgkJ
CSRzcWxTdHIuPSAid2hlcmUgcnVuX2lkID0gIi4kdGhpcy0+Z2V0UnVuSUQoKTsNCiMJCQkkc3Fs
U3RyLj0gIiBhbmQgY2FzZV9pZCBub3QgaW4gKHNlbGVjdCBibG9ja2VkIGZyb20gIi4kdGhpcy0+
Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X2Nhc2VfZGVwZW5kZW5jaWVzIikuIikiOw0K
IwkJCSRzcWxTdHIuPSAiIGFuZCBjYXNlX2lkIG5vdCBpbiAoc2VsZWN0IGRlcGVuZHNvbiBmcm9t
ICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9jYXNlX2RlcGVuZGVuY2ll
cyIpLiIpIjsNCgkJCSRyZXN1bHQgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmV4ZWN1dGUoJHNx
bFN0cik7DQoJCQkNCgkJCSRjYXNlcyA9IGFycmF5KCk7DQoJCQl3aGlsZSAoJGxpbmUgPSAkdGhp
cy0+Z2V0Q29ubmVjdG9yKCktPmZldGNoKCRyZXN1bHQpKSB7DQoJCQkJJGNhc2VzW10gPSAkbGlu
ZVsiY2FzZV9pZCJdOw0KCQkJfQkJDQoJCQkkdGhpcy0+Y2FzZUxpc3QgPSBhcnJheV9tZXJnZSgk
Y2FzZXMsICR0aGlzLT5jYXNlTGlzdCk7DQoJCX0NCgkJDQoJCSNzZWxlY3QgdGhlIHRlc3QgY2Fz
ZSBkYXRhDQoJCSRzcWwgPSBuZXcgVFJfU1FMOw0KCQkkc3FsLT5zZXRDb25uZWN0b3IoJHRoaXMt
PmdldENvbm5lY3RvcigpKTsNCgkJDQoJCSRzcWwtPnNldEZyb20oInRlc3RfY2FzZV9ydW5zIik7
DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNlX2lkIiwgIlRlc3QgQ2Fz
ZSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlcyIsInN1bW1hcnkiLCAiU3VtbWFyeSIp
Ow0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX2NhdGVnb3JpZXMiLCJuYW1lIiwgIkNhdGVn
b3J5Iik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVuX3N0YXR1cyIsICJuYW1lIiwg
IlN0YXR1cyIpOw0KIyMjCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlcyIsICJlc3RpbWF0ZWRf
dGltZSIsICJEdXJhdGlvbiIpOw0KIyMjCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX3J1bnMi
LCAicnVubmluZ19kYXRlIiwgIlJ1biBEYXRlIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nh
c2VfcnVucyIsICJjbG9zZV9kYXRlIiwgIkNsb3NlIERhdGUiKTsNCgkJJHNxbC0+YWRkRmllbGQo
InByb2ZpbGVzIiwgImxvZ2luX25hbWUiLCAiVGVzdGVyIik7DQoJCQ0KCQkkc3FsLT5hZGRKb2lu
KCJJbm5lciIsICI9IiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIsICJ0ZXN0X2Nhc2VfcnVucyIs
ICJjYXNlX2lkIik7DQoJCSRzcWwtPmFkZEpvaW4oIklubmVyIiwgIj0iLCAidGVzdF9jYXNlX2Nh
dGVnb3JpZXMiLCAiY2F0ZWdvcnlfaWQiLCAidGVzdF9jYXNlcyIsICJjYXRlZ29yeV9pZCIpOw0K
CQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9ydW5fc3RhdHVzIiwgImNh
c2VfcnVuX3N0YXR1c19pZCIsICJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNlX3J1bl9zdGF0dXNfaWQi
KTsNCgkJJHNxbC0+YWRkSm9pbigiSW5uZXIiLCAiPSIsICJwcm9maWxlcyIsICJ1c2VyaWQiLCAi
dGVzdF9jYXNlcyIsICJkZWZhdWx0X3Rlc3Rlcl9pZCIpOw0KCQkNCgkJJHNxbC0+YWRkV2hlcmUo
InRlc3RfY2FzZV9ydW5zIiwgInJ1bl9pZCIsICI9IiwgJHRoaXMtPmdldFJ1bklEKCksIiIpOw0K
CQkkc3FsLT5hZGRXaGVyZSgidGVzdF9jYXNlcyIsICJjYXNlX2lkIiwgIj0iLCAiaWRQbGFjZWhv
bGRlciIsICJBTkQiKTsJCQ0KCQkNCgkJJHNxbFN0ciA9ICRzcWwtPnRvU1FMKCk7DQoNCgkJJHRo
aXMtPmNhc2VEYXRhID0gYXJyYXkoKTsJCQ0KI3Zhcl9kdW1wKCR0aGlzLT5jYXNlTGlzdCk7CgkJ
Zm9yZWFjaCAoJHRoaXMtPmNhc2VMaXN0IGFzICRjYXNlKSB7DQoJCQkkc3FsU3RyMiA9IHN0cl9y
ZXBsYWNlKCJpZFBsYWNlaG9sZGVyIiwkY2FzZSwkc3FsU3RyKTsgDQoJCQkkcmVzdWx0ID0gJHRo
aXMtPmdldENvbm5lY3RvcigpLT5leGVjdXRlKCRzcWxTdHIyKTsNCgkJDQoJCQl3aGlsZSAoJGxp
bmUgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZldGNoKCRyZXN1bHQpKSB7DQojCQkJCWlmICgk
bGluZVsiUnVuIERhdGUiXSA9PSAiIikgeyANCiMJCQkJCSRsaW5lWyJSdW4gRGF0ZSJdID0gIi0i
OyANCiMJCQkJfQ0KIwkJCQlpZiAoJGxpbmVbIkNsb3NlIERhdGUiXSA9PSAiIikgeyANCiMJCQkJ
CSRsaW5lWyJDbG9zZSBEYXRlIl0gPSAiLSI7IA0KIwkJCQl9DQoJCQkJDQojCQkJCSMgZ2V0IHN0
YXJ0L2VuZCB0aW1lcwkJCQkNCiMJCQkJJHRpbWVzID0gJHRoaXMtPmhhbmRsZUR1cmF0aW9uVGlt
ZXMoJGxpbmVbIlRlc3QgQ2FzZSJdLCAkbGluZVsiRHVyYXRpb24iXSk7DQoJCQkJDQoJCQkJJHRo
aXMtPmNhc2VEYXRhW10gPSBhcnJheSgNCgkJCQkJIlRlc3QgQ2FzZSIgPT4gJGxpbmVbIlRlc3Qg
Q2FzZSJdLA0KCQkJCQkiU3VtbWFyeSIJPT4gJGxpbmVbIlN1bW1hcnkiXSwNCgkJCQkJIkNhdGVn
b3J5IiAJPT4gJGxpbmVbIkNhdGVnb3J5Il0sDQojCQkJCQkiRHVyYXRpb24iCT0+ICRsaW5lWyJE
dXJhdGlvbiJdLAkNCiMJCQkJCSJTdGFydCBUaW1lIj0+ICR0aW1lc1swXSwNCiMJCQkJCSJFbmQg
VGltZSIJPT4gJHRpbWVzWzFdLA0KCQkJCQkiU3RhdHVzIgk9PiAkbGluZVsiU3RhdHVzIl0sDQoj
CQkJCQkiUnVuIERhdGUiCT0+ICRsaW5lWyJSdW4gRGF0ZSJdLA0KCQkJCQkiQ2xvc2UgRGF0ZSI9
PiAkbGluZVsiQ2xvc2UgRGF0ZSJdLA0KCQkJCQkiVGVzdGVyIgk9PiAkbGluZVsiVGVzdGVyIl0s
DQoJCQkJCSJEZXBlbmRzIG9uIj0+ICItIiwNCiMJCQkJCSJTdGFydFRpbWVzdGFtcCI9PiAkdGlt
ZXNbMl0NCgkJCQkpOwkNCgkJCX0JCQ0KCQl9DQoJCQ0KCQkjIHNvcnRpbmcgdGhlIHRlc3QgY2Fz
ZXMgdXNpbmcgdGhlIGZpZWxkICJDYXRlZ29yeSINCgkJdXNvcnQoJHRoaXMtPmNhc2VEYXRhLCBh
cnJheSgiVFJfcmVwQWdlbmRhIiwgInNvcnRDYXNlcyIpKTsJDQoJCQ0KIwkJIyBhcyB0aGlzIHNv
cnQgY291bGQgbm90IGJlIHN0YWJsZSBpZiBzdGFydCB0aW1lIGFuZCB0ZXN0ZXIgYXJlIGVxdWFs
IHdlIGhhdmUgdG8gZG8gDQojCQkjIHNvbWUgbW9yZSBmb3IgZWZmb3J0IGZvciBnZXR0aW5nIHJl
c291cmNlIGNvbmZsaWN0cw0KIwkJJHRoaXMtPmNvbmZsaWN0cyA9IGFycmF5KCk7DQojCQlmb3Jl
YWNoICgkdGhpcy0+Y2FzZURhdGEgYXMgJGNhc2UpIHsNCiMJCQlmb3JlYWNoICgkdGhpcy0+Y2Fz
ZURhdGEgYXMgJGNhc2UyKSB7DQojCQkJCWlmICgkY2FzZVsiU3RhcnRUaW1lc3RhbXAiXSA9PSAk
Y2FzZTJbIlN0YXJ0VGltZXN0YW1wIl0gYW5kIA0KIwkJCQkgICAgJGNhc2VbIlRlc3QgQ2FzZSJd
ICE9ICRjYXNlMlsiVGVzdCBDYXNlIl0gYW5kDQojCQkJCSAgICAkY2FzZVsiVGVzdGVyIl0gPT0g
JGNhc2UyWyJUZXN0ZXIiXSkgew0KIwkJCQkJJHRoaXMtPmNvbmZsaWN0c1skY2FzZTJbIlRlc3Qg
Q2FzZSJdXSA9ICRjYXNlWyJUZXN0IENhc2UiXTsNCiMJCQkJfQ0KIwkJCX0gDQojCQl9DQojCQkN
CiMJCSNyZW1vdmluZyB0aGUgZWxlbWVudCAiU3RhcnRUaW1lc3RhbXAiIGFzIGl0IGlzIG5vIGxv
bmdlciBuZWVkZWQNCiMJCWZvcmVhY2ggKCR0aGlzLT5jYXNlRGF0YSBhcyAkY2FzZSkgew0KIwkJ
CXVuc2V0KCRjYXNlWyJTdGFydFRpbWVzdGFtcCJdKTsNCiMJCQkkY2FzZXN0bXBbXSA9ICRjYXNl
Ow0KIwkJfQ0KIwkJJHRoaXMtPmNhc2VEYXRhID0gJGNhc2VzdG1wOw0KIwkJdW5zZXQoJGNhc2Vz
dG1wKTsNCgkJDQoJCSMgc2V0IHRoZSBmaWVsZCBjb3VudGVyDQoJCSR0aGlzLT5udW1PZlJvd3Mg
PSBjb3VudCgkdGhpcy0+Y2FzZURhdGEpOw0KCQkjIHNldCB0aGUgZmllbGQgbmFtZXMNCgkJJHRo
aXMtPmNvbHVtbk5hbWVzID0gYXJyYXkoKTsNCgkJd2hpbGUgKGN1cnJlbnQoJHRoaXMtPmNhc2VE
YXRhWzBdKSAhPT0gZmFsc2UpIHsNCgkJCSR0aGlzLT5jb2x1bW5OYW1lc1tdID0ga2V5KCR0aGlz
LT5jYXNlRGF0YVswXSk7DQoJCQluZXh0KCR0aGlzLT5jYXNlRGF0YVswXSk7DQoJCX0NCgkJcmVz
ZXQoJHRoaXMtPmNhc2VEYXRhWzBdKTsNCgkJJHRoaXMtPm51bU9mQ29scyA9IGNvdW50KCR0aGlz
LT5jb2x1bW5OYW1lcyk7DQoJCQ0KCQkkb3V0cHV0ID0gJHRoaXMtPnJlbmRlclBsYWluSFRNTCgg
JHRoaXMtPmNhc2VEYXRhICk7CQ0KCQ0KCQkjcmV0dXJuaW5nIHRoZSBvdXRwdXQNCgkgICAgcmV0
dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFJlcG9ydE5hbWUoKSB7DQoJCXJldHVy
biAiVGVzdCBSdW4gQWdlbmRhIjsNCgl9DQoJCQ0KCWZ1bmN0aW9uIGdldFJlcG9ydEhlYWRlcigp
IHsNCgkJcmV0dXJuICR0aGlzLT5nZXRTdGFuZGFyZFJ1bkhlYWRlcigpOw0KCX0NCg0KCWZ1bmN0
aW9uIGdldFJlcG9ydEZvb3RlcigpIHsNCiMJCWlmICgkdGhpcy0+ZGVwZW5kZW5jeUdyYXBoT25s
eSA9PSAidHJ1ZSIpIHsNCiMJCQlyZXR1cm47DQojCQl9DQojCQkNCiMJCWlmICghJHRoaXMtPm1v
cmVSb290cykgew0KIwkJCSRvdXRwdXQgPSAiPGRpdj48cD4iOw0KIwkJCSRvdXRwdXQuPSJEYXkg
c3RhcnRzIGF0ICIuZGF0ZSgiSDppIixta3RpbWUoJHRoaXMtPnN0YXJ0SG91ciwkdGhpcy0+c3Rh
cnRNaW51dGUsMCkpOw0KIwkJCSRvdXRwdXQuPSIgYW5kIGVuZHMgYXQgIi5kYXRlKCJIOmkiLG1r
dGltZSgkdGhpcy0+ZW5kSG91ciwkdGhpcy0+ZW5kTWludXRlLDApKTsNCiMJCQkkb3V0cHV0Lj0i
LiBXZWVrZW5kcyBhcmUgaWdub3JlZDogIi4kdGhpcy0+aWdub3JlV2Vla2VuZDsNCiMJCQkkb3V0
cHV0Lj0iPC9wPjwvZGl2PiI7IA0KIwkJCSRvdXRwdXQuPSI8ZGl2PjxwPk51bWJlciBvZiB0ZXN0
IGNhc2VzOiIuY291bnQoJHRoaXMtPmNhc2VMaXN0KTsNCiMJCQkkb3V0cHV0Lj0iIC0gVG90YWwg
ZGF5czoiLiR0aGlzLT5udW1EYXk7DQojCQkJJG91dHB1dC49IiAtIFRvdGFsIHRpbWU6Ii4kdGhp
cy0+bnVtT2ZIb3Vycy4iOiIuJHRoaXMtPm51bU9mTWludXRlczsNCiMJCQkkb3V0cHV0Lj0iIC0g
Ii4kdGhpcy0+cmVuZGVyRGlncmFwaCgpOw0KIwkJCSRvdXRwdXQuPSI8L3A+PC9kaXY+IjsNCiMJ
CX0gZWxzZSB7DQojCQkJJG91dHB1dCA9ICI8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJc
Ij48Yj4iLiR0aGlzLT5yZW5kZXJEaWdyYXBoKCkuIjwvYj48L2Rpdj4iOw0KIwkJfQ0KIwkJDQoj
CQlyZXR1cm4gJG91dHB1dDsNCnJldHVybjsKCX0JDQoNCiMJcHJpdmF0ZSBmdW5jdGlvbiBoYW5k
bGVEdXJhdGlvblRpbWVzKCRjYXNlaWQsICR2YWx1ZSkgewkJDQojCQkjaWYgcnVubmluZyBpbiBw
YXJhbGxlbCB0byBhbm90aGVyIGNhc2UgZ2V0IHRoZSBzdGFydCBpZCBvZiB0aGlzIGNhc2UNCiMJ
CWlmIChhcnJheV9rZXlfZXhpc3RzKCRjYXNlaWQsICR0aGlzLT5kZXBlbmRlbmNpZXMpKSB7DQoj
CQkJJGRlcGVuZGVuY2llcyA9ICR0aGlzLT5kZXBlbmRlbmNpZXNbJGNhc2VpZF07DQojCQkJJG1h
eCA9IDA7DQojCQkJZm9yZWFjaCAoJGRlcGVuZGVuY2llcyBhcyAkZGVwZW5kZW5jeSkgew0KIwkJ
CQlpZiAoJG1heCA8ICR0aGlzLT5lbmRUaW1lc1skZGVwZW5kZW5jeV0pIHsNCiMJCQkJCSRtYXgg
PSAkdGhpcy0+ZW5kVGltZXNbJGRlcGVuZGVuY3ldOw0KIwkJCQl9DQojCQkJfQ0KIwkJCSRoPWV4
cGxvZGUoIjoiLCBkYXRlKCJIOmkiLCAkbWF4KSk7DQojCQkJJHRoaXMtPmN1cnJIb3VyID0gJGhb
MF07DQojCQkJJHRoaXMtPmN1cnJNaW51dGUgPSAkaFsxXTsNCiMJCX0gZWxzZSB7DQojCQkJJG1h
eD1ta3RpbWUoJHRoaXMtPnN0YXJ0SG91ciwkdGhpcy0+c3RhcnRNaW51dGUsMCwwLDAsMCk7DQoj
CQkJJGg9ZXhwbG9kZSgiOiIsIGRhdGUoIkg6aSIsICRtYXgpKTsNCiMJCQkkdGhpcy0+Y3Vyckhv
dXIgPSAkaFswXTsNCiMJCQkkdGhpcy0+Y3Vyck1pbnV0ZSA9ICRoWzFdOwkJDQojCQl9DQojCQkJ
CQ0KIwkJJHN0YXJ0VGltZT0iIjsNCiMJCSRlbmRUaW1lPSIiOw0KIwkJDQojCQkjY2FsYyB0aGUg
c3RhcnQgdGltZSBpbiBtaW51dGVzIA0KIwkJJHN0YXJ0ID0gJHRoaXMtPmN1cnJIb3VyICogNjAg
KyAkdGhpcy0+Y3Vyck1pbnV0ZTsNCiMJCSRzdGFydFRpbWU9ZGF0ZSgiSDppIixta3RpbWUoJHRo
aXMtPmN1cnJIb3VyLCR0aGlzLT5jdXJyTWludXRlLDAsMCwwLDApKTsNCiMJCQ0KIwkJI2NhbGMg
dGhlIHN0YXJ0IHRpbWVzdGFtcA0KIwkJJGNkYXRlID0gZXhwbG9kZSgiLSIsJHRoaXMtPmN1cnJl
bnREYXRlKTsNCiMJCSRzdGFydFRpbWVzdGFtcCA9IG1rdGltZSgkdGhpcy0+Y3VyckhvdXIsJHRo
aXMtPmN1cnJNaW51dGUsMCwkY2RhdGVbMV0sJGNkYXRlWzJdLCRjZGF0ZVswXSk7CQkNCiMJCQ0K
IwkgICAgI2FkZCB0aGUgZHVyYXRpb24NCiMJCSRkdXJhdGlvbj1leHBsb2RlKCI6IiwkdmFsdWUp
Ow0KIwkJJHRoaXMtPmN1cnJIb3VyKz0kZHVyYXRpb25bMF07DQojCQkkdGhpcy0+Y3Vyck1pbnV0
ZSs9JGR1cmF0aW9uWzFdOw0KIwkJI2hhbmRsZSBtaW51dGVzID49IDYwDQojCQlpZiAoJHRoaXMt
PmN1cnJNaW51dGUgPj0gNjApIHsNCiMJCQkkdGhpcy0+Y3VyckhvdXIrPTE7DQojCQkJJHRoaXMt
PmN1cnJNaW51dGUtPTYwOw0KIwkJfQkJDQojCQkNCiMJCSNhZGQgdG90YWwgdGltZQ0KIwkJJHRo
aXMtPm51bU9mSG91cnMrPSRkdXJhdGlvblswXTs7DQojCQkkdGhpcy0+bnVtT2ZNaW51dGVzKz0k
ZHVyYXRpb25bMV07DQojCQlpZiAoJHRoaXMtPm51bU9mTWludXRlcyA+PSA2MCkgew0KIwkJCSR0
aGlzLT5udW1PZkhvdXJzKz0xOw0KIwkJCSR0aGlzLT5udW1PZk1pbnV0ZXMtPTYwOw0KIwkJfQkN
CiMJCQ0KIwkJI2NhbGMgdGhlIGVuZCB0aW1lIGluIG1pbnV0ZXMNCiMJCSRlbmQgPSAkdGhpcy0+
Y3VyckhvdXIgKiA2MCArICR0aGlzLT5jdXJyTWludXRlOw0KIwkJI2Zvcm1hdCB0aGUgZW5kIHRp
bWUgDQojCQkkZW5kVGltZS49ZGF0ZSgiSDppIixta3RpbWUoJHRoaXMtPmN1cnJIb3VyLCR0aGlz
LT5jdXJyTWludXRlLDAsMCwwLDApKTsNCiMJCQkJCQkJCQ0KIwkJI3Jlc2V0IHRoZSB0aW1lIGNv
dW50ZXJzIGlmIG5lZWRlZA0KIwkJaWYgKCR0aGlzLT5jdXJySG91ciA+PSAkdGhpcy0+ZW5kSG91
cikgew0KIwkJCSRtYXg9bWt0aW1lKCR0aGlzLT5zdGFydEhvdXIsJHRoaXMtPnN0YXJ0TWludXRl
LDAsMCwwLDApOw0KIwkJCSRoPWV4cGxvZGUoIjoiLCBkYXRlKCJIOmkiLCAkbWF4KSk7DQojCQkJ
JHRoaXMtPmN1cnJIb3VyID0gJGhbMF07DQojCQkJJHRoaXMtPmN1cnJNaW51dGUgPSAkaFsxXTsJ
CQkNCiMJCQkJDQojCQkJJHRoaXMtPm51bURheSsrOw0KIwkJCQ0KIwkJCSR0aGlzLT5jdXJyZW50
RGF0ZSA9IGRhdGUgKCAnWS1tLWonICwgc3RydG90aW1lICggJysxIGRheScgLCBzdHJ0b3RpbWUg
KCAkdGhpcy0+Y3VycmVudERhdGUgKSApICk7DQojCQkJaWYgKCR0aGlzLT5pZ25vcmVXZWVrZW5k
ID09ICJmYWxzZSIpIHsNCiMJCQkJJG5vdyA9IGdldERhdGUoc3RydG90aW1lKCR0aGlzLT5jdXJy
ZW50RGF0ZSkpOw0KIwkJCQlzd2l0Y2ggKCRub3dbIndkYXkiXSkgew0KIwkJCQkJY2FzZSAwOiAk
dGhpcy0+Y3VycmVudERhdGUgPSBkYXRlICggJ1ktbS1qJyAsIHN0cnRvdGltZSAoICcrMSBkYXkn
ICwgc3RydG90aW1lICggJHRoaXMtPmN1cnJlbnREYXRlICkgKSApOyBicmVhazsNCiMJCQkJCWNh
c2UgNjogJHRoaXMtPmN1cnJlbnREYXRlID0gZGF0ZSAoICdZLW0taicgLCBzdHJ0b3RpbWUgKCAn
KzIgZGF5JyAsIHN0cnRvdGltZSAoICR0aGlzLT5jdXJyZW50RGF0ZSApICkgKTsgYnJlYWs7DQoj
CQkJCX0NCiMJCQl9DQojCQkJDQojCQkJI2FkZCB0b3RhbCBudW1iZXIgb2YgZGF5cw0KIwkJCSR0
aGlzLT5udW1PZkRheXMrKzsNCiMJCX0gICAgICAgCQkNCiMJCQ0KIwkJI3NldCB0aGUgZW5kIHRp
bWUgZm9yIHRoaXMgY2FzZTsgbmVlZGVkIGZvciBjYXNlcyBydW5uaW5nIGluIHBhcmFsbGVsDQoj
CQkkY2RhdGUgPSBleHBsb2RlKCItIiwkdGhpcy0+Y3VycmVudERhdGUpOw0KIwkJJHRoaXMtPmVu
ZFRpbWVzWyRjYXNlaWRdID0gbWt0aW1lKCR0aGlzLT5jdXJySG91ciwkdGhpcy0+Y3Vyck1pbnV0
ZSwwLCRjZGF0ZVsxXSwkY2RhdGVbMl0sJGNkYXRlWzBdKTsNCiMJCQ0KIwkJcmV0dXJuIGFycmF5
KCRzdGFydFRpbWUsICRlbmRUaW1lLCAkc3RhcnRUaW1lc3RhbXApOw0KIwl9DQojCQ0KIwlwcml2
YXRlIGZ1bmN0aW9uIGhhbmRsZVRpbWUoJGNhc2VpZCwgJHZhbHVlKSB7DQojCQkka2V5ID0gMDsN
CiMJCWZvcmVhY2goJHRoaXMtPmNhc2VEYXRhIGFzICRjYXNlKSB7DQojCQkJaWYgKCRjYXNlWyJU
ZXN0IENhc2UiXSA9PSAkY2FzZWlkKSB7DQojCQkJCWJyZWFrOw0KIwkJCX0NCiMJCQkka2V5Kys7
DQojCQl9DQojCQkNCiMJCSRzdGFydCA9IGV4cGxvZGUoIjoiLCR0aGlzLT5jYXNlRGF0YVska2V5
XVsiU3RhcnQgVGltZSJdKTsNCiMJCSRlbmQgICA9IGV4cGxvZGUoIjoiLCR0aGlzLT5jYXNlRGF0
YVska2V5XVsiRW5kIFRpbWUiXSk7DQojCQkkc3RhcnQgPSAkc3RhcnRbMF0qNjArJHN0YXJ0WzFd
Ow0KIwkJJGVuZCA9ICRlbmRbMF0qNjArJGVuZFsxXTsJCQ0KIwkJDQojCQkjbWFyayB0aGUgY2Fz
ZXMgdGhhdCBhcmUgY3VycmVudGx5IGR1ZQ0KIwkJJG5vdyA9IGdldERhdGUoKTsNCiMJICAgICRu
b3dUaW1lID0gJG5vd1siaG91cnMiXSo2MCskbm93WyJtaW51dGVzIl07DQojCSAgICBpZiAoJHN0
YXJ0IDw9ICRub3dUaW1lIGFuZCAkZW5kID49ICRub3dUaW1lIGFuZCAkdGhpcy0+Y3VycmVudERh
dGUgPT0gJHRoaXMtPnRvZGF5KSB7DQojCSAgICAJJGNsYXNzID0gInRlc3RvcGlhX1Rlc3RDYXNl
RHVlIjsNCiMJICAgIH0gZWxzZSB7DQojCSAgICAJJGNsYXNzID0gInRlc3RvcGlhX1Rlc3RDYXNl
Tm90RHVlIjsNCiMJICAgIH0JCSAgICANCiMJICAgIA0KIwkJJG91dHB1dD0iPHRkIGNsYXNzPVwi
LiRjbGFzcy5cIj4iLmh0bWxlbnRpdGllcygkdmFsdWUpLiI8L3RkPiI7DQojCQkNCiMJCXJldHVy
biAkb3V0cHV0Ow0KIwl9DQoJCQ0KCWZ1bmN0aW9uIHJlbmRlckNlbGwoJHR5cGUsICRjb2xObywg
JGZpZWxkX25hbWUsICR2YWx1ZSwgJGxpbmVObywgJGxpbmUpIHsNCgkJJG91dHB1dCA9ICIiOw0K
CQkNCgkJIyBmb3IgZ2V0dGluZyB0aGUgZmllbGQgbmFtZXMNCgkJJHNxbCA9IG5ldyBUUl9TUUw7
DQoJCQ0KCQlpZiAoJHR5cGU9PSJib2R5Iikgew0KCQkJc3dpdGNoICgkZmllbGRfbmFtZSkgew0K
CQkJCWNhc2UgIlRlc3QgQ2FzZSI6IA0KCQkJCQkJJG91dHB1dD0iPHRkIHN0eWxlPVwidGV4dC1h
bGlnbjpjZW50ZXJcIj48YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVy
IikuIi90cl9zaG93X2Nhc2UuY2dpP2Nhc2VfaWQ9Ii4kdmFsdWUuIlwiPiIuJHZhbHVlLiI8L2E+
PC90ZD4iOw0KCQkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiU3RhdHVzIjoNCgkJCQkJCSRjbGFzcyA9
ICIiOw0KCQkJCQkJJGNsYXNzID0gInRlc3RvcGlhX1Rlc3RDYXNlIi4kdmFsdWU7CQkJCQkNCgkJ
CQkJCSRvdXRwdXQgPSAiPHRkIGNsYXNzPVwiIi4kY2xhc3MuIlwiPiIuJHZhbHVlLiI8L3RkPiI7
DQoJCQkJCQlicmVhazsNCiMJCQkJY2FzZSAiRHVyYXRpb24iOg0KIwkJCQkJCSRvdXRwdXQgPSAk
dGhpcy0+aGFuZGxlVGltZSgkbGluZVsiVGVzdCBDYXNlIl0sICR2YWx1ZSk7DQojCQkJCQkJYnJl
YWs7DQojCQkJCWNhc2UgIlN0YXJ0IFRpbWUiOg0KIwkJCQkJCSRvdXRwdXQgPSAkdGhpcy0+aGFu
ZGxlVGltZSgkbGluZVsiVGVzdCBDYXNlIl0sICR2YWx1ZSk7DQojCQkJCQkJYnJlYWs7DQojCQkJ
CWNhc2UgIkVuZCBUaW1lIjoNCiMJCQkJCQkkb3V0cHV0ID0gJHRoaXMtPmhhbmRsZVRpbWUoJGxp
bmVbIlRlc3QgQ2FzZSJdLCAkdmFsdWUpOw0KIwkJCQkJCWJyZWFrOwkJCQkJCQ0KCQkJCWNhc2Ug
IlRlc3RlciI6DQoJCQkJCQkkb3V0cHV0Lj0iPHRkPjxhIGhyZWY9XCJtYWlsdG86Ii4kdmFsdWUu
IlwiPiIuJHZhbHVlLiI8L3RkPiI7DQoJCQkJCQlicmVhazsNCgkJCQljYXNlICJEZXBlbmRzIG9u
IjoNCgkJCQkJCSRvdXRwdXQgPSAiPHRkPiI7DQoJCQkJCQkkY2FzZWlkID0gJGxpbmVbIlRlc3Qg
Q2FzZSJdOw0KCQkJCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGNhc2VpZCwgJHRoaXMtPmRlcGVu
ZGVuY2llcykpIHsNCgkJCQkJCQkkZGVwZW5kZW5jaWVzID0gJHRoaXMtPmRlcGVuZGVuY2llc1sk
Y2FzZWlkXTsNCgkJCQkJCQkkaSA9IDA7DQoJCQkJCQkJZm9yZWFjaCAoJGRlcGVuZGVuY2llcyBh
cyAkZGVwZW5kZW5jeSkgew0KCQkJCQkJCQlpZiAoJGkgPiAwKSB7IA0KCQkJCQkJCQkJJG91dHB1
dC49IiwgIjsgDQoJCQkJCQkJCX0NCgkJCQkJCQkJJG91dHB1dC49IjxhIGhyZWY9XCIiLiR0aGlz
LT5nZXRBcmdzKCktPmdldCgiYnpzZXJ2ZXIiKS4iL3RyX3Nob3dfY2FzZS5jZ2k/Y2FzZV9pZD0i
LiRkZXBlbmRlbmN5LiJcIj4iLiRkZXBlbmRlbmN5LiI8L2E+IjsNCgkJCQkJCQkJJGkrKzsNCgkJ
CQkJCQl9DQoJCQkJCQkJJG91dHB1dC49ICI8L3RkPiI7DQoJCQkJCQl9DQoJCQkJCQlicmVhazsN
CgkJCX0NCgkJfQ0KCQkNCgkJdW5zZXQoJHNxbCk7DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9
CQ0KCQ0KCWZ1bmN0aW9uIGdldFNRTCgpIHsJCQ0KCQkkc3FsID0gbmV3IFRSX1NRTDsNCgkJJHNx
bC0+c2V0Q29ubmVjdG9yKCR0aGlzLT5nZXRDb25uZWN0b3IoKSk7DQoJCQ0KCQkkc3FsLT5zZXRG
cm9tKCJ0ZXN0X2Nhc2VfcnVucyIpOw0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX3J1bnMi
LCAiY2FzZV9pZCIsICJUZXN0IENhc2VzIik7CQ0KCQkkc3FsLT5hZGRXaGVyZSgidGVzdF9jYXNl
X3J1bnMiLCAicnVuX2lkIiwgIj0iLCAkdGhpcy0+Z2V0UnVuSUQoKSwiIik7CQkNCgkJcmV0dXJu
ICRzcWwtPnRvU1FMKCk7DQoJfQkNCgkNCgkvKioNCgkgKiBSZW5kZXJzIGEgZGlyZWN0ZWQgZ3Jh
cGggYmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBhIHRlc3QgcnVuIHVzaW5nIGdyYXBodml6
DQoJICogQHJldHVybiBsaW5rIHRvIHRoZSBnZW5lcmF0ZWQgZ3JhcGggZmlsZQ0KCSAqLw0KIwlm
dW5jdGlvbiByZW5kZXJEaWdyYXBoKCR0eXBlID0gImxpbmsiKSB7DQojCQlpZiAoJHRoaXMtPmdl
dEFyZ3MoKS0+Z2V0KCJncmFwaHZpeiIpID09ICIiKSB7DQojCQkJcmV0dXJuOw0KIwkJfQ0KIwkN
CiMJCWdsb2JhbCAkd2dTY3JpcHRQYXRoOw0KIwkNCiMJCSRvdXRwdXQgPSAiIjsNCiMJCSRyZXN1
bHQgPSAkdGhpcy0+ZGlncmFwaCgpOw0KIwkJDQojCQkkYmFzZWZpbGUgPSAiYWdlbmRhXyIubWQ1
KCR0aGlzLT5nZXRSdW5JRCgpLiIgIi4kdGhpcy0+d2l0aERlcGVuZGVuY3kpOwkJDQojCQkjIHRo
ZSBwbG90IGZpbGUNCiMJCSRmaWxlbmFtZVBMTz1zdHJ0b2xvd2VyKCRiYXNlZmlsZS4iLnR4dCIp
Ow0KIwkJJHBsb3RGaWxlICA9ICJpbWFnZXMvdGVzdG9waWFfcmVwb3J0cy8iLiRmaWxlbmFtZVBM
TzsNCiMJCSMgdGhlIG5hbWUgb2YgaW1hZ2UgZmlsZSBmb3IgdGhlIHJlbmRlcmVkIGNoYXJ0DQoj
CQkkZmlsZW5hbWVQTkc9c3RydG9sb3dlcigkYmFzZWZpbGUuIi5wbmciKTsNCiMJCSRpbWdGaWxl
ICAgPSAiaW1hZ2VzL3Rlc3RvcGlhX3JlcG9ydHMvIi4kZmlsZW5hbWVQTkc7CQkNCiMJCQ0KIwkJ
JHBsb3RGaWxlSCA9IGZvcGVuKCRwbG90RmlsZSwgJ3cnKSBvciBkaWUoImNhbid0IG9wZW4gZmls
ZSIpOw0KIwkJI291dHB1dCB0aGUgcGxvdCBkYXRhDQojCQlmb3JlYWNoICgkcmVzdWx0IGFzICRs
aW5lKXsNCiMJCQlmd3JpdGUoJHBsb3RGaWxlSCwkbGluZS4kdGhpcy0+Z2V0TmV3bGluZSgpKTsN
CiMJCX0JCQ0KIwkJZmNsb3NlKCRwbG90RmlsZUgpOw0KIwkJDQojCQl3aGlsZSAoIWZpbGVfZXhp
c3RzKCRwbG90RmlsZSkpIHsNCiMJCQlzbGVlcCgxKTsNCiMJCX0NCiMJCQ0KIwkJJG91dHB1dCA9
IHN5c3RlbShlc2NhcGVzaGVsbGNtZCgkdGhpcy0+Z2V0QXJncygpLT5nZXQoImdyYXBodml6Iiku
IiAtVHBuZyAiLiRwbG90RmlsZS4iIC1vICIuJGltZ0ZpbGUpLCRyZXQpOw0KIwkJDQojCQlpZiAo
JHJldCA9PSAwKSB7DQojCQkJIyBjcmVhdGUgdGhlIGhyZWYgZm9yIHNob3dpbmcgdGhlIGNoYXJ0
DQojCQkJJHNyYz0kd2dTY3JpcHRQYXRoLiIvIi4kaW1nRmlsZTsNCiMJCQlpZiAoJHR5cGUgPT0g
ImxpbmsiKSB7DQojCQkJCSRvdXRwdXQgPSAiPGEgaHJlZj1cIiIuJHNyYy4iXCI+Ii4iRGVwZW5k
ZW5jeSBHcmFwaCIuIjwvYT4iOw0KIwkJCX0gZWxzZWlmICgkdHlwZSA9PSAiaW1nIikgew0KIwkJ
CQkkb3V0cHV0ID0gIjxpbWcgc3JjPVwiIi4kc3JjLiJcIiBhbHQ9XCJEZXBlbmRlbmN5IEdyYXBo
XCIgdGl0bGU9XCJEZXBlbmRlbmN5IEdyYXBoXCI+IjsNCiMJCQl9DQojCQl9IGVsc2Ugew0KIwkJ
CSRvdXRwdXQgPSAiPHA+Ii4kcmV0LiItIi4kb3V0cHV0LiItIi5lc2NhcGVzaGVsbGNtZCgkdGhp
cy0+Z2V0QXJncygpLT5nZXQoImdyYXBodml6IikuIiAtVHBuZyAiLiRwbG90RmlsZS4iIC1vICIu
JGltZ0ZpbGUpLiI8L3A+IjsNCiMJCX0NCiMJCXJldHVybiAkb3V0cHV0OwkJDQojCX0NCn0NCg0K
Pz4AAAAAAAAAAABUUl9yZXBQcmlvcml0eS5waHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAw
MDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDU0NTAAMTIxMDI3MzIwMzYAMDEzMjIyACAwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADw/cGhwDQoNCmNsYXNzIFRSX3JlcFByaW9yaXR5IGV4dGVuZHMgVFJfVGVtcGxh
dGV7DQoNCgl2YXIgJHN1cHBvcnRlZENoYXJ0cyA9IGFycmF5KA0KCQkic3RhdHVzIiA9PiBhcnJh
eSgicGFyYW1ldGVyIj0+InN0YXR1cyIsIA0KIAkgCQkJCQkgInRpdGxlIiAgICAgPT4iVGVzdCBD
YXNlIFN0YXR1cyIsDQoJCQkJCQkgInRvb2x0aXAiICAgPT4iVGVzdCBDYXNlIFN0YXR1cyIsDQoJ
CQkJCQkgImFsdHRleHQiICAgPT4iVGVzdCBDYXNlIFN0YXR1cyIpLA0KCQkicHJpbyIgICA9PiBh
cnJheSgicGFyYW1ldGVyIj0+InByaW8iLCANCiAJIAkJCQkJICJ0aXRsZSIgICAgID0+IlRlc3Qg
Q2FzZSBQcmlvcml0aWVzIiwNCgkJCQkJCSAidG9vbHRpcCIgICA9PiJUZXN0IENhc2UgUHJpb3Jp
dGllcyIsDQoJCQkJCQkgImFsdHRleHQiICAgPT4iVGVzdCBDYXNlIFByaW9yaXRpZXMiKQ0KCSk7
DQoJDQoJdmFyICRzdXBwb3J0ZWRDaGFydFR5cGVzID0gYXJyYXkoDQoJCSJnb29nbGUiICAgPT4g
YXJyYXkoICJiYXIiLCAicGllIiwgInBpZTMiICksDQoJKTsNCg0KCWZ1bmN0aW9uIGdldFN1cHBv
cnRlZENoYXJ0c0FycigpIHsNCgkJcmV0dXJuICR0aGlzLT5zdXBwb3J0ZWRDaGFydHM7DQoJfQ0K
CQ0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0VHlwZXNBcnIoKSB7DQoJCXJldHVybiAkdGhp
cy0+c3VwcG9ydGVkQ2hhcnRUeXBlczsNCgl9DQoNCglmdW5jdGlvbiBnZXRSZXBvcnRIZWFkZXIo
KSB7DQoJCXJldHVybiAkdGhpcy0+Z2V0U3RhbmRhcmRSdW5IZWFkZXIoKTsNCgl9DQoNCglmdW5j
dGlvbiBnZXRSZXBvcnRGb290ZXIoKSB7DQoJCXJldHVybiAiIjsNCgl9CQ0KCQ0KCWZ1bmN0aW9u
IGdldFJlcG9ydE5hbWUoKSB7DQoJCXJldHVybiAiUHJpb3JpdHkgQnJlYWtkb3duIFJlcG9ydCI7
DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFJlcG9ydCggJHJlc3VsdCApIHsNCgkJIyBjaGVjayBhbmQg
c2V0IHNvbWUgcGFyYW1ldGVycw0KCQkjIGZpZWxkIGZvciBjYWxjdWxhdGluZyB0aGUgdG90YWwg
bnVtYmVyOyBjb3VsZCBiZSBzZXQgdG8gYSBmaWVsZCB0aGF0IGlzIGluY2x1ZGVkIGluIHRoZSBm
aWVsZCBsaXN0IG9mIHRoZSBzZWxlY3Qgc3RhdGVtZW50IG9yIHRvIHJvd2NvdW50LCB3aGljaCB3
aWxsIHNpbXBseSBjb3VudCBudW1iZXIgb2Ygcm93cw0KCQlpZiAoJHRoaXMtPmdldEFyZ3MoKS0+
Z2V0KCJ0b3RhbCIpID09ICJ0cnVlIikgew0KCQkJJHRoaXMtPmdldEFyZ3MoKS0+c2V0KCJ0b3Rh
bCIsICJDb3VudCIpOw0KCQl9DQoJCQ0KCQkkb3V0cHV0ID0gJHRoaXMtPnJlbmRlclBsYWluSFRN
TCggJHJlc3VsdCApOw0KCQkNCgkJI3JldHVybmluZyB0aGUgb3V0cHV0DQoJCXJldHVybiAkb3V0
cHV0Ow0KCX0NCgkNCglmdW5jdGlvbiBnZXRTUUwoKSB7CQkJCQ0KCQkkc3FsID0gbmV3IFRSX1NR
TDsNCgkJJHNxbC0+c2V0Q29ubmVjdG9yKCR0aGlzLT5nZXRDb25uZWN0b3IoKSk7DQoJCSRzcWwt
PnNldEZyb20oInRlc3RfY2FzZXMiKTsNCgkJJHNxbC0+YWRkRmllbGQoInByaW9yaXR5IiwgInZh
bHVlIiwgIlByaW9yaXR5Iik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVuX3N0YXR1
cyIsICJuYW1lIiwgIlN0YXR1cyIpOw0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX3J1bnMi
LCAiY2FzZV9pZCIsICJDb3VudCIsICJjb3VudChkaXN0aW5jdCAkMSkiKTsJCQ0KCQkkc3FsLT5h
ZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9ydW5zIiwgImNhc2VfaWQiLCAidGVzdF9j
YXNlcyIsICJjYXNlX2lkIik7DQoJCSRzcWwtPmFkZEpvaW4oIklubmVyIiwgIj0iLCAicHJpb3Jp
dHkiLCAiaWQiLCAidGVzdF9jYXNlcyIsICJwcmlvcml0eV9pZCIpOw0KCQkkc3FsLT5hZGRKb2lu
KCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9ydW5fc3RhdHVzIiwgImNhc2VfcnVuX3N0YXR1c19p
ZCIsICJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNlX3J1bl9zdGF0dXNfaWQiKTsJCQ0KCQkkc3FsLT5h
ZGRXaGVyZSgidGVzdF9jYXNlX3J1bnMiLCAicnVuX2lkIiwgIj0iLCAkdGhpcy0+Z2V0UnVuSUQo
KSk7DQoJCSRzcWwtPmFkZEdyb3VwU29ydCgiR3JvdXAiLCAicHJpb3JpdHkiLCAidmFsdWUiKTsN
CgkJJHNxbC0+YWRkR3JvdXBTb3J0KCJHcm91cCIsICJ0ZXN0X2Nhc2VfcnVuX3N0YXR1cyIsICJu
YW1lIik7DQoJCSRzcWwtPmFkZEdyb3VwU29ydCgiT3JkZXIiLCAicHJpb3JpdHkiLCAidmFsdWUi
KTsNCgkJDQoJCSRzcWxTdHIgPSAkc3FsLT50b1NRTCgpOw0KCQlyZXR1cm4gJHNxbFN0cjsKCX0J
DQoJCQ0KCWZ1bmN0aW9uIGdldEdvb2dsZUNoYXJ0TGluayggJiRnb29nbGUsICRyZXN1bHQsICR0
eXBlLCAkY2hhcnQgKSB7DQoJCSRmaWVsZCA9ICIiOw0KCQkkY29sb3IgPSAiIjsNCgkJc3dpdGNo
ICgkY2hhcnQpIHsNCgkJCWNhc2UgInN0YXR1cyI6DQoJCQkJJGZpZWxkPSJTdGF0dXMiOw0KCQkJ
CSRjb2xvcj0idGNycyI7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJwcmlvIiAgOiANCgkJCQkkZmll
bGQ9IlByaW9yaXR5IjsNCgkJCQkkY29sb3I9InByaW8iOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVs
dDoNCgkJCQkkZmllbGQ9IlByaW9yaXR5IjsNCgkJCQkkY29sb3I9InByaW8iOwkJCQ0KCQl9DQoN
CgkJaWYgKCRjaGFydCkgew0KCQkJJHRoaXMtPmdldEdvb2dsZUNoYXJ0T25lUm93Q291bnQoJGdv
b2dsZSwkcmVzdWx0LCAkdHlwZSwgJGNoYXJ0LCAkZmllbGQsICJDb3VudCIsICRjb2xvciwgIiIp
Ow0KCQl9IGVsc2Ugew0KCQkJJHRoaXMtPmdldEdvb2dsZUNoYXJ0T25lUm93Q291bnQoJGdvb2ds
ZSwkcmVzdWx0LCAkdHlwZSwgInByaW8iLCAkZmllbGQsICJDb3VudCIsICRjb2xvciwgIiIpOw0K
CQl9DQoJfQ0KfQ0KDQo/PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAFRSX3JlcFRlc3RwbGFuLnBocAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAw
MDAwMDAAMDAwMDAwMAAwMDAwMDAxNDY1NgAxMjEwMjczMjA1NAAwMTMyMDMAIDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAPD9waHANCg0KY2xhc3MgVFJfcmVwVGVzdHBsYW4gZXh0ZW5kcyBUUl9UZW1wbGF0ZXsNCg0K
CXByaXZhdGUgJHN1cHBvcnRlZENoYXJ0cyA9IGFycmF5KCANCgkJInRzdGF0dXMiICA9PiBhcnJh
eSgicGFyYW1ldGVyIj0+InRzdGF0dXMiLCANCgkJCQkJCQkidGl0bGUiICAgID0+IlRlc3QgQ2Fz
ZSBTdGF0dXMiLA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4iVGVzdCBDYXNlIFN0YXR1cyIsDQoJCQkJ
CQkJImFsdHRleHQiICA9PiJUZXN0IENhc2UgU3RhdHVzIiksDQoJCSJ0ZXN0ZXJzIiAgPT4gYXJy
YXkoInBhcmFtZXRlciI9PiJ0ZXN0ZXJzIiwgDQoJCQkJCQkJInRpdGxlIiAgICA9PiJUZXN0ZXIg
QXNzaWdubWVudHMiLA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4iVGVzdGVyIEFzc2lnbm1lbnRzIiwN
CgkJCQkJCQkiYWx0dGV4dCIgID0+IlRlc3RlciBBc3NpZ25tZW50cyIpLA0KCQkiY2F0ZWdvcnki
ID0+IGFycmF5KCJwYXJhbWV0ZXIiPT4iY2F0ZWdvcnkiLCANCgkJCQkJCQkidGl0bGUiICAgID0+
IlRlc3QgQ2FzZSBDYXRlZ29yaWVzIiwNCgkJCQkJCQkidG9vbHRpcCIgID0+IlRlc3QgQ2FzZSBD
YXRlZ29yaWVzIiwNCgkJCQkJCQkiYWx0dGV4dCIgID0+IlRlc3QgQ2FzZSBDYXRlZ29yaWVzIiks
DQoJCSJ0cHJpbyIgICAgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJ0cHJpbyIsIA0KCQkJCQkJCSJ0
aXRsZSIgICAgPT4iVGVzdCBDYXNlIFByaW9yaXRpZXMiLA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4i
VGVzdCBDYXNlIFByaW9yaXRpZXMiLA0KCQkJCQkJCSJhbHR0ZXh0IiAgPT4iVGVzdCBDYXNlIFBy
aW9yaXRpZXMiKSwNCgkJImNyZWF0aW9uIiA9PiBhcnJheSgicGFyYW1ldGVyIj0+ImNyZWF0aW9u
IiwgDQoJCQkJCQkJInRpdGxlIiAgICA9PiJUZXN0IENhc2UgQ3JlYXRpb24iLA0KCQkJCQkJCSJ0
b29sdGlwIiAgPT4iVGVzdCBDYXNlIENyZWF0aW9uIiwNCgkJCQkJCQkiYWx0dGV4dCIgID0+IlRl
c3QgQ2FzZSBDcmVhdGlvbiIpLA0KCQ0KCQkidGltZXMiICAgID0+IGFycmF5KCJwYXJhbWV0ZXIi
PT4idGltZXMiLCANCgkJCQkJCQkidGl0bGUiICAgID0+IkVzdGltYXRlZCBUaW1lcyIsDQoJCQkJ
CQkJInRvb2x0aXAiICA9PiJFc3RpbWF0ZWQgVGltZXMiLA0KCQkJCQkJCSJhbHR0ZXh0IiAgPT4i
RXN0aW1hdGVkIFRpbWVzIikNCgkNCgkpOw0KCQ0KCXByaXZhdGUgJHN1cHBvcnRlZENoYXJ0VHlw
ZXMgPSBhcnJheSgNCgkJImdvb2dsZSIgICA9PiBhcnJheSggInBpZSIsICJwaWUzIiwgImJhciIg
KSwNCgkpOw0KCQ0KCXByaXZhdGUgJGNvbHVtbkZvcm1hdHMgPSBhcnJheSgNCgkJIlByaW9yaXR5
IiA9PiAidGV4dC1hbGlnbjpjZW50ZXIiDQoJKTsgDQoJDQoJcHVibGljIGZ1bmN0aW9uIGdldENv
bHVtbkZvcm1hdHMoKSB7DQoJCXJldHVybiAkdGhpcy0+Y29sdW1uRm9ybWF0czsNCgl9CQ0KCQ0K
CXB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFydHNBcnIoKSB7DQoJCXJldHVybiAkdGhp
cy0+c3VwcG9ydGVkQ2hhcnRzOw0KCX0NCgkNCglwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVk
Q2hhcnRUeXBlc0FycigpIHsNCgkJcmV0dXJuICR0aGlzLT5zdXBwb3J0ZWRDaGFydFR5cGVzOw0K
CX0NCg0KCS8qKg0KCSogaW1wbGVtZW50YXRpb24gb2YgdGhlIGFic3RyYWN0IGZ1bmN0aW9uIG9m
IHRoZSBzdXBlciBjbGFzcw0KCSovDQoJcHVibGljIGZ1bmN0aW9uIGdldFJlcG9ydCggJHJlc3Vs
dCApIHsNCgkJIyBjaGVjayBhbmQgc2V0IHNvbWUgcGFyYW1ldGVycw0KCQkjIGZpZWxkIGZvciBj
YWxjdWxhdGluZyB0aGUgdG90YWwgbnVtYmVyOyBjb3VsZCBiZSBzZXQgdG8gYSBmaWVsZCB0aGF0
IGlzIGluY2x1ZGVkIGluIHRoZSBmaWVsZCBsaXN0IG9mIHRoZSBzZWxlY3Qgc3RhdGVtZW50IG9y
IHRvIHJvd2NvdW50LCB3aGljaCB3aWxsIHNpbXBseSBjb3VudCBudW1iZXIgb2Ygcm93cwkNCgkJ
aWYgKCR0aGlzLT5nZXRBcmdzKCktPmdldCgidG90YWwiKSA9PSAidHJ1ZSIpIHsNCgkJCSR0aGlz
LT5nZXRBcmdzKCktPnNldCgidG90YWwiLCAicm93Y291bnQiKTsNCgkJfQ0KCQ0KCQkkb3V0cHV0
ID0gJHRoaXMtPnJlbmRlclBsYWluSFRNTCggJHJlc3VsdCApOwkNCgkJDQoJCSNyZXR1cm5pbmcg
dGhlIG91dHB1dA0KCSAgICByZXR1cm4gJG91dHB1dDsNCgl9DQoJCQ0KCXB1YmxpYyBmdW5jdGlv
biBnZXRSZXBvcnROYW1lKCkgew0KCQlyZXR1cm4gIkxpc3Qgb2YgVGVzdCBDYXNlcyI7DQoJfQ0K
CQkNCgkvKioNCgkqIENyZWF0ZSB0aGUgcmVwb3J0IGhlYWRlcg0KCSoqLw0KCXB1YmxpYyBmdW5j
dGlvbiBnZXRSZXBvcnRIZWFkZXIoKSB7DQoJCXJldHVybiAkdGhpcy0+Z2V0U3RhbmRhcmRQbGFu
SGVhZGVyKCk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldFJlcG9ydEZvb3RlcigpIHsNCgkJ
cmV0dXJuICIiOw0KCX0JDQoJDQoJcHVibGljIGZ1bmN0aW9uIG5ld0xpbmVCZWdpbiggJGxpbmUg
KSB7DQoJCSRvdXRwdXQgPSAiIjsNCgkJaWYgKCRsaW5lWyJTdGF0dXMiXSA9PSAkdGhpcy0+Z2V0
Q29udGV4dCgpLT5nZXRNZXNzYWdlVGV4dCgidHJSZXBvcnRfVGVzdG9waWFfRGlzYWJsZWQiKSkg
ew0KCQkJJG91dHB1dCA9ICI8dHIgY2xhc3M9XCJ0ZXN0b3BpYV9UZXN0Q2FzZURpc2FibGVkXCI+
IjsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIHJlbmRl
ckNlbGwoJHR5cGUsICRjb2xObywgJGZpZWxkX25hbWUsICR2YWx1ZSwgJGxpbmVObywgJGxpbmUp
IHsNCgkJJG91dHB1dCA9ICIiOw0KCQkNCgkJaWYgKCR0eXBlPT0iYm9keSIpIHsNCgkJCXN3aXRj
aCAoJGZpZWxkX25hbWUpIHsNCgkJCQljYXNlICJUZXN0IENhc2UiOiANCgkJCQkJCSRvdXRwdXQ9
Ijx0ZD48YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIikuIi90cl9z
aG93X2Nhc2UuY2dpP2Nhc2VfaWQ9Ii4kdmFsdWUuIlwiPiIuJHZhbHVlLiI8L2E+PC90ZD4iOw0K
CQkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiRGVwZW5kcyBPbiI6DQoJCQkJCQkkb3V0cHV0PSI8dGQ+
PGEgaHJlZj1cIiIuJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJienNlcnZlciIpLiIvdHJfc2hvd19j
YXNlLmNnaT9jYXNlX2lkPSIuJHZhbHVlLiJcIj4iLiR2YWx1ZS4iPC9hPjwvdGQ+IjsNCgkJCQkJ
CWJyZWFrOw0KCQkJCWNhc2UgIlRlc3RlciI6DQoJCQkJCQlpZiAoJHZhbHVlID09ICIiKSB7DQoJ
CQkJCQkJJG91dHB1dD0iPHRkIGNsYXNzPVwidGVzdG9waWFfVGVzdENhc2VXYXJuXCI+PC90ZD4i
Ow0KCQkJCQkJfQ0KCQkJCQkJYnJlYWs7DQojCQkJCWNhc2UgIkVzdGltLiBUaW1lIjoNCiMJCQkJ
CQlpZiAoJHZhbHVlID09ICIiKSB7DQojCQkJCQkJCSRvdXRwdXQ9Ijx0ZCBjbGFzcz1cInRlc3Rv
cGlhX1Rlc3RDYXNlV2FyblwiPjwvdGQ+IjsNCiMJCQkJCQl9IGVsc2Ugew0KIwkJCQkJCQkkdGlt
ZSA9IGV4cGxvZGUoIjoiLCR2YWx1ZSk7DQojCQkJCQkJCSR0aW1lID0gJHRpbWVbMF0qNjAqNjAr
JHRpbWVbMV0qNjArJHRpbWVbMl07DQojCQkJCQkJCWlmICgkdGltZSA9PSAwKSB7DQojCQkJCQkJ
CQkkb3V0cHV0PSI8dGQgY2xhc3M9XCJ0ZXN0b3BpYV9UZXN0Q2FzZVdhcm5cIj4iLiR2YWx1ZS4i
PC90ZD4iOw0KIwkJCQkJCQl9DQojCQkJCQkJfQ0KCQkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiU3Rh
dHVzIjoNCgkJCQkJCXN3aXRjaCAoJHZhbHVlKSB7DQoJCQkJCQkJY2FzZSAkdGhpcy0+Z2V0Q29u
dGV4dCgpLT5nZXRNZXNzYWdlVGV4dCgidHJSZXBvcnRfVGVzdG9waWFfQ29uZmlybWVkIik6ICRv
dXRwdXQ9Ijx0ZCBjbGFzcz1cInRlc3RvcGlhX1Rlc3RDYXNlQ29uZmlybWVkXCI+Ii4kdmFsdWUu
IjwvdGQ+IjsgYnJlYWs7DQoJCQkJCQkJY2FzZSAkdGhpcy0+Z2V0Q29udGV4dCgpLT5nZXRNZXNz
YWdlVGV4dCgidHJSZXBvcnRfVGVzdG9waWFfUHJvcG9zZWQiKSA6ICRvdXRwdXQ9Ijx0ZCBjbGFz
cz1cInRlc3RvcGlhX1Rlc3RDYXNlUHJvcG9zZWRcIj4iLiR2YWx1ZS4iPC90ZD4iOyBicmVhazsN
CgkJCQkJCQlkZWZhdWx0OiAkb3V0cHV0ID0gIiI7DQoJCQkJCQl9DQoJCQkJZGVmYXVsdDogcmV0
dXJuICRvdXRwdXQ7DQoJCQl9DQoJCX0NCgkJDQoJCXJldHVybiAkb3V0cHV0Ow0KCX0JDQoJDQoJ
ZnVuY3Rpb24gZ2V0U1FMKCkgewkJDQoJCSRzcWwgPSBuZXcgVFJfU1FMOw0KCQkkc3FsLT5zZXRD
b25uZWN0b3IoJHRoaXMtPmdldENvbm5lY3RvcigpKTsNCgkJDQoJCSRzcWwtPnNldEZyb20oInRl
c3RfcGxhbnMiKTsNCgkNCgkJJHNxbC0+YWRkRmllbGQoInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIs
ICJUZXN0IENhc2UiKTsJCQ0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlcyIsICJzdW1tYXJ5
IiwgIlRlc3QgQ2FzZSBTdW1tYXJ5Iik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfY2F0
ZWdvcmllcyIsICJuYW1lIiwgIkNhdGVnb3J5Iik7DQoJCSRzcWwtPmFkZEZpZWxkKCJwcmlvcml0
eSIsICJ2YWx1ZSIsICJQcmlvcml0eSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgicHJvZmlsZXMiLCAi
cmVhbG5hbWUiLCAiVGVzdGVyIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2Vfc3RhdHVz
IiwgIm5hbWUiLCAiU3RhdHVzIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VzIiwgImNy
ZWF0aW9uX2RhdGUiLCAiQ3JlYXRpb24gRGF0ZSIsICJMRUZUKCQxLDEwKSIpOw0KIwkJJHNxbC0+
YWRkRmllbGQoInRlc3RfY2FzZXMiLCAiZXN0aW1hdGVkX3RpbWUiLCAiRXN0aW0uIFRpbWUiKTsN
CiMJCQ0KCQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9wbGFucyIsICJw
bGFuX2lkIiwgInRlc3RfcGxhbnMiLCAicGxhbl9pZCIpOw0KCQkkc3FsLT5hZGRKb2luKCJJbm5l
ciIsICI9IiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIsICJ0ZXN0X2Nhc2VfcGxhbnMiLCAiY2Fz
ZV9pZCIpOw0KCQkkc3FsLT5hZGRKb2luKCJMZWZ0IiwgIj0iLCAidGVzdF9jYXNlX2NhdGVnb3Jp
ZXMiLCAiY2F0ZWdvcnlfaWQiLCAidGVzdF9jYXNlcyIsICJjYXRlZ29yeV9pZCIpOw0KCQkkc3Fs
LT5hZGRKb2luKCJJbm5lciIsICI9IiwgInByaW9yaXR5IiwgImlkIiwgInRlc3RfY2FzZXMiLCAi
cHJpb3JpdHlfaWQiKTsgDQoJCSRzcWwtPmFkZEpvaW4oIkxlZnQiLCAiPSIsICJwcm9maWxlcyIs
ICJ1c2VyaWQiLCAidGVzdF9jYXNlcyIsICJkZWZhdWx0X3Rlc3Rlcl9pZCIpOw0KCQkkc3FsLT5h
ZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9zdGF0dXMiLCAiY2FzZV9zdGF0dXNfaWQi
LCAidGVzdF9jYXNlcyIsICJjYXNlX3N0YXR1c19pZCIpOw0KCQkNCgkJJHNxbC0+YWRkR3JvdXBT
b3J0KCJPcmRlciIsICJ0ZXN0X2Nhc2VzIiwgImNhc2VfaWQiKTsNCgkJDQoJCSRzcWwtPmFkZFdo
ZXJlKCJ0ZXN0X3BsYW5zIiwgInBsYW5faWQiLCAiPSIsICR0aGlzLT5nZXRQbGFuSUQoKSk7DQoJ
DQoJCXJldHVybiAkc3FsLT50b1NRTCgpOw0KCX0JDQoJCQ0KCWZ1bmN0aW9uIGdldEdvb2dsZUNo
YXJ0TGluayggJiRnb29nbGUsICRyZXN1bHQsICR0eXBlLCAkY2hhcnQgKSB7DQoJCSRmaWVsZCA9
ICIiOw0KCQkkY29sb3IgPSAiIjsNCgkJJGNvbG9ycmFuZ2UgPSAiIjsNCgkJDQoJCXN3aXRjaCAo
JGNoYXJ0KSB7DQoJCQljYXNlICJ0ZXN0ZXJzIiA6DQoJCQkJCSRmaWVsZD0iVGVzdGVyIjsNCgkJ
CQkJJGNvbG9yPSJhdXRvIjsgDQoJCQkJCSRjb2xvcnJhbmdlID0gInJhaW5ib3ciOw0KCQkJCQli
cmVhazsNCgkJCWNhc2UgImNhdGVnb3J5IjoNCgkJCQkJJGZpZWxkPSJDYXRlZ29yeSI7DQoJCQkJ
CSRjb2xvcnJhbmdlID0gIm9yYW5nZSI7DQoJCQkJCSRjb2xvcj0iYXV0byI7DQoJCQkJCWJyZWFr
Ow0KCQkJY2FzZSAidHN0YXR1cyIgOg0KCQkJCQkkZmllbGQ9IlN0YXR1cyI7DQoJCQkJCSRjb2xv
cj0idHN0YXR1cyI7CQkJDQoJCQkJCWJyZWFrOw0KCQkJY2FzZSAidHByaW8iIDoNCgkJCQkJJGZp
ZWxkPSJQcmlvcml0eSI7DQoJCQkJCSRjb2xvcj0icHJpbyI7DQoJCQkJCWJyZWFrOwkNCgkJCWNh
c2UgImNyZWF0aW9uIjoNCgkJCQkJJGZpZWxkPSJDcmVhdGlvbiBEYXRlIjsNCgkJCQkJJGNvbG9y
PSJhdXRvIjsgDQoJCQkJCSRjb2xvcnJhbmdlPSJyYWluYm93IjsNCgkJCQkJYnJlYWs7CQkJCQkJ
CQkJCQkNCgkJCWNhc2UgInRpbWVzIjoNCgkJCQkJJGZpZWxkPSJFc3RpbS4gVGltZSI7DQoJCQkJ
CSRjb2xvcj0iYXV0byI7IA0KCQkJCQkkY29sb3JyYW5nZT0icmFpbmJvdyI7DQoJCQkJCWJyZWFr
OwkJCQkJDQoJCQlkZWZhdWx0Og0KCQkJCQkkZmllbGQ9IlRlc3RlciI7DQoJCQkJCSRjb2xvcj0i
YXV0byI7IA0KCQkJCQkkY29sb3JyYW5nZSA9ICJyYWluYm93IjsJCQkNCgkJfQ0KCQ0KCQlpZiAo
JGNoYXJ0KSB7DQoJCQkkdGhpcy0+Z2V0R29vZ2xlQ2hhcnRPbmVSb3dDb3VudCgkZ29vZ2xlLCAk
cmVzdWx0LCAkdHlwZSwgJGNoYXJ0LCAkZmllbGQsICIiLCAkY29sb3IsICRjb2xvcnJhbmdlKTsN
CgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5nZXRHb29nbGVDaGFydE9uZVJvd0NvdW50KCRnb29nbGUs
JHJlc3VsdCwgJHR5cGUsICJ0ZXN0ZXJzIiwgJGZpZWxkLCAiIiwgJGNvbG9yLCAkY29sb3JyYW5n
ZSk7DQoJCX0NCgl9CQ0KfQ0KDQo/PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUUl9UZW1wbGF0
ZS5waHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAA
MDAwMDAwNjMyNjUAMTIxMDI3MzIwNzQAMDEyNDU3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw/cGhwDQoNCi8q
Kg0KICogQ29weXJpZ2h0IChDKSAyMDA5IC0gQW5kcmVhcyBN/GxsZXINCiAqDQogKiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeSBpdCANCiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlDQogKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIA0KICog
YW55IGxhdGVyIHZlcnNpb24uDQogKg0KICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCANCiAqIFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM
SVRZIA0KICogb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yICAgIA0KICogbW9yZSBkZXRhaWxzLg0KICogDQog
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhbG9uZyANCiAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0
cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzPi4NCiAqLw0KDQphYnN0cmFjdCBjbGFzcyBUUl9UZW1w
bGF0ZSB7DQoJCQkNCgkjIGNvbm5lY3RvciBjbGFzcw0KCXByaXZhdGUgJGNvbm5lY3RvcjsNCgkj
IEluc3RhbmNlIG9mIFRlc3RvcGlhUGFyYW1ldGVycw0KCXByaXZhdGUgJGFyZ3VtZW50czsNCglw
cml2YXRlICRjb250ZXh0Ow0KCQ0KCSNvdGhlcnMNCglwcml2YXRlICR0b3RhbDsgCQkgICAgI2Zv
ciB0b3RhbCBsaW5lDQoJcHJpdmF0ZSAkbXNnTm90aGluZ0ZvdW5kOwkjaWYgbm90aGluZyB3YXMg
Zm91bmQgLSBjdXN0b21pemVkIG1lc3NhZ2U7IGNvdWxkIGJlIHNldCBieSByZXBvcnQNCglwcml2
YXRlICRkZWZhdWx0Q29sb3JSYW5nZSA9ICJ5ZWxsb3ciOw0KCQ0KCXByaXZhdGUgJE9TV2luOwkJ
CQkjIG9wZXJhdGluZyBzeXN0ZW0gb2YgdGhlIHNlcnZlcjsgaWYgV2luZG93cyA9IHRydWUgZWxz
ZSBmYWxzZQ0KCXByaXZhdGUgJG5ld2xpbmU7CQkJIyBuZXcgbGluZSBjaGFyYWN0ZXIgZm9yIGZp
bGUgb3V0cHV0CQ0KCQ0KCSMgcmVwb3J0IGRpbWVuc2lvbnMNCglwdWJsaWMgJG51bU9mQ29sczsN
CglwdWJsaWMgJG51bU9mUm93czsNCglwdWJsaWMgJGNvbHVtbk5hbWVzOyAvLyBhcnJheSBvZiBj
b2x1bW4gbmFtZXMNCglwdWJsaWMgJHByZXZpb3VzTGluZTsNCgkNCgkjIGxvY2FsIGNvcHkgb2Yg
dGhlIGhlYWRlcjsgdXNlZCBvbmx5IGlmIHRoZSByZXBvcnQgaXMgaGlkZGVuICh3aWxsIGJlIGRp
c3BsYXllZCBhbG9uZyB3aXRoIHRoZSBzaG93IGJ1dHRvbikNCglwdWJsaWMgJGhlYWRlcjsgDQoJ
IyB1bmlxdWUgSURzIGZvciB0aGUgZGl2IGFyZWFzIGZvciBoaWRpbmcgYW5kIHNob3dpbmcgdGhl
IHJlcG9ydA0KCXB1YmxpYyAkaGlkZUlEID0gYXJyYXkoKTsgDQoJDQoJLyoqDQoJICogQ29uc3Ry
dWN0b3INCgkgKi8NCglmdW5jdGlvbiBUUl9UZW1wbGF0ZSAoKSB7DQoJCSR0aGlzLT5PU1dpbiA9
ICR0aGlzLT5jaGVja1dpbmRvd3MoKTsNCgkJDQoJCWlmICgkdGhpcy0+T1NXaW4gPT0gdHJ1ZSkg
ew0KCQkJJHRoaXMtPnNldE5ld2xpbmUoIlxyXG4iKTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5z
ZXROZXdsaW5lKCJcbiIpOw0KCQl9DQoJfQ0KCQ0KCS8qKg0KCSAqIEBwYXJhbSAkY29udGV4dCA9
IGNvbnRleHQgb2YgdGhpcyBjbGFzcyA9IFRlc3RvcGlhUmVwb3J0DQoJICogQHJldHVybiAtDQoJ
ICovDQoJcHVibGljIGZ1bmN0aW9uIHNldENvbnRleHQoICRjb250ZXh0ICkgew0KCQkkdGhpcy0+
Y29udGV4dCA9ICRjb250ZXh0Ow0KCX0NCgkNCgkvKioNCgkgKiBAcmV0dXJuIGNvbnRleHQgY2xh
c3MgPSBUZXN0b3BpYVJlcG9ydA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZXh0KCkg
ew0KCQlyZXR1cm4gJHRoaXMtPmNvbnRleHQ7DQoJfQ0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gY2hl
Y2tXaW5kb3dzKCkgew0KCQlpZiAoIHN0cnRvdXBwZXIoc3Vic3RyKHBocF91bmFtZSgpLCAwLCAz
KSkgPT09ICdXSU4nICkgew0KCQkJcmV0dXJuIHRydWU7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4g
ZmFsc2U7DQoJCX0NCgl9CQ0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gc2V0TmV3bGluZSggJHN0ciAp
IHsNCgkJJHRoaXMtPm5ld2xpbmU9ICRzdHI7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldE5l
d2xpbmUoKSB7DQoJCXJldHVybiAkdGhpcy0+bmV3bGluZTsNCgl9DQoJDQoJLyoqDQoJICogQHBh
cmFtICR0b3RhbCA9IHNldHMgdGhlIHRvdGFsIHZhbHVlIGZvciBhIHJlcG9ydA0KCSAqLw0KCXBy
aXZhdGUgZnVuY3Rpb24gc2V0VG90YWwoICR0b3RhbCApIHsNCgkJJHRoaXMtPnRvdGFsID0gJHRv
dGFsOw0KCX0NCgkNCgkvKioNCgkgKiBAcmV0dXJuIHRoZSB0b3RhbCB2YWx1ZSBvZiBhIHJlcG9y
dA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRUb3RhbCgpIHsNCgkJcmV0dXJuICR0aGlzLT50
b3RhbDsNCgl9DQoJDQoJZnVuY3Rpb24gc2V0Q29ubmVjdG9yKCAkZGJfY29ubmVjdG9yICkgew0K
CQkkdGhpcy0+Y29ubmVjdG9yPSRkYl9jb25uZWN0b3I7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldENv
bm5lY3RvcigpIHsNCgkJcmV0dXJuICR0aGlzLT5jb25uZWN0b3I7DQoJfQ0KCQ0KCWZ1bmN0aW9u
IHNldEFyZ3MoICRwYXJhbSApIHsNCgkJJHRoaXMtPmFyZ3VtZW50cz0kcGFyYW07DQoJfQ0KDQoJ
ZnVuY3Rpb24gZ2V0QXJncygpIHsNCgkJcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7DQoJfQ0KCQ0K
CWZ1bmN0aW9uIGdldFJ1bklEKCkgew0KCQlyZXR1cm4gJHRoaXMtPmFyZ3VtZW50cy0+Z2V0KFRl
c3RvcGlhUGFyYW1ldGVyczo6JFBhcmFtX1J1bklEKTsNCgl9DQoNCglmdW5jdGlvbiBnZXRQbGFu
SUQoKSB7DQoJCXJldHVybiAkdGhpcy0+YXJndW1lbnRzLT5nZXQoVGVzdG9waWFQYXJhbWV0ZXJz
OjokUGFyYW1fUGxhbklEKTsNCgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIHNldE1zZ05vUmVzdWx0
c0ZvdW5kKCAkbXNnICkgew0KCQllY2hvICR0aGlzLT5tc2dOb3RoaW5nRm91bmQ7DQoJfQ0KCQ0K
CS8qKg0KCSAqIEByZXR1cm4gTWVzc2FnZSBpZiBub3RoaW5nIHdhcyBmb3VuZCBmb3IgYSByZXBv
cnQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZW1wdHlSZXN1bHQoKSB7DQoJCWlmICggJHRoaXMt
Pm1zZ05vdGhpbmdGb3VuZCA9PSAiIiApIHsNCgkJCXJldHVybiAiPHA+Ii4kdGhpcy0+Y29udGV4
dC0+Z2V0TWVzc2FnZVRleHQoInRyUmVwb3J0X25vX3Jlc3VsdHNfZm91bmQiKS4iPC9wPiI7DQoJ
CX0gZWxzZSB7DQoJCQlyZXR1cm4gIjxwPiIuJHRoaXMtPm1zZ05vdGhpbmdGb3VuZC4iPC9wPiI7
DQoJCX0NCgl9DQoJDQoJLyoqDQoJICogQ2VudHJhbCBmdW5jdGlvbiBmb3IgcGVyY2VudGFnZSBj
YWxjdWxhdGlvbiwgdGFrZXMgdGhlIHBhcmFtZXRlciAicm91bmRwZXJjIiBmb3IgDQoJICogcm91
bmRpbmcgdGhlIHBlcmNlbnRhZ2UNCgkgKiBAcGFyYW0gJHZhbHVlID0gdGhlIGN1cnJlbnQgdmFs
dWUNCgkgKiBAcGFyYW0gJHRvdGFsID0gdGhlIHRvdGFsIHZhbHVlOyBpZiAtMSB0aGUgdmFsdWUg
d2lsbCBiZSBmZXRjaGVkIHVzaW5nIGdldFRvdGFsKCkNCgkgKiBAcGFyYW0gJGFkZHBlcmMgPSBv
cHRpb25hbC4gSWYgc2V0IHRvIHRydWUgIiUiIHdpbGwgYmUgYWRkZWQgdG8gdGhlIG91dHB1dA0K
CSAqIEByZXR1cm4gdGhlIHBlcmNlbnRhZ2UNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGVy
YygkdmFsdWUsICR0b3RhbCA9IC0xLCAkYWRkUGVyYyA9IHRydWUpIHsNCgkJaWYgKCR0b3RhbCA9
PSAtMSkgew0KCQkJJHRvdGFsID0gJHRoaXMtPmdldFRvdGFsKCk7DQoJCX0NCgkJaWYgKCR0b3Rh
bCA9PSAwKSB7DQoJCQkkcGVyYyA9IDA7DQoJCX0gZWxzZSB7DQoJCQkkcm91bmQgPSAkdGhpcy0+
Z2V0QXJncygpLT5nZXQoInJvdW5kcGVyYyIpOw0KCQkJJHBlcmMgPSByb3VuZCgkdmFsdWUvJHRv
dGFsICogMTAwLCAkcm91bmQpOw0KCQl9DQoJCQ0KCQlpZiAoJGFkZFBlcmMpIHsNCgkJCSRwZXJj
Lj0iJSI7DQoJCX0NCgkJDQoJCXJldHVybiAkcGVyYzsNCgl9DQoJDQoJLyoqDQoJICogQ29udmVy
dHMgYSBnaXZlbiBTUUwgcmVzdWx0IHNldCBpbnRvIGFuIGFycmF5DQoJICogQHBhcmFtICRyZXN1
bHQgPSBTUUwgcmVzdWx0IHNldA0KCSAqIEByZXR1cm4gYXJyYXkNCgkgKi8NCglwcml2YXRlIGZ1
bmN0aW9uIGNvbnZlcnRSZXN1bHRUb0FycmF5KCRyZXN1bHQpIHsNCgkJJG91dHB1dCA9IGFycmF5
KCk7DQoJCSR0aGlzLT5udW1PZlJvd3M9MDsNCgkJJGRvbmUgPSBmYWxzZTsNCgkJd2hpbGUgKCRs
aW5lID0gJHRoaXMtPmNvbm5lY3Rvci0+ZmV0Y2goJHJlc3VsdCkpIHsNCgkJCSRvdXRwdXRbXSA9
ICRsaW5lOw0KCQkJJHRoaXMtPm51bU9mUm93cysrOw0KCQkJDQoJCQlpZiAoISRkb25lKSB7DQoJ
CQkJJHRoaXMtPm51bU9mQ29scyA9IGNvdW50KCRsaW5lKTsNCgkJCQkkdGhpcy0+Y29sdW1uTmFt
ZXMgPSBhcnJheSgpOw0KCQkJCXdoaWxlIChjdXJyZW50KCRsaW5lKSAhPT0gZmFsc2UpIHsNCgkJ
CQkJJHRoaXMtPmNvbHVtbk5hbWVzW10gPSBrZXkoJGxpbmUpOw0KCQkJCQluZXh0KCRsaW5lKTsN
CgkJCQl9DQoJCQkJcmVzZXQoJGxpbmUpOw0KCQkJCSRkb25lID0gdHJ1ZTsNCgkJCX0NCgkJfQ0K
DQoJCXJldHVybiAkb3V0cHV0Ow0KCX0NCgkNCgkvKioNCgkgKiBNYWluIHJvdXRpbmUgdGhhdCB3
aWxsIGJlIGNhbGxlZCB0byBwcm9kdWNlIHRoZSByZXBvcnQNCgkgKiBAcmV0dXJuIHRoZSByZW5k
ZXJlZCByZXBvcnQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkgewkJDQoJCSNpbml0
IG9mIEhUTUwgb3V0cHV0DQoJCSRvdXRwdXQgPSAiIjsNCgkJDQoJCSMgaW5pdCB0aGUgZGIgY29u
bmVjdGlvbg0KCQkkY29ubmVjdGVkID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5jb25uZWN0KCk7
DQoJCWlmICghJGNvbm5lY3RlZCkgew0KCQkJcmV0dXJuICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+
Z2V0RXJyb3IoKTsNCgkJfQ0KCQkNCgkJI3NvbWUgbW9yZSBpbml0IHN0dWZmIGZvciB0aGUgcmVw
b3J0DQoJCSR0aGlzLT5pbml0KCk7DQoJCQ0KCQkjIGdldCBTUUwgZm9yIHF1ZXJ5DQoJCSMgbXVz
dCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgY2xhc3MgZXh0ZW5kaW5nIHRoaXMNCgkJJHRoaXMtPnNx
bCA9ICR0aGlzLT5nZXRTUUwoKTsNCg0KCQkkdGhpcy0+Y29udGV4dC0+Z2V0RGVidWcoKS0+YWRk
KCR0aGlzLT5zcWwpOw0KCQkNCgkJIyBleGVjdXRlIHRoZSBxdWVyeQ0KCQkkcmVzdWx0ID0gJHRo
aXMtPmdldENvbm5lY3RvcigpLT5leGVjdXRlKCR0aGlzLT5zcWwpOw0KCQkNCgkJaWYgKCR0aGlz
LT5nZXRDb25uZWN0b3IoKS0+Z2V0RXJyb3IoKSAhPSAiIikgew0KCQkJcmV0dXJuICR0aGlzLT5n
ZXRDb25uZWN0b3IoKS0+Z2V0RXJyb3IoKTsNCgkJfQ0KCQkNCgkJaWYgKCEkcmVzdWx0IG9yICR0
aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0Um93Q291bnQoJHJlc3VsdCk9PTApIHsNCgkJCSRvdXRw
dXQgLj0gJHRoaXMtPmVtcHR5UmVzdWx0KCk7DQoJCX0gZWxzZSB7DQoJCQkjIGNvbnZlcnQgdGhl
IHJlc3VsdCBzZXQgaW50byBhbiBhcnJheQ0KCQkJJHJlc3VsdEFyciA9ICR0aGlzLT5jb252ZXJ0
UmVzdWx0VG9BcnJheSgkcmVzdWx0KTsNCgkJCQ0KCQkJI2NsZWFuIHVwDQoJCQkkdGhpcy0+Z2V0
Q29ubmVjdG9yKCktPmZyZWUoJHJlc3VsdCk7CQkNCgkJCQ0KCQkJIyBnZXQgdGhlIG91dHB1dCBm
b3IgdGhlIHJlcG9ydA0KCQkJIyBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBjbGFzcyBleHRl
bmRpbmcgdGhpcyBjbGFzcw0KCQkJJG91dHB1dCAuPSAkdGhpcy0+Z2V0UmVwb3J0KCAkcmVzdWx0
QXJyICk7CQkJDQoJCX0NCgkJDQoJCSNsb2NhbCBjb3B5IG9mIHRoZSBoZWFkZXI7IHVzZWQgb25s
eSBpZiB0aGUgcmVwb3J0IGlzIGhpZGRlbiAod2lsbCBiZSBkaXNwbGF5ZWQgYWxvbmcgd2l0aCB0
aGUgc2hvdyBidXR0b24pDQoJCSR0aGlzLT5oZWFkZXIgPSAkdGhpcy0+Z2V0UmVwb3J0SGVhZGVy
KCk7DQoJCQ0KCQkjY2xvc2UgdGhlIGNvbm5lY3Rpb24NCgkJJHRoaXMtPmdldENvbm5lY3Rvcigp
LT5jbG9zZSgpOwkNCgkJDQoJCSNyZXR1cm5pbmcgdGhlIG91dHB1dA0KCQlyZXR1cm4gJG91dHB1
dDsJDQoJfQ0KCQ0KCXB1YmxpYyBmdW5jdGlvbiBjYWxjVG90YWwoICRyZXN1bHQgKSB7CQkNCgkJ
IyBmaWVsZCBmb3IgY2FsY3VsYXRpbmcgdG90YWwNCgkJJGZsZFRvdGFsID0gJHRoaXMtPmFyZ3Vt
ZW50cy0+Z2V0KCJ0b3RhbCIpOw0KCQlpZiAoISRmbGRUb3RhbCkgew0KCQkJcmV0dXJuOw0KCQl9
DQoNCgkJaWYgKCR0aGlzLT5hcmd1bWVudHMtPmdldCgidG90YWwiKSA9PSAicm93Y291bnQiKSB7
DQoJCQkkbnVtVG90YWw9JHRoaXMtPm51bU9mUm93czsNCgkJfSBlbHNlIHsNCgkJCSRudW1Ub3Rh
bCA9IDA7CQ0KCQkJZm9yZWFjaCAoJHJlc3VsdCBhcyAkbGluZSkgew0KCQkJCSRpPTA7DQoJCQkJ
Zm9yZWFjaCAoJGxpbmUgYXMgJGNvbF92YWx1ZSkgew0KCQkJCQkkZmllbGRfbmFtZSA9ICR0aGlz
LT5jb2x1bW5OYW1lc1skaV07DQoJCQkJCQ0KCQkJCQkjIGZvciBjYWxjdWxhdGluZyB0aGUgdG90
YWwNCgkJCQkJaWYgKCRmbGRUb3RhbCA9PSAkZmllbGRfbmFtZSkgew0KCQkJCQkJJG51bVRvdGFs
ICs9ICRjb2xfdmFsdWU7DQoJCQkJCX0NCgkJCQkJDQoJCQkJCSRpKys7DQoJCQkJfQ0KCQkJfQ0K
CQl9DQoNCgkJJHRoaXMtPnNldFRvdGFsKCRudW1Ub3RhbCk7DQoJfQ0KDQoJLyoqDQoJICoJcmVu
ZGVycyB0aGUgaGVhZGVyIG9mIHRoZSByZXBvcnQNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBy
ZW5kZXJQbGFpbkhUTUxIZWFkZXIoICRyZXN1bHQgKSB7DQoJCXJldHVybiAkdGhpcy0+Z2V0UmVw
b3J0SGVhZGVyKCk7DQoJfQ0KCQkNCgkvKioNCgkgKglnZXQgdHJhbnNsYXRlZCBmaWVsZCBuYW1l
OyBpZiBubyB0cmFuc2xhdGlvbiBpcyBmb3VuZCB0aGUgZmllbGQgbmFtZSB3aWxsIGJlIHVzZWQg
aW5zdGVhZA0KCSAqLw0KCXByaXZhdGUgZnVuY3Rpb24gZ2V0RmllbGROYW1lKCRtZXRhKSB7DQoJ
CSRtc2dLZXkgPSAidHJGaWVsZF8iLiRtZXRhLT50YWJsZS4iLiIuJG1ldGEtPm5hbWU7DQoJCSRt
c2cgPSAkdGhpcy0+Z2V0Q29udGV4dCgpLT5nZXRNZXNzYWdlVGV4dCgkbXNnS2V5KTsNCgkJaWYg
KHN0cnBvcygkbXNnLCAidHJGaWVsZF8iKSAhPSBmYWxzZSkgew0KCQkJJG1zZyA9ICRtZXRhLT5u
YW1lOw0KCQl9DQoJCXJldHVybiAkbXNnOw0KCX0NCgkNCgkvKioNCgkgKglyZW5kZXJzIHRoZSBi
b2R5IG9mIHRoZSByZXBvcnQgKGRhdGEgdGFibGUpDQoJICovCQ0KCXB1YmxpYyBmdW5jdGlvbiBy
ZW5kZXJQbGFpbkhUTUxCb2R5KCAkcmVzdWx0ICkgew0KCQkjIHNvbWVodGluZyB0byBvdXRwdXQ/
DQoJCWlmICgkdGhpcy0+bnVtT2ZSb3dzID09IDApIHsNCgkJCXJldHVybiAkb3V0cHV0Ow0KCQl9
DQoJCQ0KCQkjZ2V0IGNvbHVtbiBmb3JtYXRzDQoJCSRjZm9ybWF0ID0gJHRoaXMtPmdldENvbHVt
bkZvcm1hdHMoKTsNCgkJDQoJCSNpbml0IG9mIG91dHB1dA0KCQkkb3V0cHV0ID0gIiI7DQoJCQ0K
CQkjIGZpZWxkIGZvciBjYWxjdWxhdGluZyB0b3RhbA0KCQkkZmxkVG90YWwgPSAkdGhpcy0+YXJn
dW1lbnRzLT5nZXQoInRvdGFsIik7DQoJCSRudW1Ub3RhbCA9IDA7IAkJDQoJCQkNCgkJDQoJCSMg
d3JhcCB0aGUgYm9keSBpbiBhIGRpdg0KCQkkb3V0cHV0Lj0iPGRpdj4iOyANCgkJDQoJCSMNCgkJ
IyBzdGFydCBvZiBpbm5lciB0YWJsZSAoZGF0YSB0YWJsZSkNCgkJIw0KCQlpZiAoJHRoaXMtPmFy
Z3VtZW50cy0+Z2V0KCJzb3J0YWJsZSIpPT0idHJ1ZSIpIHsNCgkJCSRvdXRwdXQgLj0gIjx0YWJs
ZSBjbGFzcz1cInRlc3RvcGlhX1RhYmxlX0RhdGEgc29ydGFibGVcIiBzdHlsZT1cIm1hcmdpbjox
MHB4XCI+IjsNCgkJfSBlbHNlIHsNCgkJCSRvdXRwdXQgLj0gIjx0YWJsZSBjbGFzcz1cInRlc3Rv
cGlhX1RhYmxlX0RhdGFcIiBzdHlsZT1cIm1hcmdpbjoxMHB4XCI+IjsNCgkJfQ0KCQkJCQ0KCQkj
DQoJCSMgb3V0cHV0IG9mIGhlYWRpbmdzIGZvciBkYXRhIHRhYmxlDQoJCSMNCgkJJG91dHB1dCAu
PSAiPHRyPiI7DQoJCWZvcigkaSA9IDA7ICRpIDwgJHRoaXMtPm51bU9mQ29sczsgJGkrKykgew0K
CQkJDQoJCQkjIGdldCB0cmFuc2xhdGVkIGZpZWxkIG5hbWUNCgkJCS8vJGZpZWxkbmFtZSA9ICR0
aGlzLT5nZXRGaWVsZE5hbWUoJG1ldGEpOw0KCQkJDQoJCQkkY2VsbD0kdGhpcy0+cmVuZGVyQ2Vs
bCgiaGVhZGVyIiwkaSwgJHRoaXMtPmNvbHVtbk5hbWVzWyRpXSwgJHRoaXMtPmNvbHVtbk5hbWVz
WyRpXSwgMCwgbnVsbCk7DQoJCQlpZiAoJGNlbGw9PSIiKSB7DQoJCQkJJG91dHB1dCAuPSAiPHRo
PjxiPiIuaHRtbGVudGl0aWVzKCR0aGlzLT5jb2x1bW5OYW1lc1skaV0pLiI8L2I+PC90aD4iOw0K
CQkJfSBlbHNlIHsNCgkJCQkkb3V0cHV0IC49ICRjZWxsOw0KCQkJfQkJCQ0KCQl9DQoJCSRvdXRw
dXQgLj0gIjwvdHI+IjsgDQoJCQ0KCQkjDQoJCSMgQ3JlYXRlIHRhYmxlIGRhdGEgcm93cw0KCQkj
DQoJCSRldmVuPWZhbHNlOw0KCQkkY29sb3I9IiI7DQoJCSRsaW5lTm89MDsNCgkJZm9yZWFjaCgk
cmVzdWx0IGFzICRsaW5lKSB7DQoJCQkjYWx0ZXJuYXRpbmcgcm93IGNvbG9ycyBuZWVkZWQ/DQoJ
CQlpZiAoKCRldmVuKSBhbmQgKCR0aGlzLT5nZXRBcmdzKCktPmdldCgiemVicmEiKSkpIHsNCgkJ
CQkkY29sb3I9ImNsYXNzPVwidGVzdG9waWFfQ2VsbERhcmtcIiI7DQoJCQl9IGVsc2Ugew0KCQkJ
CSRjb2xvcj0iY2xhc3M9XCJ0ZXN0b3BpYV9DZWxsTGlnaHRcIiI7DQoJCQl9DQoJCQkkZXZlbj0h
JGV2ZW47DQoNCgkJCSNjYWxsIGN1c3RvbSBmdW5jdGlvbiBmb3IgaW5zZXJ0aW5nIG5ldyBsaW5l
cw0KCQkJJG91dHB1dC49JHRoaXMtPm5ld0RhdGFMaW5lKCRsaW5lKTsNCgkJCQ0KCQkJI2NhbGwg
Y3VzdG9tIGZ1bmN0aW9uIGZvciBzdGFydGluZyBuZXcgbGluZXMNCgkJCSRuZXdMaW5lID0gJHRo
aXMtPm5ld0xpbmVCZWdpbigkbGluZSk7DQoJCQlpZiAoJG5ld0xpbmUgPT0gIiIpIHsNCgkJCQkk
b3V0cHV0IC49ICI8dHIgIi4kY29sb3IuIj4iOw0KCQkJfSBlbHNlIHsNCgkJCQkkb3V0cHV0IC49
ICRuZXdMaW5lOw0KCQkJfQ0KCQkJDQoJCQkjIHNhdmUgdGhlIG9sZCBsaW5lIGluIGEgcHVibGlj
IHZhcmlhYmxlIGZvciBjb21wYXJpc29uDQoJCQkkdGhpcy0+cHJldmlvdXNMaW5lID0gJGxpbmU7
DQoJCQkNCgkJCSRpPTA7CQkJDQoJCQlmb3JlYWNoICgkbGluZSBhcyAkY29sX3ZhbHVlKSB7DQoJ
CQkJJGZpZWxkX25hbWUgPSAkdGhpcy0+Y29sdW1uTmFtZXNbJGldOw0KCQkJICAgIA0KCQkJCSMN
CgkJCQkjIGNhbGwgY3VzdG9tIGZ1bmN0aW9uIGZvciBjZWxsIHJlbmRlcmluZw0KCQkJCSMNCgkJ
CQkkY2VsbD0kdGhpcy0+cmVuZGVyQ2VsbCgiYm9keSIsJGksICRmaWVsZF9uYW1lLCAkY29sX3Zh
bHVlLCAkbGluZU5vLCAkbGluZSk7DQoJCQkJaWYgKCRjZWxsID09ICIiKSB7DQoJCQkJCSNnZXQg
Zm9ybWF0dGluZyBmb3IgY29sdW1uDQoJCQkJCSRmb3JtYXQgPSAiIjsNCgkJCQkJaWYgKGlzc2V0
KCRjZm9ybWF0KSBhbmQgYXJyYXlfa2V5X2V4aXN0cygkZmllbGRfbmFtZSwgJGNmb3JtYXQpKSB7
DQoJCQkJCQkkZm9ybWF0ID0gJGNmb3JtYXRbJGZpZWxkX25hbWVdOw0KCQkJCQl9DQoJCQkJCSRv
dXRwdXQgLj0gIjx0ZCBzdHlsZT1cIiIuJGZvcm1hdC4iXCI+Ii5odG1sZW50aXRpZXMoJGNvbF92
YWx1ZSkuIjwvdGQ+IjsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkb3V0cHV0IC49ICRjZWxsOw0KCQkJ
CX0NCgkJCQkNCgkJCQkjIGZvciBjYWxjdWxhdGluZyB0aGUgdG90YWwNCgkJCQlpZiAoJGZsZFRv
dGFsID09ICRmaWVsZF9uYW1lKSB7DQoJCQkJCSRudW1Ub3RhbCArPSAkY29sX3ZhbHVlOw0KCQkJ
CX0NCgkJCQkkaSsrOw0KCQkJfQ0KCQkJJG91dHB1dCAuPSAiPC90cj4iOw0KCQkJCQkNCgkJCSRs
aW5lTm8rKzsNCgkJfQ0KCQkNCgkJI2luc2VydCB0b3RhbHMgaWYgcmVxdWllcmVkDQoJCWlmICgk
dGhpcy0+YXJndW1lbnRzLT5nZXQoInRvdGFsIikgYW5kICR0aGlzLT5udW1PZlJvd3MgPiAwKSB7
CQkNCgkJCWlmICgkdGhpcy0+YXJndW1lbnRzLT5nZXQoInRvdGFsIikgPT0gInJvd2NvdW50Iikg
ew0KCQkJCSR0b3RhbD0kdGhpcy0+bnVtT2ZSb3dzOw0KCQkJCSRvdXRwdXQgLj0gIjx0ciBjbGFz
cz1cInNvcnRib3R0b21cIj48dGQgY2xhc3M9XCJ0ZXN0b3BpYV9Ub3RhbFwiIGNvbHNwYW49XCIi
LiR0aGlzLT5udW1PZkNvbHMuIlwiPjxiPlRvdGFsOiAiLiR0b3RhbC4iPC9iPjwvdGQ+PC90cj4i
Ow0KCQkJCSMgc2V0IHRvdGFsIHZhbHVlDQoJCQkJJHRoaXMtPnNldFRvdGFsKCRudW1Ub3RhbCk7
DQoJCQl9IGVsc2Ugew0KCQkJCSRvdXRwdXQgLj0gIjx0ciBjbGFzcz1cInNvcnRib3R0b21cIj48
dGQgY2xhc3M9XCJ0ZXN0b3BpYV9Ub3RhbFwiIGNvbHNwYW49XCIiLiR0aGlzLT5udW1PZkNvbHMu
IlwiPjxiPlRvdGFsOiAiLiRudW1Ub3RhbC4iPC9iPjwvdGQ+PC90cj4iOw0KCQkJCSMgc2V0IHRv
dGFsIHZhbHVlDQoJCQkJJHRoaXMtPnNldFRvdGFsKCRudW1Ub3RhbCk7DQoJCQl9DQoJCX0JCQkN
CgkJDQoJCSMgRW5kIG9mIGJvZHkgaW5uZXIgdGFibGUgdGFnDQoJCSRvdXRwdXQgLj0gIjwvdGFi
bGU+IjsJDQoNCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gcmVu
ZGVyUGxhaW5IVE1MRm9vdGVyKCAkcmVzdWx0ICkgew0KCQlyZXR1cm4gJHRoaXMtPmdldFJlcG9y
dEZvb3RlcigpOw0KCX0NCgkNCglwcml2YXRlIGZ1bmN0aW9uIHJlbmRlclBsYWluSFRNTENoYXJ0
KCAkcmVzdWx0ICkgew0KCQkkb3V0cHV0ID0gIiI7DQoJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5n
ZXQoImNoYXJ0IikgIT0gIiIpIHsNCgkJCSRjaGFydHMgPSBleHBsb2RlKCIsIiwkdGhpcy0+Z2V0
QXJncygpLT5nZXQoImNoYXJ0IikpOw0KCQl9IGVsc2Ugew0KCQkJJGNoYXJ0cyA9IGFycmF5KCk7
DQoJCX0NCgkJJHR5cGVzID0gZXhwbG9kZSgiLCIsJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJjaGFy
dHR5cGUiKSk7DQoJCSRkZXZpY2UgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNoYXJ0ZGV2aWNl
Iik7DQoJCQ0KCQkjIGNoYXJ0IHJlcXVpcmVkDQoJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5nZXQo
ImNoYXJ0dHlwZSIpICE9ICIiKSB7DQoJCQkNCgkJCSMgY2hhcnRzIGFyZSBzdXBwb3J0ZWQNCgkJ
CWlmICghJHRoaXMtPmFyZUNoYXJ0c1N1cHBvcnRlZCgkZGV2aWNlKSkgew0KCQkJCXJldHVybiAk
dGhpcy0+Y29udGV4dC0+Z2V0RXJyb3JNZXNzYWdlKCd0clJlcG9ydF9jaGFydHNfbm90X3N1cHBv
cnRlZCcpOw0KCQkJfQ0KCQkJDQoJCQkjIGNoZWNrIGlmIHRoZSB0eXBlcyBhcmUgdmFsaWQNCgkJ
CWZvcmVhY2ggKCR0eXBlcyBhcyAkdHlwZSkgew0KCQkJCWlmICghJHRoaXMtPmlzQ2hhcnRUeXBl
U3VwcG9ydGVkKCRkZXZpY2UsICR0eXBlKSkgew0KCQkJCQlyZXR1cm4gJHRoaXMtPmNvbnRleHQt
PmdldEVycm9yTWVzc2FnZSgndHJSZXBvcnRfY2hhcnRfdHlwZV9ub3Rfc3VwcG9ydGVkJywkdHlw
ZSwkdGhpcy0+Z2V0U3VwcG9ydGVkQ2hhcnRUeXBlcygkZGV2aWNlKSk7DQoJCQkJfQkJCQkNCgkJ
CX0NCgkJCSMgY2hlY2sgaWYgdGhlIGNoYXJ0cyBhcmUgc3VwcG9ydGVkDQoJCQlpZiAoZW1wdHko
JGNoYXJ0cykgPT0gZmFsc2UpIHsNCgkJCQlmb3JlYWNoICgkY2hhcnRzIGFzICRjaGFydCkgew0K
CQkJCQlpZiAoc3RybGVuKCRjaGFydCkgPiAwIGFuZCAhJHRoaXMtPmlzQ2hhcnRTdXBwb3J0ZWQo
JGNoYXJ0KSkgew0KCQkJCQkJcmV0dXJuICR0aGlzLT5jb250ZXh0LT5nZXRFcnJvck1lc3NhZ2Uo
J3RyUmVwb3J0X2NoYXJ0X25vdF9zdXBwb3J0ZWQnLCRjaGFydCwkdGhpcy0+Z2V0U3VwcG9ydGVk
Q2hhcnRzKCkpOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXJldHVy
biAiIjsNCgkJfQ0KCQ0KCQkkb3V0cHV0IC49ICR0aGlzLT5yZW5kZXJDaGFydCggJHJlc3VsdCwg
JHR5cGVzLCAkY2hhcnRzICk7IA0KCQkNCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCS8qKg0K
CSogZm9yIHJlbmRlcmluZyB0aGUgSFRNTCBvdXRwdXQNCgkqLw0KCXB1YmxpYyBmdW5jdGlvbiBy
ZW5kZXJQbGFpbkhUTUwoICRyZXN1bHQgKSB7CQkNCgkJIyBJbml0IG91dHB1dA0KCQkkb3V0cHV0
ID0gIiI7DQoJCSRmb290ZXIgPSAiIjsNCgkJJGhlYWRlciA9ICIiOw0KCQkkYm9keSAgID0gIiI7
DQoJCSRjaGFydCAgPSAiIjsNCgkJJHRhYmxlICA9IGZhbHNlOw0KCQkNCgkJIw0KCQkjbGF5b3V0
IHBhcmFtZXRlcnMNCgkJIw0KCQkkaGlkZSA9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgiaGlkZXRh
YmxlIik7DQoJCSRudWRlID0gJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJudWRlY2hhcnQiKTsNCgkJ
aWYgKCRudWRlID09ICJ0cnVlIikgew0KCQkJJGhpZGUgPSAiZmFsc2UiOw0KCQl9DQoJCQ0KCQkj
DQoJCSNnZXQgdGhlIGVsZW1lbnRzDQoJCSMNCgkJaWYgKCRudWRlID09ICJmYWxzZSIpIHsgDQoJ
CQkkaGVhZGVyID0gJHRoaXMtPnJlbmRlclBsYWluSFRNTEhlYWRlciggJHJlc3VsdCApOw0KCQkJ
DQoJCQlpZiAoJGhpZGUgPT0gImZhbHNlIikgeyANCgkJCQkkYm9keSA9ICR0aGlzLT5pbmplY3RC
b2R5KCAkcmVzdWx0ICk7IA0KCQkJfQ0KCQkJDQoJCQkkZm9vdGVyID0gJHRoaXMtPnJlbmRlclBs
YWluSFRNTEZvb3RlciggJHJlc3VsdCApOw0KCQl9DQoJCSRjaGFydCA9ICR0aGlzLT5yZW5kZXJQ
bGFpbkhUTUxDaGFydCggJHJlc3VsdCApOw0KDQoJCSMNCgkJIyBkZWZpbmUgdGhlIGJvZHkgcGFy
dCBvZiB0aGUgdGFibGUNCgkJIw0KCQkkY29sc3Bhbj0xOw0KCQkkYm9keXBhcnQ9IiI7DQoJCWlm
ICgkY2hhcnQgIT0gIiIpIHsNCgkJCWlmICgkYm9keSA9PSAiIikgew0KCQkJCWlmICgkbnVkZSA9
PSAidHJ1ZSIpIHsNCgkJCQkJJGJvZHlwYXJ0ID0gJGNoYXJ0Ow0KCQkJCX0gZWxzZSB7DQoJCQkJ
CSRib2R5cGFydCA9ICI8dHI+PHRkIGNsYXNzPVwidGVzdG9waWFfQmFja2dyb3VuZFwiPiIuJGNo
YXJ0LiI8L3RkPjwvdHI+IjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCXN3aXRjaCAoJHRoaXMt
PmdldEFyZ3MoKS0+Z2V0KCJjaGFydHBvcyIpKSB7DQoJCQkJCWNhc2UgImxlZnQiICAgOiAkYm9k
eXBhcnQ9Ijx0cj48dGQgY2xhc3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kY2hhcnQuIjwv
dGQ+PHRkIGNsYXNzPVwidGVzdG9waWFfQmFja2dyb3VuZFwiPiIuJGJvZHkuIjwvdGQ+PC90cj4i
OyAkY29sc3Bhbj0yOyBicmVhazsNCgkJCQkJY2FzZSAidG9wIiAgICA6ICRib2R5cGFydD0iPHRy
Pjx0ZCBjbGFzcz1cInRlc3RvcGlhX0JhY2tncm91bmRcIj4iLiRjaGFydC4iPC90ZD48L3RyPjx0
cj48dGQgY2xhc3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kYm9keS4iPC90ZD48L3RyPiI7
ICBicmVhazsNCgkJCQkJY2FzZSAicmlnaHQiICA6ICRib2R5cGFydD0iPHRyPjx0ZCBjbGFzcz1c
InRlc3RvcGlhX0JhY2tncm91bmRcIj4iLiRib2R5LiI8L3RkPjx0ZCBjbGFzcz1cInRlc3RvcGlh
X0JhY2tncm91bmRcIj4iLiRjaGFydC4iPC90ZD48L3RyPiI7ICRjb2xzcGFuPTI7IGJyZWFrOw0K
CQkJCQljYXNlICJib3R0b20iIDogJGJvZHlwYXJ0PSI8dHI+PHRkIGNsYXNzPVwidGVzdG9waWFf
QmFja2dyb3VuZFwiPiIuJGJvZHkuIjwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPVwidGVzdG9waWFf
QmFja2dyb3VuZFwiPiIuJGNoYXJ0LiI8L3RkPjwvdHI+IjsgYnJlYWs7DQoJCQkJCWNhc2UgImRl
ZmF1bHQiOiAkYm9keXBhcnQ9Ijx0cj48dGQgY2xhc3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+
Ii4kYm9keS4iPC90ZD48dGQgY2xhc3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kY2hhcnQu
IjwvdGQ+PC90cj4iOyAkY29sc3Bhbj0yOyBicmVhazsNCgkJCQl9DQoJCQl9DQoJCX0gZWxzZSB7
DQoJCQkkYm9keXBhcnQgPSAiPHRyPjx0ZD4iLiRib2R5LiI8L3RkPjwvdHI+IjsNCgkJfQ0KDQoJ
CSNzdGFydCBvZiB0YWJsZQ0KCQlpZiAoJGhlYWRlciAhPSAiIiBvciAkZm9vdGVyICE9ICIiKSB7
DQoJCQkkb3V0cHV0IC49ICI8dGFibGUgY2xhc3M9XCJ0ZXN0b3BpYV9UYWJsZVwiPiI7DQoJCQlp
ZiAoJGhlYWRlciAhPSAiIikgew0KCQkJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5nZXQoInNob3do
aWRlIikgPT0gImZhbHNlIikgew0KCQkJCQkkb3V0cHV0Lj0gIjx0cj48dGggY29sc3Bhbj1cIiIu
JGNvbHNwYW4uIlwiPiIuJGhlYWRlci4iPC90aD48L3RyPiI7DQoJCQkJfSBlbHNlIHsNCgkJCQkJ
I2NhbGN1bGF0ZSB0aGUgR1VJRHMgZm9yIGRpdiBmb3Igc2hvd2luZy9oaWRpbmcNCgkJCQkJJHRo
aXMtPmhpZGVJRFsxXSA9IG1kNSh1bmlxaWQocmFuZCgpKSk7DQoJCQkJCSR0aGlzLT5oaWRlSURb
Ml0gPSBtZDUodW5pcWlkKHJhbmQoKSkpOw0KCQkJCQkkdGhpcy0+aGlkZUlEWzNdID0gbWQ1KHVu
aXFpZChyYW5kKCkpKTsNCgkJCQkJJHRoaXMtPmhpZGVJRFs0XSA9IG1kNSh1bmlxaWQocmFuZCgp
KSk7DQoJCQkJCQ0KCQkJCQlpZiAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJoaWRkZW4iKSA9PSAi
dHJ1ZSIpIHsNCgkJCQkJCSRkaXNwbGF5ID0gIm5vbmUiOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJ
JGRpc3BsYXkgPSAiaW5saW5lIjsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJJG91dHB1dC49ICI8dHI+
PHRoIGNvbHNwYW49XCIiLiRjb2xzcGFuLiJcIj48ZGl2IGlkPVwiIi4kdGhpcy0+aGlkZUlEWzFd
LiJcIiI7DQoJCQkJCSRvdXRwdXQuPSAic3R5bGU9XCJkaXNwbGF5OiIuJGRpc3BsYXkuIlwiIGFs
aWduPVwibGVmdFwiPjxkaXYgc3R5bGU9XCJmbG9hdDpsZWZ0O1wiPjxpbnB1dCB0eXBlPWJ1dHRv
biAiOw0KCQkJCQkkb3V0cHV0Lj0ib25DbGljaz1cImhpZGUoJyIuJHRoaXMtPmhpZGVJRFszXS4i
Jyk7aGlkZSgnIi4kdGhpcy0+aGlkZUlEWzFdLiInKTsiOw0KCQkJCQkkb3V0cHV0Lj0ic2hvdygn
Ii4kdGhpcy0+aGlkZUlEWzJdLiInKTtzaG93KCciLiR0aGlzLT5oaWRlSURbNF0uIicpO1wiICI7
DQoJCQkJCSRvdXRwdXQuPSJ2YWx1ZT1cIiIuJHRoaXMtPmNvbnRleHQtPmdldE1lc3NhZ2VUZXh0
KCJ0clJlcG9ydF9oaWRlIikuIlwiPjwvZGl2PiI7DQoJCQkJCSRvdXRwdXQuPSAiPGRpdiBzdHls
ZT1cImZsb2F0OnJpZ2h0OyB3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyXCI+Ii4kaGVhZGVy
LiI8L2Rpdj48L2Rpdj48L3RoPjwvdHI+IjsNCgkJCQl9DQoJCQl9DQoJCX0JCQ0KCQkNCgkJJG91
dHB1dC49JGJvZHlwYXJ0Ow0KCQkNCgkJI2VuZCBvZiB0YWJsZQ0KCQlpZiAoJGhlYWRlciAhPSAi
IiBvciAkZm9vdGVyICE9ICIiKSB7DQoJCQlpZiAoJGZvb3RlciAhPSAiIikgew0KCQkJCSRvdXRw
dXQuPSAiPHRyPjx0ZCBjb2xzcGFuPVwiIi4kY29sc3Bhbi4iXCI+Ii4kZm9vdGVyLiI8L3RkPjwv
dHI+IjsNCgkJCX0NCgkJCSRvdXRwdXQgLj0gIjwvdGFibGU+IjsNCgkJfQkJDQoNCgkJcmV0dXJu
ICRvdXRwdXQ7DQoJfQ0KCQkNCglmdW5jdGlvbiByZW5kZXJDaGFydCggJHJlc3VsdCwgJHR5cGVz
LCAkY2hhcnRzICkgew0KCQkkb3V0cHV0ID0gIiI7DQoJCQ0KCQlpZiAoISR0eXBlcykgew0KCQkJ
cmV0dXJuICR0aGlzLT5jb250ZXh0LT5nZXRFcnJvck1lc3NhZ2UoJ3RyUmVwb3J0X2NoYXJ0X25v
X3R5cGUnKTsNCgkJfQ0KCQkJCQ0KCQlpZiAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJjaGFydGRl
dmljZSIpID09ICJnb29nbGUiKSB7DQoJCQkkb3V0cHV0ID0gJHRoaXMtPnJlbmRlckdvb2dsZSgg
JHJlc3VsdCwgJHR5cGVzLCAkY2hhcnRzICk7DQoJCX0NCgkJDQoJCXJldHVybiAkb3V0cHV0Ow0K
CX0NCgkJDQoJZnVuY3Rpb24gcmVuZGVyR29vZ2xlKCAkcmVzdWx0LCAkdHlwZXMsICRjaGFydHMg
KSB7DQoJCSRvdXRwdXQgPSAiIjsNCgkJJGxpbmsgPSAiIjsNCgkJJGNoYXJ0VHlwZSA9ICIiOw0K
CQkkaGVpZ2h0cyA9IGV4cGxvZGUoIiwiLCR0aGlzLT5nZXRBcmdzKCktPmdldCgiY2hhcnRoZWln
aHQiKSk7DQoJCSR3aWR0aHMgPSBleHBsb2RlKCIsIiwkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNo
YXJ0d2lkdGgiKSk7IA0KCQkkc2V0VGl0bGUgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInRpdGxl
Iik7DQoJCQ0KCQlpZiAoZW1wdHkoJGNoYXJ0cykgPT0gZmFsc2UpIHsNCgkJCSRjaGFydGxheW91
dCA9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgiY2hhcnRsYXlvdXQiKTsNCgkJCQ0KCQkJJGNvbHVt
bnMgPSAwOwkJCQkNCgkJCWlmICgkY2hhcnRsYXlvdXQgIT0gImhvcml6b250YWwiIGFuZCAkY2hh
cnRsYXlvdXQgIT0gInZlcnRpY2FsIiBhbmQgaXNfbnVtZXJpYygkY2hhcnRsYXlvdXQpKSB7DQoJ
CQkJJGNvbHVtbnMgPSAkY2hhcnRsYXlvdXQ7DQoJCQl9DQoJCQkNCgkJCWlmICgkY2hhcnRsYXlv
dXQgPT0gImhvcml6b250YWwiIG9yICRjb2x1bW5zID4gMCkgew0KCQkJCSRvdXRwdXQgLj0gIjx0
YWJsZSBjbGFzcz1cInRlc3RvcGlhX1RhYmxlX0NoYXJ0XCI+PHRyPiI7DQoJCQkJJGNoYXJ0bGF5
b3V0ID0gImhvcml6b250YWwiOw0KCQkJfQkJCQ0KCQkJDQoJCQkkY29sdW1uY291bnQgPSAxOw0K
CQkJJGluZGV4ID0gMDsNCgkJCWZvcmVhY2ggKCRjaGFydHMgYXMgJGNoYXJ0KSB7DQoJCQkJJGxp
bms9IiI7DQoJCQkJDQoJCQkJI2dldCBjaGFydCB0eXBlDQoJCQkJaWYgKGFycmF5X2tleV9leGlz
dHMoJGluZGV4LCAkdHlwZXMpKSB7DQoJCQkJCSR0eXBlID0gJHR5cGVzWyRpbmRleF07DQoJCQkJ
fSBlbHNlIHsNCgkJCQkJJHR5cGUgPSBlbmQoJHR5cGVzKTsNCgkJCQl9DQoJCQkJDQoJCQkJI2dl
dCBjaGFydCB3aWR0aA0KCQkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRpbmRleCwgJHdpZHRocykp
IHsNCgkJCQkJJHdpZHRoID0gJHdpZHRoc1skaW5kZXhdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSR3
aWR0aCA9ICR0aGlzLT5nZXRBcmdzKCktPmdldERlZmF1bHQoImNoYXJ0d2lkdGgiKTsNCgkJCQl9
CQ0KCQkJCQ0KCQkJCSNnZXQgY2hhcnQgaGVpZ2h0DQoJCQkJaWYgKGFycmF5X2tleV9leGlzdHMo
JGluZGV4LCAkaGVpZ2h0cykpIHsNCgkJCQkJJGhlaWdodCA9ICRoZWlnaHRzWyRpbmRleF07DQoJ
CQkJfSBlbHNlIHsNCgkJCQkJJGhlaWdodCA9ICR0aGlzLT5nZXRBcmdzKCktPmdldERlZmF1bHQo
ImNoYXJ0aGVpZ2h0Iik7DQoJCQkJfQ0KCQkJCQ0KCQkJCSRpbmRleCsrOw0KCQkJCQ0KCQkJCXN3
aXRjaCAoJHR5cGUpIHsNCgkJCQkJY2FzZSAiYmFyIiAgIDogJGNoYXJ0VHlwZSA9ICJidmciOyBi
cmVhazsNCgkJCQkJY2FzZSAicGllIiAgIDogJGNoYXJ0VHlwZSA9ICJwIjsgYnJlYWs7DQoJCQkJ
CWNhc2UgInBpZTMiICA6ICRjaGFydFR5cGUgPSAicDMiOyBicmVhazsNCgkJCQkJY2FzZSAibWV0
ZXIiIDogJGNoYXJ0VHlwZSA9ICJnb20iOyBicmVhazsNCgkJCQl9DQoJCQkJDQoJCQkJIyBzZXR1
cCB0aGUgY2hhcnQNCgkJCQkkZ29vZ2xlID0gbmV3IEdvb2dsZUNoYXJ0Ow0KCQkJCSRnb29nbGUt
PnNldFR5cGUoJGNoYXJ0VHlwZSk7DQoJCQkJJGdvb2dsZS0+c2V0RGVmYXVsdEhlaWdodCgkdGhp
cy0+Z2V0QXJncygpLT5nZXREZWZhdWx0KCJjaGFydGhlaWdodCIpKTsNCgkJCQkkZ29vZ2xlLT5z
ZXREZWZhdWx0V2lkdGgoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0RGVmYXVsdCgiY2hhcnR3aWR0aCIp
KTsJDQoJCQkJJGdvb2dsZS0+c2V0V2lkdGgoJHdpZHRoKTsNCgkJCQkkZ29vZ2xlLT5zZXRIZWln
aHQoJGhlaWdodCk7CQkJCQ0KCQkJCQ0KCQkJCSRzdXBwQ2hhcnRzID0gJHRoaXMtPmdldFN1cHBv
cnRlZENoYXJ0c0FycigpOw0KCQkJCWlmICgkc2V0VGl0bGUgPT0gInRydWUiKSB7DQoJCQkJCSRn
b29nbGUtPnNldFRpdGxlKCRzdXBwQ2hhcnRzWyRjaGFydF1bInRpdGxlIl0pOw0KCQkJCX0NCgkJ
CQkkZ29vZ2xlLT5zZXRUb29sdGlwKCRzdXBwQ2hhcnRzWyRjaGFydF1bInRvb2x0aXAiXSk7DQoJ
CQkJJGdvb2dsZS0+c2V0QWx0VGV4dCgkc3VwcENoYXJ0c1skY2hhcnRdWyJhbHR0ZXh0Il0pOw0K
CQkJCQ0KCQkJCWlmICgkdHlwZSA9PSAiYmFyIikgeyAkZ29vZ2xlLT5oaWRlTGFiZWxzKCB0cnVl
ICk7IH0NCgkJCQlpZiAoJHR5cGUgPT0gInBpZSIgb3IgJHR5cGUgPT0gInBpZTMiKSB7ICRnb29n
bGUtPmhpZGVMZWdlbmQoIHRydWUgKTsgfQkJCQkJDQoJCQkJDQoJCQkJJGNoYXJ0PXN0cnRvbG93
ZXIodHJpbSgkY2hhcnQpKTsNCgkJCQkkdGhpcy0+Z2V0R29vZ2xlQ2hhcnRMaW5rKCRnb29nbGUs
ICRyZXN1bHQsICR0eXBlLCAkY2hhcnQpOw0KCQkJCQ0KCQkJCSMgZGVidWcNCgkJCQkkdGhpcy0+
Y29udGV4dC0+Z2V0RGVidWcoKS0+YWRkKCJyZW5kZXJHb29nbGU6Ii4kZ29vZ2xlLT50b1VSTCgp
KTsNCgkJCQkNCgkJCQkjIGNyZWF0ZSB0aGUgZmluYWwgbGluaw0KCQkJCSRsaW5rPSRnb29nbGUt
PnRvSW1nKCk7DQoJCQkJDQoJCQkJc3dpdGNoICgkY2hhcnRsYXlvdXQpIHsNCgkJCQkJY2FzZSAi
aG9yaXpvbnRhbCI6IA0KCQkJCQkJJG91dHB1dC49Ijx0ZD4iLiRsaW5rLiI8L3RkPiI7IA0KCQkJ
CQkJJGNvbHVtbmNvdW50Kys7IA0KCQkJCQkJaWYgKCRjb2x1bW5zID4gMCkgew0KCQkJCQkJCWlm
ICgkY29sdW1uY291bnQgPiAkY29sdW1ucykgew0KCQkJCQkJCQkkY29sdW1uY291bnQgPSAxOw0K
CQkJCQkJCQkkb3V0cHV0Lj0iPC90cj48dHI+IjsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQli
cmVhazsNCgkJCQkJY2FzZSAidmVydGljYWwiICA6ICRvdXRwdXQuPSRsaW5rLiI8YnIgLz4iOyBi
cmVhazsNCgkJCQl9DQoJCQkJDQoJCQkJJGdvb2dsZSA9IG51bGw7DQoJCQl9DQoJCQkNCgkJCWlm
ICgkY2hhcnRsYXlvdXQgPT0gImhvcml6b250YWwiKSB7DQoJCQkJJG91dHB1dCAuPSAiPC90cj48
L3RhYmxlPiI7DQoJCQl9DQoJCQkNCgkJfSBlbHNlIHsNCg0KCQkJJHR5cGUgPSAkdHlwZXNbMF07
DQoJCQkNCgkJCXN3aXRjaCAoJHR5cGUpIHsNCgkJCQljYXNlICJiYXIiICAgOiAkY2hhcnRUeXBl
ID0gImJ2ZyI7IGJyZWFrOw0KCQkJCWNhc2UgInBpZSIgICA6ICRjaGFydFR5cGUgPSAicCI7IGJy
ZWFrOw0KCQkJCWNhc2UgInBpZTMiICA6ICRjaGFydFR5cGUgPSAicDMiOyBicmVhazsNCgkJCQlj
YXNlICJtZXRlciIgOiAkY2hhcnRUeXBlID0gImdvbSI7IGJyZWFrOw0KCQkJCWNhc2UgImxpbmUi
ICA6ICRjaGFydFR5cGUgPSAibHMiOyBicmVhazsNCgkJCX0NCgkJCQkJCQ0KCQkJJGdvb2dsZSA9
IG5ldyBHb29nbGVDaGFydDsNCgkJCSRnb29nbGUtPnNldFR5cGUoJGNoYXJ0VHlwZSk7DQoJCQkk
Z29vZ2xlLT5zZXREZWZhdWx0SGVpZ2h0KCR0aGlzLT5nZXRBcmdzKCktPmdldERlZmF1bHQoImNo
YXJ0aGVpZ2h0IikpOw0KCQkJJGdvb2dsZS0+c2V0RGVmYXVsdFdpZHRoKCR0aGlzLT5nZXRBcmdz
KCktPmdldERlZmF1bHQoImNoYXJ0d2lkdGgiKSk7CQ0KCQkJJGdvb2dsZS0+c2V0V2lkdGgoJHRo
aXMtPmdldEFyZ3MoKS0+Z2V0KCJjaGFydHdpZHRoIikpOw0KCQkJJGdvb2dsZS0+c2V0SGVpZ2h0
KCR0aGlzLT5nZXRBcmdzKCktPmdldCgiY2hhcnRoZWlnaHQiKSk7DQoJCQ0KCQkJaWYgKCR0eXBl
ID09ICJiYXIiKSB7ICRnb29nbGUtPmhpZGVMYWJlbHMoIHRydWUgKTsgfQ0KCQkJaWYgKCR0eXBl
ID09ICJwaWUiIG9yICR0eXBlID09ICJwaWUzIikgeyAkZ29vZ2xlLT5oaWRlTGVnZW5kKCB0cnVl
ICk7IH0JCQkJDQoJCQkNCgkJCSR0aGlzLT5nZXRHb29nbGVDaGFydExpbmsoICRnb29nbGUsICRy
ZXN1bHQsICR0eXBlLCBudWxsKTsNCgkJCQ0KCQkJIyBkZWJ1Zw0KCQkJJHRoaXMtPmNvbnRleHQt
PmdldERlYnVnKCktPmFkZCgicmVuZGVyR29vZ2xlOiIuJGdvb2dsZS0+dG9VUkwoKSk7DQoJCQkN
CgkJCSMgY3JlYXRlIHRoZSBmaW5hbCBsaW5rDQoJCQkkb3V0cHV0PSRnb29nbGUtPnRvSW1nKCk7
DQoJCQkNCgkJCSRnb29nbGUgPSBudWxsOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9
DQoJDQoJZnVuY3Rpb24gZ2V0R29vZ2xlQ2hhcnRPbmVSb3dDb3VudCggJiRnb29nbGUsICRyZXN1
bHQsICR0eXBlLCAkY2hhcnQsICRmaWVsZCwgJGZpZWxkMmNvdW50LCAkY29sLCAkY29sb3JyYW5n
ZSkgew0KCQkkY29sb3IgPSBuZXcgVFJfQ29sb3JzOw0KCQkNCgkJJGxhYmVsPSIiOw0KCQkkdG90
YWw9MDsNCgkJDQoJCWlmICgkY29sID09ICJhdXRvIiBhbmQgJGNvbG9ycmFuZ2UgPT0gIiIpIHsN
CgkJCSRjb2xvcnJhbmdlID0gJHRoaXMtPmRlZmF1bHRDb2xvclJhbmdlOw0KCQl9DQoJCQ0KCQlp
ZiAoISR0aGlzLT5nZXRUb3RhbCgpKSB7DQoJCQkkdGhpcy0+Y2FsY1RvdGFsKCAkcmVzdWx0ICk7
DQoJCQkkdG90YWw9JHRoaXMtPmdldFRvdGFsKCk7DQoJCX0gZWxzZSB7DQoJCQkkdG90YWwgPSAk
dGhpcy0+Z2V0VG90YWwoKTsNCgkJfQ0KCQkNCgkJJHRoaXMtPmNvbnRleHQtPmdldERlYnVnKCkt
PmFkZCgiZ2V0R29vZ2xlQ2hhcnRPbmVSb3dDb3VudDoiLiR0b3RhbCk7DQoJCQ0KCQkkYmFycz1h
cnJheSgpOw0KCQkkbGVnZW5kPWFycmF5KCk7DQoJCSRudW1PZkJhcnMgPSAwOw0KCQlmb3JlYWNo
ICgkcmVzdWx0IGFzICRsaW5lKSB7DQoJCQkkY291bnRlciA9ICRsaW5lWyRmaWVsZF07DQoJCQkN
CgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRjb3VudGVyLCRiYXJzKSkgew0KCQkJCWlmICgkZmll
bGQyY291bnQgIT0gIiIpIHsNCgkJCQkJJGJhcnNbJGNvdW50ZXJdID0gJGJhcnNbJGNvdW50ZXJd
ICsgJGxpbmVbJGZpZWxkMmNvdW50XTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkYmFyc1skY291bnRl
cl0rKzsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgkZmllbGQyY291bnQgIT0gIiIpIHsN
CgkJCQkJJGJhcnNbJGNvdW50ZXJdID0gJGxpbmVbJGZpZWxkMmNvdW50XTsNCgkJCQl9IGVsc2Ug
ew0KCQkJCQkkYmFyc1skY291bnRlcl09MTsNCgkJCQl9DQoJCQkJJGxlZ2VuZFtdPSRjb3VudGVy
Ow0KCQkJCWlmICgkY29sICE9ICIiIGFuZCAkY29sICE9ICJhdXRvIikgew0KCQkJCQkkZ29vZ2xl
LT5hZGRDb2xvcigkY29sb3ItPmdldENvbG9ySFRNTCgkY291bnRlciwgJGNvbCkpOwkJCQ0KCQkJ
CX0NCgkJCQkkbnVtT2ZCYXJzKys7DQoJCQl9DQoJCX0NCgkJDQoJCSRnb29nbGUtPnNldERhdGFN
aW5SYW5nZSgwKTsNCgkJDQoJCSRpPTA7DQoJCWZvcmVhY2ggKCRiYXJzIGFzICRiYXIpIHsNCgkJ
CSRnb29nbGUtPmFkZERhdGEoJGJhcik7DQoJCQkkbGFiZWw9JGxlZ2VuZFskaV0uIigiLiRiYXIu
IikiOw0KCQkJJGxhYmVsLj0kdGhpcy0+Z2V0UGVyYygkYmFyLCR0b3RhbCk7DQoJCQlpZiAoJGNv
bCA9PSAiYXV0byIpIHsNCgkJCQkkZ29vZ2xlLT5hZGRDb2xvcigkY29sb3ItPmF1dG9Db2xvckhU
TUwoJGNvbG9ycmFuZ2UsICRpLCAkbnVtT2ZCYXJzKSk7DQoJCQl9DQoJCQkkZ29vZ2xlLT5hZGRM
YWJlbCgkbGFiZWwpOw0KCQkJJGdvb2dsZS0+YWRkTGVnZW5kKCRsYWJlbCk7DQoJCQkkaSsrOw0K
CQl9CQkNCgl9CQkNCgkNCglmdW5jdGlvbiBhcmVDaGFydHNTdXBwb3J0ZWQoICRkZXZpY2UgKSB7
DQoJCSRkZXZpY2VzID0gJHRoaXMtPmdldFN1cHBvcnRlZENoYXJ0VHlwZXNBcnIoKTsNCgkJDQoJ
CWlmIChhcnJheV9rZXlfZXhpc3RzKCAkZGV2aWNlLCAkZGV2aWNlcyApKSB7DQoJCQlyZXR1cm4g
dHJ1ZTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9u
IGlzQ2hhcnRUeXBlU3VwcG9ydGVkKCAkZGV2aWNlLCAkdHlwZSApIHsNCgkJJGRldmljZXMgPSAk
dGhpcy0+Z2V0U3VwcG9ydGVkQ2hhcnRUeXBlc0FycigpOw0KCQkNCgkJaWYgKGFycmF5X2tleV9l
eGlzdHMoICRkZXZpY2UsICRkZXZpY2VzICkpIHsNCgkJCSR0eXBlcyA9ICRkZXZpY2VzWyRkZXZp
Y2VdOw0KCQkJaWYgKGluX2FycmF5KCAkdHlwZSwgJHR5cGVzICkpIHsNCgkJCQlyZXR1cm4gdHJ1
ZTsNCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJ
cmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0VHlw
ZXMoICRkZXZpY2UgKSB7DQoJCSRvdXRwdXQ9IiI7DQoJCSRkZXZpY2VzID0gJHRoaXMtPmdldFN1
cHBvcnRlZENoYXJ0VHlwZXNBcnIoKTsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoICRkZXZpY2Us
ICRkZXZpY2VzICkpIHsNCgkJCSR0eXBlcyA9ICRkZXZpY2VzWyRkZXZpY2VdOw0KCQkJZm9yZWFj
aCAoJHR5cGVzIGFzICR0eXBlKSB7DQoJCQkJJG91dHB1dCA9ICR0aGlzLT5hZGQyc3RyKCRvdXRw
dXQsICIsICIsICR0eXBlKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXJldHVybiAiLSI7DQoJCX0N
Cgl9DQoJDQoJZnVuY3Rpb24gaXNDaGFydFN1cHBvcnRlZCggJGNoYXJ0ICkgew0KCQkkY2hhcnRz
ID0gJHRoaXMtPmdldFN1cHBvcnRlZENoYXJ0c0FycigpOw0KCQlpZiAoYXJyYXlfa2V5X2V4aXN0
cyggJGNoYXJ0LCAkY2hhcnRzICkpIHsNCgkJCXJldHVybiB0cnVlOw0KCQl9IGVsc2Ugew0KCQkJ
cmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0cyAo
KSB7DQoJCSRjaGFydHMgPSAkdGhpcy0+Z2V0U3VwcG9ydGVkQ2hhcnRzQXJyKCk7DQoJCSRvdXRw
dXQ9IiI7DQoJCWlmICgkY2hhcnRzKSB7DQoJCQlmb3JlYWNoICgkY2hhcnRzIGFzICRjaGFydCkg
ew0KCQkJCSRvdXRwdXQgPSAkdGhpcy0+YWRkMnN0cigkb3V0cHV0LCAiLCAiLCAkY2hhcnRbInBh
cmFtZXRlciJdLiIgKCIuJGNoYXJ0WyJ0aXRsZSJdLiIpIik7DQoJCQl9DQoJCX0gZWxzZSB7DQoJ
CQlyZXR1cm4gIi0iOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJcHVibGlj
IGZ1bmN0aW9uIGdldFN0YW5kYXJkUnVuSGVhZGVyKCkgew0KIyMjIyMjIyMjIyMjIyMjIyMjIyMK
IyBUaGlzIG5leHQgYmxvY2sgZ2V0cyB0aGUgcGxhbiBuYW1lIGFuZCBpbnRyb2R1Y2VzIGl0IGlu
IHRoZSBoZWFkZXIKCgkJJHJ1bl9pZCA9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgicnVuX2lkIik7
CgoJCSRzcWw9IlNFTEVDVCAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUoInRlc3Rf
cGxhbnMiKS4iLm5hbWUgRlJPTSAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUoInRl
c3RfcGxhbnMiKTsKICAgICAgICAgICAgICAgICRzcWwuPSIgSk9JTiAiLiR0aGlzLT5nZXRDb25u
ZWN0b3IoKS0+Z2V0VGFibGUoInRlc3RfcnVucyIpOwogICAgICAgICAgICAgICAgJHNxbC49IiBP
TiAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUoInRlc3RfcnVucyIpLiIucGxhbl9p
ZCA9ICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9wbGFucyIpLiIucGxh
bl9pZCI7CiAgICAgICAgICAgICAgICAkc3FsLj0iIFdIRVJFIHJ1bl9pZCA9ICIuJHJ1bl9pZC4i
OyI7CgkJJF9yZXN1bHQgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmV4ZWN1dGUoJHNxbCk7CgkJ
aWYgKCRfcmVzdWx0KSB7CgkJCSRfbGluZSA9ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZmV0Y2go
JF9yZXN1bHQpOwoJCQkkX3RpdGxlID0gaHRtbGVudGl0aWVzKCRfbGluZVsibmFtZSJdKTsKCQkJ
JHRoaXMtPmdldENvbm5lY3RvcigpLT5mcmVlKCRfcmVzdWx0KTsKCQl9IGVsc2UgewoJCQkkX3Rp
dGxlID0gIiI7CgkJCSRfbGluZSA9ICIiOwoJCX0KIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgoKCiMJ
CSRydW5faWQgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInJ1bl9pZCIpOw0KCQkNCgkJJHNxbCA9
ICJTRUxFQ1Qgc3VtbWFyeSBGUk9NICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJsZSgi
dGVzdF9ydW5zIikuIiBXSEVSRSBydW5faWQgPSAiLiRydW5faWQuIjsiOw0KCQkkcmVzdWx0ID0g
JHRoaXMtPmdldENvbm5lY3RvcigpLT5leGVjdXRlKCRzcWwpOw0KCQkNCgkJaWYgKCRyZXN1bHQp
IHsNCgkJCSRsaW5lID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5mZXRjaCgkcmVzdWx0KTsNCgkJ
CSR0aXRsZSA9IGh0bWxlbnRpdGllcygkbGluZVsic3VtbWFyeSJdKTsNCgkJCSR0aGlzLT5nZXRD
b25uZWN0b3IoKS0+ZnJlZSgkcmVzdWx0KTsNCgkJfSBlbHNlIHsNCgkJCSR0aXRsZSA9ICIiOw0K
CQkJJGxpbmUgPSAiIjsNCgkJfQ0KCQkNCiMJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0TmFtZSgp
LiI8YnIgLz4iLiI8YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIiku
Ii90cl9zaG93X3J1bi5jZ2k/cnVuX2lkPSIuJHJ1bl9pZC4iXCI+VGVzdCBSdW4gIi4kcnVuX2lk
LiIgLSAiLiR0aXRsZS4iPC9hPiI7DQoJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0TmFtZSgpLiI8
YnIgLz4iLiI8YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIikuIi90
cl9zaG93X3J1bi5jZ2k/cnVuX2lkPSIuJHJ1bl9pZC4iXCI+Ii4kX3RpdGxlLiIgLSAiLiR0aXRs
ZS4iPC9hPiI7Cgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIGdldFN0YW5kYXJkUGxhbkhlYWRlcigp
IHsNCgkJJHBsYW5faWQgPSAkdGhpcy0+Z2V0UGxhbklEKCk7DQoJCQ0KCQkkc3FsPSJTRUxFQ1Qg
Ii4kdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X3BsYW5zIikuIi5uYW1lIEZS
T00gIi4kdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X3BsYW5zIikuIiBXSEVS
RSBwbGFuX2lkID0gIi4kcGxhbl9pZC4iOyI7CQkNCgkJJHJlc3VsdCA9ICR0aGlzLT5nZXRDb25u
ZWN0b3IoKS0+ZXhlY3V0ZSgkc3FsKTsNCgkJDQoJCWlmICgkcmVzdWx0KSB7DQoJCQkkbGluZSA9
ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZmV0Y2goJHJlc3VsdCk7DQoJCQkkdGl0bGUgPSBodG1s
ZW50aXRpZXMoJGxpbmVbIm5hbWUiXSk7DQoJCQkkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZyZWUo
JHJlc3VsdCk7DQoJCX0gZWxzZSB7DQoJCQkkdGl0bGUgPSAiIjsNCgkJCSRsaW5lID0gIiI7DQoJ
CX0NCgkJDQojCQlyZXR1cm4gJHRoaXMtPmdldFJlcG9ydE5hbWUoKS4iPGJyIC8+Ii4iPGEgaHJl
Zj1cIiIuJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJienNlcnZlciIpLiIvdHJfc2hvd19wbGFuLmNn
aT9wbGFuX2lkPSIuJHBsYW5faWQuIlwiPlRlc3QgUGxhbiAiLiRwbGFuX2lkLiIgLSAiLiR0aXRs
ZS4iPC9hPiI7DQoJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0TmFtZSgpLiI8YnIgLz4iLiI8YSBo
cmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIikuIi90cl9zaG93X3BsYW4u
Y2dpP3BsYW5faWQ9Ii4kcGxhbl9pZC4iXCI+VGVzdCBQbGFuICAtICIuJHRpdGxlLiI8L2E+IjsK
Cgl9CQ0KCQ0KCWZ1bmN0aW9uIGFkZDJzdHIoJHN0ciwgJHNlcCwgJHZhbCkgew0KCQlpZiAoJHN0
ciA9PSAiIikgew0KCQkJcmV0dXJuICR2YWw7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gJHN0ci49
JHNlcC4kdmFsOw0KCQl9DQoJfQkNCgkNCgkjDQoJIyBpbnRlcmZhY2Ugcm91bnRpbmVzIChpbnRl
cmZhY2VzKQ0KCSMNCgkNCgkjIHJlcG9ydCBzdHVmZg0KCXB1YmxpYyBmdW5jdGlvbiBpbml0KCkg
e30NCglwdWJsaWMgZnVuY3Rpb24gbmV3RGF0YUxpbmUoICRsaW5lICkge30NCglwdWJsaWMgZnVu
Y3Rpb24gbmV3TGluZUJlZ2luKCAkbGluZSApIHt9DQoJcHVibGljIGZ1bmN0aW9uIGdldENvbHVt
bkZvcm1hdHMoKSB7fQ0KCXB1YmxpYyBmdW5jdGlvbiBpbmplY3RCb2R5KCAkcmVzdWx0ICkgeyBy
ZXR1cm4gJHRoaXMtPnJlbmRlclBsYWluSFRNTEJvZHkoJHJlc3VsdCk7IH0NCgkNCglhYnN0cmFj
dCBmdW5jdGlvbiBnZXRTUUwoKTsNCglhYnN0cmFjdCBmdW5jdGlvbiBnZXRSZXBvcnQoICRyZXN1
bHQgKTsNCglhYnN0cmFjdCBmdW5jdGlvbiBnZXRSZXBvcnRIZWFkZXIoKTsNCglhYnN0cmFjdCBm
dW5jdGlvbiBnZXRSZXBvcnRGb290ZXIoKTsNCglhYnN0cmFjdCBmdW5jdGlvbiBnZXRSZXBvcnRO
YW1lKCk7DQoJcHVibGljIGZ1bmN0aW9uIHJlbmRlckNlbGwoJHR5cGUsICRjb2xObywgJGZpZWxk
X25hbWUsICR2YWx1ZSwgJGxpbmVObywgJGxpbmUpIHt9DQoJDQoJIyBjaGFydCBzdHVmZg0KCWFi
c3RyYWN0IGZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0c0FyciAoKTsNCglhYnN0cmFjdCBmdW5j
dGlvbiBnZXRTdXBwb3J0ZWRDaGFydFR5cGVzQXJyICgpOw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRH
b29nbGVDaGFydExpbmsoICYkZ29vZ2xlLCAkcmVzdWx0LCAkdHlwZSwgJGNoYXJ0ICkge30NCn0N
Cg0KPz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1052</attachid>
            <date>2013-02-01 17:46:38 +0000</date>
            <delta_ts>2013-02-01 17:46:38 +0000</delta_ts>
            <desc>patch_final + readme</desc>
            <filename>Patch_TestopiaReports_final.tgz</filename>
            <type>application/x-compressed</type>
            <size>92160</size>
            <attacher name="Stoicescu Cornel">corneliux.stoicescu</attacher>
            
              <data encoding="base64">UkVBRE1FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAw
MAAwMDAwMDAwADAwMDAwMDAxMTI1ADEyMTAyNzMzMjU2ADAxMDQzNAAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU
byBhcHBseSB0aGlzIHBhdGNoLCByZXBsYWNlIHRoZSBvcmlnaW5hbCBmaWxlcyBpbnNpZGUgL21l
ZGlhd2lraSovZXh0ZW5zaW9ucy9UZXN0b3BpYVJlcG9ydHMvIHdpdGggdGhlIGZpbGVzIGluIHRo
aXMgYXJjaGl2ZS4gUGxlYXNlIG1ha2UgYmFja3VwcyB0byBiZSBzYWZlLgoKVG8gZmluaXNoIGZp
eGluZyB0aGUgQWdlbmRhIHJlcG9ydCB0eXBlLCBjb21tZW50IG91dCB0aGUgZ3JhcGh2aXogbGlu
ZSBpbnNpZGUgTG9jYWxTZXR0aW5ncy5waHAgYW5kIHJlbW92ZSB0aGUgY29tbWEgYmVoaW5kIHRo
ZSBwcmV2aW91cyBsaW5lIGxpa2Ugc286Cgokd2dUZXN0b3BpYVJlcG9ydHMgPSBhcnJheSgKICdo
b3N0JyAgICAgICAgPT4gImxvY2FsaG9zdCIsLgogJ2RhdGFiYXNlJyAgICA9PiAiYnVnemlsbGEi
LAogJ3VzZXInICAgICAgICA9PiAiYnVnemlsbGEiLAogJ3Bhc3N3b3JkJyAgICA9PiAic29tZXBh
c3N3b3JkIiwKICdienNlcnZlcicgICAgPT4gImh0dHA6Ly9sb2NhbGhvc3QvYnVnemlsbGEiLAog
J2NoYXJ0ZGV2aWNlJyA9PiAiZ29vZ2xlIgojICdncmFwaHZpeicgICAgPT4gIi91c3IvYmluL2Rv
dCIKKTsKCgpUaGF0IHNob3VsZCBkbyBpdCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVGVz
dG9waWFSZXBvcnRzLmkxOG4ucGhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAw
MDAwMDAwADAwMDAwMDA1MjIwADEyMTAzMDA3NjAxADAxNDE3NwAgMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P3Bo
cA0KI0VESVRFRDogVG8gdHJhY2sgdGhlIGNoYW5nZXMgbWFkZSBiZXNpZGVzIHRoZSBjb21tZW50
ZWQtb3V0IHNlY3Rpb25zLCBmb2xsb3cgdGhlIHRhZyAiRURJVEVEIgoKLyoqDQogKiBJbnRlcm5h
dGlvbmFsaXNhdGlvbiBmaWxlIGZvciBleHRlbnNpb24gVGVzdG9waWEgUmVwb3J0cy4NCiAqLw0K
DQovKioNCiAqIENvcHlyaWdodCAoQykgMjAwOS0gQW5kcmVhcyBNdWVsbGVyDQogKg0KICogVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkgaXQgDQogKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQ0KICogU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSAN
CiAqIGFueSBsYXRlciB2ZXJzaW9uLg0KICoNCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgDQogKiBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U
QUJJTElUWSANCiAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciAgICANCiAqIG1vcmUgZGV0YWlscy4NCiAq
IA0KICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgYWxvbmcgDQogKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUg
PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcz4uDQogKi8NCg0KJG1lc3NhZ2VzID0gYXJyYXko
KTsNCg0KJG1lc3NhZ2VzWydlbiddID0gYXJyYXkoDQoJLy8gREIgZXJyb3JzDQoJJ3RyUmVwb3J0
X25vY29ubmVjdGlvbicJCQkJCT0+ICdDYW5cJ3QgZ2V0IGRhdGFiYXNlIGNvbm5lY3Rpb24gKCQx
QCQyKSA6ICQzJywNCgkndHJSZXBvcnRfbm9kYicJCQkJCQkJPT4gJ0RhdGFiYXNlIG5vdCBmb3Vu
ZCA6ICQxJywNCgkndHJSZXBvcnRfc3FsZXJyb3InCQkJCQkJPT4gJ0Vycm9yIHJ1bm5pbmcgdGhl
IHNxbCA6ICQxJywNCgkndHJSZXBvcnRfbm9fcmVzdWx0c19mb3VuZCcJCQkJPT4gJyoqTm8gcmVz
dWx0cyoqJywgI0VESVRFRDogTW9kaWZpZWQgdGhpcyBub3QgdG8gZ2l2ZSBvZiB0aGUgaW1wcmVz
c2lvbiBvZiBhbiBlcnJvcgoJDQoJLy8gUGFyYW1ldGVyIGNoZWNraW5nDQoJJ3RyUmVwb3J0X3Vu
c3Vwb3J0ZWRfcmVwb3J0JwkJCT0+ICdVbnN1cHBvcnRlZCByZXBvcnQ6ICQxLiBTdXBwb3J0ZWQg
cmVwb3J0czogJDIuJywNCgkndHJSZXBvcnRfbWlzc2luZ19yZXBvcnQnCQkJCT0+ICdNaXNzaW5n
IHBhcmFtZXRlciByZXBvcnRfaWQuIFN1cHBvcnRlZCByZXBvcnRzOiAkMS4nLA0KCSd0clJlcG9y
dF9jaGFydF9ub3Rfc3VwcG9ydGVkJwkJCT0+ICdDaGFydCAiJDEiIG5vdCBzdXBwb3J0ZWQuIFN1
cHBvcnRlZCBjaGFydHMgYnkgdGhpcyByZXBvcnQgYXJlOiAkMi4nLA0KCSd0clJlcG9ydF9jaGFy
dF90eXBlX25vdF9zdXBwb3J0ZWQnICAgICA9PiAnQ2hhcnQgdHlwZSAiJDEiIG5vdCBzdXBwb3J0
ZWQuIFN1cHBvcnRlZCBjaGFydCB0eXBlcyBieSB0aGlzIHJlcG9ydCBhcmU6ICQyLicsDQoJJ3Ry
UmVwb3J0X2NoYXJ0c19ub3Rfc3VwcG9ydGVkJwkJCT0+ICdDaGFydCBmZWF0dXJlIGlzIG5vdCBz
dXBwb3J0ZWQgYnkgdGhpcyByZXBvcnQuJywNCgkndHJSZXBvcnRfdW5zdXBwb3J0ZWRfcGFyYW1l
dGVyJwkJPT4gJ1BhcmFtZXRlciAiJDEiIGlzIG5vdCBzdXBwb3J0ZWQuIE9ubHkgdGhlIGZvbGxv
d2luZyBwYXJhbWV0ZXJzIGFyZSBhbGxvd2VkOiAkMi4nLA0KCSd0clJlcG9ydF93cm9uZ192YWx1
ZScJCQkJCT0+ICdXcm9uZyB2YWx1ZSAkMSBmb3IgcGFyYW1ldGVyICQyLicsDQoJJ3RyUmVwb3J0
X2Vycm9yX3JlcG9ydF9vcHRpb24nCQkJPT4gJ0Vycm9yIGluIHJlcG9ydCBvcHRpb24gJDEuJywN
CgkndHJSZXBvcnRfY2hhcnRfbm9fdHlwZScJCQkJPT4gJ05vIHR5cGUgc3BlY2lmaWVkIGZvciBj
aGFydCEnLA0KDQoJLy8gQnV0dG9ucw0KCSd0clJlcG9ydF9oaWRlJwkJCQkJCQk9PiAnSGlkZScs
DQogICAgJ3RyUmVwb3J0X3Nob3cnCQkJCQkJCT0+ICdTaG93JywNCg0KCS8vIFRlc3RvcGlhIC0g
ZG8gbm90IHRyYW5zbGF0ZSBvciBjaGFuZ2UgdW5sZXNzIHlvdXIgaW5zdGFsbGF0aW9uIGlzIG1h
aW50YWluaW5nIGRpZmZlcmVuIHZhbHVlcw0KCSd0clJlcG9ydF9UZXN0b3BpYV9EaXNhYmxlZCcg
CQkJPT4gIkRJU0FCTEVEIiwNCgkndHJSZXBvcnRfVGVzdG9waWFfUHJvcG9zZWQnICAJCQk9PiAi
UFJPUE9TRUQiLA0KCSd0clJlcG9ydF9UZXN0b3BpYV9Db25maXJtZWQnCQkJPT4gIkNPTkZJUk1F
RCIsCQkNCg0KCS8vIEZvciByZXBvcnQgQWdlbmRhDQoJJ3RyUmVwb3J0X21vcmVfdGhhbl9vbmVf
cm9vdCcJCQk9PiAnTW9yZSB0aGFuIHJvb3QgZm91bmQgZm9yIHN0YXJ0aW5nIHRoZSBhZ2VuZGEg
Zm9yIHRlc3QgcnVuICQxLiBDaGVjayB0aGUgZGVwZW5kZW5jeSBncmFwaC4gJy4gDQoJCQkJCQkJ
CQkJCSAgICdQbGVhc2Ugc3BlY2lmeSBleGFjdGx5IG9uZSB0ZXN0IGNhc2UgYXMgdGhlIHN0YXJ0
IG9mIHRoZSBhZ2VuZGEuJwkNCik7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUUl9yZXBBZ2Vu
ZGEucGhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAA
MDAwMDAwNTI2MjUAMTIxMDMwMDc2MTEAMDEyNTYxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw/cGhwDQoNCiNF
RElURUQ6IFRoaXMgZmlsZSB3YXMgbW9kaWZpZWQgdG8gYWRhcHQgYW5kIGZpeCBzb21lIGlzc3Vl
cy4gSSByZW1vdmVkIGFsbCBkZXBlbmRlbmN5IGNoYWluLCBkdXJhdGlvbi1yZWxhdGVkIGZ1bmN0
aW9uYWxpdGllcyBhbmQgZ3JhcGggZ2VuZXJhdGlvbihjaGFydHMgc3RpbGwgd29yaykKI0VESVRF
RDogVG8gdHJhY2sgdGhlIGNoYW5nZXMgbWFkZSBiZXNpZGVzIHRoZSBjb21tZW50ZWQtb3V0IHNl
Y3Rpb25zLCBmb2xsb3cgdGhlIHRhZyAiRURJVEVEIgppbmlfc2V0KCJtZW1vcnlfbGltaXQiLCIx
MjhNIik7ICNFRElURUQ6IGFkZGVkIGEgbWVtb3J5IGxpbWl0LiBUaGUgcmVhc29uIGlzIHRoYXQg
d2hlbiB3cm9uZ2x5IHNlbGVjdGluZyBwbGFuX2lkIGluc3RlYWQgb2YgcnVuX2lkIHdoZW4gY3Jl
YXRpbmcgYW4gQWdlbmRhIHJlcG9ydCwgd2UgZ2V0IHNvbWUgaW5maW5pdGUgbG9vcHMuCiNFRElU
RUQ6IFRPRE86IEZpeCB0aGUgYWJvdmUgaXNzdWUhCmNsYXNzIFRSX3JlcEFnZW5kYSBleHRlbmRz
IFRSX1RlbXBsYXRlew0KDQoJcHJpdmF0ZSAkc3RhcnRIb3VyOw0KCXByaXZhdGUgJHN0YXJ0TWlu
dXRlOw0KCXByaXZhdGUgJGVuZEhvdXI7DQoJcHJpdmF0ZSAkZW5kTWludXRlOw0KCXByaXZhdGUg
JGN1cnJIb3VyOw0KCXByaXZhdGUgJGN1cnJNaW51dGU7DQoJDQoJcHJpdmF0ZSAkbnVtT2ZEYXlz
Ow0KCXByaXZhdGUgJG51bU9mSG91cnM7DQoJcHJpdmF0ZSAkbnVtT2ZNaW51dGVzOw0KCQ0KCXBy
aXZhdGUgJHN0YXJ0RGF0ZTsNCglwcml2YXRlICRjdXJyZW50RGF0ZTsNCglwcml2YXRlICRpZ25v
cmVXZWVrZW5kOw0KCXByaXZhdGUgJHRvZGF5Ow0KCXByaXZhdGUgJGhpZ2hsaWdodFJlc291cmNl
Q29uZmxpY3RzOw0KCXByaXZhdGUgJGRlcGVuZGVuY3lHcmFwaE9ubHk7DQoJDQoJIyB0cnVlID0g
bW9yZSB0aGFuIG9uZSByb290IGNhc2Ugd2FzIGZvdW5kDQoJcHJpdmF0ZSAkbW9yZVJvb3RzOw0K
CSMgdHJ1ZSA9IG9ubHkgY2FzZXMgd2l0aCBkZXBlbmRlbmNpZXMgLyBmYWxzZSA9IGNhc2VzIHdp
dGggYW5kIHdpdGhvdXQgZGVwZW5kZW5jaWVzDQoJcHJpdmF0ZSAkd2l0aERlcGVuZGVuY3k7DQoJ
DQoJcHJpdmF0ZSAkY3JlYXRlTmV3TGluZTsNCglwcml2YXRlICRudW1EYXk7DQoJcHJpdmF0ZSAk
Y3VyckRheTsNCgkNCglwcml2YXRlICRkZXBlbmRlbmNpZXMgPSBhcnJheSgpOw0KCXByaXZhdGUg
JGVuZFRpbWVzID0gYXJyYXkoKTsNCglwcml2YXRlICRjYXNlTGlzdCA9IGFycmF5KCk7DQoJcHJp
dmF0ZSAkY2FzZURhdGEgPSBhcnJheSgpOw0KCXByaXZhdGUgJGNvbmZsaWN0cyA9IGFycmF5KCk7
DQoJDQoJcHJpdmF0ZSAkc3VwcG9ydGVkQ2hhcnRzID0gYXJyYXkoKTsNCg0KCXByaXZhdGUgJHN1
cHBvcnRlZENoYXJ0VHlwZXMgPSBhcnJheSgNCgkJImdvb2dsZSIgICA9PiBhcnJheSgpLA0KCQki
cGxvdGljdXMiID0+IGFycmF5KCkNCgkpOw0KCQ0KCXByaXZhdGUgJGNvbHVtbkZvcm1hdHMgPSBh
cnJheSgNCgkJIkNhdGVnb3J5IiA9PiAidGV4dC1hbGlnbjpjZW50ZXIiDQoJKTsgDQoJDQoJcHVi
bGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0c0FycigpIHsNCgkJcmV0dXJuICR0aGlzLT5z
dXBwb3J0ZWRDaGFydHM7DQoJfQ0KCQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFy
dFR5cGVzQXJyKCkgew0KCQlyZXR1cm4gJHRoaXMtPnN1cHBvcnRlZENoYXJ0VHlwZXM7DQoJfQ0K
DQoJcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbkZvcm1hdHMoKSB7DQoJCXJldHVybiAkdGhpcy0+
Y29sdW1uRm9ybWF0czsNCgl9DQoJDQoJLyoqDQoJICoJQ3JlYXRpbmcgdGhlIGRhdGUgZm9yIGEg
ZGlyZWN0IGdyYXBoIGZvciBncmFwaHZpeg0KCSAqLw0KCXByaXZhdGUgZnVuY3Rpb24gZGlncmFw
aCgpIHsNCgkJJG91dHB1dFtdID0gImRpZ3JhcGggRyB7IjsNCgkJd2hpbGUgKCRkZXBlbmRlbmN5
ID0gY3VycmVudCgkdGhpcy0+ZGVwZW5kZW5jaWVzKSkgew0KCQkJZm9yZWFjaCAoJGRlcGVuZGVu
Y3kgYXMgJG5vZGUpIHsNCgkJCQkkb3V0cHV0W109JG5vZGUuIi0+Ii5rZXkoJHRoaXMtPmRlcGVu
ZGVuY2llcyk7DQoJCQl9DQoJCQluZXh0KCR0aGlzLT5kZXBlbmRlbmNpZXMpOw0KCQl9DQoJCSRv
dXRwdXRbXT0gIn0iOw0KCQlyZXR1cm4gJG91dHB1dDsNCgl9CQ0KCQ0KCXB1YmxpYyBmdW5jdGlv
biBpbml0KCkgIHsKCQkjIGdldCByZXBvcnQgb3B0aW9ucw0KCQkkdGhpcy0+c3RhcnRIb3VyIAkJ
CQkJPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInN0YXJ0aG91ciIsIHRydWUsIDgpOw0KCQkkdGhp
cy0+c3RhcnRNaW51dGUgCQkJCQk9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgic3RhcnRtaW51dGUi
LCB0cnVlICwwKTsNCgkJJHRoaXMtPmVuZEhvdXIgCQkJCQkJPSAkdGhpcy0+Z2V0QXJncygpLT5n
ZXQoImVuZGhvdXIiLCB0cnVlLCAxOCk7DQoJCSR0aGlzLT5lbmRNaW51dGUJCQkgCQk9ICR0aGlz
LT5nZXRBcmdzKCktPmdldCgiZW5kbWludXRlIiwgdHJ1ZSwgMCk7DQoJCSR0aGlzLT5zdGFydERh
dGUJCQkJCT0gJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJzdGFydGRhdGUiLCB0cnVlLCBkYXRlKCJZ
LW0taiIsc3RydG90aW1lKCJub3ciKSkpOw0KCQkkdGhpcy0+aWdub3JlV2Vla2VuZCAJCQkgCT0g
JHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJpZ25vcmV3ZWVrZW5kcyIsIHRydWUsICJ0cnVlIik7DQoJ
CSR0aGlzLT53aXRoRGVwZW5kZW5jeSAJCQkJPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoIndpdGhk
ZXBlbmRlbmN5IiwgdHJ1ZSwgInRydWUiKTsNCiR0aGlzLT53aXRoRGVwZW5kZW5jeT0iZmFsc2Ui
OyAjRURJVEVEOiBpbnRyb2R1Y2UgbWFudWFsbHkgdGhlICJmYWxzZSIgdmFsdWUgdG8gYXZvaWQg
ZXJyb3JzCgkJJHRoaXMtPmhpZ2hsaWdodFJlc291cmNlQ29uZmxpY3RzIAk9ICR0aGlzLT5nZXRB
cmdzKCktPmdldCgiaGlnaGxpZ2h0cmVzY29uZmwiLCB0cnVlLCB0cnVlKTsNCgkJJHRoaXMtPmRl
cGVuZGVuY3lHcmFwaE9ubHkgCQkJPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoImRlcGVuZGVuY3ln
cmFwaG9ubHkiLCB0cnVlLCBmYWxzZSk7DQoJCQ0KCQkkdGhpcy0+Y3VycmVudERhdGUgPSAkdGhp
cy0+c3RhcnREYXRlOw0KIwkJDQojCQlpZiAoJHRoaXMtPmlnbm9yZVdlZWtlbmQgPT0gImZhbHNl
Iikgew0KIwkJCSRub3cgPSBnZXREYXRlKHN0cnRvdGltZSgkdGhpcy0+Y3VycmVudERhdGUpKTsN
CiMJCQlzd2l0Y2ggKCRub3dbIndkYXkiXSkgew0KIwkJCQljYXNlIDA6ICR0aGlzLT5jdXJyZW50
RGF0ZSA9IGRhdGUgKCAnWS1tLWonICwgc3RydG90aW1lICggJysxIGRheScgLCBzdHJ0b3RpbWUg
KCAkdGhpcy0+Y3VycmVudERhdGUgKSApICk7IGJyZWFrOw0KIwkJCQljYXNlIDY6ICR0aGlzLT5j
dXJyZW50RGF0ZSA9IGRhdGUgKCAnWS1tLWonICwgc3RydG90aW1lICggJysyIGRheScgLCBzdHJ0
b3RpbWUgKCAkdGhpcy0+Y3VycmVudERhdGUgKSApICk7IGJyZWFrOw0KIwkJCX0JDQojCQl9DQoJ
CQ0KIwkJI2ZvciBoaWdobGlnaHRpbmcgdGhlIGNvcnJlY3QgZGF5DQojCQkkbm93ID0gZ2V0RGF0
ZSgpOw0KIwkJJHRoaXMtPnRvZGF5ID0gZGF0ZSgnWS1tLWonICwgc3RydG90aW1lKCRub3dbInll
YXIiXS4iLSIuJG5vd1sibW9uIl0uIi0iLiRub3dbIm1kYXkiXSkpOw0KCQkNCgkJIyBpbml0aWFs
IG5ldyBsaW5lDQoJCSR0aGlzLT5jcmVhdGVOZXdMaW5lID0gdHJ1ZTsNCiMJCSMgY291bnRlciBm
b3IgdGhlIGRheXMNCiMJCSR0aGlzLT5udW1EYXkgPSAwOw0KIwkJIyBjdXJyZW50IGNvdW50ZXIg
Zm9yIGRheXMNCiMJCSR0aGlzLT5jdXJyRGF5ID0gMDsNCgkJCQkNCgkJI2dldCBkZXBlbmRlbmNp
ZXMNCgkJJHNxbCA9IG5ldyBUUl9TUUw7DQoJCSRzcWwtPnNldENvbm5lY3RvcigkdGhpcy0+Z2V0
Q29ubmVjdG9yKCkpOw0KCQkNCgkJJHNxbC0+c2V0RnJvbSgidGVzdF9jYXNlX3J1bnMiKTsNCgkJ
JHNxbC0+YWRkRmllbGQoInRlc3RfY2FzZV9kZXBlbmRlbmNpZXMiLCJibG9ja2VkIik7CQkNCgkJ
JHNxbC0+YWRkRmllbGQoInRlc3RfY2FzZV9kZXBlbmRlbmNpZXMiLCJkZXBlbmRzb24iKTsNCgkJ
JHNxbC0+YWRkSm9pbigiSW5uZXIiLCI9IiwidGVzdF9jYXNlX2RlcGVuZGVuY2llcyIsImJsb2Nr
ZWQiLCJ0ZXN0X2Nhc2VfcnVucyIsImNhc2VfaWQiKTsNCgkJJHNxbC0+YWRkV2hlcmUoInRlc3Rf
Y2FzZV9ydW5zIiwicnVuX2lkIiwiPSIsJHRoaXMtPmdldFJ1bklEKCkpOw0KCQkkc3FsLT5hZGRH
cm91cFNvcnQoIk9yZGVyIiwidGVzdF9jYXNlX2RlcGVuZGVuY2llcyIsImJsb2NrZWQiKTsNCgkJ
JHJlc3VsdCA9ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZXhlY3V0ZSgkc3FsLT50b1NRTCgpKTsg
DQoNCgkJd2hpbGUgKCRsaW5lID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5mZXRjaCgkcmVzdWx0
KSkgew0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGxpbmVbImRlcGVuZHNvbiJdLCR0aGlzLT5k
ZXBlbmRlbmNpZXMpID09IGZhbHNlKSB7DQoJCQkJJHRoaXMtPmRlcGVuZGVuY2llc1skbGluZVsi
ZGVwZW5kc29uIl1dID0gYXJyYXkoKTsNCgkJCX0NCgkJCSR0aGlzLT5kZXBlbmRlbmNpZXNbJGxp
bmVbImRlcGVuZHNvbiJdXVtdID0gJGxpbmVbImJsb2NrZWQiXTsgDQoJCX0NCgkJDQoJCSR0aGlz
LT5udW1PZkRheXMgPSAxOw0KCQkkdGhpcy0+bnVtT2ZIb3VycyA9IDA7DQoJCSR0aGlzLT5udW1P
Zk1pbnV0ZXMgPSAwOw0KCX0NCgkNCglwdWJsaWMgZnVuY3Rpb24gbmV3RGF0YUxpbmUoJGxpbmUp
IHsNCgkJJG91dHB1dCA9ICIiOw0KDQoJCWlmIChpc3NldCgkdGhpcy0+cHJldmlvdXNMaW5lKSkg
ew0KCQkJJHRpbWUyID0gZXhwbG9kZSgiOiIsICRsaW5lWyJTdGFydCBUaW1lIl0pOw0KCQkJJHRp
bWUyID0gJHRpbWUyWzBdKjYwKyR0aW1lMlsxXTsNCgkJCSR0aW1lMSA9IGV4cGxvZGUoIjoiLCAk
dGhpcy0+cHJldmlvdXNMaW5lWyJTdGFydCBUaW1lIl0pOw0KCQkJJHRpbWUxID0gJHRpbWUxWzBd
KjYwKyR0aW1lMVsxXTsNCgkJCWlmICgkdGltZTEgPiAkdGltZTIpIHsNCgkJCQkkdGhpcy0+Y3Jl
YXRlTmV3TGluZSA9IHRydWU7DQoJCQl9IGVsc2Ugew0KCQkJCSR0aGlzLT5jcmVhdGVOZXdMaW5l
ID0gZmFsc2U7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+Y3JlYXRlTmV3TGluZSA9IHRy
dWU7DQoJCX0JCQ0KCQkNCiMJCWlmICgkdGhpcy0+Y3JlYXRlTmV3TGluZSkgew0KIwkJCSR0aGlz
LT5jdXJyRGF5Kys7DQojCQkJJG91dHB1dCA9ICI8dHI+PHRkIGNsYXNzPVwidGVzdG9waWFfTmV3
RGF5XCIgY29sc3Bhbj1cIjExXCI+PGI+Ii4iRGF5ICIuJHRoaXMtPmN1cnJEYXkuIi8iLiR0aGlz
LT5udW1EYXkuIiAtICIuJHRoaXMtPmN1cnJlbnREYXRlLiI8L2I+PC90ZD48L3RyPiI7DQojCQl9
DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIG5ld0xpbmVC
ZWdpbigkbGluZSkgew0KCQkkb3V0cHV0ID0gIiI7DQoJCSMgcmVzb3VyY2UgY29uZmxpY3Q/DQoJ
CWlmIChpc3NldCgkdGhpcy0+cHJldmlvdXNMaW5lKSBhbmQgJHRoaXMtPmhpZ2hsaWdodFJlc291
cmNlQ29uZmxpY3RzID09ICJ0cnVlIikgew0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGxpbmVb
IlRlc3QgQ2FzZSJdLCAkdGhpcy0+Y29uZmxpY3RzKSkgew0KCQkJCXJldHVybiAiPHRyIGNsYXNz
PVwidGVzdG9waWFfUm93UmVzb3VyY2VDb25mbGljdFwiPiI7DQoJCQl9DQoJCX0NCgkJcmV0dXJu
ICRvdXRwdXQ7DQoJfQ0KCQ0KCXB1YmxpYyBmdW5jdGlvbiBpbmplY3RCb2R5KCAkcmVzdWx0ICkg
ew0KIwkJaWYgKCR0aGlzLT5kZXBlbmRlbmN5R3JhcGhPbmx5ID09ICJ0cnVlIikgew0KIwkJCXJl
dHVybiAkdGhpcy0+cmVuZGVyRGlncmFwaCgiaW1nIik7DQojCQl9IGVsc2Ugew0KCQkJcmV0dXJu
ICR0aGlzLT5yZW5kZXJQbGFpbkhUTUxCb2R5KCRyZXN1bHQpOw0KIwkJfQ0KCX0NCgkNCiMJcHJp
dmF0ZSBmdW5jdGlvbiByZWN1cnNlTGlzdCgkbGlzdCwgJGtleSkgew0KIwkJaWYgKGFycmF5X2tl
eV9leGlzdHMoJGtleSwgJGxpc3QpKSB7DQojCQkJJG5leHQgPSAkbGlzdFska2V5XTsNCiMNCiMJ
CQlmb3JlYWNoICgkbmV4dCBhcyAkZWxlbSkgew0KIwkJCQkjbWFrZSBzdXJlIHRoYXQgdGhlIGVs
ZW1lbnQgaXMgbm90IGluc2VydGVkIHR3aWNlIGR1ZSB0byBhIGZvcm1lciBkZXBlbmRlbmN5DQoj
CQkJCSRrZXkgPSBhcnJheV9zZWFyY2goJGVsZW0sICR0aGlzLT5jYXNlTGlzdCk7DQojCQkJCXdo
aWxlICgka2V5KSB7DQojCQkJCQl1bnNldCgkdGhpcy0+Y2FzZUxpc3RbJGtleV0pOw0KIwkJCQkJ
JGtleSA9IGFycmF5X3NlYXJjaCgkZWxlbSwgJHRoaXMtPmNhc2VMaXN0KTsNCiMJCQkJfQ0KIwkJ
DQojCQkJCSR0aGlzLT5jYXNlTGlzdFtdID0gJGVsZW07DQojCQkJfQ0KIwkJCWZvcmVhY2ggKCRu
ZXh0IGFzICRlbGVtKSB7DQojCQkJCSR0aGlzLT5yZWN1cnNlTGlzdCgkbGlzdCwgJGVsZW0pOwkJ
CQ0KIwkJCX0NCiMJCX0NCiMJfQ0KCS8qKg0KCSogY3VzdG9tIGZ1bmN0aW9uIGZvciBzb3J0aW5n
IHRoZSB0ZXN0IGNhc2VzIGFjY29yZGluZyB0byB0aGUgc3RhcnQgdGltZSAtLT4gbW9kaWZpZWQg
aXQgdG8gdXNlIHRoZSBDYXRlZ29yeSBmaWVsZAoJKi8NCglwcml2YXRlIGZ1bmN0aW9uIHNvcnRD
YXNlcygkYSwgJGIpIHsNCgkJaWYgKCRhWyJDYXRlZ29yeSJdID09ICRiWyJDYXRlZ29yeSJdKSB7
DQoJCQlyZXR1cm4gMDsNCgkJfQ0KCQlyZXR1cm4gKCRhWyJDYXRlZ29yeSJdIDwgJGJbIkNhdGVn
b3J5Il0pID8gLTEgOiAxOw0KCX0JDQoJDQoJLyoqDQoJKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
YWJzdHJhY3QgZnVuY3Rpb24gb2YgdGhlIHN1cGVyIGNsYXNzDQoJKi8NCglmdW5jdGlvbiBnZXRS
ZXBvcnQoICRyZXN1bHQgKSB7DQoJCSMgY2hlY2sgYW5kIHNldCBzb21lIHBhcmFtZXRlcnMNCgkJ
IyBmaWVsZCBmb3IgY2FsY3VsYXRpbmcgdGhlIHRvdGFsIG51bWJlcjsgY291bGQgYmUgc2V0IHRv
IGEgZmllbGQgdGhhdCBpcyBpbmNsdWRlZCBpbiB0aGUgZmllbGQgbGlzdCBvZiB0aGUgc2VsZWN0
IHN0YXRlbWVudCBvciB0byByb3djb3VudCwgd2hpY2ggd2lsbCBzaW1wbHkgY291bnQgbnVtYmVy
IG9mIHJvd3MJDQoJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5nZXQoInRvdGFsIikgPT0gInRydWUi
KSB7DQoJCQkkdGhpcy0+Z2V0QXJncygpLT5zZXQoInRvdGFsIiwgIiIpOw0KCQl9DQoJCQ0KIyMJ
CSNnZXQgdGhlIGRlcGVuZGluZyB0ZXN0IGNhc2VzIGZvciB0aGUgdGVzdCBydW4NCiMjCQkkc3Fs
U3RyID0gIiI7DQojIwkJJHNxbFN0ci49ICJzZWxlY3QgKiBmcm9tICIuJHRoaXMtPmdldENvbm5l
Y3RvcigpLT5nZXRUYWJsZSgidGVzdF9jYXNlX2RlcGVuZGVuY2llcyIpLiIgd2hlcmUgIjsNCiMj
CQkkc3FsU3RyLj0gIiBibG9ja2VkIGluIChzZWxlY3QgY2FzZV9pZCBmcm9tICIuJHRoaXMtPmdl
dENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9jYXNlX3J1bnMiKS4iIHdoZXJlIHJ1bl9pZCA9
ICIuJHRoaXMtPmdldFJ1bklEKCkuIikiOw0KIyMJCSRzcWxTdHIuPSAiIG9yIGRlcGVuZHNvbiBp
biAoc2VsZWN0IGNhc2VfaWQgZnJvbSAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUo
InRlc3RfY2FzZV9ydW5zIikuIiB3aGVyZSBydW5faWQgPSAiLiR0aGlzLT5nZXRSdW5JRCgpLiIp
IjsNCiMjCQkkcmVzdWx0ID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5leGVjdXRlKCRzcWxTdHIp
Ow0KIyMJCQ0KIyMJCSRjYXNlcyA9IGFycmF5KCk7DQojIwkJd2hpbGUgKCRsaW5lID0gJHRoaXMt
PmdldENvbm5lY3RvcigpLT5mZXRjaCgkcmVzdWx0KSkgew0KIyMJCQkkY2FzZSA9IGFycmF5KCJp
ZCIgPT4gJGxpbmVbImJsb2NrZWQiXSwgImRlcGVuZHNvbiIgPT4gJGxpbmVbImRlcGVuZHNvbiJd
KTsgDQojIwkJCSRjYXNlc1tdID0gJGNhc2U7DQojIwkJfQ0KIyMJCQ0KIyMJCSNmaW5kaW5nIHRo
ZSBmaXJzdCBjYXNlIChyb290KSBvZiB0aGUgYWdlbmRhDQojIwkJJHJvb3QgPSAtMTsNCiMjCQkk
cm9vdElkID0gMDsNCiMjCQkkaWR4ID0gMDsNCiMjCQkkdGhpcy0+bW9yZVJvb3RzID0gdHJ1ZTsN
CiMjCQlmb3JlYWNoKCRjYXNlcyBhcyAkY2FzZSkgew0KIyMJCQkkZm91bmQ9ZmFsc2U7DQojIwkJ
CWZvcmVhY2goJGNhc2VzIGFzICRjYXNlMikgew0KIyMJCQkJaWYgKCRjYXNlWyJpZCJdID09ICRj
YXNlMlsiZGVwZW5kc29uIl0pIHsNCiMjCQkJCQkkZm91bmQ9dHJ1ZTsNCiMjCQkJCQlicmVhazsN
CiMjCQkJCX0NCiMjCQkJfQ0KIyMJCQkNCiMjCQkJaWYgKCEkZm91bmQpIHsNCiMjCQkJCWlmICgk
cm9vdCAhPSAtMSBhbmQgJGNhc2VzWyRyb290XSAhPSAkcm9vdElkKSB7DQojIwkJCQkJI21vcmUg
dGhhbiBvbmUgcm9vdCBwcmVzZW50IC0+IGVycm9yDQojIwkJCQkJJHRoaXMtPm1vcmVSb290cyA9
IHRydWU7DQojIwkJCQl9IGVsc2Ugew0KIyMJCQkJCSRyb290ID0gJGlkeDsNCiMjCQkJCQkkcm9v
dElkID0gJGNhc2VzWyRyb290XTsNCiMjCQkJCX0NCiMjCQkJfQ0KIyMJCQkkaWR4Kys7DQojIwkJ
fQ0KIyMJCSRyb290ID0gJGNhc2VzWyRyb290XVsiaWQiXTsNCiMjCiMjCQkNCiMjCQkkbGlzdCA9
IGFycmF5KCk7DQojIwkJZm9yZWFjaCAoJGNhc2VzIGFzICRjYXNlKSB7DQojIwkJCWlmIChhcnJh
eV9rZXlfZXhpc3RzKCRjYXNlWyJpZCJdLCAkbGlzdCkpewojIwkJCQkkbmV4dCA9ICRsaXN0WyRj
YXNlWyJpZCJdXTsNCiMjCQkJCSRuZXh0W10gPSAkY2FzZVsiZGVwZW5kc29uIl07DQojIwkJCQkk
bGlzdFskY2FzZVsiaWQiXV0gPSAkbmV4dDsNCiMjCQkJfSBlbHNlIHsNCiMjCQkJCSRuZXh0ID0g
YXJyYXkoJGNhc2VbImRlcGVuZHNvbiJdKTsNCiMjCQkJCSRsaXN0WyRjYXNlWyJpZCJdXSA9ICRu
ZXh0Ow0KIyMJCQl9DQojIwkJfQ0KIyMJCQ0KIyMJCSNzZXJpYWxpemluZyB0aGUgZGVwZW5kZW50
IGNhc2VzIG9mIHRoZSBhZ2VuZGENCiMjCQkkdGhpcy0+Y2FzZUxpc3RbXSA9ICRyb290Ow0KIyMJ
CSR0aGlzLT5yZWN1cnNlTGlzdCgkbGlzdCwgJHJvb3QpOw0KIyMJCQ0KCQkjc2VsZWN0aW5nIHRo
ZSByZXN0IG9mIHRoZSB0ZXN0IGNhc2Ugd2l0aG91dCBkZXBlbmRlbmNpZXMgDQoJCWlmICgkdGhp
cy0+d2l0aERlcGVuZGVuY3kgPT0gImZhbHNlIikgew0KCQkJJHNxbFN0ciA9ICJzZWxlY3QgY2Fz
ZV9pZCBmcm9tICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9jYXNlX3J1
bnMiKS4iICI7DQoJCQkkc3FsU3RyLj0gIndoZXJlIHJ1bl9pZCA9ICIuJHRoaXMtPmdldFJ1bklE
KCkuIiAiOw0KJHNxbFN0ci49ICJhbmQgaXNjdXJyZW50ID0gMSI7ICMgRURJVEVEOiBhZGRlZCB0
aGlzIGxpbmUgdG8gc2VsZWN0IG9ubHkgY3VycmVudCBidWlsZCBhbmQgZW52aXJvbm1lbnQgY2Fz
ZSBydW5zCiMJCQkkc3FsU3RyLj0gIiBhbmQgY2FzZV9pZCBub3QgaW4gKHNlbGVjdCBibG9ja2Vk
IGZyb20gIi4kdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X2Nhc2VfZGVwZW5k
ZW5jaWVzIikuIikiOw0KIwkJCSRzcWxTdHIuPSAiIGFuZCBjYXNlX2lkIG5vdCBpbiAoc2VsZWN0
IGRlcGVuZHNvbiBmcm9tICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9j
YXNlX2RlcGVuZGVuY2llcyIpLiIpIjsNCgkJCSRyZXN1bHQgPSAkdGhpcy0+Z2V0Q29ubmVjdG9y
KCktPmV4ZWN1dGUoJHNxbFN0cik7DQoJCQkNCgkJCSRjYXNlcyA9IGFycmF5KCk7DQoJCQl3aGls
ZSAoJGxpbmUgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZldGNoKCRyZXN1bHQpKSB7DQoJCQkJ
JGNhc2VzW10gPSAkbGluZVsiY2FzZV9pZCJdOw0KCQkJfQkJDQoJCQkkdGhpcy0+Y2FzZUxpc3Qg
PSBhcnJheV9tZXJnZSgkY2FzZXMsICR0aGlzLT5jYXNlTGlzdCk7DQoJCX0NCgkJDQoJCSNzZWxl
Y3QgdGhlIHRlc3QgY2FzZSBkYXRhDQoJCSRzcWwgPSBuZXcgVFJfU1FMOw0KCQkkc3FsLT5zZXRD
b25uZWN0b3IoJHRoaXMtPmdldENvbm5lY3RvcigpKTsNCgkJDQoJCSRzcWwtPnNldEZyb20oInRl
c3RfY2FzZV9ydW5zIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNl
X2lkIiwgIlRlc3QgQ2FzZSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlcyIsInN1bW1h
cnkiLCAiU3VtbWFyeSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX2NhdGVnb3JpZXMi
LCJuYW1lIiwgIkNhdGVnb3J5Iik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVuX3N0
YXR1cyIsICJuYW1lIiwgIlN0YXR1cyIpOw0KIyMjCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNl
cyIsICJlc3RpbWF0ZWRfdGltZSIsICJEdXJhdGlvbiIpOw0KIyMjCQkkc3FsLT5hZGRGaWVsZCgi
dGVzdF9jYXNlX3J1bnMiLCAicnVubmluZ19kYXRlIiwgIlJ1biBEYXRlIik7DQoJCSRzcWwtPmFk
ZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVucyIsICJjbG9zZV9kYXRlIiwgIkNsb3NlIERhdGUiKTsNCgkJ
JHNxbC0+YWRkRmllbGQoInByb2ZpbGVzIiwgImxvZ2luX25hbWUiLCAiVGVzdGVyIik7DQoJCQ0K
CQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIsICJ0
ZXN0X2Nhc2VfcnVucyIsICJjYXNlX2lkIik7DQoJCSRzcWwtPmFkZEpvaW4oIklubmVyIiwgIj0i
LCAidGVzdF9jYXNlX2NhdGVnb3JpZXMiLCAiY2F0ZWdvcnlfaWQiLCAidGVzdF9jYXNlcyIsICJj
YXRlZ29yeV9pZCIpOw0KCQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9y
dW5fc3RhdHVzIiwgImNhc2VfcnVuX3N0YXR1c19pZCIsICJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNl
X3J1bl9zdGF0dXNfaWQiKTsNCgkJJHNxbC0+YWRkSm9pbigiSW5uZXIiLCAiPSIsICJwcm9maWxl
cyIsICJ1c2VyaWQiLCAidGVzdF9jYXNlcyIsICJkZWZhdWx0X3Rlc3Rlcl9pZCIpOw0KCQkNCgkJ
JHNxbC0+YWRkV2hlcmUoInRlc3RfY2FzZV9ydW5zIiwgInJ1bl9pZCIsICI9IiwgJHRoaXMtPmdl
dFJ1bklEKCksIiIpOw0KCQkkc3FsLT5hZGRXaGVyZSgidGVzdF9jYXNlcyIsICJjYXNlX2lkIiwg
Ij0iLCAiaWRQbGFjZWhvbGRlciIsICJBTkQiKTsJCQ0KJHNxbC0+YWRkV2hlcmUoInRlc3RfY2Fz
ZV9ydW5zIiwgImlzY3VycmVudCIsICI9IiwgIjEiLCAiQU5EIik7ICMgRURJVEVEOiBhZGRlZCB0
aGlzIGxpbmUgdG8gc2VsZWN0IG9ubHkgY3VycmVudCBidWlsZCBhbmQgZW52aXJvbm1lbnQgY2Fz
ZSBydW5zCgkJDQoJCSRzcWxTdHIgPSAkc3FsLT50b1NRTCgpOw0KDQoJCSR0aGlzLT5jYXNlRGF0
YSA9IGFycmF5KCk7CQkNCgkJZm9yZWFjaCAoJHRoaXMtPmNhc2VMaXN0IGFzICRjYXNlKSB7DQoJ
CQkkc3FsU3RyMiA9IHN0cl9yZXBsYWNlKCJpZFBsYWNlaG9sZGVyIiwkY2FzZSwkc3FsU3RyKTsg
DQoJCQkkcmVzdWx0ID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5leGVjdXRlKCRzcWxTdHIyKTsN
CgkJDQoJCQl3aGlsZSAoJGxpbmUgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZldGNoKCRyZXN1
bHQpKSB7DQojCQkJCWlmICgkbGluZVsiUnVuIERhdGUiXSA9PSAiIikgeyANCiMJCQkJCSRsaW5l
WyJSdW4gRGF0ZSJdID0gIi0iOyANCiMJCQkJfQ0KIwkJCQlpZiAoJGxpbmVbIkNsb3NlIERhdGUi
XSA9PSAiIikgeyANCiMJCQkJCSRsaW5lWyJDbG9zZSBEYXRlIl0gPSAiLSI7IA0KIwkJCQl9DQoJ
CQkJDQojCQkJCSMgZ2V0IHN0YXJ0L2VuZCB0aW1lcwkJCQkNCiMJCQkJJHRpbWVzID0gJHRoaXMt
PmhhbmRsZUR1cmF0aW9uVGltZXMoJGxpbmVbIlRlc3QgQ2FzZSJdLCAkbGluZVsiRHVyYXRpb24i
XSk7DQoJCQkJDQoJCQkJJHRoaXMtPmNhc2VEYXRhW10gPSBhcnJheSgNCgkJCQkJIlRlc3QgQ2Fz
ZSIgPT4gJGxpbmVbIlRlc3QgQ2FzZSJdLA0KCQkJCQkiU3VtbWFyeSIJPT4gJGxpbmVbIlN1bW1h
cnkiXSwNCgkJCQkJIkNhdGVnb3J5IiAJPT4gJGxpbmVbIkNhdGVnb3J5Il0sDQojCQkJCQkiRHVy
YXRpb24iCT0+ICRsaW5lWyJEdXJhdGlvbiJdLAkNCiMJCQkJCSJTdGFydCBUaW1lIj0+ICR0aW1l
c1swXSwNCiMJCQkJCSJFbmQgVGltZSIJPT4gJHRpbWVzWzFdLA0KCQkJCQkiU3RhdHVzIgk9PiAk
bGluZVsiU3RhdHVzIl0sDQojCQkJCQkiUnVuIERhdGUiCT0+ICRsaW5lWyJSdW4gRGF0ZSJdLA0K
CQkJCQkiQ2xvc2UgRGF0ZSI9PiAkbGluZVsiQ2xvc2UgRGF0ZSJdLA0KCQkJCQkiVGVzdGVyIgk9
PiAkbGluZVsiVGVzdGVyIl0sDQoJCQkJCSJEZXBlbmRzIG9uIj0+ICItIiwNCiMJCQkJCSJTdGFy
dFRpbWVzdGFtcCI9PiAkdGltZXNbMl0NCgkJCQkpOwkNCgkJCX0JCQ0KCQl9DQoJCQ0KCQkjIHNv
cnRpbmcgdGhlIHRlc3QgY2FzZXMgdXNpbmcgdGhlIGZpZWxkICJDYXRlZ29yeSINCgkJdXNvcnQo
JHRoaXMtPmNhc2VEYXRhLCBhcnJheSgiVFJfcmVwQWdlbmRhIiwgInNvcnRDYXNlcyIpKTsJDQoJ
CQ0KIwkJIyBhcyB0aGlzIHNvcnQgY291bGQgbm90IGJlIHN0YWJsZSBpZiBzdGFydCB0aW1lIGFu
ZCB0ZXN0ZXIgYXJlIGVxdWFsIHdlIGhhdmUgdG8gZG8gDQojCQkjIHNvbWUgbW9yZSBmb3IgZWZm
b3J0IGZvciBnZXR0aW5nIHJlc291cmNlIGNvbmZsaWN0cw0KIwkJJHRoaXMtPmNvbmZsaWN0cyA9
IGFycmF5KCk7DQojCQlmb3JlYWNoICgkdGhpcy0+Y2FzZURhdGEgYXMgJGNhc2UpIHsNCiMJCQlm
b3JlYWNoICgkdGhpcy0+Y2FzZURhdGEgYXMgJGNhc2UyKSB7DQojCQkJCWlmICgkY2FzZVsiU3Rh
cnRUaW1lc3RhbXAiXSA9PSAkY2FzZTJbIlN0YXJ0VGltZXN0YW1wIl0gYW5kIA0KIwkJCQkgICAg
JGNhc2VbIlRlc3QgQ2FzZSJdICE9ICRjYXNlMlsiVGVzdCBDYXNlIl0gYW5kDQojCQkJCSAgICAk
Y2FzZVsiVGVzdGVyIl0gPT0gJGNhc2UyWyJUZXN0ZXIiXSkgew0KIwkJCQkJJHRoaXMtPmNvbmZs
aWN0c1skY2FzZTJbIlRlc3QgQ2FzZSJdXSA9ICRjYXNlWyJUZXN0IENhc2UiXTsNCiMJCQkJfQ0K
IwkJCX0gDQojCQl9DQojCQkNCiMJCSNyZW1vdmluZyB0aGUgZWxlbWVudCAiU3RhcnRUaW1lc3Rh
bXAiIGFzIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQNCiMJCWZvcmVhY2ggKCR0aGlzLT5jYXNlRGF0
YSBhcyAkY2FzZSkgew0KIwkJCXVuc2V0KCRjYXNlWyJTdGFydFRpbWVzdGFtcCJdKTsNCiMJCQkk
Y2FzZXN0bXBbXSA9ICRjYXNlOw0KIwkJfQ0KIwkJJHRoaXMtPmNhc2VEYXRhID0gJGNhc2VzdG1w
Ow0KIwkJdW5zZXQoJGNhc2VzdG1wKTsNCgkJDQoJCSMgc2V0IHRoZSBmaWVsZCBjb3VudGVyDQoJ
CSR0aGlzLT5udW1PZlJvd3MgPSBjb3VudCgkdGhpcy0+Y2FzZURhdGEpOw0KCQkjIHNldCB0aGUg
ZmllbGQgbmFtZXMNCgkJJHRoaXMtPmNvbHVtbk5hbWVzID0gYXJyYXkoKTsNCgkJd2hpbGUgKGN1
cnJlbnQoJHRoaXMtPmNhc2VEYXRhWzBdKSAhPT0gZmFsc2UpIHsNCgkJCSR0aGlzLT5jb2x1bW5O
YW1lc1tdID0ga2V5KCR0aGlzLT5jYXNlRGF0YVswXSk7DQoJCQluZXh0KCR0aGlzLT5jYXNlRGF0
YVswXSk7DQoJCX0NCgkJcmVzZXQoJHRoaXMtPmNhc2VEYXRhWzBdKTsNCgkJJHRoaXMtPm51bU9m
Q29scyA9IGNvdW50KCR0aGlzLT5jb2x1bW5OYW1lcyk7DQoJCQ0KCQkkb3V0cHV0ID0gJHRoaXMt
PnJlbmRlclBsYWluSFRNTCggJHRoaXMtPmNhc2VEYXRhICk7CQ0KCQ0KCQkjcmV0dXJuaW5nIHRo
ZSBvdXRwdXQNCgkgICAgcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFJlcG9y
dE5hbWUoKSB7DQoJCXJldHVybiAiVGVzdCBSdW4gQWdlbmRhIjsNCgl9DQoJCQ0KCWZ1bmN0aW9u
IGdldFJlcG9ydEhlYWRlcigpIHsNCgkJcmV0dXJuICR0aGlzLT5nZXRTdGFuZGFyZFJ1bkhlYWRl
cigpOw0KCX0NCg0KCWZ1bmN0aW9uIGdldFJlcG9ydEZvb3RlcigpIHsNCiMJCWlmICgkdGhpcy0+
ZGVwZW5kZW5jeUdyYXBoT25seSA9PSAidHJ1ZSIpIHsNCiMJCQlyZXR1cm47DQojCQl9DQojCQkN
CiMJCWlmICghJHRoaXMtPm1vcmVSb290cykgew0KIwkJCSRvdXRwdXQgPSAiPGRpdj48cD4iOw0K
IwkJCSRvdXRwdXQuPSJEYXkgc3RhcnRzIGF0ICIuZGF0ZSgiSDppIixta3RpbWUoJHRoaXMtPnN0
YXJ0SG91ciwkdGhpcy0+c3RhcnRNaW51dGUsMCkpOw0KIwkJCSRvdXRwdXQuPSIgYW5kIGVuZHMg
YXQgIi5kYXRlKCJIOmkiLG1rdGltZSgkdGhpcy0+ZW5kSG91ciwkdGhpcy0+ZW5kTWludXRlLDAp
KTsNCiMJCQkkb3V0cHV0Lj0iLiBXZWVrZW5kcyBhcmUgaWdub3JlZDogIi4kdGhpcy0+aWdub3Jl
V2Vla2VuZDsNCiMJCQkkb3V0cHV0Lj0iPC9wPjwvZGl2PiI7IA0KIwkJCSRvdXRwdXQuPSI8ZGl2
PjxwPk51bWJlciBvZiB0ZXN0IGNhc2VzOiIuY291bnQoJHRoaXMtPmNhc2VMaXN0KTsNCiMJCQkk
b3V0cHV0Lj0iIC0gVG90YWwgZGF5czoiLiR0aGlzLT5udW1EYXk7DQojCQkJJG91dHB1dC49IiAt
IFRvdGFsIHRpbWU6Ii4kdGhpcy0+bnVtT2ZIb3Vycy4iOiIuJHRoaXMtPm51bU9mTWludXRlczsN
CiMJCQkkb3V0cHV0Lj0iIC0gIi4kdGhpcy0+cmVuZGVyRGlncmFwaCgpOw0KIwkJCSRvdXRwdXQu
PSI8L3A+PC9kaXY+IjsNCiMJCX0gZWxzZSB7DQojCQkJJG91dHB1dCA9ICI8ZGl2IHN0eWxlPVwi
dGV4dC1hbGlnbjpjZW50ZXJcIj48Yj4iLiR0aGlzLT5yZW5kZXJEaWdyYXBoKCkuIjwvYj48L2Rp
dj4iOw0KIwkJfQ0KIwkJDQojCQlyZXR1cm4gJG91dHB1dDsNCnJldHVybjsgI0VESVQ6IGFkZGVk
IGEgc2ltcGxlIHJldHVybiBmb3IgdGhpcyBmdW5jdGlvbgoJfQkNCg0KIwlwcml2YXRlIGZ1bmN0
aW9uIGhhbmRsZUR1cmF0aW9uVGltZXMoJGNhc2VpZCwgJHZhbHVlKSB7CQkNCiMJCSNpZiBydW5u
aW5nIGluIHBhcmFsbGVsIHRvIGFub3RoZXIgY2FzZSBnZXQgdGhlIHN0YXJ0IGlkIG9mIHRoaXMg
Y2FzZQ0KIwkJaWYgKGFycmF5X2tleV9leGlzdHMoJGNhc2VpZCwgJHRoaXMtPmRlcGVuZGVuY2ll
cykpIHsNCiMJCQkkZGVwZW5kZW5jaWVzID0gJHRoaXMtPmRlcGVuZGVuY2llc1skY2FzZWlkXTsN
CiMJCQkkbWF4ID0gMDsNCiMJCQlmb3JlYWNoICgkZGVwZW5kZW5jaWVzIGFzICRkZXBlbmRlbmN5
KSB7DQojCQkJCWlmICgkbWF4IDwgJHRoaXMtPmVuZFRpbWVzWyRkZXBlbmRlbmN5XSkgew0KIwkJ
CQkJJG1heCA9ICR0aGlzLT5lbmRUaW1lc1skZGVwZW5kZW5jeV07DQojCQkJCX0NCiMJCQl9DQoj
CQkJJGg9ZXhwbG9kZSgiOiIsIGRhdGUoIkg6aSIsICRtYXgpKTsNCiMJCQkkdGhpcy0+Y3Vyckhv
dXIgPSAkaFswXTsNCiMJCQkkdGhpcy0+Y3Vyck1pbnV0ZSA9ICRoWzFdOw0KIwkJfSBlbHNlIHsN
CiMJCQkkbWF4PW1rdGltZSgkdGhpcy0+c3RhcnRIb3VyLCR0aGlzLT5zdGFydE1pbnV0ZSwwLDAs
MCwwKTsNCiMJCQkkaD1leHBsb2RlKCI6IiwgZGF0ZSgiSDppIiwgJG1heCkpOw0KIwkJCSR0aGlz
LT5jdXJySG91ciA9ICRoWzBdOw0KIwkJCSR0aGlzLT5jdXJyTWludXRlID0gJGhbMV07CQkNCiMJ
CX0NCiMJCQkJDQojCQkkc3RhcnRUaW1lPSIiOw0KIwkJJGVuZFRpbWU9IiI7DQojCQkNCiMJCSNj
YWxjIHRoZSBzdGFydCB0aW1lIGluIG1pbnV0ZXMgDQojCQkkc3RhcnQgPSAkdGhpcy0+Y3Vyckhv
dXIgKiA2MCArICR0aGlzLT5jdXJyTWludXRlOw0KIwkJJHN0YXJ0VGltZT1kYXRlKCJIOmkiLG1r
dGltZSgkdGhpcy0+Y3VyckhvdXIsJHRoaXMtPmN1cnJNaW51dGUsMCwwLDAsMCkpOw0KIwkJDQoj
CQkjY2FsYyB0aGUgc3RhcnQgdGltZXN0YW1wDQojCQkkY2RhdGUgPSBleHBsb2RlKCItIiwkdGhp
cy0+Y3VycmVudERhdGUpOw0KIwkJJHN0YXJ0VGltZXN0YW1wID0gbWt0aW1lKCR0aGlzLT5jdXJy
SG91ciwkdGhpcy0+Y3Vyck1pbnV0ZSwwLCRjZGF0ZVsxXSwkY2RhdGVbMl0sJGNkYXRlWzBdKTsJ
CQ0KIwkJDQojCSAgICAjYWRkIHRoZSBkdXJhdGlvbg0KIwkJJGR1cmF0aW9uPWV4cGxvZGUoIjoi
LCR2YWx1ZSk7DQojCQkkdGhpcy0+Y3VyckhvdXIrPSRkdXJhdGlvblswXTsNCiMJCSR0aGlzLT5j
dXJyTWludXRlKz0kZHVyYXRpb25bMV07DQojCQkjaGFuZGxlIG1pbnV0ZXMgPj0gNjANCiMJCWlm
ICgkdGhpcy0+Y3Vyck1pbnV0ZSA+PSA2MCkgew0KIwkJCSR0aGlzLT5jdXJySG91cis9MTsNCiMJ
CQkkdGhpcy0+Y3Vyck1pbnV0ZS09NjA7DQojCQl9CQkNCiMJCQ0KIwkJI2FkZCB0b3RhbCB0aW1l
DQojCQkkdGhpcy0+bnVtT2ZIb3Vycys9JGR1cmF0aW9uWzBdOzsNCiMJCSR0aGlzLT5udW1PZk1p
bnV0ZXMrPSRkdXJhdGlvblsxXTsNCiMJCWlmICgkdGhpcy0+bnVtT2ZNaW51dGVzID49IDYwKSB7
DQojCQkJJHRoaXMtPm51bU9mSG91cnMrPTE7DQojCQkJJHRoaXMtPm51bU9mTWludXRlcy09NjA7
DQojCQl9CQ0KIwkJDQojCQkjY2FsYyB0aGUgZW5kIHRpbWUgaW4gbWludXRlcw0KIwkJJGVuZCA9
ICR0aGlzLT5jdXJySG91ciAqIDYwICsgJHRoaXMtPmN1cnJNaW51dGU7DQojCQkjZm9ybWF0IHRo
ZSBlbmQgdGltZSANCiMJCSRlbmRUaW1lLj1kYXRlKCJIOmkiLG1rdGltZSgkdGhpcy0+Y3Vyckhv
dXIsJHRoaXMtPmN1cnJNaW51dGUsMCwwLDAsMCkpOw0KIwkJCQkJCQkJDQojCQkjcmVzZXQgdGhl
IHRpbWUgY291bnRlcnMgaWYgbmVlZGVkDQojCQlpZiAoJHRoaXMtPmN1cnJIb3VyID49ICR0aGlz
LT5lbmRIb3VyKSB7DQojCQkJJG1heD1ta3RpbWUoJHRoaXMtPnN0YXJ0SG91ciwkdGhpcy0+c3Rh
cnRNaW51dGUsMCwwLDAsMCk7DQojCQkJJGg9ZXhwbG9kZSgiOiIsIGRhdGUoIkg6aSIsICRtYXgp
KTsNCiMJCQkkdGhpcy0+Y3VyckhvdXIgPSAkaFswXTsNCiMJCQkkdGhpcy0+Y3Vyck1pbnV0ZSA9
ICRoWzFdOwkJCQ0KIwkJCQkNCiMJCQkkdGhpcy0+bnVtRGF5Kys7DQojCQkJDQojCQkJJHRoaXMt
PmN1cnJlbnREYXRlID0gZGF0ZSAoICdZLW0taicgLCBzdHJ0b3RpbWUgKCAnKzEgZGF5JyAsIHN0
cnRvdGltZSAoICR0aGlzLT5jdXJyZW50RGF0ZSApICkgKTsNCiMJCQlpZiAoJHRoaXMtPmlnbm9y
ZVdlZWtlbmQgPT0gImZhbHNlIikgew0KIwkJCQkkbm93ID0gZ2V0RGF0ZShzdHJ0b3RpbWUoJHRo
aXMtPmN1cnJlbnREYXRlKSk7DQojCQkJCXN3aXRjaCAoJG5vd1sid2RheSJdKSB7DQojCQkJCQlj
YXNlIDA6ICR0aGlzLT5jdXJyZW50RGF0ZSA9IGRhdGUgKCAnWS1tLWonICwgc3RydG90aW1lICgg
JysxIGRheScgLCBzdHJ0b3RpbWUgKCAkdGhpcy0+Y3VycmVudERhdGUgKSApICk7IGJyZWFrOw0K
IwkJCQkJY2FzZSA2OiAkdGhpcy0+Y3VycmVudERhdGUgPSBkYXRlICggJ1ktbS1qJyAsIHN0cnRv
dGltZSAoICcrMiBkYXknICwgc3RydG90aW1lICggJHRoaXMtPmN1cnJlbnREYXRlICkgKSApOyBi
cmVhazsNCiMJCQkJfQ0KIwkJCX0NCiMJCQkNCiMJCQkjYWRkIHRvdGFsIG51bWJlciBvZiBkYXlz
DQojCQkJJHRoaXMtPm51bU9mRGF5cysrOw0KIwkJfSAgICAgICAJCQ0KIwkJDQojCQkjc2V0IHRo
ZSBlbmQgdGltZSBmb3IgdGhpcyBjYXNlOyBuZWVkZWQgZm9yIGNhc2VzIHJ1bm5pbmcgaW4gcGFy
YWxsZWwNCiMJCSRjZGF0ZSA9IGV4cGxvZGUoIi0iLCR0aGlzLT5jdXJyZW50RGF0ZSk7DQojCQkk
dGhpcy0+ZW5kVGltZXNbJGNhc2VpZF0gPSBta3RpbWUoJHRoaXMtPmN1cnJIb3VyLCR0aGlzLT5j
dXJyTWludXRlLDAsJGNkYXRlWzFdLCRjZGF0ZVsyXSwkY2RhdGVbMF0pOw0KIwkJDQojCQlyZXR1
cm4gYXJyYXkoJHN0YXJ0VGltZSwgJGVuZFRpbWUsICRzdGFydFRpbWVzdGFtcCk7DQojCX0NCiMJ
DQojCXByaXZhdGUgZnVuY3Rpb24gaGFuZGxlVGltZSgkY2FzZWlkLCAkdmFsdWUpIHsNCiMJCSRr
ZXkgPSAwOw0KIwkJZm9yZWFjaCgkdGhpcy0+Y2FzZURhdGEgYXMgJGNhc2UpIHsNCiMJCQlpZiAo
JGNhc2VbIlRlc3QgQ2FzZSJdID09ICRjYXNlaWQpIHsNCiMJCQkJYnJlYWs7DQojCQkJfQ0KIwkJ
CSRrZXkrKzsNCiMJCX0NCiMJCQ0KIwkJJHN0YXJ0ID0gZXhwbG9kZSgiOiIsJHRoaXMtPmNhc2VE
YXRhWyRrZXldWyJTdGFydCBUaW1lIl0pOw0KIwkJJGVuZCAgID0gZXhwbG9kZSgiOiIsJHRoaXMt
PmNhc2VEYXRhWyRrZXldWyJFbmQgVGltZSJdKTsNCiMJCSRzdGFydCA9ICRzdGFydFswXSo2MCsk
c3RhcnRbMV07DQojCQkkZW5kID0gJGVuZFswXSo2MCskZW5kWzFdOwkJDQojCQkNCiMJCSNtYXJr
IHRoZSBjYXNlcyB0aGF0IGFyZSBjdXJyZW50bHkgZHVlDQojCQkkbm93ID0gZ2V0RGF0ZSgpOw0K
IwkgICAgJG5vd1RpbWUgPSAkbm93WyJob3VycyJdKjYwKyRub3dbIm1pbnV0ZXMiXTsNCiMJICAg
IGlmICgkc3RhcnQgPD0gJG5vd1RpbWUgYW5kICRlbmQgPj0gJG5vd1RpbWUgYW5kICR0aGlzLT5j
dXJyZW50RGF0ZSA9PSAkdGhpcy0+dG9kYXkpIHsNCiMJICAgIAkkY2xhc3MgPSAidGVzdG9waWFf
VGVzdENhc2VEdWUiOw0KIwkgICAgfSBlbHNlIHsNCiMJICAgIAkkY2xhc3MgPSAidGVzdG9waWFf
VGVzdENhc2VOb3REdWUiOw0KIwkgICAgfQkJICAgIA0KIwkgICAgDQojCQkkb3V0cHV0PSI8dGQg
Y2xhc3M9XCIuJGNsYXNzLlwiPiIuaHRtbGVudGl0aWVzKCR2YWx1ZSkuIjwvdGQ+IjsNCiMJCQ0K
IwkJcmV0dXJuICRvdXRwdXQ7DQojCX0NCgkJDQoJZnVuY3Rpb24gcmVuZGVyQ2VsbCgkdHlwZSwg
JGNvbE5vLCAkZmllbGRfbmFtZSwgJHZhbHVlLCAkbGluZU5vLCAkbGluZSkgew0KCQkkb3V0cHV0
ID0gIiI7DQoJCQ0KCQkjIGZvciBnZXR0aW5nIHRoZSBmaWVsZCBuYW1lcw0KCQkkc3FsID0gbmV3
IFRSX1NRTDsNCgkJDQoJCWlmICgkdHlwZT09ImJvZHkiKSB7DQoJCQlzd2l0Y2ggKCRmaWVsZF9u
YW1lKSB7DQoJCQkJY2FzZSAiVGVzdCBDYXNlIjogDQoJCQkJCQkkb3V0cHV0PSI8dGQgc3R5bGU9
XCJ0ZXh0LWFsaWduOmNlbnRlclwiPjxhIGhyZWY9XCIiLiR0aGlzLT5nZXRBcmdzKCktPmdldCgi
YnpzZXJ2ZXIiKS4iL3RyX3Nob3dfY2FzZS5jZ2k/Y2FzZV9pZD0iLiR2YWx1ZS4iXCI+Ii4kdmFs
dWUuIjwvYT48L3RkPiI7DQoJCQkJCQlicmVhazsNCgkJCQljYXNlICJTdGF0dXMiOg0KCQkJCQkJ
JGNsYXNzID0gIiI7DQoJCQkJCQkkY2xhc3MgPSAidGVzdG9waWFfVGVzdENhc2UiLiR2YWx1ZTsJ
CQkJCQ0KCQkJCQkJJG91dHB1dCA9ICI8dGQgY2xhc3M9XCIiLiRjbGFzcy4iXCI+Ii4kdmFsdWUu
IjwvdGQ+IjsNCgkJCQkJCWJyZWFrOw0KIwkJCQljYXNlICJEdXJhdGlvbiI6DQojCQkJCQkJJG91
dHB1dCA9ICR0aGlzLT5oYW5kbGVUaW1lKCRsaW5lWyJUZXN0IENhc2UiXSwgJHZhbHVlKTsNCiMJ
CQkJCQlicmVhazsNCiMJCQkJY2FzZSAiU3RhcnQgVGltZSI6DQojCQkJCQkJJG91dHB1dCA9ICR0
aGlzLT5oYW5kbGVUaW1lKCRsaW5lWyJUZXN0IENhc2UiXSwgJHZhbHVlKTsNCiMJCQkJCQlicmVh
azsNCiMJCQkJY2FzZSAiRW5kIFRpbWUiOg0KIwkJCQkJCSRvdXRwdXQgPSAkdGhpcy0+aGFuZGxl
VGltZSgkbGluZVsiVGVzdCBDYXNlIl0sICR2YWx1ZSk7DQojCQkJCQkJYnJlYWs7CQkJCQkJDQoJ
CQkJY2FzZSAiVGVzdGVyIjoNCgkJCQkJCSRvdXRwdXQuPSI8dGQ+PGEgaHJlZj1cIm1haWx0bzoi
LiR2YWx1ZS4iXCI+Ii4kdmFsdWUuIjwvdGQ+IjsNCgkJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIkRl
cGVuZHMgb24iOg0KCQkJCQkJJG91dHB1dCA9ICI8dGQ+IjsNCgkJCQkJCSRjYXNlaWQgPSAkbGlu
ZVsiVGVzdCBDYXNlIl07DQoJCQkJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkY2FzZWlkLCAkdGhp
cy0+ZGVwZW5kZW5jaWVzKSkgew0KCQkJCQkJCSRkZXBlbmRlbmNpZXMgPSAkdGhpcy0+ZGVwZW5k
ZW5jaWVzWyRjYXNlaWRdOw0KCQkJCQkJCSRpID0gMDsNCgkJCQkJCQlmb3JlYWNoICgkZGVwZW5k
ZW5jaWVzIGFzICRkZXBlbmRlbmN5KSB7DQoJCQkJCQkJCWlmICgkaSA+IDApIHsgDQoJCQkJCQkJ
CQkkb3V0cHV0Lj0iLCAiOyANCgkJCQkJCQkJfQ0KCQkJCQkJCQkkb3V0cHV0Lj0iPGEgaHJlZj1c
IiIuJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJienNlcnZlciIpLiIvdHJfc2hvd19jYXNlLmNnaT9j
YXNlX2lkPSIuJGRlcGVuZGVuY3kuIlwiPiIuJGRlcGVuZGVuY3kuIjwvYT4iOw0KCQkJCQkJCQkk
aSsrOw0KCQkJCQkJCX0NCgkJCQkJCQkkb3V0cHV0Lj0gIjwvdGQ+IjsNCgkJCQkJCX0NCgkJCQkJ
CWJyZWFrOw0KCQkJfQ0KCQl9DQoJCQ0KCQl1bnNldCgkc3FsKTsNCgkJDQoJCXJldHVybiAkb3V0
cHV0Ow0KCX0JDQoJDQoJZnVuY3Rpb24gZ2V0U1FMKCkgewkJDQoJCSRzcWwgPSBuZXcgVFJfU1FM
Ow0KCQkkc3FsLT5zZXRDb25uZWN0b3IoJHRoaXMtPmdldENvbm5lY3RvcigpKTsNCgkJDQoJCSRz
cWwtPnNldEZyb20oInRlc3RfY2FzZV9ydW5zIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nh
c2VfcnVucyIsICJjYXNlX2lkIiwgIlRlc3QgQ2FzZXMiKTsJDQoJCSRzcWwtPmFkZFdoZXJlKCJ0
ZXN0X2Nhc2VfcnVucyIsICJydW5faWQiLCAiPSIsICR0aGlzLT5nZXRSdW5JRCgpLCIiKTsJCQ0K
CQlyZXR1cm4gJHNxbC0+dG9TUUwoKTsNCgl9CQ0KCQ0KCS8qKg0KCSAqIFJlbmRlcnMgYSBkaXJl
Y3RlZCBncmFwaCBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGEgdGVzdCBydW4gdXNpbmcg
Z3JhcGh2aXoNCgkgKiBAcmV0dXJuIGxpbmsgdG8gdGhlIGdlbmVyYXRlZCBncmFwaCBmaWxlDQoJ
ICovDQojCWZ1bmN0aW9uIHJlbmRlckRpZ3JhcGgoJHR5cGUgPSAibGluayIpIHsNCiMJCWlmICgk
dGhpcy0+Z2V0QXJncygpLT5nZXQoImdyYXBodml6IikgPT0gIiIpIHsNCiMJCQlyZXR1cm47DQoj
CQl9DQojCQ0KIwkJZ2xvYmFsICR3Z1NjcmlwdFBhdGg7DQojCQ0KIwkJJG91dHB1dCA9ICIiOw0K
IwkJJHJlc3VsdCA9ICR0aGlzLT5kaWdyYXBoKCk7DQojCQkNCiMJCSRiYXNlZmlsZSA9ICJhZ2Vu
ZGFfIi5tZDUoJHRoaXMtPmdldFJ1bklEKCkuIiAiLiR0aGlzLT53aXRoRGVwZW5kZW5jeSk7CQkN
CiMJCSMgdGhlIHBsb3QgZmlsZQ0KIwkJJGZpbGVuYW1lUExPPXN0cnRvbG93ZXIoJGJhc2VmaWxl
LiIudHh0Iik7DQojCQkkcGxvdEZpbGUgID0gImltYWdlcy90ZXN0b3BpYV9yZXBvcnRzLyIuJGZp
bGVuYW1lUExPOw0KIwkJIyB0aGUgbmFtZSBvZiBpbWFnZSBmaWxlIGZvciB0aGUgcmVuZGVyZWQg
Y2hhcnQNCiMJCSRmaWxlbmFtZVBORz1zdHJ0b2xvd2VyKCRiYXNlZmlsZS4iLnBuZyIpOw0KIwkJ
JGltZ0ZpbGUgICA9ICJpbWFnZXMvdGVzdG9waWFfcmVwb3J0cy8iLiRmaWxlbmFtZVBORzsJCQ0K
IwkJDQojCQkkcGxvdEZpbGVIID0gZm9wZW4oJHBsb3RGaWxlLCAndycpIG9yIGRpZSgiY2FuJ3Qg
b3BlbiBmaWxlIik7DQojCQkjb3V0cHV0IHRoZSBwbG90IGRhdGENCiMJCWZvcmVhY2ggKCRyZXN1
bHQgYXMgJGxpbmUpew0KIwkJCWZ3cml0ZSgkcGxvdEZpbGVILCRsaW5lLiR0aGlzLT5nZXROZXds
aW5lKCkpOw0KIwkJfQkJDQojCQlmY2xvc2UoJHBsb3RGaWxlSCk7DQojCQkNCiMJCXdoaWxlICgh
ZmlsZV9leGlzdHMoJHBsb3RGaWxlKSkgew0KIwkJCXNsZWVwKDEpOw0KIwkJfQ0KIwkJDQojCQkk
b3V0cHV0ID0gc3lzdGVtKGVzY2FwZXNoZWxsY21kKCR0aGlzLT5nZXRBcmdzKCktPmdldCgiZ3Jh
cGh2aXoiKS4iIC1UcG5nICIuJHBsb3RGaWxlLiIgLW8gIi4kaW1nRmlsZSksJHJldCk7DQojCQkN
CiMJCWlmICgkcmV0ID09IDApIHsNCiMJCQkjIGNyZWF0ZSB0aGUgaHJlZiBmb3Igc2hvd2luZyB0
aGUgY2hhcnQNCiMJCQkkc3JjPSR3Z1NjcmlwdFBhdGguIi8iLiRpbWdGaWxlOw0KIwkJCWlmICgk
dHlwZSA9PSAibGluayIpIHsNCiMJCQkJJG91dHB1dCA9ICI8YSBocmVmPVwiIi4kc3JjLiJcIj4i
LiJEZXBlbmRlbmN5IEdyYXBoIi4iPC9hPiI7DQojCQkJfSBlbHNlaWYgKCR0eXBlID09ICJpbWci
KSB7DQojCQkJCSRvdXRwdXQgPSAiPGltZyBzcmM9XCIiLiRzcmMuIlwiIGFsdD1cIkRlcGVuZGVu
Y3kgR3JhcGhcIiB0aXRsZT1cIkRlcGVuZGVuY3kgR3JhcGhcIj4iOw0KIwkJCX0NCiMJCX0gZWxz
ZSB7DQojCQkJJG91dHB1dCA9ICI8cD4iLiRyZXQuIi0iLiRvdXRwdXQuIi0iLmVzY2FwZXNoZWxs
Y21kKCR0aGlzLT5nZXRBcmdzKCktPmdldCgiZ3JhcGh2aXoiKS4iIC1UcG5nICIuJHBsb3RGaWxl
LiIgLW8gIi4kaW1nRmlsZSkuIjwvcD4iOw0KIwkJfQ0KIwkJcmV0dXJuICRvdXRwdXQ7CQkNCiMJ
fQ0KfQ0KDQo/PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAVFJfcmVwQnVncy5waHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAw
MDAwMAAwMDAwMDAwADAwMDAwMDEwMjYyADEyMTAzMDA3NjE3ADAxMjI3NwAgMAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA8P3BocA0KI0VESVRFRDogVG8gdHJhY2sgdGhlIGNoYW5nZXMgbWFkZSBiZXNpZGVzIHRoZSBj
b21tZW50ZWQtb3V0IHNlY3Rpb25zLCBmb2xsb3cgdGhlIHRhZyAiRURJVEVEIgoNCmNsYXNzIFRS
X3JlcEJ1Z3MgZXh0ZW5kcyBUUl9UZW1wbGF0ZXsNCg0KCXZhciAkc3VwcG9ydGVkQ2hhcnRzID0g
YXJyYXkoDQoJCSJic3RhdHVzIiAgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJic3RhdHVzIiwgDQoJ
CQkJCQkgICAgInRpdGxlIiAgICA9PiJCdWcgU3RhdHVzIiwNCgkJCQkJCSAgICAidG9vbHRpcCIg
ID0+IkJ1ZyBTdGF0dXMiLA0KCQkJCQkJICAgICJhbHR0ZXh0IiAgPT4iQnVnIFN0YXR1cyIpLA0K
CQkicHJpbyIgICAgID0+IGFycmF5KCJwYXJhbWV0ZXIiPT4icHJpbyIsIA0KCQkJCQkJCSJ0aXRs
ZSIgICAgPT4iQnVnIFByaW9yaXRpZXMiLA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4iQnVnIFByaW9y
aXRpZXMiLA0KCQkJCQkJCSJhbHR0ZXh0IiAgPT4iQnVnIFByaW9yaXRpZXMiKSwNCgkJInNldmVy
aXR5IiA9PiBhcnJheSgicGFyYW1ldGVyIj0+InByaW8iLCANCgkJCQkJCQkidGl0bGUiICAgID0+
IkJ1ZyBTZXZlcml0aWVzIiwNCgkJCQkJCQkidG9vbHRpcCIgID0+IkJ1ZyBTZXZlcml0aWVzIiwN
CgkJCQkJCQkiYWx0dGV4dCIgID0+IkJ1ZyBTZXZlcml0aWVzIikNCgkpOw0KCQ0KCXZhciAkc3Vw
cG9ydGVkQ2hhcnRUeXBlcyA9IGFycmF5KA0KCQkiZ29vZ2xlIiAgID0+IGFycmF5KCAiYmFyIiwg
InBpZSIsICJwaWUzIiApLA0KCSk7DQoNCglmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFydHNBcnIo
KSB7DQoJCXJldHVybiAkdGhpcy0+c3VwcG9ydGVkQ2hhcnRzOw0KCX0NCgkNCglmdW5jdGlvbiBn
ZXRTdXBwb3J0ZWRDaGFydFR5cGVzQXJyKCkgew0KCQlyZXR1cm4gJHRoaXMtPnN1cHBvcnRlZENo
YXJ0VHlwZXM7DQoJfQ0KCQ0KCS8qKg0KCSogQ3JlYXRlIHRoZSByZXBvcnQgaGVhZGVyDQoJKiov
DQoJZnVuY3Rpb24gZ2V0UmVwb3J0SGVhZGVyKCkgew0KCQlyZXR1cm4gJHRoaXMtPmdldFN0YW5k
YXJkUnVuSGVhZGVyKCk7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0UmVwb3J0Rm9vdGVyKCkgew0KCQly
ZXR1cm4gIiI7DQoJfQkNCgkNCglmdW5jdGlvbiBnZXRSZXBvcnROYW1lKCkgew0KCQlyZXR1cm4g
IkJ1ZyBTdGF0dXMgUmVwb3J0IjsNCgl9CQkNCgkNCglmdW5jdGlvbiBnZXRSZXBvcnQoICRyZXN1
bHQgKSB7DQoJCSMgY2hlY2sgYW5kIHNldCBzb21lIHBhcmFtZXRlcnMNCgkJIyBmaWVsZCBmb3Ig
Y2FsY3VsYXRpbmcgdGhlIHRvdGFsIG51bWJlcjsgY291bGQgYmUgc2V0IHRvIGEgZmllbGQgdGhh
dCBpcyBpbmNsdWRlZCBpbiB0aGUgZmllbGQgbGlzdCBvZiB0aGUgc2VsZWN0IHN0YXRlbWVudCBv
ciB0byByb3djb3VudCwgd2hpY2ggd2lsbCBzaW1wbHkgY291bnQgbnVtYmVyIG9mIHJvd3MNCgkJ
aWYgKCR0aGlzLT5nZXRBcmdzKCktPmdldCgidG90YWwiKSA9PSAidHJ1ZSIpIHsNCgkJCSR0aGlz
LT5nZXRBcmdzKCktPnNldCgidG90YWwiLCAicm93Y291bnQiKTsNCgkJfQ0KCQkNCgkJJG91dHB1
dCA9ICR0aGlzLT5yZW5kZXJQbGFpbkhUTUwoICRyZXN1bHQgKTsJDQoJCQkJDQoJCSNyZXR1cm5p
bmcgdGhlIG91dHB1dA0KCSAgICByZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0
U1FMKCkgew0KCQkkdGhpcy0+c2V0TXNnTm9SZXN1bHRzRm91bmQoICJUZXN0b3BpYSBSZXBvcnRz
OiBObyBidWdzIGZvdW5kIGZvciB0ZXN0IHJ1biAiLiR0aGlzLT5nZXRSdW5JRCgpKTsNCgkJDQoJ
CSRjb249JHRoaXMtPmdldENvbm5lY3RvcigpOw0KDQoJCSRzcWwgPSBuZXcgVFJfU1FMOw0KCQkk
c3FsLT5zZXRDb25uZWN0b3IoJHRoaXMtPmdldENvbm5lY3RvcigpKTsNCgkJJHNxbC0+c2V0RnJv
bSgiYnVncyIpOw0KCQkkc3FsLT5hZGRGaWVsZCgiYnVncyIsICJidWdfaWQiLCAiSUQiKTsNCgkJ
JHNxbC0+YWRkRmllbGQoImJ1Z3MiLCAicHJpb3JpdHkiLCAiUHJpb3JpdHkiKTsNCgkJJHNxbC0+
YWRkRmllbGQoImJ1Z3MiLCAiYnVnX3NldmVyaXR5IiwgIlNldmVyaXR5Iik7DQoJCSRzcWwtPmFk
ZEZpZWxkKCJidWdzIiwgImJ1Z19zdGF0dXMiLCAiU3RhdHVzIik7DQoJCSRzcWwtPmFkZEZpZWxk
KCJidWdzIiwgImJ1Z19zZXZlcml0eSIsICJTZXZlcml0eSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgi
dGVzdF9jYXNlX2J1Z3MiLCAiY2FzZV9pZCIsICJUZXN0IENhc2UiKTsNCgkJJHNxbC0+YWRkRmll
bGQoImJ1Z3MiLCAic2hvcnRfZGVzYyIsICJEZXNjcmlwdGlvbiIpOw0KCQkkc3FsLT5hZGRKb2lu
KCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9idWdzIiwgImJ1Z19pZCIsICJidWdzIiwgImJ1Z19p
ZCIpOw0KCQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZV9ydW5zIiwgImNh
c2VfcnVuX2lkIiwgInRlc3RfY2FzZV9idWdzIiwgImNhc2VfcnVuX2lkIik7CQkNCgkJJHNxbC0+
YWRkV2hlcmUoInRlc3RfY2FzZV9ydW5zIiwgInJ1bl9pZCIsICI9IiwgJHRoaXMtPmdldFJ1bklE
KCkpOw0KJHNxbC0+YWRkV2hlcmUoImJ1Z3MiLCAiYnVnX3N0YXR1cyIsICIgTk9UIExJS0UgIiwg
IlwiVkVSSUZJRURcIiIsICJBTkQiKTsgI0VESVRFRDogQWRkZWQgdGhpcyBsaW5lIHRvIHJ1bGUg
b3V0IHZlcmlmaWVkIGJ1Z3MKCQkkc3FsLT5hZGRHcm91cFNvcnQoIk9yZGVyIiwgImJ1Z3MiLCAi
cHJpb3JpdHkiKTsNCgkJJHNxbC0+YWRkR3JvdXBTb3J0KCJPcmRlciIsICJidWdzIiwgImJ1Z19z
dGF0dXMiKTsNICNFRElURUQ6IGFkZGVkIHRoaXMgbGluZSB0byBvcmRlciBieSBidWcgc3RhdHVz
IGFzIHdlbGwuCgkJJHNxbC0+YWRkR3JvdXBTb3J0KCJPcmRlciIsICJidWdzIiwgImJ1Z19pZCIp
OwoJDQoKCQlyZXR1cm4gJHNxbC0+dG9TUUwoKTsNCgl9DQoJDQoJZnVuY3Rpb24gcmVuZGVyQ2Vs
bCgkdHlwZSwgJGNvbE5vLCAkZmllbGRfbmFtZSwgJHZhbHVlLCAkbGluZU5vLCAkbGluZSkgew0K
CQkkb3V0cHV0ID0gIiI7DQoJCQ0KCQlpZiAoJHR5cGU9PSJib2R5Iikgew0KCQkJc3dpdGNoICgk
ZmllbGRfbmFtZSkgew0KCQkJCWNhc2UgIlRlc3QgQ2FzZSI6IA0KCQkJCQkJJG91dHB1dD0iPHRk
PjxhIGhyZWY9XCIiLiR0aGlzLT5nZXRBcmdzKCktPmdldCgiYnpzZXJ2ZXIiKS4iL3RyX3Nob3df
Y2FzZS5jZ2k/Y2FzZV9pZD0iLiR2YWx1ZS4iXCI+Ii4kdmFsdWUuIjwvYT48L3RkPiI7DQoJCQkJ
CQlicmVhazsNCgkJCQljYXNlICJJRCIgICAgICAgOg0KCQkJCQkJJG91dHB1dD0iPHRkPjxhIGhy
ZWY9XCIiLiR0aGlzLT5nZXRBcmdzKCktPmdldCgiYnpzZXJ2ZXIiKS4iL3Nob3dfYnVnLmNnaT9p
ZD0iLiR2YWx1ZS4iXCI+Ii4kdmFsdWUuIjwvYT48L3RkPiI7DQoJCQkJCQlicmVhazsNCgkJCQlj
YXNlICJQcmlvcml0eSIgOg0KCQkJCQkJaWYgKCR2YWx1ZSA9PSAiUDEiKSB7DQoJCQkJCQkJJG91
dHB1dD0iPHRkIGNsYXNzPVwidGVzdG9waWFfUHJpb3JpdHlfUDFcIj4iLiR2YWx1ZS4iPC90ZD4i
Ow0KCQkJCQkJfQ0KCQkJCWRlZmF1bHQJCQk6IHJldHVybiAkb3V0cHV0Ow0KCQkJfQ0KCQl9DQoJ
CXJldHVybiAkb3V0cHV0Ow0KCX0JCQkJDQoJDQoJZnVuY3Rpb24gZ2V0R29vZ2xlQ2hhcnRMaW5r
KCAmJGdvb2dsZSwgJHJlc3VsdCwgJHR5cGUsICRjaGFydCApIHsNCgkJJGZpZWxkID0gIiI7DQoJ
CSRjb2xvciA9ICIiOw0KCQkkY29sb3JyYW5nZSA9ICIiOw0KCQlzd2l0Y2ggKCRjaGFydCkgew0K
CQkJY2FzZSAiYnN0YXR1cyI6DQoJCQkJJGZpZWxkPSJTdGF0dXMiOw0KCQkJCSRjb2xvcj0iYnMi
Ow0KCQkJCWJyZWFrOwkJDQoJCQljYXNlICJwcmlvIjogDQoJCQkJJGZpZWxkPSJQcmlvcml0eSI7
DQoJCQkJJGNvbG9yPSJwcmlvIjsNCgkJCQlicmVhazsNCgkJCWNhc2UgInNldmVyaXR5IjoNCgkJ
CQkkZmllbGQ9IlNldmVyaXR5IjsNCgkJCQkkY29sb3I9ImF1dG8iOw0KCQkJCSRjb2xvcnJhbmdl
PSJyZWQiOw0KCQkJCWJyZWFrOwkJCQkNCgkJCWRlZmF1bHQ6DQoJCQkJJGZpZWxkPSJQcmlvcml0
eSI7DQoJCQkJJGNvbG9yPSJwcmlvIjsJDQoJCX0NCgkNCgkJaWYgKCRjaGFydCkgew0KCQkJJHRo
aXMtPmdldEdvb2dsZUNoYXJ0T25lUm93Q291bnQoJGdvb2dsZSwgJHJlc3VsdCwgJHR5cGUsICRj
aGFydCwgJGZpZWxkLCAiIiwgJGNvbG9yLCAkY29sb3JyYW5nZSk7DQoJCX0gZWxzZSB7DQoJCQkk
dGhpcy0+Z2V0R29vZ2xlQ2hhcnRPbmVSb3dDb3VudCgkZ29vZ2xlLCRyZXN1bHQsICR0eXBlLCAi
cHJpbyIsICRmaWVsZCwgIiIsICRjb2xvciwgJGNvbG9ycmFuZ2UpOw0KCQl9DQoJfQ0KfQ0KDQo/
PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUUl9yZXBD
b21wbGV0aW9uLnBocAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAw
MDAAMDAwMDAwMTQzMDAAMTIxMDMwMDc2MjYAMDEzNTA1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw/cGhwDQoj
RURJVEVEOiBUbyB0cmFjayB0aGUgY2hhbmdlcyBtYWRlIGJlc2lkZXMgdGhlIGNvbW1lbnRlZC1v
dXQgc2VjdGlvbnMsIGZvbGxvdyB0aGUgdGFnICJFRElURUQiCg0KY2xhc3MgVFJfcmVwQ29tcGxl
dGlvbiBleHRlbmRzIFRSX1RlbXBsYXRlew0KCQ0KCXZhciAkc3VwcG9ydGVkQ2hhcnRzID0gYXJy
YXkoDQoJCSJzdGQiICAgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJzdGQiLCANCgkJCQkJCSAidGl0
bGUiICAgID0+IlRlc3QgUnVuIENvbXBsZXRpb24iLA0KCQkJCQkJICJ0b29sdGlwIiAgPT4iVGVz
dCBSdW4gQ29tcGxldGlvbiIsDQoJCQkJCQkgImFsdHRleHQiICA9PiJUZXN0IFJ1biBDb21wbGV0
aW9uIiksDQoJCSJtZXRlciIgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJtZXRlciIsIA0KCQkJCQkJ
ICJ0aXRsZSIgICAgPT4iVGVzdCBSdW4gQ29tcGxldGlvbiIsDQoJCQkJCQkgInRvb2x0aXAiICA9
PiJUZXN0IFJ1biBDb21wbGV0aW9uIChtZXRlcikiLA0KCQkJCQkJICJhbHR0ZXh0IiAgPT4iVGVz
dCBSdW4gQ29tcGxldGlvbiAobWV0ZXIpIikNCgkpOw0KCQ0KCXZhciAkc3VwcG9ydGVkQ2hhcnRU
eXBlcyA9IGFycmF5KA0KCQkiZ29vZ2xlIiAgID0+IGFycmF5KCAiYmFyIiwgInBpZSIsICJwaWUz
IiksDQoJKTsNCg0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0c0FycigpIHsNCgkJcmV0dXJu
ICR0aGlzLT5zdXBwb3J0ZWRDaGFydHM7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENo
YXJ0VHlwZXNBcnIoKSB7DQoJCXJldHVybiAkdGhpcy0+c3VwcG9ydGVkQ2hhcnRUeXBlczsNCgl9
DQoJDQoJZnVuY3Rpb24gZ2V0UmVwb3J0SGVhZGVyKCkgew0KCQlyZXR1cm4gJHRoaXMtPmdldFN0
YW5kYXJkUnVuSGVhZGVyKCk7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0UmVwb3J0Rm9vdGVyKCkgew0K
CQkkcnVuX2lkID0gJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJydW5faWQiKTsNCgkJDQoJCSRzcWwg
PSAiU0VMRUNUIGNvdW50KGRpc3RpbmN0IGJ1Z19pZCkgYXMgQnVncyBGUk9NICIuJHRoaXMtPmdl
dENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9jYXNlX2J1Z3MiKTsNCgkJJHNxbC49ICIgSU5O
RVIgSk9JTiAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUoInRlc3RfY2FzZV9ydW5z
IikuIiBPTiB0ZXN0X2Nhc2VfYnVncy5jYXNlX3J1bl9pZCA9IHRlc3RfY2FzZV9ydW5zLmNhc2Vf
cnVuX2lkIFdIRVJFIHJ1bl9pZCA9ICIuJHJ1bl9pZC4iOyI7DQoJCSRyZXN1bHQgPSAkdGhpcy0+
Z2V0Q29ubmVjdG9yKCktPmV4ZWN1dGUoJHNxbCk7DQoJCQ0KCQlpZiAoJHJlc3VsdCkgew0KCQkJ
JGxpbmUgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZldGNoKCRyZXN1bHQpOw0KCQkJJGJ1Z3Mg
PSAkbGluZVsiQnVncyJdOw0KCQkJJHRoaXMtPmdldENvbm5lY3RvcigpLT5mcmVlKCRyZXN1bHQp
Ow0KCQl9IGVsc2Ugew0KCQkJJGJ1Z3MgPSAiMCI7DQoJCX0NCg0KCQlyZXR1cm4gIjxiPjxhIGhy
ZWY9XCIiLiR0aGlzLT5nZXRBcmdzKCktPmdldCgiYnpzZXJ2ZXIiKS4iL3RyX3Nob3dfcnVuLmNn
aT9ydW5faWQ9Ii4kcnVuX2lkLiJcIj5CdWdzIGZvdW5kIGluIHRoaXMgcnVuOiAiLiRidWdzLiI8
L2E+PC9iPiI7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFJlcG9ydE5hbWUoKSB7DQoJCXJldHVybiAi
VGVzdCBSdW4gQ29tcGxldGl0aW9uIFJlcG9ydCI7DQoJfQkJDQoJDQoJZnVuY3Rpb24gZ2V0UmVw
b3J0KCAkcmVzdWx0ICkgew0KCQkjIGNoZWNrIGFuZCBzZXQgc29tZSBwYXJhbWV0ZXJzCQkNCgkJ
JHRoaXMtPmdldEFyZ3MoKS0+c2V0KCJ0b3RhbCIsIiIpOw0KCQkkdGhpcy0+Z2V0QXJncygpLT5z
ZXQoInNvcnRhYmxlIiwiZmFsc2UiKTsNCgkJDQoJCSRvdXRwdXQgPSAkdGhpcy0+cmVuZGVyUGxh
aW5IVE1MKCAkcmVzdWx0ICk7DQoJCQ0KCQkjcmV0dXJuaW5nIHRoZSBvdXRwdXQNCgkgICAgcmV0
dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFNRTCgpIHsJCQ0KCQkkc3FsID0gbmV3
IFRSX1NRTDsNCgkJJHNxbC0+c2V0Q29ubmVjdG9yKCR0aGlzLT5nZXRDb25uZWN0b3IoKSk7DQoJ
CSRzcWwtPnNldEZyb20oInRlc3RfY2FzZV9ydW5zIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0
X2Nhc2VfcnVucyIsICJjYXNlX3J1bl9zdGF0dXNfaWQiLCAiQ29tcGxldGVkIiwgInN1bShjYXNl
IHdoZW4gJDEgSU4gKDIsMyw2KSB0aGVuIDEgZWxzZSAwIGVuZCkiKTsNCgkJJHNxbC0+YWRkRmll
bGQoInRlc3RfY2FzZV9ydW5zIiwgImNhc2VfcnVuX3N0YXR1c19pZCIsICJOb3QgQ29tcGxldGUi
LCAic3VtKGNhc2Ugd2hlbiAkMSBJTiAoMSw0LDUsNykgdGhlbiAxIGVsc2UgMCBlbmQpIik7DQoJ
CSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNlX3J1bl9zdGF0dXNfaWQiLCAi
UGFzc2VkIiwgInN1bShjYXNlIHdoZW4gJDEgSU4gKDIpIHRoZW4gMSBlbHNlIDAgZW5kKSIpOw0K
CQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX3J1bnMiLCAiY2FzZV9ydW5fc3RhdHVzX2lkIiwg
IkZhaWxlZCIsICJzdW0oY2FzZSB3aGVuICQxIElOICgzKSB0aGVuIDEgZWxzZSAwIGVuZCkiKTsJ
CQ0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNlX3J1bnMiLCAiY2FzZV9ydW5fc3RhdHVzX2lk
IiwgIkJsb2NrZWQiLCAic3VtKGNhc2Ugd2hlbiAkMSBJTiAoNikgdGhlbiAxIGVsc2UgMCBlbmQp
Iik7CQkJDQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNlX3J1bl9zdGF0
dXNfaWQiLCAiVG90YWwiLCAic3VtKGNhc2Ugd2hlbiAkMSBJTiAoMSwyLDMsNCw1LDYsNykgdGhl
biAxIGVsc2UgMCBlbmQpIik7CQ0KCQkkc3FsLT5hZGRXaGVyZSgidGVzdF9jYXNlX3J1bnMiLCAi
cnVuX2lkIiwgIj0iLCAkdGhpcy0+Z2V0UnVuSUQoKSk7DQokc3FsLT5hZGRXaGVyZSgidGVzdF9j
YXNlX3J1bnMiLCAiaXNjdXJyZW50IiwgIj0iLCAiMSIsICJBTkQiKTsgI0VkaXRlZDogYWRkZWQg
dGhpcyB0byBmZXRjaCBvbmx5IHRoZSBjdXJyZW50IGVudmlyb25tZW50L2J1aWxkIG9mIGEgY2Fz
ZSBydW4gd2l0aGluIHRoZSBjdXJyZW50IHRlc3QgcnVuCgkJcmV0dXJuICRzcWwtPnRvU1FMKCk7
DQoJfQ0KCQ0KCWZ1bmN0aW9uIHJlbmRlckNlbGwoJHR5cGUsICRjb2xObywgJGZpZWxkX25hbWUs
ICR2YWx1ZSwgJGxpbmVObywgJGxpbmUpIHsNCgkJJG91dHB1dCA9ICIiOw0KCQkNCgkJaWYgKCR0
eXBlPT0iaGVhZGVyIikgew0KCQkJc3dpdGNoICgkdmFsdWUpIHsNCgkJCQljYXNlICJDb21wbGV0
ZWQiOiANCgkJCQkJCSRvdXRwdXQ9Ijx0aCBjb2xzcGFuPVwiMlwiPjxiPjxhIGhyZWY9XCIiLiR0
aGlzLT5nZXRBcmdzKCktPmdldCgiYnpzZXJ2ZXIiKS4iL3RyX3Nob3dfcnVuLmNnaT9ydW5faWQ9
Ii4kdGhpcy0+Z2V0UnVuSUQoKS4iJmNhc2VfcnVuX3N0YXR1cz1QQVNTRUQmY2FzZV9ydW5fc3Rh
dHVzPUZBSUxFRCZjYXNlX3J1bl9zdGF0dXM9QkxPQ0tFRFwiPiIuJHZhbHVlLiI8L2E+PC9iPjwv
dGg+IjsNCgkJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIk5vdCBDb21wbGV0ZSI6IA0KCQkJCQkJJG91
dHB1dD0iPHRoIGNvbHNwYW49XCIyXCI+PGI+PGEgaHJlZj1cIiIuJHRoaXMtPmdldEFyZ3MoKS0+
Z2V0KCJienNlcnZlciIpLiIvdHJfc2hvd19ydW4uY2dpP3J1bl9pZD0iLiR0aGlzLT5nZXRSdW5J
RCgpLiImY2FzZV9ydW5fc3RhdHVzPUlETEUmY2FzZV9ydW5fc3RhdHVzPVBBVVNFRCZjYXNlX3J1
bl9zdGF0dXM9UlVOTklORyZjYXNlX3J1bl9zdGF0dXM9RVJST1JcIj4iLiR2YWx1ZS4iPC9hPjwv
Yj48L3RoPiI7DQoJCQkJCQlicmVhazsNCgkJCQljYXNlICJQYXNzZWQiOiANCgkJCQkJCSRvdXRw
dXQ9Ijx0aCBjb2xzcGFuPVwiMlwiPjxiPjxhIGhyZWY9XCIiLiR0aGlzLT5nZXRBcmdzKCktPmdl
dCgiYnpzZXJ2ZXIiKS4iL3RyX3Nob3dfcnVuLmNnaT9ydW5faWQ9Ii4kdGhpcy0+Z2V0UnVuSUQo
KS4iJmNhc2VfcnVuX3N0YXR1cz1QQVNTRURcIj4iLiR2YWx1ZS4iPC9hPjwvYj48L3RoPiI7DQoJ
CQkJCQlicmVhazsNCgkJCQljYXNlICJGYWlsZWQiOiANCgkJCQkJCSRvdXRwdXQ9Ijx0aCBjb2xz
cGFuPVwiMlwiPjxiPjxhIGhyZWY9XCIiLiR0aGlzLT5nZXRBcmdzKCktPmdldCgiYnpzZXJ2ZXIi
KS4iL3RyX3Nob3dfcnVuLmNnaT9ydW5faWQ9Ii4kdGhpcy0+Z2V0UnVuSUQoKS4iJmNhc2VfcnVu
X3N0YXR1cz1GQUlMRURcIj4iLiR2YWx1ZS4iPC9hPjwvYj48L3RoPiI7CQkJCQ0KCQkJCQkJYnJl
YWs7DQoJCQkJY2FzZSAiQmxvY2tlZCI6IA0KCQkJCQkJJG91dHB1dD0iPHRoIGNvbHNwYW49XCIy
XCI+PGI+PGEgaHJlZj1cIiIuJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJienNlcnZlciIpLiIvdHJf
c2hvd19ydW4uY2dpP3J1bl9pZD0iLiR0aGlzLT5nZXRSdW5JRCgpLiImY2FzZV9ydW5fc3RhdHVz
PUJMT0NLRURcIj4iLiR2YWx1ZS4iPC9hPjwvYj48L3RoPiI7CQkJCQ0KCQkJCQkJYnJlYWs7DQoJ
CQkJY2FzZSAiVG90YWwiOiANCgkJCQkJCSRvdXRwdXQ9Ijx0aD48Yj48YSBocmVmPVwiIi4kdGhp
cy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIikuIi90cl9zaG93X3J1bi5jZ2k/cnVuX2lkPSIu
JHRoaXMtPmdldFJ1bklEKCkuIlwiPiIuJHZhbHVlLiI8L2E+PC9iPjwvdGg+IjsNCgkJCQkJCWJy
ZWFrOw0KCQkJfQkJCQ0KCQl9DQoJCQ0KCQlpZiAoJHR5cGUgPT0gImJvZHkiKSB7DQoJCQkkdG90
YWw9JGxpbmVbIlRvdGFsIl07CQkJDQoJCQkkcGVyYyA9ICR0aGlzLT5nZXRQZXJjKCR2YWx1ZSwk
dG90YWwpOw0KCQkJDQoJCQlpZiAoJGZpZWxkX25hbWUgIT0gIlRvdGFsIikgew0KCQkJCSRvdXRw
dXQ9Ijx0ZD4iLiR2YWx1ZS4iPC90ZD48dGQ+Ii4iKCIuJHBlcmMuIikiLiI8L3RkPiI7DQoJCQl9
IA0KCQl9DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0R29vZ2xl
Q2hhcnRMaW5rKCAmJGdvb2dsZSwgJHJlc3VsdCwgJHR5cGUsICRjaGFydCApIHsNCgkJJGNvbG9y
ID0gbmV3IFRSX0NvbG9yczsNCgkJDQoJCWlmICgkY2hhcnQgPT0gIm1ldGVyIikgew0KCQkJJGdv
b2dsZS0+c2V0VHlwZSgiZ29tIik7DQoJCQkkdHlwZT0ibWV0ZXIiOw0KCQl9IGVsc2VpZiAoJGNo
YXJ0ID09ICIiKSB7DQoJCQkkY2hhcnQ9InN0ZCI7DQoJCX0NCgkJDQoJCSRsYWJlbD0iIjsNCgkJ
JGRhdGE9IiI7DQoJCSRocmVmPSIiOw0KCQkkdG90YWw9MDsNCgkJDQoJCSRnb29nbGUtPnNldERh
dGFNaW5SYW5nZSgwKTsNCgkJJGdvb2dsZS0+c2V0RGltQ29lZigzLjMpOw0KCQkkZ29vZ2xlLT5z
ZXREaW1Db2VmM0QoMy44KTsNCgkJDQoJCWZvcmVhY2ggKCRyZXN1bHQgYXMgJGxpbmUpIHsNCgkJ
CSRpPTA7DQoJCQkkdG90YWw9JGxpbmVbIlRvdGFsIl07DQoJCQlmb3JlYWNoICgkbGluZSBhcyAk
Y29sX3ZhbHVlKSB7CQ0KCQkJCSRuYW1lID0gJHRoaXMtPmNvbHVtbk5hbWVzWyRpXTsNCgkJCQlp
ZiAoJGNvbF92YWx1ZSA+IDAgYW5kICRuYW1lIT0iVG90YWwiKSB7CQkJCQ0KCQkJCQkkcGVyYyA9
ICR0aGlzLT5nZXRQZXJjKCRjb2xfdmFsdWUsJHRvdGFsLGZhbHNlKTsNCgkJCQkJDQoJCQkJCWlm
ICgkbmFtZSA9PSAiQ29tcGxldGVkIiBhbmQgJHR5cGUgPT0ibWV0ZXIiKSB7DQoJCQkJCQkkZ29v
Z2xlLT5hZGREYXRhKCRwZXJjKTsNCgkJCQkJCSRnb29nbGUtPmFkZExhYmVsKCJDb21wbGV0ZWQg
KCIuJHBlcmMuIiUpIik7DQoJCQkJCX0gDQoJCQkJCQ0KCQkJCQkkZ29vZ2xlLT5hZGRDb2xvcigk
Y29sb3ItPmdldENvbG9ySFRNTCgkbmFtZSwgImNvbXBsIikpOw0KCQkJCQlpZiAoJHR5cGUgIT0g
Im1ldGVyIikgew0KCQkJCQkJJGdvb2dsZS0+YWRkRGF0YSgkY29sX3ZhbHVlKTsNCgkJCQkJCSRs
YWJlbD0kbmFtZS4iKCIuJGNvbF92YWx1ZS4iJSkgIi4kcGVyYzsNCgkJCQkJCSRnb29nbGUtPmFk
ZExhYmVsKCRsYWJlbCk7DQoJCQkJCQkkZ29vZ2xlLT5hZGRMZWdlbmQoJGxhYmVsKTsJCQkJCQ0K
CQkJCQl9DQoJCQkJfSBlbHNlaWYgKCRjb2xfdmFsdWUgPT0gMCBhbmQgJG5hbWUgPT0gIkNvbXBs
ZXRlZCIgYW5kICR0eXBlID09Im1ldGVyIikgew0KCQkJCQkJJGdvb2dsZS0+YWRkRGF0YSgwKTsN
CgkJCQkJCSRnb29nbGUtPnNldERpbUNvZWZNZXRlcigzLjEpOw0KCQkJCQkJJGdvb2dsZS0+YWRk
TGFiZWwoIkNvbXBsZXRlZCAoMCUpIik7DQoJCQkJfQ0KCQkJCQ0KCQkJCSRpKys7DQoJCQl9DQoJ
CX0NCgkJDQoJCWlmICgkdHlwZSA9PSAiYmFyIikgeyAkZ29vZ2xlLT5oaWRlTGFiZWxzKCB0cnVl
ICk7IH0NCgkJaWYgKCR0eXBlID09ICJwaWUiIG9yICR0eXBlID09ICJwaWUzIiBvciAkdHlwZSA9
PSAibWV0ZXIiKSB7ICRnb29nbGUtPmhpZGVMZWdlbmQoIHRydWUgKTsgfQkNCgl9CQ0KfQ0KDQo/
PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFJfcmVwUHJpb3JpdHkucGhwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA2Mzcz
ADEyMTAzMDA3NjM0ADAxMzIyNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P3BocA0KI0VESVRFRDogVGhpcyBm
aWxlIHdhcyBtb2RpZmllZCB0byBtYWtlIHRoZSByZXBvcnQgZnVuY3Rpb24gY29yZWN0bHkuCiNF
RElURUQ6IFRvIHRyYWNrIHRoZSBjaGFuZ2VzIG1hZGUgYmVzaWRlcyB0aGUgY29tbWVudGVkLW91
dCBzZWN0aW9ucywgZm9sbG93IHRoZSB0YWcgIkVESVRFRCIKDQpjbGFzcyBUUl9yZXBQcmlvcml0
eSBleHRlbmRzIFRSX1RlbXBsYXRlew0KDQoJdmFyICRzdXBwb3J0ZWRDaGFydHMgPSBhcnJheSgN
CgkJInN0YXR1cyIgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJzdGF0dXMiLCANCiAJIAkJCQkJICJ0
aXRsZSIgICAgID0+IlRlc3QgQ2FzZSBTdGF0dXMiLA0KCQkJCQkJICJ0b29sdGlwIiAgID0+IlRl
c3QgQ2FzZSBTdGF0dXMiLA0KCQkJCQkJICJhbHR0ZXh0IiAgID0+IlRlc3QgQ2FzZSBTdGF0dXMi
KSwNCgkJInByaW8iICAgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJwcmlvIiwgDQogCSAJCQkJCSAi
dGl0bGUiICAgICA9PiJUZXN0IENhc2UgUHJpb3JpdGllcyIsDQoJCQkJCQkgInRvb2x0aXAiICAg
PT4iVGVzdCBDYXNlIFByaW9yaXRpZXMiLA0KCQkJCQkJICJhbHR0ZXh0IiAgID0+IlRlc3QgQ2Fz
ZSBQcmlvcml0aWVzIikNCgkpOw0KCQ0KCXZhciAkc3VwcG9ydGVkQ2hhcnRUeXBlcyA9IGFycmF5
KA0KCQkiZ29vZ2xlIiAgID0+IGFycmF5KCAiYmFyIiwgInBpZSIsICJwaWUzIiApLA0KCSk7DQoN
CglmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFydHNBcnIoKSB7DQoJCXJldHVybiAkdGhpcy0+c3Vw
cG9ydGVkQ2hhcnRzOw0KCX0NCgkNCglmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFydFR5cGVzQXJy
KCkgew0KCQlyZXR1cm4gJHRoaXMtPnN1cHBvcnRlZENoYXJ0VHlwZXM7DQoJfQ0KDQoJZnVuY3Rp
b24gZ2V0UmVwb3J0SGVhZGVyKCkgew0KCQlyZXR1cm4gJHRoaXMtPmdldFN0YW5kYXJkUnVuSGVh
ZGVyKCk7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0UmVwb3J0Rm9vdGVyKCkgew0KCQlyZXR1cm4gIiI7
DQoJfQkNCgkNCglmdW5jdGlvbiBnZXRSZXBvcnROYW1lKCkgew0KCQlyZXR1cm4gIlByaW9yaXR5
IEJyZWFrZG93biBSZXBvcnQiOw0KCX0NCgkNCglmdW5jdGlvbiBnZXRSZXBvcnQoICRyZXN1bHQg
KSB7DQoJCSMgY2hlY2sgYW5kIHNldCBzb21lIHBhcmFtZXRlcnMNCgkJIyBmaWVsZCBmb3IgY2Fs
Y3VsYXRpbmcgdGhlIHRvdGFsIG51bWJlcjsgY291bGQgYmUgc2V0IHRvIGEgZmllbGQgdGhhdCBp
cyBpbmNsdWRlZCBpbiB0aGUgZmllbGQgbGlzdCBvZiB0aGUgc2VsZWN0IHN0YXRlbWVudCBvciB0
byByb3djb3VudCwgd2hpY2ggd2lsbCBzaW1wbHkgY291bnQgbnVtYmVyIG9mIHJvd3MNCgkJaWYg
KCR0aGlzLT5nZXRBcmdzKCktPmdldCgidG90YWwiKSA9PSAidHJ1ZSIpIHsNCgkJCSR0aGlzLT5n
ZXRBcmdzKCktPnNldCgidG90YWwiLCAiQ291bnQiKTsNCgkJfQ0KCQkNCgkJJG91dHB1dCA9ICR0
aGlzLT5yZW5kZXJQbGFpbkhUTUwoICRyZXN1bHQgKTsNCgkJDQoJCSNyZXR1cm5pbmcgdGhlIG91
dHB1dA0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0U1FMKCkgewkJCQkN
CgkJJHNxbCA9IG5ldyBUUl9TUUw7DQoJCSRzcWwtPnNldENvbm5lY3RvcigkdGhpcy0+Z2V0Q29u
bmVjdG9yKCkpOw0KCQkkc3FsLT5zZXRGcm9tKCJ0ZXN0X2Nhc2VzIik7DQoJCSRzcWwtPmFkZEZp
ZWxkKCJwcmlvcml0eSIsICJ2YWx1ZSIsICJQcmlvcml0eSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgi
dGVzdF9jYXNlX3J1bl9zdGF0dXMiLCAibmFtZSIsICJTdGF0dXMiKTsNCgkJJHNxbC0+YWRkRmll
bGQoInRlc3RfY2FzZV9ydW5zIiwgImNhc2VfaWQiLCAiQ291bnQiLCAiY291bnQoZGlzdGluY3Qg
JDEpIik7CQkNCgkJJHNxbC0+YWRkSm9pbigiSW5uZXIiLCAiPSIsICJ0ZXN0X2Nhc2VfcnVucyIs
ICJjYXNlX2lkIiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIpOw0KCQkkc3FsLT5hZGRKb2luKCJJ
bm5lciIsICI9IiwgInByaW9yaXR5IiwgImlkIiwgInRlc3RfY2FzZXMiLCAicHJpb3JpdHlfaWQi
KTsNCgkJJHNxbC0+YWRkSm9pbigiSW5uZXIiLCAiPSIsICJ0ZXN0X2Nhc2VfcnVuX3N0YXR1cyIs
ICJjYXNlX3J1bl9zdGF0dXNfaWQiLCAidGVzdF9jYXNlX3J1bnMiLCAiY2FzZV9ydW5fc3RhdHVz
X2lkIik7CQkNCgkJJHNxbC0+YWRkV2hlcmUoInRlc3RfY2FzZV9ydW5zIiwgInJ1bl9pZCIsICI9
IiwgJHRoaXMtPmdldFJ1bklEKCksICIiKTsNCiRzcWwtPmFkZFdoZXJlKCJ0ZXN0X2Nhc2VfcnVu
cyIsICJpc2N1cnJlbnQiLCAiPSIsICIxIiwgIkFORCIpOyNFRElURUQ6IGFkZGVkIHRoaXMgbGlu
ZSB0byB1c2Ugb25seSBjdXJyZW50IGJ1aWxkL2Vudmlyb25tZW50IGZvciBjYSBjYXNlIHJ1bgoJ
CSRzcWwtPmFkZEdyb3VwU29ydCgiR3JvdXAiLCAicHJpb3JpdHkiLCAidmFsdWUiKTsNI0VESVRF
RDogY2hhbmdlZCBQcmlvcml0eSB0byBwcmlvcml0eSBmb3IgdGhlIHNxbCBzZW50YW5jZSB0byBi
ZSBjb3JyZWN0CgkJJHNxbC0+YWRkR3JvdXBTb3J0KCJHcm91cCIsICJ0ZXN0X2Nhc2VfcnVuX3N0
YXR1cyIsICJuYW1lIik7DSAjRURJVEVEOiBhZGRlZCB0ZXN0X2Nhc2VfcnVuX3N0YXR1cyBhcyB0
aGUgZmllbGQgd2FzIGFtcHR5IGFuZCBubyBzb3J0aW5nIHdhcyBkb25lLgoJCSRzcWwtPmFkZEdy
b3VwU29ydCgiT3JkZXIiLCAicHJpb3JpdHkiLCAidmFsdWUiKTsNCgkJDQoJCSRzcWxTdHIgPSAk
c3FsLT50b1NRTCgpOw0KCQlyZXR1cm4gJHNxbFN0cjsKCX0JDQoJCQ0KCWZ1bmN0aW9uIGdldEdv
b2dsZUNoYXJ0TGluayggJiRnb29nbGUsICRyZXN1bHQsICR0eXBlLCAkY2hhcnQgKSB7DQoJCSRm
aWVsZCA9ICIiOw0KCQkkY29sb3IgPSAiIjsNCgkJc3dpdGNoICgkY2hhcnQpIHsNCgkJCWNhc2Ug
InN0YXR1cyI6DQoJCQkJJGZpZWxkPSJTdGF0dXMiOw0KCQkJCSRjb2xvcj0idGNycyI7DQoJCQkJ
YnJlYWs7DQoJCQljYXNlICJwcmlvIiAgOiANCgkJCQkkZmllbGQ9IlByaW9yaXR5IjsNCgkJCQkk
Y29sb3I9InByaW8iOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQkkZmllbGQ9IlByaW9y
aXR5IjsNCgkJCQkkY29sb3I9InByaW8iOwkJCQ0KCQl9DQoNCgkJaWYgKCRjaGFydCkgew0KCQkJ
JHRoaXMtPmdldEdvb2dsZUNoYXJ0T25lUm93Q291bnQoJGdvb2dsZSwkcmVzdWx0LCAkdHlwZSwg
JGNoYXJ0LCAkZmllbGQsICJDb3VudCIsICRjb2xvciwgIiIpOw0KCQl9IGVsc2Ugew0KCQkJJHRo
aXMtPmdldEdvb2dsZUNoYXJ0T25lUm93Q291bnQoJGdvb2dsZSwkcmVzdWx0LCAkdHlwZSwgInBy
aW8iLCAkZmllbGQsICJDb3VudCIsICRjb2xvciwgIiIpOw0KCQl9DQoJfQ0KfQ0KDQo/PgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRSX3JlcFN0YXR1cy5waHAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNjM2NQAxMjEwMzAw
NzY0MgAwMTI2NzEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
dXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD9waHANCiNFRElURUQ6IFRoaXMgZmlsZSB3YXMg
bW9kaWZpZWQgdG8gbWFrZSB0aGUgcmVwb3J0IGZ1bmN0aW9uIGNvcmVjdGx5LgojRURJVEVEOiBU
byB0cmFjayB0aGUgY2hhbmdlcyBtYWRlIGJlc2lkZXMgdGhlIGNvbW1lbnRlZC1vdXQgc2VjdGlv
bnMsIGZvbGxvdyB0aGUgdGFnICJFRElURUQiCg0KY2xhc3MgVFJfcmVwU3RhdHVzIGV4dGVuZHMg
VFJfVGVtcGxhdGV7DQoNCglwcml2YXRlICRzdXBwb3J0ZWRDaGFydHMgPSBhcnJheSgpOw0KCQ0K
CXByaXZhdGUgJHN1cHBvcnRlZENoYXJ0VHlwZXMgPSBhcnJheSgNCgkJImdvb2dsZSIgICA9PiBh
cnJheSggImJhciIsICJwaWUiLCAicGllMyIgKSwNCgkpOw0KDQoJZnVuY3Rpb24gZ2V0U3VwcG9y
dGVkQ2hhcnRzQXJyKCkgew0KCQlyZXR1cm4gJHRoaXMtPnN1cHBvcnRlZENoYXJ0czsNCgl9DQoJ
DQoJZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ2hhcnRUeXBlc0FycigpIHsNCgkJcmV0dXJuICR0aGlz
LT5zdXBwb3J0ZWRDaGFydFR5cGVzOw0KCX0NCg0KCS8qKg0KCSogaW1wbGVtZW50YXRpb24gb2Yg
dGhlIGFic3RyYWN0IGZ1bmN0aW9uIG9mIHRoZSBzdXBlciBjbGFzcw0KCSovDQoJZnVuY3Rpb24g
Z2V0UmVwb3J0KCAkcmVzdWx0ICkgew0KCQkjIGNoZWNrIGFuZCBzZXQgc29tZSBwYXJhbWV0ZXJz
DQoJCSMgZmllbGQgZm9yIGNhbGN1bGF0aW5nIHRoZSB0b3RhbCBudW1iZXI7IGNvdWxkIGJlIHNl
dCB0byBhIGZpZWxkIHRoYXQgaXMgaW5jbHVkZWQgaW4gdGhlIGZpZWxkIGxpc3Qgb2YgdGhlIHNl
bGVjdCBzdGF0ZW1lbnQgb3IgdG8gcm93Y291bnQsIHdoaWNoIHdpbGwgc2ltcGx5IGNvdW50IG51
bWJlciBvZiByb3dzCQ0KCQlpZiAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJ0b3RhbCIpID09ICJ0
cnVlIikgew0KCQkJJHRoaXMtPmdldEFyZ3MoKS0+c2V0KCJ0b3RhbCIsICJDb3VudCIpOw0KCQl9
DQoJDQoJCSRvdXRwdXQgPSAkdGhpcy0+cmVuZGVyUGxhaW5IVE1MKCAkcmVzdWx0ICk7CQ0KCQkN
CgkJI3JldHVybmluZyB0aGUgb3V0cHV0DQoJICAgIHJldHVybiAkb3V0cHV0Ow0KCX0NCgkJDQoJ
ZnVuY3Rpb24gZ2V0UmVwb3J0TmFtZSgpIHsNCgkJcmV0dXJuICJUZXN0IENhc2UgU3RhdHVzIFJl
cG9ydCI7DQoJfQ0KCQkNCgkvKioNCgkqIENyZWF0ZSB0aGUgcmVwb3J0IGhlYWRlcg0KCSoqLw0K
CWZ1bmN0aW9uIGdldFJlcG9ydEhlYWRlcigpIHsNCgkJcmV0dXJuICR0aGlzLT5nZXRTdGFuZGFy
ZFJ1bkhlYWRlcigpOw0KCX0NCg0KCWZ1bmN0aW9uIGdldFJlcG9ydEZvb3RlcigpIHsNCgkJI3Jl
dHVybiAiPGI+TnVtYmVyIG9mIHRlc3QgY2FzZXMgaW4gdGhpcyBydW46ICIuJHRoaXMtPmdldFRv
dGFsKCkuIjwvYj4iOw0KCQlyZXR1cm4gIiI7DQoJfQkNCgkNCglmdW5jdGlvbiBnZXRTUUwoKSB7
CQkJCQ0KCQkkc3FsID0gbmV3IFRSX1NRTDsNCgkJJHNxbC0+c2V0Q29ubmVjdG9yKCR0aGlzLT5n
ZXRDb25uZWN0b3IoKSk7DQoJCSRzcWwtPnNldEZyb20oInRlc3RfY2FzZXMiKTsNCgkJJHNxbC0+
YWRkRmllbGQoInRlc3RfY2FzZV9ydW5fc3RhdHVzIiwgIm5hbWUiLCAiU3RhdHVzIik7DQoJCSRz
cWwtPmFkZEZpZWxkKCJ0ZXN0X2Nhc2VfcnVucyIsICJjYXNlX2lkIiwgIkNvdW50IiwgImNvdW50
KGRpc3RpbmN0ICQxKSIpOw0KCQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2Fz
ZV9ydW5zIiwgImNhc2VfaWQiLCAidGVzdF9jYXNlcyIsICJjYXNlX2lkIik7DQoJCSRzcWwtPmFk
ZEpvaW4oIklubmVyIiwgIj0iLCAidGVzdF9jYXNlX3J1bl9zdGF0dXMiLCAiY2FzZV9ydW5fc3Rh
dHVzX2lkIiwgInRlc3RfY2FzZV9ydW5zIiwgImNhc2VfcnVuX3N0YXR1c19pZCIpOwkJDQoJCSRz
cWwtPmFkZFdoZXJlKCJ0ZXN0X2Nhc2VfcnVucyIsICJydW5faWQiLCAiPSIsICR0aGlzLT5nZXRS
dW5JRCgpKTsNCiRzcWwtPmFkZFdoZXJlKCJ0ZXN0X2Nhc2VfcnVucyIsICJpc2N1cnJlbnQiLCAi
PSIsICIxIiwgIkFORCIpOyNFRElURUQ6IGFkZGVkIHRoaXMgbGluZSB0byB1c2Ugb25seSBjdXJy
ZW50IGJ1aWxkL2Vudmlyb25tZW50IGZvciBjYSBjYXNlIHJ1bgoJCSRzcWwtPmFkZEdyb3VwU29y
dCgiR3JvdXAiLCJ0ZXN0X2Nhc2VfcnVucyIsICJydW5faWQiKTsNCgkJJHNxbC0+YWRkR3JvdXBT
b3J0KCJHcm91cCIsInRlc3RfY2FzZV9ydW5fc3RhdHVzIiwgIm5hbWUiKTsNCgkJJHNxbC0+YWRk
R3JvdXBTb3J0KCJPcmRlciIsInRlc3RfY2FzZV9ydW5fc3RhdHVzIiwgIm5hbWUiKTsJCQ0KCQkJ
CQ0KCQlyZXR1cm4gJHNxbC0+dG9TUUwoKTsNCgl9CQ0KCQkNCglmdW5jdGlvbiBnZXRHb29nbGVD
aGFydExpbmsoICYkZ29vZ2xlLCAkcmVzdWx0LCAkdHlwZSwgJGNoYXJ0ICkgew0KCQkkY29sb3Ig
PSBuZXcgVFJfQ29sb3JzOw0KCQkNCgkJJGxhYmVsPSIiOw0KCQkkZGF0YT0iIjsNCgkJJGhyZWY9
IiI7DQoJCSR0b3RhbD0wOw0KCQkNCgkJaWYgKCEkdGhpcy0+Z2V0VG90YWwoKSkgew0KCQkJJHRo
aXMtPmNhbGNUb3RhbCggJHJlc3VsdCApOw0KCQkJJHRvdGFsPSR0aGlzLT5nZXRUb3RhbCgpOw0K
CQl9IGVsc2Ugew0KCQkJJHRvdGFsID0gJHRoaXMtPmdldFRvdGFsKCk7DQoJCX0NCgkJDQoJCSRn
b29nbGUtPnNldERhdGFNaW5SYW5nZSgwKTsNCgkJDQoJCWZvcmVhY2ggKCRyZXN1bHQgYXMgJGxp
bmUpIHsNCgkJCSRwbG90RGF0YSA9ICIiOw0KCQkJJGk9MDsNCgkJCWZvcmVhY2ggKCRsaW5lIGFz
ICRjb2xfdmFsdWUpIHsJCQkJCQ0KCQkJCSNsYWJlbHMgYW5kIGNvbG9ycw0KCQkJCWlmICgkaT09
MCkgew0KCQkJCQkkbGFiZWw9JGNvbF92YWx1ZTsNCgkJCQkJJGdvb2dsZS0+YWRkQ29sb3IoJGNv
bG9yLT5nZXRDb2xvckhUTUwoJGNvbF92YWx1ZSwgInRjcnMiKSk7DQoJCQkJfQ0KCQkJCQ0KCQkJ
CSNkYXRhDQoJCQkJaWYgKCRpPT0xKSB7DQoJCQkJCSRsYWJlbC49IigiLiRjb2xfdmFsdWUuIiki
Ow0KCQkJCQlpZiAoJHRvdGFsKSB7DQoJCQkJCQkkbGFiZWwuPSAiKyIucm91bmQoJGNvbF92YWx1
ZS8kdG90YWwqMTAwKS4iJSI7IA0KCQkJCQl9DQoJCQkJCQ0KCQkJCQkkZ29vZ2xlLT5hZGRMYWJl
bCgkbGFiZWwpOw0KCQkJCQkkZ29vZ2xlLT5hZGRMZWdlbmQoJGxhYmVsKTsNCgkJCQkJJGdvb2ds
ZS0+YWRkRGF0YSgkY29sX3ZhbHVlKTsNCgkJCQl9DQoJCQkJDQoJCQkJJGkrKzsNCgkJCX0NCgkJ
fQ0KCQkNCgkJaWYgKCR0eXBlID09ICJiYXIiKSB7ICRnb29nbGUtPmhpZGVMYWJlbHMoIHRydWUg
KTsgfQ0KCQlpZiAoJHR5cGUgPT0gInBpZSIgb3IgJHR5cGUgPT0gInBpZTMiKSB7ICRnb29nbGUt
PmhpZGVMZWdlbmQoIHRydWUgKTsgfQkJDQoJfQkNCn0NCg0KPz4AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABUUl9yZXBUZXN0cGxhbi5waHAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMTY0NzUAMTIxMDMwMDc2NTIAMDEz
MjA0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAA
cm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAADw/cGhwDQojRURJVEVEOiBUaGlzIGZpbGUgd2FzIG1vZGlmaWVk
IHRvIG5vdCBkaXNwbGF5IHRoZSBFc3RpbWF0ZWQgVGltZSBmb3IgYSB0ZXN0IGNhc2UgYW5kIGFs
c28gdG8gbm90IGV4ZWN1dGUgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zLgojRURJVEVEOiBUbyB0cmFj
ayB0aGUgY2hhbmdlcyBtYWRlIGJlc2lkZXMgdGhlIGNvbW1lbnRlZC1vdXQgc2VjdGlvbnMsIGZv
bGxvdyB0aGUgdGFnICJFRElURUQiCg0KY2xhc3MgVFJfcmVwVGVzdHBsYW4gZXh0ZW5kcyBUUl9U
ZW1wbGF0ZXsNCg0KCXByaXZhdGUgJHN1cHBvcnRlZENoYXJ0cyA9IGFycmF5KCANCgkJInRzdGF0
dXMiICA9PiBhcnJheSgicGFyYW1ldGVyIj0+InRzdGF0dXMiLCANCgkJCQkJCQkidGl0bGUiICAg
ID0+IlRlc3QgQ2FzZSBTdGF0dXMiLA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4iVGVzdCBDYXNlIFN0
YXR1cyIsDQoJCQkJCQkJImFsdHRleHQiICA9PiJUZXN0IENhc2UgU3RhdHVzIiksDQoJCSJ0ZXN0
ZXJzIiAgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJ0ZXN0ZXJzIiwgDQoJCQkJCQkJInRpdGxlIiAg
ICA9PiJUZXN0ZXIgQXNzaWdubWVudHMiLA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4iVGVzdGVyIEFz
c2lnbm1lbnRzIiwNCgkJCQkJCQkiYWx0dGV4dCIgID0+IlRlc3RlciBBc3NpZ25tZW50cyIpLA0K
CQkiY2F0ZWdvcnkiID0+IGFycmF5KCJwYXJhbWV0ZXIiPT4iY2F0ZWdvcnkiLCANCgkJCQkJCQki
dGl0bGUiICAgID0+IlRlc3QgQ2FzZSBDYXRlZ29yaWVzIiwNCgkJCQkJCQkidG9vbHRpcCIgID0+
IlRlc3QgQ2FzZSBDYXRlZ29yaWVzIiwNCgkJCQkJCQkiYWx0dGV4dCIgID0+IlRlc3QgQ2FzZSBD
YXRlZ29yaWVzIiksDQoJCSJ0cHJpbyIgICAgPT4gYXJyYXkoInBhcmFtZXRlciI9PiJ0cHJpbyIs
IA0KCQkJCQkJCSJ0aXRsZSIgICAgPT4iVGVzdCBDYXNlIFByaW9yaXRpZXMiLA0KCQkJCQkJCSJ0
b29sdGlwIiAgPT4iVGVzdCBDYXNlIFByaW9yaXRpZXMiLA0KCQkJCQkJCSJhbHR0ZXh0IiAgPT4i
VGVzdCBDYXNlIFByaW9yaXRpZXMiKSwNCgkJImNyZWF0aW9uIiA9PiBhcnJheSgicGFyYW1ldGVy
Ij0+ImNyZWF0aW9uIiwgDQoJCQkJCQkJInRpdGxlIiAgICA9PiJUZXN0IENhc2UgQ3JlYXRpb24i
LA0KCQkJCQkJCSJ0b29sdGlwIiAgPT4iVGVzdCBDYXNlIENyZWF0aW9uIiwNCgkJCQkJCQkiYWx0
dGV4dCIgID0+IlRlc3QgQ2FzZSBDcmVhdGlvbiIpLA0KCQ0KCQkidGltZXMiICAgID0+IGFycmF5
KCJwYXJhbWV0ZXIiPT4idGltZXMiLCANCgkJCQkJCQkidGl0bGUiICAgID0+IkVzdGltYXRlZCBU
aW1lcyIsDQoJCQkJCQkJInRvb2x0aXAiICA9PiJFc3RpbWF0ZWQgVGltZXMiLA0KCQkJCQkJCSJh
bHR0ZXh0IiAgPT4iRXN0aW1hdGVkIFRpbWVzIikNCgkNCgkpOw0KCQ0KCXByaXZhdGUgJHN1cHBv
cnRlZENoYXJ0VHlwZXMgPSBhcnJheSgNCgkJImdvb2dsZSIgICA9PiBhcnJheSggInBpZSIsICJw
aWUzIiwgImJhciIgKSwNCgkpOw0KCQ0KCXByaXZhdGUgJGNvbHVtbkZvcm1hdHMgPSBhcnJheSgN
CgkJIlByaW9yaXR5IiA9PiAidGV4dC1hbGlnbjpjZW50ZXIiDQoJKTsgDQoJDQoJcHVibGljIGZ1
bmN0aW9uIGdldENvbHVtbkZvcm1hdHMoKSB7DQoJCXJldHVybiAkdGhpcy0+Y29sdW1uRm9ybWF0
czsNCgl9CQ0KCQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFydHNBcnIoKSB7DQoJ
CXJldHVybiAkdGhpcy0+c3VwcG9ydGVkQ2hhcnRzOw0KCX0NCgkNCglwdWJsaWMgZnVuY3Rpb24g
Z2V0U3VwcG9ydGVkQ2hhcnRUeXBlc0FycigpIHsNCgkJcmV0dXJuICR0aGlzLT5zdXBwb3J0ZWRD
aGFydFR5cGVzOw0KCX0NCg0KCS8qKg0KCSogaW1wbGVtZW50YXRpb24gb2YgdGhlIGFic3RyYWN0
IGZ1bmN0aW9uIG9mIHRoZSBzdXBlciBjbGFzcw0KCSovDQoJcHVibGljIGZ1bmN0aW9uIGdldFJl
cG9ydCggJHJlc3VsdCApIHsNCgkJIyBjaGVjayBhbmQgc2V0IHNvbWUgcGFyYW1ldGVycw0KCQkj
IGZpZWxkIGZvciBjYWxjdWxhdGluZyB0aGUgdG90YWwgbnVtYmVyOyBjb3VsZCBiZSBzZXQgdG8g
YSBmaWVsZCB0aGF0IGlzIGluY2x1ZGVkIGluIHRoZSBmaWVsZCBsaXN0IG9mIHRoZSBzZWxlY3Qg
c3RhdGVtZW50IG9yIHRvIHJvd2NvdW50LCB3aGljaCB3aWxsIHNpbXBseSBjb3VudCBudW1iZXIg
b2Ygcm93cwkNCgkJaWYgKCR0aGlzLT5nZXRBcmdzKCktPmdldCgidG90YWwiKSA9PSAidHJ1ZSIp
IHsNCgkJCSR0aGlzLT5nZXRBcmdzKCktPnNldCgidG90YWwiLCAicm93Y291bnQiKTsNCgkJfQ0K
CQ0KCQkkb3V0cHV0ID0gJHRoaXMtPnJlbmRlclBsYWluSFRNTCggJHJlc3VsdCApOwkNCgkJDQoJ
CSNyZXR1cm5pbmcgdGhlIG91dHB1dA0KCSAgICByZXR1cm4gJG91dHB1dDsNCgl9DQoJCQ0KCXB1
YmxpYyBmdW5jdGlvbiBnZXRSZXBvcnROYW1lKCkgew0KCQlyZXR1cm4gIkxpc3Qgb2YgVGVzdCBD
YXNlcyI7DQoJfQ0KCQkNCgkvKioNCgkqIENyZWF0ZSB0aGUgcmVwb3J0IGhlYWRlcg0KCSoqLw0K
CXB1YmxpYyBmdW5jdGlvbiBnZXRSZXBvcnRIZWFkZXIoKSB7DQoJCXJldHVybiAkdGhpcy0+Z2V0
U3RhbmRhcmRQbGFuSGVhZGVyKCk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldFJlcG9ydEZv
b3RlcigpIHsNCgkJcmV0dXJuICIiOw0KCX0JDQoJDQoJcHVibGljIGZ1bmN0aW9uIG5ld0xpbmVC
ZWdpbiggJGxpbmUgKSB7DQoJCSRvdXRwdXQgPSAiIjsNCgkJaWYgKCRsaW5lWyJTdGF0dXMiXSA9
PSAkdGhpcy0+Z2V0Q29udGV4dCgpLT5nZXRNZXNzYWdlVGV4dCgidHJSZXBvcnRfVGVzdG9waWFf
RGlzYWJsZWQiKSkgew0KCQkJJG91dHB1dCA9ICI8dHIgY2xhc3M9XCJ0ZXN0b3BpYV9UZXN0Q2Fz
ZURpc2FibGVkXCI+IjsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJcHVibGljIGZ1
bmN0aW9uIHJlbmRlckNlbGwoJHR5cGUsICRjb2xObywgJGZpZWxkX25hbWUsICR2YWx1ZSwgJGxp
bmVObywgJGxpbmUpIHsNCgkJJG91dHB1dCA9ICIiOw0KCQkNCgkJaWYgKCR0eXBlPT0iYm9keSIp
IHsNCgkJCXN3aXRjaCAoJGZpZWxkX25hbWUpIHsNCgkJCQljYXNlICJUZXN0X0Nhc2UiOiANCgkJ
CQkJCSRvdXRwdXQ9Ijx0ZD48YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2Vy
dmVyIikuIi90cl9zaG93X2Nhc2UuY2dpP2Nhc2VfaWQ9Ii4kdmFsdWUuIlwiPiIuJHZhbHVlLiI8
L2E+PC90ZD4iOw0KCQkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiRGVwZW5kcyBPbiI6DQoJCQkJCQkk
b3V0cHV0PSI8dGQ+PGEgaHJlZj1cIiIuJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJienNlcnZlciIp
LiIvdHJfc2hvd19jYXNlLmNnaT9jYXNlX2lkPSIuJHZhbHVlLiJcIj4iLiR2YWx1ZS4iPC9hPjwv
dGQ+IjsNCgkJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIlRlc3RlciI6DQoJCQkJCQlpZiAoJHZhbHVl
ID09ICIiKSB7DQoJCQkJCQkJJG91dHB1dD0iPHRkIGNsYXNzPVwidGVzdG9waWFfVGVzdENhc2VX
YXJuXCI+PC90ZD4iOw0KCQkJCQkJfQ0KCQkJCQkJYnJlYWs7DQojCQkJCWNhc2UgIkVzdGltLiBU
aW1lIjoNCiMJCQkJCQlpZiAoJHZhbHVlID09ICIiKSB7DQojCQkJCQkJCSRvdXRwdXQ9Ijx0ZCBj
bGFzcz1cInRlc3RvcGlhX1Rlc3RDYXNlV2FyblwiPjwvdGQ+IjsNCiMJCQkJCQl9IGVsc2Ugew0K
IwkJCQkJCQkkdGltZSA9IGV4cGxvZGUoIjoiLCR2YWx1ZSk7DQojCQkJCQkJCSR0aW1lID0gJHRp
bWVbMF0qNjAqNjArJHRpbWVbMV0qNjArJHRpbWVbMl07DQojCQkJCQkJCWlmICgkdGltZSA9PSAw
KSB7DQojCQkJCQkJCQkkb3V0cHV0PSI8dGQgY2xhc3M9XCJ0ZXN0b3BpYV9UZXN0Q2FzZVdhcm5c
Ij4iLiR2YWx1ZS4iPC90ZD4iOw0KIwkJCQkJCQl9DQojCQkJCQkJfQ0KCQkJCQkJYnJlYWs7DQoJ
CQkJY2FzZSAiU3RhdHVzIjoNCgkJCQkJCXN3aXRjaCAoJHZhbHVlKSB7DQoJCQkJCQkJY2FzZSAk
dGhpcy0+Z2V0Q29udGV4dCgpLT5nZXRNZXNzYWdlVGV4dCgidHJSZXBvcnRfVGVzdG9waWFfQ29u
ZmlybWVkIik6ICRvdXRwdXQ9Ijx0ZCBjbGFzcz1cInRlc3RvcGlhX1Rlc3RDYXNlQ29uZmlybWVk
XCI+Ii4kdmFsdWUuIjwvdGQ+IjsgYnJlYWs7DQoJCQkJCQkJY2FzZSAkdGhpcy0+Z2V0Q29udGV4
dCgpLT5nZXRNZXNzYWdlVGV4dCgidHJSZXBvcnRfVGVzdG9waWFfUHJvcG9zZWQiKSA6ICRvdXRw
dXQ9Ijx0ZCBjbGFzcz1cInRlc3RvcGlhX1Rlc3RDYXNlUHJvcG9zZWRcIj4iLiR2YWx1ZS4iPC90
ZD4iOyBicmVhazsNCgkJCQkJCQlkZWZhdWx0OiAkb3V0cHV0ID0gIiI7DQoJCQkJCQl9DQoJCQkJ
ZGVmYXVsdDogcmV0dXJuICRvdXRwdXQ7DQoJCQl9DQoJCX0NCgkJDQoJCXJldHVybiAkb3V0cHV0
Ow0KCX0JDQoJDQoJZnVuY3Rpb24gZ2V0U1FMKCkgewkJDQoJCSRzcWwgPSBuZXcgVFJfU1FMOw0K
CQkkc3FsLT5zZXRDb25uZWN0b3IoJHRoaXMtPmdldENvbm5lY3RvcigpKTsNCgkJDQoJCSRzcWwt
PnNldEZyb20oInRlc3RfcGxhbnMiKTsNCgkNCgkJJHNxbC0+YWRkRmllbGQoInRlc3RfY2FzZXMi
LCAiY2FzZV9pZCIsICJUZXN0X0Nhc2UiKTsJCQ0KCQkkc3FsLT5hZGRGaWVsZCgidGVzdF9jYXNl
cyIsICJzdW1tYXJ5IiwgIlRlc3QgQ2FzZSBTdW1tYXJ5Iik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0
ZXN0X2Nhc2VfY2F0ZWdvcmllcyIsICJuYW1lIiwgIkNhdGVnb3J5Iik7DQoJCSRzcWwtPmFkZEZp
ZWxkKCJwcmlvcml0eSIsICJ2YWx1ZSIsICJQcmlvcml0eSIpOw0KCQkkc3FsLT5hZGRGaWVsZCgi
cHJvZmlsZXMiLCAicmVhbG5hbWUiLCAiVGVzdGVyIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0
X2Nhc2Vfc3RhdHVzIiwgIm5hbWUiLCAiU3RhdHVzIik7DQoJCSRzcWwtPmFkZEZpZWxkKCJ0ZXN0
X2Nhc2VzIiwgImNyZWF0aW9uX2RhdGUiLCAiQ3JlYXRpb24gRGF0ZSIsICJMRUZUKCQxLDEwKSIp
Ow0KJHNxbC0+YWRkRmllbGQoInRlc3RfY2FzZV9hY3Rpdml0eSIsICJjaGFuZ2VkIiwgIkxhc3Rf
Q2hhbmdlZCIpOyAjRURJVEVEOiBhZGRlZCBhIExhc3QgQ2hhbmdlZCBmaWVsZCB0byB0aGUgdGFi
bGUKIwkJJHNxbC0+YWRkRmllbGQoInRlc3RfY2FzZXMiLCAiZXN0aW1hdGVkX3RpbWUiLCAiRXN0
aW0uIFRpbWUiKTsNCiMJCQ0KCQkkc3FsLT5hZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2Fz
ZV9wbGFucyIsICJwbGFuX2lkIiwgInRlc3RfcGxhbnMiLCAicGxhbl9pZCIpOw0KCQkkc3FsLT5h
ZGRKb2luKCJJbm5lciIsICI9IiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIsICJ0ZXN0X2Nhc2Vf
cGxhbnMiLCAiY2FzZV9pZCIpOw0KJHNxbC0+YWRkSm9pbigiTGVmdCIsICI9IiwgInRlc3RfY2Fz
ZV9hY3Rpdml0eSIsICJjYXNlX2lkIiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIpOyAjRURJVEVE
OiBhZGRlZCBhIEpPSU4gdG8gZ2V0IHRoZSBMYXN0IENoYW5nZWQgZmllbGQgaW4gdGhlIHRhYmxl
CgkJJHNxbC0+YWRkSm9pbigiTGVmdCIsICI9IiwgInRlc3RfY2FzZV9jYXRlZ29yaWVzIiwgImNh
dGVnb3J5X2lkIiwgInRlc3RfY2FzZXMiLCAiY2F0ZWdvcnlfaWQiKTsNCgkJJHNxbC0+YWRkSm9p
bigiSW5uZXIiLCAiPSIsICJwcmlvcml0eSIsICJpZCIsICJ0ZXN0X2Nhc2VzIiwgInByaW9yaXR5
X2lkIik7IA0KCQkkc3FsLT5hZGRKb2luKCJMZWZ0IiwgIj0iLCAicHJvZmlsZXMiLCAidXNlcmlk
IiwgInRlc3RfY2FzZXMiLCAiZGVmYXVsdF90ZXN0ZXJfaWQiKTsNCgkJJHNxbC0+YWRkSm9pbigi
SW5uZXIiLCAiPSIsICJ0ZXN0X2Nhc2Vfc3RhdHVzIiwgImNhc2Vfc3RhdHVzX2lkIiwgInRlc3Rf
Y2FzZXMiLCAiY2FzZV9zdGF0dXNfaWQiKTsNCgkJDQojCQkkc3FsLT5hZGRHcm91cFNvcnQoIk9y
ZGVyIiwgInRlc3RfY2FzZXMiLCAiY2FzZV9pZCIpOyBFRElURUQ6IFRoaXMgbGluZSBpcyBubyBs
b25nZXIgbmVlZGVkIGFzIHRoZSBvcmRlcmluZyBpcyBkb25lIGxhdGVyCgkJDQoJCSRzcWwtPmFk
ZFdoZXJlKCJ0ZXN0X3BsYW5zIiwgInBsYW5faWQiLCAiPSIsICR0aGlzLT5nZXRQbGFuSUQoKSk7
DQojCQlyZXR1cm4gJHNxbC0+dG9TUUwoKTsgI0VESVRFRDogcmVtb3ZlZCB0aGlzIGxpbmUgYW5k
IGFkZGVkIHRoZSBiZWxvdyAyIGxpbmVzIHRvIHNvcnQgZGVzY2VuZGFudCBieSBMYXN0X0NoYW5n
ZWQgYW5kIGdyb3VwIGJ5IFRlc3RfQ2FzZSA9PiBBIHdvcmtpbmcgTGFzdF9DaGFuZ2VkIGZpZWxk
IGZvciB0aGUgcmVwb3J0IQokcmVzdWx0PSRzcWwtPnRvU1FMKCk7CnJldHVybiAic2VsZWN0ICog
ZnJvbSAoc2VsZWN0ICogZnJvbSAoc2VsZWN0ICogZnJvbSAoJHJlc3VsdCkgYXMgdGVzdCBvcmRl
ciBieSBMYXN0X0NoYW5nZWQgREVTQykgYXMgdGVzdDIgZ3JvdXAgYnkgVGVzdF9DYXNlKSBhcyB0
ZXN0MyBvcmRlciBieSBDYXRlZ29yeSBERVNDLCBUZXN0X0Nhc2UiOw0KCX0JDQoJCQ0KCWZ1bmN0
aW9uIGdldEdvb2dsZUNoYXJ0TGluayggJiRnb29nbGUsICRyZXN1bHQsICR0eXBlLCAkY2hhcnQg
KSB7DQoJCSRmaWVsZCA9ICIiOw0KCQkkY29sb3IgPSAiIjsNCgkJJGNvbG9ycmFuZ2UgPSAiIjsN
CgkJDQoJCXN3aXRjaCAoJGNoYXJ0KSB7DQoJCQljYXNlICJ0ZXN0ZXJzIiA6DQoJCQkJCSRmaWVs
ZD0iVGVzdGVyIjsNCgkJCQkJJGNvbG9yPSJhdXRvIjsgDQoJCQkJCSRjb2xvcnJhbmdlID0gInJh
aW5ib3ciOw0KCQkJCQlicmVhazsNCgkJCWNhc2UgImNhdGVnb3J5IjoNCgkJCQkJJGZpZWxkPSJD
YXRlZ29yeSI7DQoJCQkJCSRjb2xvcnJhbmdlID0gIm9yYW5nZSI7DQoJCQkJCSRjb2xvcj0iYXV0
byI7DQoJCQkJCWJyZWFrOw0KCQkJY2FzZSAidHN0YXR1cyIgOg0KCQkJCQkkZmllbGQ9IlN0YXR1
cyI7DQoJCQkJCSRjb2xvcj0idHN0YXR1cyI7CQkJDQoJCQkJCWJyZWFrOw0KCQkJY2FzZSAidHBy
aW8iIDoNCgkJCQkJJGZpZWxkPSJQcmlvcml0eSI7DQoJCQkJCSRjb2xvcj0icHJpbyI7DQoJCQkJ
CWJyZWFrOwkNCgkJCWNhc2UgImNyZWF0aW9uIjoNCgkJCQkJJGZpZWxkPSJDcmVhdGlvbiBEYXRl
IjsNCgkJCQkJJGNvbG9yPSJhdXRvIjsgDQoJCQkJCSRjb2xvcnJhbmdlPSJyYWluYm93IjsNCgkJ
CQkJYnJlYWs7CQkJCQkJCQkJCQkNCgkJCWNhc2UgInRpbWVzIjoNCgkJCQkJJGZpZWxkPSJFc3Rp
bS4gVGltZSI7DQoJCQkJCSRjb2xvcj0iYXV0byI7IA0KCQkJCQkkY29sb3JyYW5nZT0icmFpbmJv
dyI7DQoJCQkJCWJyZWFrOwkJCQkJDQoJCQlkZWZhdWx0Og0KCQkJCQkkZmllbGQ9IlRlc3RlciI7
DQoJCQkJCSRjb2xvcj0iYXV0byI7IA0KCQkJCQkkY29sb3JyYW5nZSA9ICJyYWluYm93IjsJCQkN
CgkJfQ0KCQ0KCQlpZiAoJGNoYXJ0KSB7DQoJCQkkdGhpcy0+Z2V0R29vZ2xlQ2hhcnRPbmVSb3dD
b3VudCgkZ29vZ2xlLCAkcmVzdWx0LCAkdHlwZSwgJGNoYXJ0LCAkZmllbGQsICIiLCAkY29sb3Is
ICRjb2xvcnJhbmdlKTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5nZXRHb29nbGVDaGFydE9uZVJv
d0NvdW50KCRnb29nbGUsJHJlc3VsdCwgJHR5cGUsICJ0ZXN0ZXJzIiwgJGZpZWxkLCAiIiwgJGNv
bG9yLCAkY29sb3JyYW5nZSk7DQoJCX0NCgl9CQ0KfQ0KDQo/PgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAFRSX1RlbXBsYXRlLnBocAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAw
MDAwMDAAMDAwMDAwMAAwMDAwMDA2MzYxNgAxMjEwMzAwNzY2MQAwMTI0NTUAIDAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAPD9waHANCiNFRElURUQ6IFRoaXMgZmlsZSB3YXMgbW9kaWZpZWQgdG8gYWRkIFRlc3QgUGxh
biBuYW1lcyBpbnNpZGUgdGhlIHJlcG9ydHMgZ2VuZXJhdGVkIGZvciBUZXN0IFJ1bnMuCiNFRElU
RUQ6IFRvIHRyYWNrIHRoZSBjaGFuZ2VzIG1hZGUgYmVzaWRlcyB0aGUgY29tbWVudGVkLW91dCBz
ZWN0aW9ucywgZm9sbG93IHRoZSB0YWcgIkVESVRFRCIgLgoNCi8qKg0KICogQ29weXJpZ2h0IChD
KSAyMDA5IC0gQW5kcmVhcyBN/GxsZXINCiAqDQogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCANCiAqIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlDQogKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIA0KICogYW55IGxhdGVyIHZlcnNpb24u
DQogKg0KICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsIGJ1dCANCiAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIA0KICogb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yICAgIA0KICogbW9yZSBkZXRhaWxzLg0KICogDQogKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyAN
CiAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp
Y2Vuc2VzPi4NCiAqLw0KDQphYnN0cmFjdCBjbGFzcyBUUl9UZW1wbGF0ZSB7DQoJCQkNCgkjIGNv
bm5lY3RvciBjbGFzcw0KCXByaXZhdGUgJGNvbm5lY3RvcjsNCgkjIEluc3RhbmNlIG9mIFRlc3Rv
cGlhUGFyYW1ldGVycw0KCXByaXZhdGUgJGFyZ3VtZW50czsNCglwcml2YXRlICRjb250ZXh0Ow0K
CQ0KCSNvdGhlcnMNCglwcml2YXRlICR0b3RhbDsgCQkgICAgI2ZvciB0b3RhbCBsaW5lDQoJcHJp
dmF0ZSAkbXNnTm90aGluZ0ZvdW5kOwkjaWYgbm90aGluZyB3YXMgZm91bmQgLSBjdXN0b21pemVk
IG1lc3NhZ2U7IGNvdWxkIGJlIHNldCBieSByZXBvcnQNCglwcml2YXRlICRkZWZhdWx0Q29sb3JS
YW5nZSA9ICJ5ZWxsb3ciOw0KCQ0KCXByaXZhdGUgJE9TV2luOwkJCQkjIG9wZXJhdGluZyBzeXN0
ZW0gb2YgdGhlIHNlcnZlcjsgaWYgV2luZG93cyA9IHRydWUgZWxzZSBmYWxzZQ0KCXByaXZhdGUg
JG5ld2xpbmU7CQkJIyBuZXcgbGluZSBjaGFyYWN0ZXIgZm9yIGZpbGUgb3V0cHV0CQ0KCQ0KCSMg
cmVwb3J0IGRpbWVuc2lvbnMNCglwdWJsaWMgJG51bU9mQ29sczsNCglwdWJsaWMgJG51bU9mUm93
czsNCglwdWJsaWMgJGNvbHVtbk5hbWVzOyAvLyBhcnJheSBvZiBjb2x1bW4gbmFtZXMNCglwdWJs
aWMgJHByZXZpb3VzTGluZTsNCgkNCgkjIGxvY2FsIGNvcHkgb2YgdGhlIGhlYWRlcjsgdXNlZCBv
bmx5IGlmIHRoZSByZXBvcnQgaXMgaGlkZGVuICh3aWxsIGJlIGRpc3BsYXllZCBhbG9uZyB3aXRo
IHRoZSBzaG93IGJ1dHRvbikNCglwdWJsaWMgJGhlYWRlcjsgDQoJIyB1bmlxdWUgSURzIGZvciB0
aGUgZGl2IGFyZWFzIGZvciBoaWRpbmcgYW5kIHNob3dpbmcgdGhlIHJlcG9ydA0KCXB1YmxpYyAk
aGlkZUlEID0gYXJyYXkoKTsgDQoJDQoJLyoqDQoJICogQ29uc3RydWN0b3INCgkgKi8NCglmdW5j
dGlvbiBUUl9UZW1wbGF0ZSAoKSB7DQoJCSR0aGlzLT5PU1dpbiA9ICR0aGlzLT5jaGVja1dpbmRv
d3MoKTsNCgkJDQoJCWlmICgkdGhpcy0+T1NXaW4gPT0gdHJ1ZSkgew0KCQkJJHRoaXMtPnNldE5l
d2xpbmUoIlxyXG4iKTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5zZXROZXdsaW5lKCJcbiIpOw0K
CQl9DQoJfQ0KCQ0KCS8qKg0KCSAqIEBwYXJhbSAkY29udGV4dCA9IGNvbnRleHQgb2YgdGhpcyBj
bGFzcyA9IFRlc3RvcGlhUmVwb3J0DQoJICogQHJldHVybiAtDQoJICovDQoJcHVibGljIGZ1bmN0
aW9uIHNldENvbnRleHQoICRjb250ZXh0ICkgew0KCQkkdGhpcy0+Y29udGV4dCA9ICRjb250ZXh0
Ow0KCX0NCgkNCgkvKioNCgkgKiBAcmV0dXJuIGNvbnRleHQgY2xhc3MgPSBUZXN0b3BpYVJlcG9y
dA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZXh0KCkgew0KCQlyZXR1cm4gJHRoaXMt
PmNvbnRleHQ7DQoJfQ0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gY2hlY2tXaW5kb3dzKCkgew0KCQlp
ZiAoIHN0cnRvdXBwZXIoc3Vic3RyKHBocF91bmFtZSgpLCAwLCAzKSkgPT09ICdXSU4nICkgew0K
CQkJcmV0dXJuIHRydWU7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9CQ0K
CQ0KCXByaXZhdGUgZnVuY3Rpb24gc2V0TmV3bGluZSggJHN0ciApIHsNCgkJJHRoaXMtPm5ld2xp
bmU9ICRzdHI7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGdldE5ld2xpbmUoKSB7DQoJCXJldHVy
biAkdGhpcy0+bmV3bGluZTsNCgl9DQoJDQoJLyoqDQoJICogQHBhcmFtICR0b3RhbCA9IHNldHMg
dGhlIHRvdGFsIHZhbHVlIGZvciBhIHJlcG9ydA0KCSAqLw0KCXByaXZhdGUgZnVuY3Rpb24gc2V0
VG90YWwoICR0b3RhbCApIHsNCgkJJHRoaXMtPnRvdGFsID0gJHRvdGFsOw0KCX0NCgkNCgkvKioN
CgkgKiBAcmV0dXJuIHRoZSB0b3RhbCB2YWx1ZSBvZiBhIHJlcG9ydA0KCSAqLw0KCXB1YmxpYyBm
dW5jdGlvbiBnZXRUb3RhbCgpIHsNCgkJcmV0dXJuICR0aGlzLT50b3RhbDsNCgl9DQoJDQoJZnVu
Y3Rpb24gc2V0Q29ubmVjdG9yKCAkZGJfY29ubmVjdG9yICkgew0KCQkkdGhpcy0+Y29ubmVjdG9y
PSRkYl9jb25uZWN0b3I7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldENvbm5lY3RvcigpIHsNCgkJcmV0
dXJuICR0aGlzLT5jb25uZWN0b3I7DQoJfQ0KCQ0KCWZ1bmN0aW9uIHNldEFyZ3MoICRwYXJhbSAp
IHsNCgkJJHRoaXMtPmFyZ3VtZW50cz0kcGFyYW07DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0QXJncygp
IHsNCgkJcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFJ1bklE
KCkgew0KCQlyZXR1cm4gJHRoaXMtPmFyZ3VtZW50cy0+Z2V0KFRlc3RvcGlhUGFyYW1ldGVyczo6
JFBhcmFtX1J1bklEKTsNCgl9DQoNCglmdW5jdGlvbiBnZXRQbGFuSUQoKSB7DQoJCXJldHVybiAk
dGhpcy0+YXJndW1lbnRzLT5nZXQoVGVzdG9waWFQYXJhbWV0ZXJzOjokUGFyYW1fUGxhbklEKTsN
Cgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIHNldE1zZ05vUmVzdWx0c0ZvdW5kKCAkbXNnICkgew0K
CQllY2hvICR0aGlzLT5tc2dOb3RoaW5nRm91bmQ7DQoJfQ0KCQ0KCS8qKg0KCSAqIEByZXR1cm4g
TWVzc2FnZSBpZiBub3RoaW5nIHdhcyBmb3VuZCBmb3IgYSByZXBvcnQNCgkgKi8NCglwdWJsaWMg
ZnVuY3Rpb24gZW1wdHlSZXN1bHQoKSB7DQoJCWlmICggJHRoaXMtPm1zZ05vdGhpbmdGb3VuZCA9
PSAiIiApIHsNCgkJCXJldHVybiAiPHA+Ii4kdGhpcy0+Y29udGV4dC0+Z2V0TWVzc2FnZVRleHQo
InRyUmVwb3J0X25vX3Jlc3VsdHNfZm91bmQiKS4iPC9wPiI7DQoJCX0gZWxzZSB7DQoJCQlyZXR1
cm4gIjxwPiIuJHRoaXMtPm1zZ05vdGhpbmdGb3VuZC4iPC9wPiI7DQoJCX0NCgl9DQoJDQoJLyoq
DQoJICogQ2VudHJhbCBmdW5jdGlvbiBmb3IgcGVyY2VudGFnZSBjYWxjdWxhdGlvbiwgdGFrZXMg
dGhlIHBhcmFtZXRlciAicm91bmRwZXJjIiBmb3IgDQoJICogcm91bmRpbmcgdGhlIHBlcmNlbnRh
Z2UNCgkgKiBAcGFyYW0gJHZhbHVlID0gdGhlIGN1cnJlbnQgdmFsdWUNCgkgKiBAcGFyYW0gJHRv
dGFsID0gdGhlIHRvdGFsIHZhbHVlOyBpZiAtMSB0aGUgdmFsdWUgd2lsbCBiZSBmZXRjaGVkIHVz
aW5nIGdldFRvdGFsKCkNCgkgKiBAcGFyYW0gJGFkZHBlcmMgPSBvcHRpb25hbC4gSWYgc2V0IHRv
IHRydWUgIiUiIHdpbGwgYmUgYWRkZWQgdG8gdGhlIG91dHB1dA0KCSAqIEByZXR1cm4gdGhlIHBl
cmNlbnRhZ2UNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGVyYygkdmFsdWUsICR0b3RhbCA9
IC0xLCAkYWRkUGVyYyA9IHRydWUpIHsNCgkJaWYgKCR0b3RhbCA9PSAtMSkgew0KCQkJJHRvdGFs
ID0gJHRoaXMtPmdldFRvdGFsKCk7DQoJCX0NCgkJaWYgKCR0b3RhbCA9PSAwKSB7DQoJCQkkcGVy
YyA9IDA7DQoJCX0gZWxzZSB7DQoJCQkkcm91bmQgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInJv
dW5kcGVyYyIpOw0KCQkJJHBlcmMgPSByb3VuZCgkdmFsdWUvJHRvdGFsICogMTAwLCAkcm91bmQp
Ow0KCQl9DQoJCQ0KCQlpZiAoJGFkZFBlcmMpIHsNCgkJCSRwZXJjLj0iJSI7DQoJCX0NCgkJDQoJ
CXJldHVybiAkcGVyYzsNCgl9DQoJDQoJLyoqDQoJICogQ29udmVydHMgYSBnaXZlbiBTUUwgcmVz
dWx0IHNldCBpbnRvIGFuIGFycmF5DQoJICogQHBhcmFtICRyZXN1bHQgPSBTUUwgcmVzdWx0IHNl
dA0KCSAqIEByZXR1cm4gYXJyYXkNCgkgKi8NCglwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnRSZXN1
bHRUb0FycmF5KCRyZXN1bHQpIHsNCgkJJG91dHB1dCA9IGFycmF5KCk7DQoJCSR0aGlzLT5udW1P
ZlJvd3M9MDsNCgkJJGRvbmUgPSBmYWxzZTsNCgkJd2hpbGUgKCRsaW5lID0gJHRoaXMtPmNvbm5l
Y3Rvci0+ZmV0Y2goJHJlc3VsdCkpIHsNCgkJCSRvdXRwdXRbXSA9ICRsaW5lOw0KCQkJJHRoaXMt
Pm51bU9mUm93cysrOw0KCQkJDQoJCQlpZiAoISRkb25lKSB7DQoJCQkJJHRoaXMtPm51bU9mQ29s
cyA9IGNvdW50KCRsaW5lKTsNCgkJCQkkdGhpcy0+Y29sdW1uTmFtZXMgPSBhcnJheSgpOw0KCQkJ
CXdoaWxlIChjdXJyZW50KCRsaW5lKSAhPT0gZmFsc2UpIHsNCgkJCQkJJHRoaXMtPmNvbHVtbk5h
bWVzW10gPSBrZXkoJGxpbmUpOw0KCQkJCQluZXh0KCRsaW5lKTsNCgkJCQl9DQoJCQkJcmVzZXQo
JGxpbmUpOw0KCQkJCSRkb25lID0gdHJ1ZTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiAkb3V0cHV0
Ow0KCX0NCgkNCgkvKioNCgkgKiBNYWluIHJvdXRpbmUgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBw
cm9kdWNlIHRoZSByZXBvcnQNCgkgKiBAcmV0dXJuIHRoZSByZW5kZXJlZCByZXBvcnQNCgkgKi8N
CglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkgewkJDQoJCSNpbml0IG9mIEhUTUwgb3V0cHV0DQoJ
CSRvdXRwdXQgPSAiIjsNCgkJDQoJCSMgaW5pdCB0aGUgZGIgY29ubmVjdGlvbg0KCQkkY29ubmVj
dGVkID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5jb25uZWN0KCk7DQoJCWlmICghJGNvbm5lY3Rl
ZCkgew0KCQkJcmV0dXJuICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0RXJyb3IoKTsNCgkJfQ0K
CQkNCgkJI3NvbWUgbW9yZSBpbml0IHN0dWZmIGZvciB0aGUgcmVwb3J0DQoJCSR0aGlzLT5pbml0
KCk7DQoJCQ0KCQkjIGdldCBTUUwgZm9yIHF1ZXJ5DQoJCSMgbXVzdCBiZSBpbXBsZW1lbnRlZCBp
biB0aGUgY2xhc3MgZXh0ZW5kaW5nIHRoaXMNCgkJJHRoaXMtPnNxbCA9ICR0aGlzLT5nZXRTUUwo
KTsNCg0KCQkkdGhpcy0+Y29udGV4dC0+Z2V0RGVidWcoKS0+YWRkKCR0aGlzLT5zcWwpOw0KCQkN
CgkJIyBleGVjdXRlIHRoZSBxdWVyeQ0KCQkkcmVzdWx0ID0gJHRoaXMtPmdldENvbm5lY3Rvcigp
LT5leGVjdXRlKCR0aGlzLT5zcWwpOw0KCQkNCgkJaWYgKCR0aGlzLT5nZXRDb25uZWN0b3IoKS0+
Z2V0RXJyb3IoKSAhPSAiIikgew0KCQkJcmV0dXJuICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0
RXJyb3IoKTsNCgkJfQ0KCQkNCgkJaWYgKCEkcmVzdWx0IG9yICR0aGlzLT5nZXRDb25uZWN0b3Io
KS0+Z2V0Um93Q291bnQoJHJlc3VsdCk9PTApIHsNCgkJCSRvdXRwdXQgLj0gJHRoaXMtPmVtcHR5
UmVzdWx0KCk7DQoJCX0gZWxzZSB7DQoJCQkjIGNvbnZlcnQgdGhlIHJlc3VsdCBzZXQgaW50byBh
biBhcnJheQ0KCQkJJHJlc3VsdEFyciA9ICR0aGlzLT5jb252ZXJ0UmVzdWx0VG9BcnJheSgkcmVz
dWx0KTsNCgkJCQ0KCQkJI2NsZWFuIHVwDQoJCQkkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZyZWUo
JHJlc3VsdCk7CQkNCgkJCQ0KCQkJIyBnZXQgdGhlIG91dHB1dCBmb3IgdGhlIHJlcG9ydA0KCQkJ
IyBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBjbGFzcyBleHRlbmRpbmcgdGhpcyBjbGFzcw0K
CQkJJG91dHB1dCAuPSAkdGhpcy0+Z2V0UmVwb3J0KCAkcmVzdWx0QXJyICk7CQkJDQoJCX0NCgkJ
DQoJCSNsb2NhbCBjb3B5IG9mIHRoZSBoZWFkZXI7IHVzZWQgb25seSBpZiB0aGUgcmVwb3J0IGlz
IGhpZGRlbiAod2lsbCBiZSBkaXNwbGF5ZWQgYWxvbmcgd2l0aCB0aGUgc2hvdyBidXR0b24pDQoJ
CSR0aGlzLT5oZWFkZXIgPSAkdGhpcy0+Z2V0UmVwb3J0SGVhZGVyKCk7DQoJCQ0KCQkjY2xvc2Ug
dGhlIGNvbm5lY3Rpb24NCgkJJHRoaXMtPmdldENvbm5lY3RvcigpLT5jbG9zZSgpOwkNCgkJDQoJ
CSNyZXR1cm5pbmcgdGhlIG91dHB1dA0KCQlyZXR1cm4gJG91dHB1dDsJDQoJfQ0KCQ0KCXB1Ymxp
YyBmdW5jdGlvbiBjYWxjVG90YWwoICRyZXN1bHQgKSB7CQkNCgkJIyBmaWVsZCBmb3IgY2FsY3Vs
YXRpbmcgdG90YWwNCgkJJGZsZFRvdGFsID0gJHRoaXMtPmFyZ3VtZW50cy0+Z2V0KCJ0b3RhbCIp
Ow0KCQlpZiAoISRmbGRUb3RhbCkgew0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJaWYgKCR0aGlzLT5h
cmd1bWVudHMtPmdldCgidG90YWwiKSA9PSAicm93Y291bnQiKSB7DQoJCQkkbnVtVG90YWw9JHRo
aXMtPm51bU9mUm93czsNCgkJfSBlbHNlIHsNCgkJCSRudW1Ub3RhbCA9IDA7CQ0KCQkJZm9yZWFj
aCAoJHJlc3VsdCBhcyAkbGluZSkgew0KCQkJCSRpPTA7DQoJCQkJZm9yZWFjaCAoJGxpbmUgYXMg
JGNvbF92YWx1ZSkgew0KCQkJCQkkZmllbGRfbmFtZSA9ICR0aGlzLT5jb2x1bW5OYW1lc1skaV07
DQoJCQkJCQ0KCQkJCQkjIGZvciBjYWxjdWxhdGluZyB0aGUgdG90YWwNCgkJCQkJaWYgKCRmbGRU
b3RhbCA9PSAkZmllbGRfbmFtZSkgew0KCQkJCQkJJG51bVRvdGFsICs9ICRjb2xfdmFsdWU7DQoJ
CQkJCX0NCgkJCQkJDQoJCQkJCSRpKys7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJHRoaXMtPnNl
dFRvdGFsKCRudW1Ub3RhbCk7DQoJfQ0KDQoJLyoqDQoJICoJcmVuZGVycyB0aGUgaGVhZGVyIG9m
IHRoZSByZXBvcnQNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiByZW5kZXJQbGFpbkhUTUxIZWFk
ZXIoICRyZXN1bHQgKSB7DQoJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0SGVhZGVyKCk7DQoJfQ0K
CQkNCgkvKioNCgkgKglnZXQgdHJhbnNsYXRlZCBmaWVsZCBuYW1lOyBpZiBubyB0cmFuc2xhdGlv
biBpcyBmb3VuZCB0aGUgZmllbGQgbmFtZSB3aWxsIGJlIHVzZWQgaW5zdGVhZA0KCSAqLw0KCXBy
aXZhdGUgZnVuY3Rpb24gZ2V0RmllbGROYW1lKCRtZXRhKSB7DQoJCSRtc2dLZXkgPSAidHJGaWVs
ZF8iLiRtZXRhLT50YWJsZS4iLiIuJG1ldGEtPm5hbWU7DQoJCSRtc2cgPSAkdGhpcy0+Z2V0Q29u
dGV4dCgpLT5nZXRNZXNzYWdlVGV4dCgkbXNnS2V5KTsNCgkJaWYgKHN0cnBvcygkbXNnLCAidHJG
aWVsZF8iKSAhPSBmYWxzZSkgew0KCQkJJG1zZyA9ICRtZXRhLT5uYW1lOw0KCQl9DQoJCXJldHVy
biAkbXNnOw0KCX0NCgkNCgkvKioNCgkgKglyZW5kZXJzIHRoZSBib2R5IG9mIHRoZSByZXBvcnQg
KGRhdGEgdGFibGUpDQoJICovCQ0KCXB1YmxpYyBmdW5jdGlvbiByZW5kZXJQbGFpbkhUTUxCb2R5
KCAkcmVzdWx0ICkgew0KCQkjIHNvbWVodGluZyB0byBvdXRwdXQ/DQoJCWlmICgkdGhpcy0+bnVt
T2ZSb3dzID09IDApIHsNCgkJCXJldHVybiAkb3V0cHV0Ow0KCQl9DQoJCQ0KCQkjZ2V0IGNvbHVt
biBmb3JtYXRzDQoJCSRjZm9ybWF0ID0gJHRoaXMtPmdldENvbHVtbkZvcm1hdHMoKTsNCgkJDQoJ
CSNpbml0IG9mIG91dHB1dA0KCQkkb3V0cHV0ID0gIiI7DQoJCQ0KCQkjIGZpZWxkIGZvciBjYWxj
dWxhdGluZyB0b3RhbA0KCQkkZmxkVG90YWwgPSAkdGhpcy0+YXJndW1lbnRzLT5nZXQoInRvdGFs
Iik7DQoJCSRudW1Ub3RhbCA9IDA7IAkJDQoJCQkNCgkJDQoJCSMgd3JhcCB0aGUgYm9keSBpbiBh
IGRpdg0KCQkkb3V0cHV0Lj0iPGRpdj4iOyANCgkJDQoJCSMNCgkJIyBzdGFydCBvZiBpbm5lciB0
YWJsZSAoZGF0YSB0YWJsZSkNCgkJIw0KCQlpZiAoJHRoaXMtPmFyZ3VtZW50cy0+Z2V0KCJzb3J0
YWJsZSIpPT0idHJ1ZSIpIHsNCgkJCSRvdXRwdXQgLj0gIjx0YWJsZSBjbGFzcz1cInRlc3RvcGlh
X1RhYmxlX0RhdGEgc29ydGFibGVcIiBzdHlsZT1cIm1hcmdpbjoxMHB4XCI+IjsNCgkJfSBlbHNl
IHsNCgkJCSRvdXRwdXQgLj0gIjx0YWJsZSBjbGFzcz1cInRlc3RvcGlhX1RhYmxlX0RhdGFcIiBz
dHlsZT1cIm1hcmdpbjoxMHB4XCI+IjsNCgkJfQ0KCQkJCQ0KCQkjDQoJCSMgb3V0cHV0IG9mIGhl
YWRpbmdzIGZvciBkYXRhIHRhYmxlDQoJCSMNCgkJJG91dHB1dCAuPSAiPHRyPiI7DQoJCWZvcigk
aSA9IDA7ICRpIDwgJHRoaXMtPm51bU9mQ29sczsgJGkrKykgew0KCQkJDQoJCQkjIGdldCB0cmFu
c2xhdGVkIGZpZWxkIG5hbWUNCgkJCS8vJGZpZWxkbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUo
JG1ldGEpOw0KCQkJDQoJCQkkY2VsbD0kdGhpcy0+cmVuZGVyQ2VsbCgiaGVhZGVyIiwkaSwgJHRo
aXMtPmNvbHVtbk5hbWVzWyRpXSwgJHRoaXMtPmNvbHVtbk5hbWVzWyRpXSwgMCwgbnVsbCk7DQoJ
CQlpZiAoJGNlbGw9PSIiKSB7DQoJCQkJJG91dHB1dCAuPSAiPHRoPjxiPiIuaHRtbGVudGl0aWVz
KCR0aGlzLT5jb2x1bW5OYW1lc1skaV0pLiI8L2I+PC90aD4iOw0KCQkJfSBlbHNlIHsNCgkJCQkk
b3V0cHV0IC49ICRjZWxsOw0KCQkJfQkJCQ0KCQl9DQoJCSRvdXRwdXQgLj0gIjwvdHI+IjsgDQoJ
CQ0KCQkjDQoJCSMgQ3JlYXRlIHRhYmxlIGRhdGEgcm93cw0KCQkjDQoJCSRldmVuPWZhbHNlOw0K
CQkkY29sb3I9IiI7DQoJCSRsaW5lTm89MDsNCgkJZm9yZWFjaCgkcmVzdWx0IGFzICRsaW5lKSB7
DQoJCQkjYWx0ZXJuYXRpbmcgcm93IGNvbG9ycyBuZWVkZWQ/DQoJCQlpZiAoKCRldmVuKSBhbmQg
KCR0aGlzLT5nZXRBcmdzKCktPmdldCgiemVicmEiKSkpIHsNCgkJCQkkY29sb3I9ImNsYXNzPVwi
dGVzdG9waWFfQ2VsbERhcmtcIiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRjb2xvcj0iY2xhc3M9XCJ0
ZXN0b3BpYV9DZWxsTGlnaHRcIiI7DQoJCQl9DQoJCQkkZXZlbj0hJGV2ZW47DQoNCgkJCSNjYWxs
IGN1c3RvbSBmdW5jdGlvbiBmb3IgaW5zZXJ0aW5nIG5ldyBsaW5lcw0KCQkJJG91dHB1dC49JHRo
aXMtPm5ld0RhdGFMaW5lKCRsaW5lKTsNCgkJCQ0KCQkJI2NhbGwgY3VzdG9tIGZ1bmN0aW9uIGZv
ciBzdGFydGluZyBuZXcgbGluZXMNCgkJCSRuZXdMaW5lID0gJHRoaXMtPm5ld0xpbmVCZWdpbigk
bGluZSk7DQoJCQlpZiAoJG5ld0xpbmUgPT0gIiIpIHsNCgkJCQkkb3V0cHV0IC49ICI8dHIgIi4k
Y29sb3IuIj4iOw0KCQkJfSBlbHNlIHsNCgkJCQkkb3V0cHV0IC49ICRuZXdMaW5lOw0KCQkJfQ0K
CQkJDQoJCQkjIHNhdmUgdGhlIG9sZCBsaW5lIGluIGEgcHVibGljIHZhcmlhYmxlIGZvciBjb21w
YXJpc29uDQoJCQkkdGhpcy0+cHJldmlvdXNMaW5lID0gJGxpbmU7DQoJCQkNCgkJCSRpPTA7CQkJ
DQoJCQlmb3JlYWNoICgkbGluZSBhcyAkY29sX3ZhbHVlKSB7DQoJCQkJJGZpZWxkX25hbWUgPSAk
dGhpcy0+Y29sdW1uTmFtZXNbJGldOw0KCQkJICAgIA0KCQkJCSMNCgkJCQkjIGNhbGwgY3VzdG9t
IGZ1bmN0aW9uIGZvciBjZWxsIHJlbmRlcmluZw0KCQkJCSMNCgkJCQkkY2VsbD0kdGhpcy0+cmVu
ZGVyQ2VsbCgiYm9keSIsJGksICRmaWVsZF9uYW1lLCAkY29sX3ZhbHVlLCAkbGluZU5vLCAkbGlu
ZSk7DQoJCQkJaWYgKCRjZWxsID09ICIiKSB7DQoJCQkJCSNnZXQgZm9ybWF0dGluZyBmb3IgY29s
dW1uDQoJCQkJCSRmb3JtYXQgPSAiIjsNCgkJCQkJaWYgKGlzc2V0KCRjZm9ybWF0KSBhbmQgYXJy
YXlfa2V5X2V4aXN0cygkZmllbGRfbmFtZSwgJGNmb3JtYXQpKSB7DQoJCQkJCQkkZm9ybWF0ID0g
JGNmb3JtYXRbJGZpZWxkX25hbWVdOw0KCQkJCQl9DQoJCQkJCSRvdXRwdXQgLj0gIjx0ZCBzdHls
ZT1cIiIuJGZvcm1hdC4iXCI+Ii5odG1sZW50aXRpZXMoJGNvbF92YWx1ZSkuIjwvdGQ+IjsNCgkJ
CQl9IGVsc2Ugew0KCQkJCQkkb3V0cHV0IC49ICRjZWxsOw0KCQkJCX0NCgkJCQkNCgkJCQkjIGZv
ciBjYWxjdWxhdGluZyB0aGUgdG90YWwNCgkJCQlpZiAoJGZsZFRvdGFsID09ICRmaWVsZF9uYW1l
KSB7DQoJCQkJCSRudW1Ub3RhbCArPSAkY29sX3ZhbHVlOw0KCQkJCX0NCgkJCQkkaSsrOw0KCQkJ
fQ0KCQkJJG91dHB1dCAuPSAiPC90cj4iOw0KCQkJCQkNCgkJCSRsaW5lTm8rKzsNCgkJfQ0KCQkN
CgkJI2luc2VydCB0b3RhbHMgaWYgcmVxdWllcmVkDQoJCWlmICgkdGhpcy0+YXJndW1lbnRzLT5n
ZXQoInRvdGFsIikgYW5kICR0aGlzLT5udW1PZlJvd3MgPiAwKSB7CQkNCgkJCWlmICgkdGhpcy0+
YXJndW1lbnRzLT5nZXQoInRvdGFsIikgPT0gInJvd2NvdW50Iikgew0KCQkJCSR0b3RhbD0kdGhp
cy0+bnVtT2ZSb3dzOw0KCQkJCSRvdXRwdXQgLj0gIjx0ciBjbGFzcz1cInNvcnRib3R0b21cIj48
dGQgY2xhc3M9XCJ0ZXN0b3BpYV9Ub3RhbFwiIGNvbHNwYW49XCIiLiR0aGlzLT5udW1PZkNvbHMu
IlwiPjxiPlRvdGFsOiAiLiR0b3RhbC4iPC9iPjwvdGQ+PC90cj4iOw0KCQkJCSMgc2V0IHRvdGFs
IHZhbHVlDQoJCQkJJHRoaXMtPnNldFRvdGFsKCRudW1Ub3RhbCk7DQoJCQl9IGVsc2Ugew0KCQkJ
CSRvdXRwdXQgLj0gIjx0ciBjbGFzcz1cInNvcnRib3R0b21cIj48dGQgY2xhc3M9XCJ0ZXN0b3Bp
YV9Ub3RhbFwiIGNvbHNwYW49XCIiLiR0aGlzLT5udW1PZkNvbHMuIlwiPjxiPlRvdGFsOiAiLiRu
dW1Ub3RhbC4iPC9iPjwvdGQ+PC90cj4iOw0KCQkJCSMgc2V0IHRvdGFsIHZhbHVlDQoJCQkJJHRo
aXMtPnNldFRvdGFsKCRudW1Ub3RhbCk7DQoJCQl9DQoJCX0JCQkNCgkJDQoJCSMgRW5kIG9mIGJv
ZHkgaW5uZXIgdGFibGUgdGFnDQoJCSRvdXRwdXQgLj0gIjwvdGFibGU+IjsJDQoNCgkJcmV0dXJu
ICRvdXRwdXQ7DQoJfQ0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gcmVuZGVyUGxhaW5IVE1MRm9vdGVy
KCAkcmVzdWx0ICkgew0KCQlyZXR1cm4gJHRoaXMtPmdldFJlcG9ydEZvb3RlcigpOw0KCX0NCgkN
Cglwcml2YXRlIGZ1bmN0aW9uIHJlbmRlclBsYWluSFRNTENoYXJ0KCAkcmVzdWx0ICkgew0KCQkk
b3V0cHV0ID0gIiI7DQoJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNoYXJ0IikgIT0gIiIp
IHsNCgkJCSRjaGFydHMgPSBleHBsb2RlKCIsIiwkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNoYXJ0
IikpOw0KCQl9IGVsc2Ugew0KCQkJJGNoYXJ0cyA9IGFycmF5KCk7DQoJCX0NCgkJJHR5cGVzID0g
ZXhwbG9kZSgiLCIsJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJjaGFydHR5cGUiKSk7DQoJCSRkZXZp
Y2UgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNoYXJ0ZGV2aWNlIik7DQoJCQ0KCQkjIGNoYXJ0
IHJlcXVpcmVkDQoJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNoYXJ0dHlwZSIpICE9ICIi
KSB7DQoJCQkNCgkJCSMgY2hhcnRzIGFyZSBzdXBwb3J0ZWQNCgkJCWlmICghJHRoaXMtPmFyZUNo
YXJ0c1N1cHBvcnRlZCgkZGV2aWNlKSkgew0KCQkJCXJldHVybiAkdGhpcy0+Y29udGV4dC0+Z2V0
RXJyb3JNZXNzYWdlKCd0clJlcG9ydF9jaGFydHNfbm90X3N1cHBvcnRlZCcpOw0KCQkJfQ0KCQkJ
DQoJCQkjIGNoZWNrIGlmIHRoZSB0eXBlcyBhcmUgdmFsaWQNCgkJCWZvcmVhY2ggKCR0eXBlcyBh
cyAkdHlwZSkgew0KCQkJCWlmICghJHRoaXMtPmlzQ2hhcnRUeXBlU3VwcG9ydGVkKCRkZXZpY2Us
ICR0eXBlKSkgew0KCQkJCQlyZXR1cm4gJHRoaXMtPmNvbnRleHQtPmdldEVycm9yTWVzc2FnZSgn
dHJSZXBvcnRfY2hhcnRfdHlwZV9ub3Rfc3VwcG9ydGVkJywkdHlwZSwkdGhpcy0+Z2V0U3VwcG9y
dGVkQ2hhcnRUeXBlcygkZGV2aWNlKSk7DQoJCQkJfQkJCQkNCgkJCX0NCgkJCSMgY2hlY2sgaWYg
dGhlIGNoYXJ0cyBhcmUgc3VwcG9ydGVkDQoJCQlpZiAoZW1wdHkoJGNoYXJ0cykgPT0gZmFsc2Up
IHsNCgkJCQlmb3JlYWNoICgkY2hhcnRzIGFzICRjaGFydCkgew0KCQkJCQlpZiAoc3RybGVuKCRj
aGFydCkgPiAwIGFuZCAhJHRoaXMtPmlzQ2hhcnRTdXBwb3J0ZWQoJGNoYXJ0KSkgew0KCQkJCQkJ
cmV0dXJuICR0aGlzLT5jb250ZXh0LT5nZXRFcnJvck1lc3NhZ2UoJ3RyUmVwb3J0X2NoYXJ0X25v
dF9zdXBwb3J0ZWQnLCRjaGFydCwkdGhpcy0+Z2V0U3VwcG9ydGVkQ2hhcnRzKCkpOw0KCQkJCQl9
CQkJCQ0KCQkJCX0NCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXJldHVybiAiIjsNCgkJfQ0KCQ0KCQkk
b3V0cHV0IC49ICR0aGlzLT5yZW5kZXJDaGFydCggJHJlc3VsdCwgJHR5cGVzLCAkY2hhcnRzICk7
IA0KCQkNCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCS8qKg0KCSogZm9yIHJlbmRlcmluZyB0
aGUgSFRNTCBvdXRwdXQNCgkqLw0KCXB1YmxpYyBmdW5jdGlvbiByZW5kZXJQbGFpbkhUTUwoICRy
ZXN1bHQgKSB7CQkNCgkJIyBJbml0IG91dHB1dA0KCQkkb3V0cHV0ID0gIiI7DQoJCSRmb290ZXIg
PSAiIjsNCgkJJGhlYWRlciA9ICIiOw0KCQkkYm9keSAgID0gIiI7DQoJCSRjaGFydCAgPSAiIjsN
CgkJJHRhYmxlICA9IGZhbHNlOw0KCQkNCgkJIw0KCQkjbGF5b3V0IHBhcmFtZXRlcnMNCgkJIw0K
CQkkaGlkZSA9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgiaGlkZXRhYmxlIik7DQoJCSRudWRlID0g
JHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJudWRlY2hhcnQiKTsNCgkJaWYgKCRudWRlID09ICJ0cnVl
Iikgew0KCQkJJGhpZGUgPSAiZmFsc2UiOw0KCQl9DQoJCQ0KCQkjDQoJCSNnZXQgdGhlIGVsZW1l
bnRzDQoJCSMNCgkJaWYgKCRudWRlID09ICJmYWxzZSIpIHsgDQoJCQkkaGVhZGVyID0gJHRoaXMt
PnJlbmRlclBsYWluSFRNTEhlYWRlciggJHJlc3VsdCApOw0KCQkJDQoJCQlpZiAoJGhpZGUgPT0g
ImZhbHNlIikgeyANCgkJCQkkYm9keSA9ICR0aGlzLT5pbmplY3RCb2R5KCAkcmVzdWx0ICk7IA0K
CQkJfQ0KCQkJDQoJCQkkZm9vdGVyID0gJHRoaXMtPnJlbmRlclBsYWluSFRNTEZvb3RlciggJHJl
c3VsdCApOw0KCQl9DQoJCSRjaGFydCA9ICR0aGlzLT5yZW5kZXJQbGFpbkhUTUxDaGFydCggJHJl
c3VsdCApOw0KDQoJCSMNCgkJIyBkZWZpbmUgdGhlIGJvZHkgcGFydCBvZiB0aGUgdGFibGUNCgkJ
Iw0KCQkkY29sc3Bhbj0xOw0KCQkkYm9keXBhcnQ9IiI7DQoJCWlmICgkY2hhcnQgIT0gIiIpIHsN
CgkJCWlmICgkYm9keSA9PSAiIikgew0KCQkJCWlmICgkbnVkZSA9PSAidHJ1ZSIpIHsNCgkJCQkJ
JGJvZHlwYXJ0ID0gJGNoYXJ0Ow0KCQkJCX0gZWxzZSB7DQoJCQkJCSRib2R5cGFydCA9ICI8dHI+
PHRkIGNsYXNzPVwidGVzdG9waWFfQmFja2dyb3VuZFwiPiIuJGNoYXJ0LiI8L3RkPjwvdHI+IjsN
CgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCXN3aXRjaCAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJj
aGFydHBvcyIpKSB7DQoJCQkJCWNhc2UgImxlZnQiICAgOiAkYm9keXBhcnQ9Ijx0cj48dGQgY2xh
c3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kY2hhcnQuIjwvdGQ+PHRkIGNsYXNzPVwidGVz
dG9waWFfQmFja2dyb3VuZFwiPiIuJGJvZHkuIjwvdGQ+PC90cj4iOyAkY29sc3Bhbj0yOyBicmVh
azsNCgkJCQkJY2FzZSAidG9wIiAgICA6ICRib2R5cGFydD0iPHRyPjx0ZCBjbGFzcz1cInRlc3Rv
cGlhX0JhY2tncm91bmRcIj4iLiRjaGFydC4iPC90ZD48L3RyPjx0cj48dGQgY2xhc3M9XCJ0ZXN0
b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kYm9keS4iPC90ZD48L3RyPiI7ICBicmVhazsNCgkJCQkJY2Fz
ZSAicmlnaHQiICA6ICRib2R5cGFydD0iPHRyPjx0ZCBjbGFzcz1cInRlc3RvcGlhX0JhY2tncm91
bmRcIj4iLiRib2R5LiI8L3RkPjx0ZCBjbGFzcz1cInRlc3RvcGlhX0JhY2tncm91bmRcIj4iLiRj
aGFydC4iPC90ZD48L3RyPiI7ICRjb2xzcGFuPTI7IGJyZWFrOw0KCQkJCQljYXNlICJib3R0b20i
IDogJGJvZHlwYXJ0PSI8dHI+PHRkIGNsYXNzPVwidGVzdG9waWFfQmFja2dyb3VuZFwiPiIuJGJv
ZHkuIjwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPVwidGVzdG9waWFfQmFja2dyb3VuZFwiPiIuJGNo
YXJ0LiI8L3RkPjwvdHI+IjsgYnJlYWs7DQoJCQkJCWNhc2UgImRlZmF1bHQiOiAkYm9keXBhcnQ9
Ijx0cj48dGQgY2xhc3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kYm9keS4iPC90ZD48dGQg
Y2xhc3M9XCJ0ZXN0b3BpYV9CYWNrZ3JvdW5kXCI+Ii4kY2hhcnQuIjwvdGQ+PC90cj4iOyAkY29s
c3Bhbj0yOyBicmVhazsNCgkJCQl9DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkYm9keXBhcnQgPSAi
PHRyPjx0ZD4iLiRib2R5LiI8L3RkPjwvdHI+IjsNCgkJfQ0KDQoJCSNzdGFydCBvZiB0YWJsZQ0K
CQlpZiAoJGhlYWRlciAhPSAiIiBvciAkZm9vdGVyICE9ICIiKSB7DQoJCQkkb3V0cHV0IC49ICI8
dGFibGUgY2xhc3M9XCJ0ZXN0b3BpYV9UYWJsZVwiPiI7DQoJCQlpZiAoJGhlYWRlciAhPSAiIikg
ew0KCQkJCWlmICgkdGhpcy0+Z2V0QXJncygpLT5nZXQoInNob3doaWRlIikgPT0gImZhbHNlIikg
ew0KCQkJCQkkb3V0cHV0Lj0gIjx0cj48dGggY29sc3Bhbj1cIiIuJGNvbHNwYW4uIlwiPiIuJGhl
YWRlci4iPC90aD48L3RyPiI7DQoJCQkJfSBlbHNlIHsNCgkJCQkJI2NhbGN1bGF0ZSB0aGUgR1VJ
RHMgZm9yIGRpdiBmb3Igc2hvd2luZy9oaWRpbmcNCgkJCQkJJHRoaXMtPmhpZGVJRFsxXSA9IG1k
NSh1bmlxaWQocmFuZCgpKSk7DQoJCQkJCSR0aGlzLT5oaWRlSURbMl0gPSBtZDUodW5pcWlkKHJh
bmQoKSkpOw0KCQkJCQkkdGhpcy0+aGlkZUlEWzNdID0gbWQ1KHVuaXFpZChyYW5kKCkpKTsNCgkJ
CQkJJHRoaXMtPmhpZGVJRFs0XSA9IG1kNSh1bmlxaWQocmFuZCgpKSk7DQoJCQkJCQ0KCQkJCQlp
ZiAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJoaWRkZW4iKSA9PSAidHJ1ZSIpIHsNCgkJCQkJCSRk
aXNwbGF5ID0gIm5vbmUiOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGRpc3BsYXkgPSAiaW5saW5l
IjsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJJG91dHB1dC49ICI8dHI+PHRoIGNvbHNwYW49XCIiLiRj
b2xzcGFuLiJcIj48ZGl2IGlkPVwiIi4kdGhpcy0+aGlkZUlEWzFdLiJcIiI7DQoJCQkJCSRvdXRw
dXQuPSAic3R5bGU9XCJkaXNwbGF5OiIuJGRpc3BsYXkuIlwiIGFsaWduPVwibGVmdFwiPjxkaXYg
c3R5bGU9XCJmbG9hdDpsZWZ0O1wiPjxpbnB1dCB0eXBlPWJ1dHRvbiAiOw0KCQkJCQkkb3V0cHV0
Lj0ib25DbGljaz1cImhpZGUoJyIuJHRoaXMtPmhpZGVJRFszXS4iJyk7aGlkZSgnIi4kdGhpcy0+
aGlkZUlEWzFdLiInKTsiOw0KCQkJCQkkb3V0cHV0Lj0ic2hvdygnIi4kdGhpcy0+aGlkZUlEWzJd
LiInKTtzaG93KCciLiR0aGlzLT5oaWRlSURbNF0uIicpO1wiICI7DQoJCQkJCSRvdXRwdXQuPSJ2
YWx1ZT1cIiIuJHRoaXMtPmNvbnRleHQtPmdldE1lc3NhZ2VUZXh0KCJ0clJlcG9ydF9oaWRlIiku
IlwiPjwvZGl2PiI7DQoJCQkJCSRvdXRwdXQuPSAiPGRpdiBzdHlsZT1cImZsb2F0OnJpZ2h0OyB3
aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyXCI+Ii4kaGVhZGVyLiI8L2Rpdj48L2Rpdj48L3Ro
PjwvdHI+IjsNCgkJCQl9DQoJCQl9DQoJCX0JCQ0KCQkNCgkJJG91dHB1dC49JGJvZHlwYXJ0Ow0K
CQkNCgkJI2VuZCBvZiB0YWJsZQ0KCQlpZiAoJGhlYWRlciAhPSAiIiBvciAkZm9vdGVyICE9ICIi
KSB7DQoJCQlpZiAoJGZvb3RlciAhPSAiIikgew0KCQkJCSRvdXRwdXQuPSAiPHRyPjx0ZCBjb2xz
cGFuPVwiIi4kY29sc3Bhbi4iXCI+Ii4kZm9vdGVyLiI8L3RkPjwvdHI+IjsNCgkJCX0NCgkJCSRv
dXRwdXQgLj0gIjwvdGFibGU+IjsNCgkJfQkJDQoNCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQkN
CglmdW5jdGlvbiByZW5kZXJDaGFydCggJHJlc3VsdCwgJHR5cGVzLCAkY2hhcnRzICkgew0KCQkk
b3V0cHV0ID0gIiI7DQoJCQ0KCQlpZiAoISR0eXBlcykgew0KCQkJcmV0dXJuICR0aGlzLT5jb250
ZXh0LT5nZXRFcnJvck1lc3NhZ2UoJ3RyUmVwb3J0X2NoYXJ0X25vX3R5cGUnKTsNCgkJfQ0KCQkJ
CQ0KCQlpZiAoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJjaGFydGRldmljZSIpID09ICJnb29nbGUi
KSB7DQoJCQkkb3V0cHV0ID0gJHRoaXMtPnJlbmRlckdvb2dsZSggJHJlc3VsdCwgJHR5cGVzLCAk
Y2hhcnRzICk7DQoJCX0NCgkJDQoJCXJldHVybiAkb3V0cHV0Ow0KCX0NCgkJDQoJZnVuY3Rpb24g
cmVuZGVyR29vZ2xlKCAkcmVzdWx0LCAkdHlwZXMsICRjaGFydHMgKSB7DQoJCSRvdXRwdXQgPSAi
IjsNCgkJJGxpbmsgPSAiIjsNCgkJJGNoYXJ0VHlwZSA9ICIiOw0KCQkkaGVpZ2h0cyA9IGV4cGxv
ZGUoIiwiLCR0aGlzLT5nZXRBcmdzKCktPmdldCgiY2hhcnRoZWlnaHQiKSk7DQoJCSR3aWR0aHMg
PSBleHBsb2RlKCIsIiwkdGhpcy0+Z2V0QXJncygpLT5nZXQoImNoYXJ0d2lkdGgiKSk7IA0KCQkk
c2V0VGl0bGUgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInRpdGxlIik7DQoJCQ0KCQlpZiAoZW1w
dHkoJGNoYXJ0cykgPT0gZmFsc2UpIHsNCgkJCSRjaGFydGxheW91dCA9ICR0aGlzLT5nZXRBcmdz
KCktPmdldCgiY2hhcnRsYXlvdXQiKTsNCgkJCQ0KCQkJJGNvbHVtbnMgPSAwOwkJCQkNCgkJCWlm
ICgkY2hhcnRsYXlvdXQgIT0gImhvcml6b250YWwiIGFuZCAkY2hhcnRsYXlvdXQgIT0gInZlcnRp
Y2FsIiBhbmQgaXNfbnVtZXJpYygkY2hhcnRsYXlvdXQpKSB7DQoJCQkJJGNvbHVtbnMgPSAkY2hh
cnRsYXlvdXQ7DQoJCQl9DQoJCQkNCgkJCWlmICgkY2hhcnRsYXlvdXQgPT0gImhvcml6b250YWwi
IG9yICRjb2x1bW5zID4gMCkgew0KCQkJCSRvdXRwdXQgLj0gIjx0YWJsZSBjbGFzcz1cInRlc3Rv
cGlhX1RhYmxlX0NoYXJ0XCI+PHRyPiI7DQoJCQkJJGNoYXJ0bGF5b3V0ID0gImhvcml6b250YWwi
Ow0KCQkJfQkJCQ0KCQkJDQoJCQkkY29sdW1uY291bnQgPSAxOw0KCQkJJGluZGV4ID0gMDsNCgkJ
CWZvcmVhY2ggKCRjaGFydHMgYXMgJGNoYXJ0KSB7DQoJCQkJJGxpbms9IiI7DQoJCQkJDQoJCQkJ
I2dldCBjaGFydCB0eXBlDQoJCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGluZGV4LCAkdHlwZXMp
KSB7DQoJCQkJCSR0eXBlID0gJHR5cGVzWyRpbmRleF07DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHR5
cGUgPSBlbmQoJHR5cGVzKTsNCgkJCQl9DQoJCQkJDQoJCQkJI2dldCBjaGFydCB3aWR0aA0KCQkJ
CWlmIChhcnJheV9rZXlfZXhpc3RzKCRpbmRleCwgJHdpZHRocykpIHsNCgkJCQkJJHdpZHRoID0g
JHdpZHRoc1skaW5kZXhdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSR3aWR0aCA9ICR0aGlzLT5nZXRB
cmdzKCktPmdldERlZmF1bHQoImNoYXJ0d2lkdGgiKTsNCgkJCQl9CQ0KCQkJCQ0KCQkJCSNnZXQg
Y2hhcnQgaGVpZ2h0DQoJCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJGluZGV4LCAkaGVpZ2h0cykp
IHsNCgkJCQkJJGhlaWdodCA9ICRoZWlnaHRzWyRpbmRleF07DQoJCQkJfSBlbHNlIHsNCgkJCQkJ
JGhlaWdodCA9ICR0aGlzLT5nZXRBcmdzKCktPmdldERlZmF1bHQoImNoYXJ0aGVpZ2h0Iik7DQoJ
CQkJfQ0KCQkJCQ0KCQkJCSRpbmRleCsrOw0KCQkJCQ0KCQkJCXN3aXRjaCAoJHR5cGUpIHsNCgkJ
CQkJY2FzZSAiYmFyIiAgIDogJGNoYXJ0VHlwZSA9ICJidmciOyBicmVhazsNCgkJCQkJY2FzZSAi
cGllIiAgIDogJGNoYXJ0VHlwZSA9ICJwIjsgYnJlYWs7DQoJCQkJCWNhc2UgInBpZTMiICA6ICRj
aGFydFR5cGUgPSAicDMiOyBicmVhazsNCgkJCQkJY2FzZSAibWV0ZXIiIDogJGNoYXJ0VHlwZSA9
ICJnb20iOyBicmVhazsNCgkJCQl9DQoJCQkJDQoJCQkJIyBzZXR1cCB0aGUgY2hhcnQNCgkJCQkk
Z29vZ2xlID0gbmV3IEdvb2dsZUNoYXJ0Ow0KCQkJCSRnb29nbGUtPnNldFR5cGUoJGNoYXJ0VHlw
ZSk7DQoJCQkJJGdvb2dsZS0+c2V0RGVmYXVsdEhlaWdodCgkdGhpcy0+Z2V0QXJncygpLT5nZXRE
ZWZhdWx0KCJjaGFydGhlaWdodCIpKTsNCgkJCQkkZ29vZ2xlLT5zZXREZWZhdWx0V2lkdGgoJHRo
aXMtPmdldEFyZ3MoKS0+Z2V0RGVmYXVsdCgiY2hhcnR3aWR0aCIpKTsJDQoJCQkJJGdvb2dsZS0+
c2V0V2lkdGgoJHdpZHRoKTsNCgkJCQkkZ29vZ2xlLT5zZXRIZWlnaHQoJGhlaWdodCk7CQkJCQ0K
CQkJCQ0KCQkJCSRzdXBwQ2hhcnRzID0gJHRoaXMtPmdldFN1cHBvcnRlZENoYXJ0c0FycigpOw0K
CQkJCWlmICgkc2V0VGl0bGUgPT0gInRydWUiKSB7DQoJCQkJCSRnb29nbGUtPnNldFRpdGxlKCRz
dXBwQ2hhcnRzWyRjaGFydF1bInRpdGxlIl0pOw0KCQkJCX0NCgkJCQkkZ29vZ2xlLT5zZXRUb29s
dGlwKCRzdXBwQ2hhcnRzWyRjaGFydF1bInRvb2x0aXAiXSk7DQoJCQkJJGdvb2dsZS0+c2V0QWx0
VGV4dCgkc3VwcENoYXJ0c1skY2hhcnRdWyJhbHR0ZXh0Il0pOw0KCQkJCQ0KCQkJCWlmICgkdHlw
ZSA9PSAiYmFyIikgeyAkZ29vZ2xlLT5oaWRlTGFiZWxzKCB0cnVlICk7IH0NCgkJCQlpZiAoJHR5
cGUgPT0gInBpZSIgb3IgJHR5cGUgPT0gInBpZTMiKSB7ICRnb29nbGUtPmhpZGVMZWdlbmQoIHRy
dWUgKTsgfQkJCQkJDQoJCQkJDQoJCQkJJGNoYXJ0PXN0cnRvbG93ZXIodHJpbSgkY2hhcnQpKTsN
CgkJCQkkdGhpcy0+Z2V0R29vZ2xlQ2hhcnRMaW5rKCRnb29nbGUsICRyZXN1bHQsICR0eXBlLCAk
Y2hhcnQpOw0KCQkJCQ0KCQkJCSMgZGVidWcNCgkJCQkkdGhpcy0+Y29udGV4dC0+Z2V0RGVidWco
KS0+YWRkKCJyZW5kZXJHb29nbGU6Ii4kZ29vZ2xlLT50b1VSTCgpKTsNCgkJCQkNCgkJCQkjIGNy
ZWF0ZSB0aGUgZmluYWwgbGluaw0KCQkJCSRsaW5rPSRnb29nbGUtPnRvSW1nKCk7DQoJCQkJDQoJ
CQkJc3dpdGNoICgkY2hhcnRsYXlvdXQpIHsNCgkJCQkJY2FzZSAiaG9yaXpvbnRhbCI6IA0KCQkJ
CQkJJG91dHB1dC49Ijx0ZD4iLiRsaW5rLiI8L3RkPiI7IA0KCQkJCQkJJGNvbHVtbmNvdW50Kys7
IA0KCQkJCQkJaWYgKCRjb2x1bW5zID4gMCkgew0KCQkJCQkJCWlmICgkY29sdW1uY291bnQgPiAk
Y29sdW1ucykgew0KCQkJCQkJCQkkY29sdW1uY291bnQgPSAxOw0KCQkJCQkJCQkkb3V0cHV0Lj0i
PC90cj48dHI+IjsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAi
dmVydGljYWwiICA6ICRvdXRwdXQuPSRsaW5rLiI8YnIgLz4iOyBicmVhazsNCgkJCQl9DQoJCQkJ
DQoJCQkJJGdvb2dsZSA9IG51bGw7DQoJCQl9DQoJCQkNCgkJCWlmICgkY2hhcnRsYXlvdXQgPT0g
Imhvcml6b250YWwiKSB7DQoJCQkJJG91dHB1dCAuPSAiPC90cj48L3RhYmxlPiI7DQoJCQl9DQoJ
CQkNCgkJfSBlbHNlIHsNCg0KCQkJJHR5cGUgPSAkdHlwZXNbMF07DQoJCQkNCgkJCXN3aXRjaCAo
JHR5cGUpIHsNCgkJCQljYXNlICJiYXIiICAgOiAkY2hhcnRUeXBlID0gImJ2ZyI7IGJyZWFrOw0K
CQkJCWNhc2UgInBpZSIgICA6ICRjaGFydFR5cGUgPSAicCI7IGJyZWFrOw0KCQkJCWNhc2UgInBp
ZTMiICA6ICRjaGFydFR5cGUgPSAicDMiOyBicmVhazsNCgkJCQljYXNlICJtZXRlciIgOiAkY2hh
cnRUeXBlID0gImdvbSI7IGJyZWFrOw0KCQkJCWNhc2UgImxpbmUiICA6ICRjaGFydFR5cGUgPSAi
bHMiOyBicmVhazsNCgkJCX0NCgkJCQkJCQ0KCQkJJGdvb2dsZSA9IG5ldyBHb29nbGVDaGFydDsN
CgkJCSRnb29nbGUtPnNldFR5cGUoJGNoYXJ0VHlwZSk7DQoJCQkkZ29vZ2xlLT5zZXREZWZhdWx0
SGVpZ2h0KCR0aGlzLT5nZXRBcmdzKCktPmdldERlZmF1bHQoImNoYXJ0aGVpZ2h0IikpOw0KCQkJ
JGdvb2dsZS0+c2V0RGVmYXVsdFdpZHRoKCR0aGlzLT5nZXRBcmdzKCktPmdldERlZmF1bHQoImNo
YXJ0d2lkdGgiKSk7CQ0KCQkJJGdvb2dsZS0+c2V0V2lkdGgoJHRoaXMtPmdldEFyZ3MoKS0+Z2V0
KCJjaGFydHdpZHRoIikpOw0KCQkJJGdvb2dsZS0+c2V0SGVpZ2h0KCR0aGlzLT5nZXRBcmdzKCkt
PmdldCgiY2hhcnRoZWlnaHQiKSk7DQoJCQ0KCQkJaWYgKCR0eXBlID09ICJiYXIiKSB7ICRnb29n
bGUtPmhpZGVMYWJlbHMoIHRydWUgKTsgfQ0KCQkJaWYgKCR0eXBlID09ICJwaWUiIG9yICR0eXBl
ID09ICJwaWUzIikgeyAkZ29vZ2xlLT5oaWRlTGVnZW5kKCB0cnVlICk7IH0JCQkJDQoJCQkNCgkJ
CSR0aGlzLT5nZXRHb29nbGVDaGFydExpbmsoICRnb29nbGUsICRyZXN1bHQsICR0eXBlLCBudWxs
KTsNCgkJCQ0KCQkJIyBkZWJ1Zw0KCQkJJHRoaXMtPmNvbnRleHQtPmdldERlYnVnKCktPmFkZCgi
cmVuZGVyR29vZ2xlOiIuJGdvb2dsZS0+dG9VUkwoKSk7DQoJCQkNCgkJCSMgY3JlYXRlIHRoZSBm
aW5hbCBsaW5rDQoJCQkkb3V0cHV0PSRnb29nbGUtPnRvSW1nKCk7DQoJCQkNCgkJCSRnb29nbGUg
PSBudWxsOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0
R29vZ2xlQ2hhcnRPbmVSb3dDb3VudCggJiRnb29nbGUsICRyZXN1bHQsICR0eXBlLCAkY2hhcnQs
ICRmaWVsZCwgJGZpZWxkMmNvdW50LCAkY29sLCAkY29sb3JyYW5nZSkgew0KCQkkY29sb3IgPSBu
ZXcgVFJfQ29sb3JzOw0KCQkNCgkJJGxhYmVsPSIiOw0KCQkkdG90YWw9MDsNCgkJDQoJCWlmICgk
Y29sID09ICJhdXRvIiBhbmQgJGNvbG9ycmFuZ2UgPT0gIiIpIHsNCgkJCSRjb2xvcnJhbmdlID0g
JHRoaXMtPmRlZmF1bHRDb2xvclJhbmdlOw0KCQl9DQoJCQ0KCQlpZiAoISR0aGlzLT5nZXRUb3Rh
bCgpKSB7DQoJCQkkdGhpcy0+Y2FsY1RvdGFsKCAkcmVzdWx0ICk7DQoJCQkkdG90YWw9JHRoaXMt
PmdldFRvdGFsKCk7DQoJCX0gZWxzZSB7DQoJCQkkdG90YWwgPSAkdGhpcy0+Z2V0VG90YWwoKTsN
CgkJfQ0KCQkNCgkJJHRoaXMtPmNvbnRleHQtPmdldERlYnVnKCktPmFkZCgiZ2V0R29vZ2xlQ2hh
cnRPbmVSb3dDb3VudDoiLiR0b3RhbCk7DQoJCQ0KCQkkYmFycz1hcnJheSgpOw0KCQkkbGVnZW5k
PWFycmF5KCk7DQoJCSRudW1PZkJhcnMgPSAwOw0KCQlmb3JlYWNoICgkcmVzdWx0IGFzICRsaW5l
KSB7DQoJCQkkY291bnRlciA9ICRsaW5lWyRmaWVsZF07DQoJCQkNCgkJCWlmIChhcnJheV9rZXlf
ZXhpc3RzKCRjb3VudGVyLCRiYXJzKSkgew0KCQkJCWlmICgkZmllbGQyY291bnQgIT0gIiIpIHsN
CgkJCQkJJGJhcnNbJGNvdW50ZXJdID0gJGJhcnNbJGNvdW50ZXJdICsgJGxpbmVbJGZpZWxkMmNv
dW50XTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkYmFyc1skY291bnRlcl0rKzsNCgkJCQl9DQoJCQl9
IGVsc2Ugew0KCQkJCWlmICgkZmllbGQyY291bnQgIT0gIiIpIHsNCgkJCQkJJGJhcnNbJGNvdW50
ZXJdID0gJGxpbmVbJGZpZWxkMmNvdW50XTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkYmFyc1skY291
bnRlcl09MTsNCgkJCQl9DQoJCQkJJGxlZ2VuZFtdPSRjb3VudGVyOw0KCQkJCWlmICgkY29sICE9
ICIiIGFuZCAkY29sICE9ICJhdXRvIikgew0KCQkJCQkkZ29vZ2xlLT5hZGRDb2xvcigkY29sb3It
PmdldENvbG9ySFRNTCgkY291bnRlciwgJGNvbCkpOwkJCQ0KCQkJCX0NCgkJCQkkbnVtT2ZCYXJz
Kys7DQoJCQl9DQoJCX0NCgkJDQoJCSRnb29nbGUtPnNldERhdGFNaW5SYW5nZSgwKTsNCgkJDQoJ
CSRpPTA7DQoJCWZvcmVhY2ggKCRiYXJzIGFzICRiYXIpIHsNCgkJCSRnb29nbGUtPmFkZERhdGEo
JGJhcik7DQoJCQkkbGFiZWw9JGxlZ2VuZFskaV0uIigiLiRiYXIuIikiOw0KCQkJJGxhYmVsLj0k
dGhpcy0+Z2V0UGVyYygkYmFyLCR0b3RhbCk7DQoJCQlpZiAoJGNvbCA9PSAiYXV0byIpIHsNCgkJ
CQkkZ29vZ2xlLT5hZGRDb2xvcigkY29sb3ItPmF1dG9Db2xvckhUTUwoJGNvbG9ycmFuZ2UsICRp
LCAkbnVtT2ZCYXJzKSk7DQoJCQl9DQoJCQkkZ29vZ2xlLT5hZGRMYWJlbCgkbGFiZWwpOw0KCQkJ
JGdvb2dsZS0+YWRkTGVnZW5kKCRsYWJlbCk7DQoJCQkkaSsrOw0KCQl9CQkNCgl9CQkNCgkNCglm
dW5jdGlvbiBhcmVDaGFydHNTdXBwb3J0ZWQoICRkZXZpY2UgKSB7DQoJCSRkZXZpY2VzID0gJHRo
aXMtPmdldFN1cHBvcnRlZENoYXJ0VHlwZXNBcnIoKTsNCgkJDQoJCWlmIChhcnJheV9rZXlfZXhp
c3RzKCAkZGV2aWNlLCAkZGV2aWNlcyApKSB7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfSBlbHNlIHsN
CgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGlzQ2hhcnRUeXBlU3VwcG9y
dGVkKCAkZGV2aWNlLCAkdHlwZSApIHsNCgkJJGRldmljZXMgPSAkdGhpcy0+Z2V0U3VwcG9ydGVk
Q2hhcnRUeXBlc0FycigpOw0KCQkNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoICRkZXZpY2UsICRk
ZXZpY2VzICkpIHsNCgkJCSR0eXBlcyA9ICRkZXZpY2VzWyRkZXZpY2VdOw0KCQkJaWYgKGluX2Fy
cmF5KCAkdHlwZSwgJHR5cGVzICkpIHsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0gZWxzZSB7DQoJ
CQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9
DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0VHlwZXMoICRkZXZpY2UgKSB7DQoJ
CSRvdXRwdXQ9IiI7DQoJCSRkZXZpY2VzID0gJHRoaXMtPmdldFN1cHBvcnRlZENoYXJ0VHlwZXNB
cnIoKTsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoICRkZXZpY2UsICRkZXZpY2VzICkpIHsNCgkJ
CSR0eXBlcyA9ICRkZXZpY2VzWyRkZXZpY2VdOw0KCQkJZm9yZWFjaCAoJHR5cGVzIGFzICR0eXBl
KSB7DQoJCQkJJG91dHB1dCA9ICR0aGlzLT5hZGQyc3RyKCRvdXRwdXQsICIsICIsICR0eXBlKTsN
CgkJCX0NCgkJfSBlbHNlIHsNCgkJCXJldHVybiAiLSI7DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24g
aXNDaGFydFN1cHBvcnRlZCggJGNoYXJ0ICkgew0KCQkkY2hhcnRzID0gJHRoaXMtPmdldFN1cHBv
cnRlZENoYXJ0c0FycigpOw0KCQlpZiAoYXJyYXlfa2V5X2V4aXN0cyggJGNoYXJ0LCAkY2hhcnRz
ICkpIHsNCgkJCXJldHVybiB0cnVlOw0KCQl9IGVsc2Ugew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9
DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0cyAoKSB7DQoJCSRjaGFydHMgPSAk
dGhpcy0+Z2V0U3VwcG9ydGVkQ2hhcnRzQXJyKCk7DQoJCSRvdXRwdXQ9IiI7DQoJCWlmICgkY2hh
cnRzKSB7DQoJCQlmb3JlYWNoICgkY2hhcnRzIGFzICRjaGFydCkgew0KCQkJCSRvdXRwdXQgPSAk
dGhpcy0+YWRkMnN0cigkb3V0cHV0LCAiLCAiLCAkY2hhcnRbInBhcmFtZXRlciJdLiIgKCIuJGNo
YXJ0WyJ0aXRsZSJdLiIpIik7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gIi0iOw0KCQl9
DQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIGdldFN0YW5k
YXJkUnVuSGVhZGVyKCkgew0KIyMjIyMjIyMjIyMjIyMjIyMjIyMKI0VESVRFRDogVGhpcyBuZXh0
IGJsb2NrIGdldHMgdGhlIHRlc3QgcGxhbiBuYW1lIGFuZCBpbnRyb2R1Y2VzIGl0IGluIHRoZSB0
ZXN0IHJ1biBoZWFkZXIKCgkJJHJ1bl9pZCA9ICR0aGlzLT5nZXRBcmdzKCktPmdldCgicnVuX2lk
Iik7CgoJCSRzcWw9IlNFTEVDVCAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUoInRl
c3RfcGxhbnMiKS4iLm5hbWUgRlJPTSAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUo
InRlc3RfcGxhbnMiKTsKICAgICAgICAgICAgICAgICRzcWwuPSIgSk9JTiAiLiR0aGlzLT5nZXRD
b25uZWN0b3IoKS0+Z2V0VGFibGUoInRlc3RfcnVucyIpOwogICAgICAgICAgICAgICAgJHNxbC49
IiBPTiAiLiR0aGlzLT5nZXRDb25uZWN0b3IoKS0+Z2V0VGFibGUoInRlc3RfcnVucyIpLiIucGxh
bl9pZCA9ICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJsZSgidGVzdF9wbGFucyIpLiIu
cGxhbl9pZCI7CiAgICAgICAgICAgICAgICAkc3FsLj0iIFdIRVJFIHJ1bl9pZCA9ICIuJHJ1bl9p
ZC4iOyI7CgkJJF9yZXN1bHQgPSAkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmV4ZWN1dGUoJHNxbCk7
CgkJaWYgKCRfcmVzdWx0KSB7CgkJCSRfbGluZSA9ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZmV0
Y2goJF9yZXN1bHQpOwoJCQkkX3RpdGxlID0gaHRtbGVudGl0aWVzKCRfbGluZVsibmFtZSJdKTsK
CQkJJHRoaXMtPmdldENvbm5lY3RvcigpLT5mcmVlKCRfcmVzdWx0KTsKCQl9IGVsc2UgewoJCQkk
X3RpdGxlID0gIiI7CgkJCSRfbGluZSA9ICIiOwoJCX0KIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgoK
CiMJCSRydW5faWQgPSAkdGhpcy0+Z2V0QXJncygpLT5nZXQoInJ1bl9pZCIpOw0KCQkNCgkJJHNx
bCA9ICJTRUxFQ1Qgc3VtbWFyeSBGUk9NICIuJHRoaXMtPmdldENvbm5lY3RvcigpLT5nZXRUYWJs
ZSgidGVzdF9ydW5zIikuIiBXSEVSRSBydW5faWQgPSAiLiRydW5faWQuIjsiOw0KCQkkcmVzdWx0
ID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5leGVjdXRlKCRzcWwpOw0KCQkNCgkJaWYgKCRyZXN1
bHQpIHsNCgkJCSRsaW5lID0gJHRoaXMtPmdldENvbm5lY3RvcigpLT5mZXRjaCgkcmVzdWx0KTsN
CgkJCSR0aXRsZSA9IGh0bWxlbnRpdGllcygkbGluZVsic3VtbWFyeSJdKTsNCgkJCSR0aGlzLT5n
ZXRDb25uZWN0b3IoKS0+ZnJlZSgkcmVzdWx0KTsNCgkJfSBlbHNlIHsNCgkJCSR0aXRsZSA9ICIi
Ow0KCQkJJGxpbmUgPSAiIjsNCgkJfQ0KCQkNCiMJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0TmFt
ZSgpLiI8YnIgLz4iLiI8YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVy
IikuIi90cl9zaG93X3J1bi5jZ2k/cnVuX2lkPSIuJHJ1bl9pZC4iXCI+VGVzdCBSdW4gIi4kcnVu
X2lkLiIgLSAiLiR0aXRsZS4iPC9hPiI7DQoJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0TmFtZSgp
LiI8YnIgLz4iLiI8YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIiku
Ii90cl9zaG93X3J1bi5jZ2k/cnVuX2lkPSIuJHJ1bl9pZC4iXCI+Ii4kX3RpdGxlLiIgLSAiLiR0
aXRsZS4iPC9hPiI7Cgl9DQoJDQoJcHVibGljIGZ1bmN0aW9uIGdldFN0YW5kYXJkUGxhbkhlYWRl
cigpIHsNCgkJJHBsYW5faWQgPSAkdGhpcy0+Z2V0UGxhbklEKCk7DQoJCQ0KCQkkc3FsPSJTRUxF
Q1QgIi4kdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X3BsYW5zIikuIi5uYW1l
IEZST00gIi4kdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmdldFRhYmxlKCJ0ZXN0X3BsYW5zIikuIiBX
SEVSRSBwbGFuX2lkID0gIi4kcGxhbl9pZC4iOyI7CQkNCgkJJHJlc3VsdCA9ICR0aGlzLT5nZXRD
b25uZWN0b3IoKS0+ZXhlY3V0ZSgkc3FsKTsNCgkJDQoJCWlmICgkcmVzdWx0KSB7DQoJCQkkbGlu
ZSA9ICR0aGlzLT5nZXRDb25uZWN0b3IoKS0+ZmV0Y2goJHJlc3VsdCk7DQoJCQkkdGl0bGUgPSBo
dG1sZW50aXRpZXMoJGxpbmVbIm5hbWUiXSk7DQoJCQkkdGhpcy0+Z2V0Q29ubmVjdG9yKCktPmZy
ZWUoJHJlc3VsdCk7DQoJCX0gZWxzZSB7DQoJCQkkdGl0bGUgPSAiIjsNCgkJCSRsaW5lID0gIiI7
DQoJCX0NCgkJDQojCQlyZXR1cm4gJHRoaXMtPmdldFJlcG9ydE5hbWUoKS4iPGJyIC8+Ii4iPGEg
aHJlZj1cIiIuJHRoaXMtPmdldEFyZ3MoKS0+Z2V0KCJienNlcnZlciIpLiIvdHJfc2hvd19wbGFu
LmNnaT9wbGFuX2lkPSIuJHBsYW5faWQuIlwiPlRlc3QgUGxhbiAiLiRwbGFuX2lkLiIgLSAiLiR0
aXRsZS4iPC9hPiI7DQoJCXJldHVybiAkdGhpcy0+Z2V0UmVwb3J0TmFtZSgpLiI8YnIgLz4iLiI8
YSBocmVmPVwiIi4kdGhpcy0+Z2V0QXJncygpLT5nZXQoImJ6c2VydmVyIikuIi90cl9zaG93X3Bs
YW4uY2dpP3BsYW5faWQ9Ii4kcGxhbl9pZC4iXCI+VGVzdCBQbGFuICAtICIuJHRpdGxlLiI8L2E+
IjsKCgl9CQ0KCQ0KCWZ1bmN0aW9uIGFkZDJzdHIoJHN0ciwgJHNlcCwgJHZhbCkgew0KCQlpZiAo
JHN0ciA9PSAiIikgew0KCQkJcmV0dXJuICR2YWw7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gJHN0
ci49JHNlcC4kdmFsOw0KCQl9DQoJfQkNCgkNCgkjDQoJIyBpbnRlcmZhY2Ugcm91bnRpbmVzIChp
bnRlcmZhY2VzKQ0KCSMNCgkNCgkjIHJlcG9ydCBzdHVmZg0KCXB1YmxpYyBmdW5jdGlvbiBpbml0
KCkge30NCglwdWJsaWMgZnVuY3Rpb24gbmV3RGF0YUxpbmUoICRsaW5lICkge30NCglwdWJsaWMg
ZnVuY3Rpb24gbmV3TGluZUJlZ2luKCAkbGluZSApIHt9DQoJcHVibGljIGZ1bmN0aW9uIGdldENv
bHVtbkZvcm1hdHMoKSB7fQ0KCXB1YmxpYyBmdW5jdGlvbiBpbmplY3RCb2R5KCAkcmVzdWx0ICkg
eyByZXR1cm4gJHRoaXMtPnJlbmRlclBsYWluSFRNTEJvZHkoJHJlc3VsdCk7IH0NCgkNCglhYnN0
cmFjdCBmdW5jdGlvbiBnZXRTUUwoKTsNCglhYnN0cmFjdCBmdW5jdGlvbiBnZXRSZXBvcnQoICRy
ZXN1bHQgKTsNCglhYnN0cmFjdCBmdW5jdGlvbiBnZXRSZXBvcnRIZWFkZXIoKTsNCglhYnN0cmFj
dCBmdW5jdGlvbiBnZXRSZXBvcnRGb290ZXIoKTsNCglhYnN0cmFjdCBmdW5jdGlvbiBnZXRSZXBv
cnROYW1lKCk7DQoJcHVibGljIGZ1bmN0aW9uIHJlbmRlckNlbGwoJHR5cGUsICRjb2xObywgJGZp
ZWxkX25hbWUsICR2YWx1ZSwgJGxpbmVObywgJGxpbmUpIHt9DQoJDQoJIyBjaGFydCBzdHVmZg0K
CWFic3RyYWN0IGZ1bmN0aW9uIGdldFN1cHBvcnRlZENoYXJ0c0FyciAoKTsNCglhYnN0cmFjdCBm
dW5jdGlvbiBnZXRTdXBwb3J0ZWRDaGFydFR5cGVzQXJyICgpOw0KCXB1YmxpYyBmdW5jdGlvbiBn
ZXRHb29nbGVDaGFydExpbmsoICYkZ29vZ2xlLCAkcmVzdWx0LCAkdHlwZSwgJGNoYXJ0ICkge30N
Cn0NCg0KPz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</data>

          </attachment>
      

    </bug>

</bugzilla>