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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>109095</bug_id>
          
          <creation_ts>2013-02-06 14:35:21 -0800</creation_ts>
          <short_desc>REGRESSION(r142032): component build still broken (Requested by jochen__ on #webkit).</short_desc>
          <delta_ts>2013-02-06 14:46:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108466</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>abarth</cc>
    
    <cc>jochen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826761</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:35:21 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/142032 broke the build:
component build still broken (Requested by jochen__ on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826764</commentid>
    <comment_count>1</comment_count>
      <attachid>186922</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:35:52 -0800</bug_when>
    <thetext>Created attachment 186922
ROLLOUT of r142032

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826771</commentid>
    <comment_count>2</comment_count>
      <attachid>186922</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:46:36 -0800</bug_when>
    <thetext>Comment on attachment 186922
ROLLOUT of r142032

Clearing flags on attachment: 186922

Committed r142035: &lt;http://trac.webkit.org/changeset/142035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826772</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:46:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186922</attachid>
            <date>2013-02-06 14:35:52 -0800</date>
            <delta_ts>2013-02-06 14:46:36 -0800</delta_ts>
            <desc>ROLLOUT of r142032</desc>
            <filename>bug-109095-20130206223229.patch</filename>
            <type>text/plain</type>
            <size>102233</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDMzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGU0NGEyNWRhMjJlMGYyNjk5NmNiYzk3ZDA1OGNhZWI3
Mzk5N2QxZC4uM2VhZmRkNDdjMDQ3ZDdlNjc4YWY0MjlmNTg2ZWRlZDcwMmU3ZWNhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
OSBAQAorMjAxMy0wMi0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MjAzMi4KKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQyMDMyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwOTUKKworICAgICAgICBjb21wb25l
bnQgYnVpbGQgc3RpbGwgYnJva2VuIChSZXF1ZXN0ZWQgYnkgam9jaGVuX18gb24KKyAgICAgICAg
I3dlYmtpdCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAv
RHVtcFJlbmRlclRyZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmg6CisgICAgICAgIChXZWJUYXNrTGlzdCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVz
dENvbW1vbi5oOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0SW50
ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChXZWJUZXN0UHJveHlCYXNlKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3Q6OmNyZWF0ZVJvb3Qp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudExpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL0NwcEJvdW5kQ2xhc3MuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRD
bGFzczo6fkNwcEJvdW5kQ2xhc3MpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRD
bGFzczo6aW52b2tlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6Omdl
dFByb3BlcnR5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OnNldFBy
b3BlcnR5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRDYWxs
YmFjayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kR2V0dGVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZFBy
b3BlcnR5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmdldEFzQ3Bw
VmFyaWFudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvQ3BwQm91bmRDbGFzcy5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChD
cHBCb3VuZENsYXNzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJp
bmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5k
RmFsbGJhY2tDYWxsYmFjayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNz
OjpiaW5kRmFsbGJhY2tNZXRob2QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
Q3BwVmFyaWFudDo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFu
dDo6dG9JbnQzMik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojp0b0RvdWJs
ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojp0b0Jvb2xlYW4pOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6aW52b2tlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkNwcFZhcmlhbnQ6Omludm9rZURlZmF1bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaDoKKyAgICAgICAgKENwcFZh
cmlhbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVu
dFNlbmRlcjo6bW91c2VEb3duKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVy
Ojptb3VzZVVwKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjptb3VzZU1v
dmVUbyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6a2V5RG93bik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6bWFrZU1lbnVJdGVtU3RyaW5nc0Zvcik6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Y29udGV4dENsaWNrKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpiZWdpbkRyYWdXaXRoRmlsZXMpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6RXZlbnRTZW5kZXI6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpjYW5jZWxUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6TmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2RlKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1h
ckNoZWNrLmNwcDoKKyAgICAgICAgKE1vY2tHcmFtbWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3Ry
aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9N
b2NrR3JhbW1hckNoZWNrLmg6CisgICAgICAgIChNb2NrR3JhbW1hckNoZWNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5j
cHA6CisgICAgICAgIChhcHBlbmQpOgorICAgICAgICAoaXNOb3RBU0NJSUFscGhhKToKKyAgICAg
ICAgKE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6CisgICAgICAgIChNb2NrU3BlbGxD
aGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAoTW9ja1NwZWxs
Q2hlY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1NwZWxsQ2hlY2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6U3BlbGxDaGVj
a0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
U3BlbGxDaGVja0NsaWVudDo6ZmluaXNoTGFzdFRleHRDaGVjayk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRl
cmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpUZXN0
SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFRlc3RJbnRlcmZhY2VzKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OlRlc3RQbHVnaW4pOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpkZXN0cm95KToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OnBhcnNlUHJpbWl0aXZlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RQbHVnaW46OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6aW5pdFByb2dyYW0pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6
aW5pdFByaW1pdGl2ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpkcmF3
UHJpbWl0aXZlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmxvYWRTaGFk
ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6bG9hZFByb2dyYW0pOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6aGFuZGxlRHJhZ1N0YXR1c1VwZGF0
ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5oOgorICAgICAgICAoVGVzdFBsdWdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrU29vbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cmVzZXQpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjphZGRXb3JrKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6c2V0VGV4dFN1YnBpeGVsUG9zaXRpb25pbmcpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QmFja2lu
Z1NjYWxlRmFjdG9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVy
OjpXb3JrUXVldWU6OmlzRW1wdHkpOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXh0SW5wdXRDb250cm9sbGVyOjptYXJr
ZWRSYW5nZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXh0SW5wdXRDb250cm9sbGVyOjpz
ZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xs
ZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJQcmVmZXJlbmNlczo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6V2ViVGFz
a0xpc3QpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6On5XZWJUYXNrTGlz
dCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojp1bnJlZ2lzdGVyVGFzayk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdDo6cmV2b2tlQWxsKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNl
cy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVz
dEludGVyZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6
On5XZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50
ZXJmYWNlczo6dGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0UHJveHlCYXNlOjp+V2ViVGVzdFByb3h5QmFzZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzcGVsbENoZWNrQ2xpZW50KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnJlZ2lzdGVySW50ZW50U2VydmljZSk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpkaXNwYXRjaEludGVu
dCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjphc3NpZ25JZGVu
dGlmaWVyVG9SZXF1ZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9jb25maWcuaDogUmVtb3ZlZC4KKwogMjAxMy0wMi0wNiAgSm9jaGVuIEVpc2lu
Z2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVz
dFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21wb25lbnQgYnVpbGQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lw
CmluZGV4IGQxNTc3YTBiMDg5YTY1YzFkODIwZThmMDhhZGE3MWNkZmIzYzhjNTguLjVmMzY3ZGY3
ODVhY2QxMTkzNzQyYTA0MDM1Mjc5ODNmN2RjMDIwMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApA
QCAtODMsNyArODMsMTAgQEAKICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAg
ICAgICAgICAgJ1Rlc3RSdW5uZXJfcmVzb3VyY2VzJywKICAgICAgICAgICAgICAgICAnPChzb3Vy
Y2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXQnLAorICAgICAgICAgICAg
ICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF93dGZf
c3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXA6d2Via2l0X3Rlc3Rfc3VwcG9ydCcsCisgICAgICAgICAgICAgICAgJzwoc291
cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAorICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRf
c3VwcG9ydCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsK
ICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKScsCkBAIC0xMDMsMzEgKzEwNiw2
IEBACiAgICAgICAgICAgICAgICAgJzxAKHRlc3RfcnVubmVyX2ZpbGVzKScsCiAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCi0gICAgICAgICAgICAgICAgWydpbnNp
ZGVfY2hyb21pdW1fYnVpbGQgPT0gMScsIHsKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAn
PChjb21wb25lbnQpJywKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICBbJ2NvbXBvbmVudD09InNoYXJlZF9saWJyYXJ5IicsIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfRExMJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT049MScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0
X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RlZmluZXMnOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0VCVEVT
VFJVTk5FUl9ETEwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21z
dnNfc2V0dGluZ3MnOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtl
clRvb2wnOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9u
cyc6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2luY3JlbWVu
dGFsX2Nocm9tZV9kbGw9PTEnLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cyc6ICd0cnVlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH1d
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAg
ICAgICAgIFsndG9vbGtpdF91c2VzX2d0ayA9PSAxJywgewogICAgICAgICAgICAgICAgICAgICAn
ZGVmaW5lcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdXVEZfVVNFX0dUSz0xJywKQEAg
LTIxNyw3ICsxOTUsNiBAQAogICAgICAgICAgICAgICAgICdUZXN0UnVubmVyJywKICAgICAgICAg
ICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0
b3JfcmVzb3VyY2VzJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cDp3ZWJraXQnLAotICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIp
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAg
ICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAogICAgICAg
ICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0
X2Jhc2UnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBf
Z3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCmluZGV4IGFhZGJjYzkzMzEyZTAyODQyZDY3MjQwZTk2ZjM3MThkMTJmN2Yw
N2MuLjA4OGM5ODU3NzQ0YzdmY2Q0NjZmMmNmMWQ4ODExMGM3YTNiMjA4ZmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtNTcsNyArNTcsNiBAQAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAotICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5u
ZXIuaCcsCkBAIC04MSw3ICs4MCw2IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvTW9ja1NwZWxsQ2hlY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVm
ZXJlbmNlcy5oCmluZGV4IGExMzhiZmQ3MDBjYzRmNzdmZjUzOGQwM2ExYjI2OWRkMjBlZDk2MDAu
LmI0NzM4MjZiMWE1YjcyNWI5OWU5MmYyNGIxNTVlOTc3NzcwZmY3N2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVu
Y2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViUHJlZmVyZW5jZXMuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
ZXR0aW5ncy5oIgotI2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJWaWV3OwpAQCAtNDIsNyArNDEsNyBAQCBjbGFzcyBXZWJWaWV3OwogCiBu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLXN0cnVjdCBXRUJURVNUUlVOTkVSX0VYUE9SVCBX
ZWJQcmVmZXJlbmNlcyB7CitzdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgewogICAgIFdlYktpdDo6V2Vi
U3RyaW5nIHN0YW5kYXJkRm9udEZhbWlseTsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBmaXhlZEZv
bnRGYW1pbHk7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgc2VyaWZGb250RmFtaWx5OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGFzay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGFzay5oCmluZGV4IGMzYmMwOWNjMWNlZWFhZjYxZTg1Y2M1MzczY2NlNjE3OTJiMTQ0NWMu
LmVmNzNlMTc3ZTA0MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0NzMwYTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
YXNrLmgKQEAgLTMxLDE2ICszMSwxMyBAQAogI2lmbmRlZiBXZWJUYXNrX2gKICNkZWZpbmUgV2Vi
VGFza19oCiAKLSNpbmNsdWRlICJXZWJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSA8dmVjdG9yPgot
CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNzIFdlYlRhc2tMaXN0OwogCiAvLyBX
ZWJUYXNrIHJlcHJlc2VudHMgYSB0YXNrIHdoaWNoIGNhbiBydW4gYnkgV2ViVGVzdERlbGVnYXRl
Ojpwb3N0VGFzaygpIG9yCiAvLyBXZWJUZXN0RGVsZWdhdGU6OnBvc3REZWxheWVkVGFzaygpLgot
Y2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGFzayB7CitjbGFzcyBXZWJUYXNrIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJUYXNrKFdlYlRhc2tMaXN0Kik7CiAgICAgdmlydHVhbCB+
V2ViVGFzaygpOwpAQCAtNTQsNyArNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViVGFza0xpc3Qq
IG1fdGFza0xpc3Q7CiB9OwogCi1jbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUYXNrTGlz
dCB7CitjbGFzcyBXZWJUYXNrTGlzdCB7CiBwdWJsaWM6CiAgICAgV2ViVGFza0xpc3QoKTsKICAg
ICB+V2ViVGFza0xpc3QoKTsKQEAgLTYzLDcgKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmV2
b2tlQWxsKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp2ZWN0b3I8V2ViVGFzayo+IG1fdGFza3M7
CisgICAgY2xhc3MgUHJpdmF0ZTsKKyAgICBQcml2YXRlKiBtX3ByaXZhdGU7CiB9OwogCiAvLyBB
IHRhc2sgY29udGFpbmluZyBhbiBvYmplY3QgcG9pbnRlciBvZiBjbGFzcyBULiBEZXJpdmVkIGNs
YXNzZXMgc2hvdWxkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGEzNDQyYzZhOTNkYjFjZmJkNDYyN2FlMGY4Y2JlM2JkNmRiNjU3N2Qu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViVGVzdENvbW1vbl9oCi0jZGVm
aW5lIFdlYlRlc3RDb21tb25faAotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRGVmYXVs
dCBjb25maWd1cmF0aW9uCi0KLSNpZiAhZGVmaW5lZChXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFU
SU9OKQotI2RlZmluZSBXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OIDAKLSNlbmRpZgotCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRXhwb3J0ZWQgc3ltYm9scyBuZWVkIHRvIGJlIGFu
bm90YXRlZCB3aXRoIFdFQlRFU1RSVU5ORVJfRVhQT1JUCi0KLSNpZiBkZWZpbmVkKFdFQlRFU1RS
VU5ORVJfRExMKQotCi0jaWYgZGVmaW5lZChXSU4zMikKLSNpZiBXRUJURVNUUlVOTkVSX0lNUExF
TUVOVEFUSU9OCi0jZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KQotI2Vsc2UKLSNkZWZpbmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQgX19kZWNsc3BlYyhkbGxp
bXBvcnQpCi0jZW5kaWYKLQotI2Vsc2UgLy8gZGVmaW5lZChXSU4zMikKLQotI2lmIFdFQlRFU1RS
VU5ORVJfSU1QTEVNRU5UQVRJT04KLSNkZWZpbmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSNlbHNlCi0jZGVmaW5lIFdFQlRFU1RS
VU5ORVJfRVhQT1JUCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNlbHNlIC8vIGRlZmluZWQoV0VCVEVT
VFJVTk5FUl9ETEwpCi0KLSNkZWZpbmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQKLQotI2VuZGlmCi0K
LSNlbmRpZiAvLyBXZWJUZXN0Q29tbW9uX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oCmluZGV4IDczZDc5ZGMyY2RkZTBmMmViOTllNzkyNmIxZDhmYmYxZDFhZjI3Y2UuLjJj
Y2Q2MWUyNWMxMGJhNDcyMDg2MTUyMjA5NjM2NTZlOTg4NmVkYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZh
Y2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtMzEsOSArMzEsNiBAQAogI2lmbmRlZiBXZWJUZXN0
SW50ZXJmYWNlc19oCiAjZGVmaW5lIFdlYlRlc3RJbnRlcmZhY2VzX2gKIAotI2luY2x1ZGUgIldl
YlRlc3RDb21tb24uaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJWaWV3OwpAQCAtNDUsNyArNDIsNyBAQCBjbGFzcyBU
ZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIGNsYXNzIFdlYlRlc3RSdW5u
ZXI7CiAKLWNsYXNzIFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdlYlRlc3RJbnRlcmZhY2VzIHsKK2Ns
YXNzIFdlYlRlc3RJbnRlcmZhY2VzIHsKIHB1YmxpYzoKICAgICBXZWJUZXN0SW50ZXJmYWNlcygp
OwogICAgIH5XZWJUZXN0SW50ZXJmYWNlcygpOwpAQCAtNjQsNyArNjEsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKLSAgICBzdGQ6OmF1dG9fcHRyPFRlc3RJbnRlcmZhY2VzPiBtX2lu
dGVyZmFjZXM7CisgICAgVGVzdEludGVyZmFjZXMqIG1faW50ZXJmYWNlczsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5kZXggMTAwZDI4N2RiZTI2ZDc4MjhiZGI0ZDU0NWEx
MmQxYjY1ZWJkMmRjZC4uNDI5MDk2OWJkZDdhNjg2N2M2MDNlZmE4OTQ3NWMwNWQ3ZjQwZmM1ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKQEAgLTQyLDkgKzQyLDcgQEAKICNpbmNsdWRl
ICJXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJUZXN0
Q29tbW9uLmgiCiAjaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxz
dHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODEsNyArNzksNyBAQCBjbGFzcyBXZWJU
ZXN0RGVsZWdhdGU7CiBjbGFzcyBXZWJUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RSdW5u
ZXI7CiAKLWNsYXNzIFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdlYlRlc3RQcm94eUJhc2UgeworY2xh
c3MgV2ViVGVzdFByb3h5QmFzZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbnRlcmZhY2VzKFdl
YlRlc3RJbnRlcmZhY2VzKik7CiAgICAgdm9pZCBzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUq
KTsKQEAgLTE2Nyw3ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIFRlc3RJbnRlcmZhY2VzKiBtX3Rl
c3RJbnRlcmZhY2VzOwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAotICAgIHN0
ZDo6YXV0b19wdHI8U3BlbGxDaGVja0NsaWVudD4gbV9zcGVsbGNoZWNrOworICAgIFNwZWxsQ2hl
Y2tDbGllbnQqIG1fc3BlbGxjaGVjazsKIAogICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVj
dDsKICAgICBzdGQ6Om1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1fcmVzb3VyY2VJZGVudGlm
aWVyTWFwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRD
aHJvbWl1bS5jcHAKaW5kZXggNmRjYzQwNjA2M2Y2OTIxNGI2NzYyMjM0MzE2MTFlNjE3ZmRjNzJj
OS4uMDYzZGRiYmFkZmJhYjY2MzM4NTU5OWI4ODJjN2QwZTRjNTU4YTJkMiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudENocm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwCkBAIC0z
MSwxMiArMzEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Q2hyb21pdW0uaCIKIAotI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJp
bmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zNjcsNyArMzY4LDcgQEAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmoKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogewogCi0gICAg
V0VCS0lUX0FTU0VSVChmYWN0b3J5KTsKKyAgICBBU1NFUlQoZmFjdG9yeSk7CiAKICAgICAvLwog
ICAgIC8vIFByb3BlcnRpZXMKQEAgLTEwMjQsMTQgKzEwMjUsMTQgQEAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogQWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKGNvbnN0IFdl
YkFjY2Vzc2kKICAgICB9CiAKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50ID0g
bmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2JqZWN0LCB0aGlzKTsKLSAgICBtX2VsZW1lbnRz
LnB1c2hfYmFjayhlbGVtZW50KTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudExpc3Q6OmNyZWF0ZVJvb3QoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0KQogewogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBuZXcg
Um9vdEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2JqZWN0LCB0aGlzKTsKLSAgICBtX2VsZW1lbnRz
LnB1c2hfYmFjayhlbGVtZW50KTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50Q2hyb21pdW0uaAppbmRleCBjNmNiMWEyMzU2ZGEwNzBiMWEyZTE4NGZhNDBl
ZjI4ODlhYzc5MDkwLi4zOTZhYTcwODBhOTVjODg1MjFhNjkwMWRjMjYxOTk5MGExMjQ3MDFhIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0u
aApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKICNpbmNsdWRl
ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC0xNjcsNyAr
MTY4LDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGNyZWF0ZVJvb3Qo
Y29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAKIHByaXZhdGU6Ci0gICAg
dHlwZWRlZiBzdGQ6OnZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7
CisgICAgdHlwZWRlZiBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+IEVsZW1lbnRMaXN0
OwogICAgIEVsZW1lbnRMaXN0IG1fZWxlbWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xh
c3MuY3BwCmluZGV4IDQ5ZTYxNDk3M2I3MTkyY2FkYzkxMmRkODZlZDdkODg3Y2ZhYWQwZWQuLjAz
NWFjZGVkNzhkNjhlODc1NzBkYTAxNTVmZjY1MmQ2YTk1OWNjMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJv
dW5kQ2xhc3MuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCiAKLSNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrIDogcHVibGljIENwcEJvdW5kQ2xhc3M6OlByb3Bl
cnR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIEdldHRlclByb3BlcnR5Q2FsbGJhY2soYXV0b19w
dHI8Q3BwQm91bmRDbGFzczo6R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIEdldHRlclBy
b3BlcnR5Q2FsbGJhY2soUGFzc093blB0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4g
Y2FsbGJhY2spCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlKGNvbnN0
IENwcFZhcmlhbnQmIHZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgotICAgIGF1
dG9fcHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIE93
blB0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4gbV9jYWxsYmFjazsKIH07CiAKIH0K
QEAgLTIwOSwxMCArMjA5LDEwIEBAIGJvb2wgQ3BwTlBPYmplY3Q6OnNldFByb3BlcnR5KE5QT2Jq
ZWN0KiBucE9iaiwgTlBJZGVudGlmaWVyIGlkZW50LCBjb25zdCBOUFZhcmlhCiBDcHBCb3VuZENs
YXNzOjp+Q3BwQm91bmRDbGFzcygpCiB7CiAgICAgZm9yIChNZXRob2RMaXN0OjppdGVyYXRvciBp
ID0gbV9tZXRob2RzLmJlZ2luKCk7IGkgIT0gbV9tZXRob2RzLmVuZCgpOyArK2kpCi0gICAgICAg
IGRlbGV0ZSBpLT5zZWNvbmQ7CisgICAgICAgIGRlbGV0ZSBpLT52YWx1ZTsKIAogICAgIGZvciAo
UHJvcGVydHlMaXN0OjppdGVyYXRvciBpID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGkgIT0gbV9w
cm9wZXJ0aWVzLmVuZCgpOyArK2kpCi0gICAgICAgIGRlbGV0ZSBpLT5zZWNvbmQ7CisgICAgICAg
IGRlbGV0ZSBpLT52YWx1ZTsKIAogICAgIC8vIFVucmVnaXN0ZXIgb3Vyc2VsdmVzIGlmIHdlIHdl
cmUgYm91bmQgdG8gYSBmcmFtZS4KICAgICBpZiAobV9ib3VuZFRvRnJhbWUpCkBAIC0yNDMsNyAr
MjQzLDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjppbnZva2UoTlBJZGVudGlmaWVyIGlkZW50LAog
ICAgICAgICB9CiAgICAgICAgIGNhbGxiYWNrID0gbV9mYWxsYmFja0NhbGxiYWNrLmdldCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFjayA9ICgqbWV0aG9kKS5zZWNvbmQ7CisgICAgICAg
IGNhbGxiYWNrID0gKCptZXRob2QpLnZhbHVlOwogCiAgICAgLy8gQnVpbGQgYSBDcHBBcmd1bWVu
dExpc3QgYXJndW1lbnQgdmVjdG9yIGZyb20gdGhlIE5QVmFyaWFudHMgY29taW5nIGluLgogICAg
IENwcEFyZ3VtZW50TGlzdCBjcHBBcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0yNjYsNyAr
MjY2LDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eShOUElkZW50aWZpZXIgaWRl
bnQsIE5QVmFyaWFudCogcmVzdWx0KSBjb25zdAogICAgIH0KIAogICAgIENwcFZhcmlhbnQgY3Bw
VmFsdWU7Ci0gICAgaWYgKCFjYWxsYmFjay0+c2Vjb25kLT5nZXRWYWx1ZSgmY3BwVmFsdWUpKQor
ICAgIGlmICghY2FsbGJhY2stPnZhbHVlLT5nZXRWYWx1ZSgmY3BwVmFsdWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgY3BwVmFsdWUuY29weVRvTlBWYXJpYW50KHJlc3VsdCk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpzZXRQ
cm9wZXJ0eShOUElkZW50aWZpZXIgaWRlbnQsIGNvbnN0IE5QVmFyaWFudCogdmFsdWUpCiAKICAg
ICBDcHBWYXJpYW50IGNwcFZhbHVlOwogICAgIGNwcFZhbHVlLnNldCgqdmFsdWUpOwotICAgIHJl
dHVybiAoKmNhbGxiYWNrKS5zZWNvbmQtPnNldFZhbHVlKGNwcFZhbHVlKTsKKyAgICByZXR1cm4g
KCpjYWxsYmFjaykudmFsdWUtPnNldFZhbHVlKGNwcFZhbHVlKTsKIH0KIAogdm9pZCBDcHBCb3Vu
ZENsYXNzOjpiaW5kQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBDYWxsYmFjayogY2FsbGJh
Y2spCkBAIC0yODgsMTkgKzI4OCwxOSBAQCB2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRDYWxsYmFj
ayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNrKiBjYWxsYmFjaykKICAgICBOUElkZW50aWZp
ZXIgaWRlbnQgPSBXZWJCaW5kaW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcihuYW1lLmNfc3RyKCkp
OwogICAgIE1ldGhvZExpc3Q6Oml0ZXJhdG9yIG9sZENhbGxiYWNrID0gbV9tZXRob2RzLmZpbmQo
aWRlbnQpOwogICAgIGlmIChvbGRDYWxsYmFjayAhPSBtX21ldGhvZHMuZW5kKCkpIHsKLSAgICAg
ICAgZGVsZXRlIG9sZENhbGxiYWNrLT5zZWNvbmQ7CisgICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFj
ay0+dmFsdWU7CiAgICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1fbWV0aG9k
cy5lcmFzZShvbGRDYWxsYmFjayk7CisgICAgICAgICAgICBtX21ldGhvZHMucmVtb3ZlKG9sZENh
bGxiYWNrKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1f
bWV0aG9kc1tpZGVudF0gPSBjYWxsYmFjazsKKyAgICBtX21ldGhvZHMuc2V0KGlkZW50LCBjYWxs
YmFjayk7CiB9CiAKLXZvaWQgQ3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKGNvbnN0
IHN0cmluZyYgbmFtZSwgYXV0b19wdHI8R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQordm9pZCBD
cHBCb3VuZENsYXNzOjpiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBQYXNz
T3duUHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBQcm9wZXJ0eUNhbGxiYWNr
KiBwcm9wZXJ0eUNhbGxiYWNrID0gY2FsbGJhY2suZ2V0KCkgPyBuZXcgR2V0dGVyUHJvcGVydHlD
YWxsYmFjayhjYWxsYmFjaykgOiAwOworICAgIFByb3BlcnR5Q2FsbGJhY2sqIHByb3BlcnR5Q2Fs
bGJhY2sgPSBjYWxsYmFjayA/IG5ldyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKGNhbGxiYWNrKSA6
IDA7CiAgICAgYmluZFByb3BlcnR5KG5hbWUsIHByb3BlcnR5Q2FsbGJhY2spOwogfQogCkBAIC0z
MTUsMTQgKzMxNSwxNCBAQCB2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eShjb25zdCBz
dHJpbmcmIG5hbWUsIFByb3BlcnR5Q2FsbGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmll
ciBpZGVudCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7
CiAgICAgUHJvcGVydHlMaXN0OjppdGVyYXRvciBvbGRDYWxsYmFjayA9IG1fcHJvcGVydGllcy5m
aW5kKGlkZW50KTsKICAgICBpZiAob2xkQ2FsbGJhY2sgIT0gbV9wcm9wZXJ0aWVzLmVuZCgpKSB7
Ci0gICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+c2Vjb25kOworICAgICAgICBkZWxldGUgb2xk
Q2FsbGJhY2stPnZhbHVlOwogICAgICAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBt
X3Byb3BlcnRpZXMuZXJhc2Uob2xkQ2FsbGJhY2spOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVz
LnJlbW92ZShvbGRDYWxsYmFjayk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBtX3Byb3BlcnRpZXNbaWRlbnRdID0gY2FsbGJhY2s7CisgICAgbV9wcm9wZXJ0
aWVzLnNldChpZGVudCwgY2FsbGJhY2spOwogfQogCiBib29sIENwcEJvdW5kQ2xhc3M6OmlzTWV0
aG9kUmVnaXN0ZXJlZChjb25zdCBzdHJpbmcmIG5hbWUpIGNvbnN0CkBAIC0zNDQsNyArMzQ0LDcg
QEAgQ3BwVmFyaWFudCogQ3BwQm91bmRDbGFzczo6Z2V0QXNDcHBWYXJpYW50KCkKICAgICAgICAg
bV9zZWxmVmFyaWFudC5zZXQobnBPYmopOwogICAgICAgICBXZWJCaW5kaW5nczo6cmVsZWFzZU9i
amVjdChucE9iaik7IC8vIENwcFZhcmlhbnQgdGFrZXMgdGhlIHJlZmVyZW5jZS4KICAgICB9Ci0g
ICAgV0VCS0lUX0FTU0VSVChtX3NlbGZWYXJpYW50LmlzT2JqZWN0KCkpOworICAgIEFTU0VSVCht
X3NlbGZWYXJpYW50LmlzT2JqZWN0KCkpOwogICAgIHJldHVybiAmbV9zZWxmVmFyaWFudDsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvQ3BwQm91bmRDbGFzcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5oCmluZGV4IDk1MmE0MWM1MzQwZWZkZjAwYmM3NmI3ODJi
NGQ0NmRhY2NmOGQxZGIuLjU0YWY2ZGRjZTFlNjgwMmZmMDBkNjhhYTcyYjVmMjAyOWU0NzUzYzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0NwcEJvdW5kQ2xhc3MuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmgKQEAgLTQ0LDkgKzQ0LDExIEBACiAjZGVmaW5lIENw
cEJvdW5kQ2xhc3NfaAogCiAjaW5jbHVkZSAiQ3BwVmFyaWFudC5oIgotI2luY2x1ZGUgPG1hcD4K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTUsMTEgKzU3LDEy
IEBAIGNsYXNzIFdlYlN0cmluZzsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCi10eXBl
ZGVmIHN0ZDo6dmVjdG9yPENwcFZhcmlhbnQ+IENwcEFyZ3VtZW50TGlzdDsKK3R5cGVkZWYgVmVj
dG9yPENwcFZhcmlhbnQ+IENwcEFyZ3VtZW50TGlzdDsKIAogLy8gQ3BwQm91bmRDbGFzcyBsZXRz
IHlvdSBtYXAgSmF2YXNjcmlwdCBtZXRob2QgY2FsbHMgYW5kIHByb3BlcnR5IGFjY2Vzc2VzCiAv
LyBkaXJlY3RseSB0byBDKysgbWV0aG9kIGNhbGxzIGFuZCBDcHBWYXJpYW50KiB2YXJpYWJsZSBh
Y2Nlc3MuCiBjbGFzcyBDcHBCb3VuZENsYXNzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
cHBCb3VuZENsYXNzKTsKIHB1YmxpYzoKICAgICBjbGFzcyBQcm9wZXJ0eUNhbGxiYWNrIHsKICAg
ICBwdWJsaWM6CkBAIC0xNjEsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gQmluZCBK
YXZhc2NyaXB0IHByb3BlcnR5IHxuYW1lfCB0byB0aGUgQysrIGdldHRlciBjYWxsYmFjayB8Y2Fs
bGJhY2t8LgogICAgIC8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHJlYWQtb25seSBwcm9w
ZXJ0aWVzLgotICAgIHZvaWQgYmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiwg
c3RkOjphdXRvX3B0cjxHZXR0ZXJDYWxsYmFjaz4pOworICAgIHZvaWQgYmluZEdldHRlckNhbGxi
YWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiwgUGFzc093blB0cjxHZXR0ZXJDYWxsYmFjaz4pOwogCiAg
ICAgLy8gQSB3cmFwcGVyIGZvciBCaW5kR2V0dGVyQ2FsbGJhY2ssIHRvIHNpbXBsaWZ5IHRoZSBj
b21tb24gY2FzZSBvZiBiaW5kaW5nIGEKICAgICAvLyBwcm9wZXJ0eSBvbiB0aGUgY3VycmVudCBv
YmplY3QuIFRob3VnaCBub3QgdmVyaWZpZWQgaGVyZSwgdGhlIG1ldGhvZCBwYXJhbWV0ZXIKQEAg
LTE2OSw4ICsxNzIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICB2
b2lkIGJpbmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgdm9pZCAoVDo6Km1ldGhv
ZCkoQ3BwVmFyaWFudCopKQogICAgIHsKLSAgICAgICAgc3RkOjphdXRvX3B0cjxHZXR0ZXJDYWxs
YmFjaz4gY2FsbGJhY2sobmV3IE1lbWJlckdldHRlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQq
Pih0aGlzKSwgbWV0aG9kKSk7Ci0gICAgICAgIGJpbmRHZXR0ZXJDYWxsYmFjayhuYW1lLCBjYWxs
YmFjayk7CisgICAgICAgIE93blB0cjxHZXR0ZXJDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFB0
cihuZXcgTWVtYmVyR2V0dGVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRo
b2QpKTsKKyAgICAgICAgYmluZEdldHRlckNhbGxiYWNrKG5hbWUsIGNhbGxiYWNrLnJlbGVhc2Uo
KSk7CiAgICAgfQogCiAgICAgLy8gQmluZCB0aGUgSmF2YXNjcmlwdCBwcm9wZXJ0eSBjYWxsZWQg
fG5hbWV8IHRvIGEgQ3BwVmFyaWFudC4KQEAgLTE5MCw3ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gYXMgaXQgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIChhIEphdmFTY3JpcHQg
b2JqZWN0IHdpdGggYQogICAgIC8vIGZhbGxiYWNrIGFsd2F5cyByZXR1cm5zIHRydWUgd2hlbiBj
aGVja2VkIGZvciBhIG1ldGhvZCdzCiAgICAgLy8gZXhpc3RlbmNlKS4KLSAgICB2b2lkIGJpbmRG
YWxsYmFja0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+IGZhbGxiYWNrQ2FsbGJhY2sp
CisgICAgdm9pZCBiaW5kRmFsbGJhY2tDYWxsYmFjayhQYXNzT3duUHRyPENhbGxiYWNrPiBmYWxs
YmFja0NhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9mYWxsYmFja0NhbGxiYWNrID0gZmFsbGJh
Y2tDYWxsYmFjazsKICAgICB9CkBAIC0yMDIsMjQgKzIwNSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgVD4KICAgICB2b2lkIGJpbmRGYWxsYmFja01ldGhvZCh2b2lkIChUOjoq
bWV0aG9kKShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KikpCiAgICAgewotICAg
ICAgICBpZiAobWV0aG9kKQotICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2soc3RkOjph
dXRvX3B0cjxDYWxsYmFjaz4obmV3IE1lbWJlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0
aGlzKSwgbWV0aG9kKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBiaW5kRmFsbGJhY2tD
YWxsYmFjayhzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPigpKTsKKyAgICAgICAgaWYgKG1ldGhvZCkg
eworICAgICAgICAgICAgT3duUHRyPENhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UHRyKG5ldyBN
ZW1iZXJDYWxsYmFjazxUPihzdGF0aWNfY2FzdDxUKj4odGhpcyksIG1ldGhvZCkpOworICAgICAg
ICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2soY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhudWxscHRyKTsKICAgICB9
CiAKICAgICAvLyBTb21lIGZpZWxkcyBhcmUgcHJvdGVjdGVkIGJlY2F1c2Ugc29tZSB0ZXN0cyBk
ZXBlbmQgb24gYWNjZXNzaW5nIHRoZW0sCiAgICAgLy8gYnV0IG90aGVyd2lzZSB0aGV5IHNob3Vs
ZCBiZSBjb25zaWRlcmVkIHByaXZhdGUuCiAKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPE5QSWRlbnRp
ZmllciwgUHJvcGVydHlDYWxsYmFjayo+IFByb3BlcnR5TGlzdDsKLSAgICB0eXBlZGVmIHN0ZDo6
bWFwPE5QSWRlbnRpZmllciwgQ2FsbGJhY2sqPiBNZXRob2RMaXN0OworICAgIHR5cGVkZWYgSGFz
aE1hcDxOUElkZW50aWZpZXIsIFByb3BlcnR5Q2FsbGJhY2sqPiBQcm9wZXJ0eUxpc3Q7CisgICAg
dHlwZWRlZiBIYXNoTWFwPE5QSWRlbnRpZmllciwgQ2FsbGJhY2sqPiBNZXRob2RMaXN0OwogICAg
IC8vIFRoZXNlIG1hcHMgYXNzb2NpYXRlIG5hbWVzIHdpdGggcHJvcGVydHkgYW5kIG1ldGhvZCBw
b2ludGVycyB0byBiZQogICAgIC8vIGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICBQcm9wZXJ0
eUxpc3QgbV9wcm9wZXJ0aWVzOwogICAgIE1ldGhvZExpc3QgbV9tZXRob2RzOwogCiAgICAgLy8g
VGhlIGNhbGxiYWNrIGdldHMgaW52b2tlZCB3aGVuIGEgY2FsbCBpcyBtYWRlIHRvIGFuIG5vbmV4
aXN0ZW50IG1ldGhvZC4KLSAgICBzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPiBtX2ZhbGxiYWNrQ2Fs
bGJhY2s7CisgICAgT3duUHRyPENhbGxiYWNrPiBtX2ZhbGxiYWNrQ2FsbGJhY2s7CiAKIHByaXZh
dGU6CiAgICAgLy8gTlBPYmplY3QgY2FsbGJhY2tzLgpAQCAtMjM4LDEwICsyNDIsNiBAQCBwcml2
YXRlOgogICAgIC8vIFRydWUgaWYgb3VyIG5wX29iamVjdCBoYXMgYmVlbiBib3VuZCB0byBhIFdl
YkZyYW1lLCBpbiB3aGljaCBjYXNlIGl0IG11c3QKICAgICAvLyBiZSB1bnJlZ2lzdGVyZWQgd2l0
aCBWOCB3aGVuIHdlIGRlbGV0ZSBpdC4KICAgICBib29sIG1fYm91bmRUb0ZyYW1lOwotCi1wcml2
YXRlOgotICAgIENwcEJvdW5kQ2xhc3MoQ3BwQm91bmRDbGFzcyYpOwotICAgIENwcEJvdW5kQ2xh
c3MmIG9wZXJhdG9yPShjb25zdCBDcHBCb3VuZENsYXNzJik7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZh
cmlhbnQuY3BwCmluZGV4IGVmMmU5MmE2NWMwZWY0ZThjM2JkZjRlNWNkZDQ3MTU1YmU3NzJjMzUu
LjRkMjg1NmU3NDJkOTdjZGQ5YTAwODVlMTlhMmRkMTgxMTJmOGY1ZmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZh
cmlhbnQuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNwcFZhcmlhbnQuaCIKIAotI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJX
ZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0yMTksNyArMjIwLDcgQEAgdm9pZCBDcHBW
YXJpYW50OjpzZXQoTlBPYmplY3QqIG5ld1ZhbHVlKQogCiBzdHJpbmcgQ3BwVmFyaWFudDo6dG9T
dHJpbmcoKSBjb25zdAogewotICAgIFdFQktJVF9BU1NFUlQoaXNTdHJpbmcoKSk7CisgICAgQVNT
RVJUKGlzU3RyaW5nKCkpOwogICAgIHJldHVybiBzdHJpbmcodmFsdWUuc3RyaW5nVmFsdWUuVVRG
OENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAgICB2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4TGVu
Z3RoKTsKIH0KQEAgLTIzMCw3ICsyMzEsNyBAQCBpbnQzMl90IENwcFZhcmlhbnQ6OnRvSW50MzIo
KSBjb25zdAogICAgICAgICByZXR1cm4gdmFsdWUuaW50VmFsdWU7CiAgICAgaWYgKGlzRG91Ymxl
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZS5kb3VibGVWYWx1
ZSk7Ci0gICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yNDAsMjEgKzI0MSwyMSBAQCBkb3VibGUg
Q3BwVmFyaWFudDo6dG9Eb3VibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPih2YWx1ZS5pbnRWYWx1ZSk7CiAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJl
dHVybiB2YWx1ZS5kb3VibGVWYWx1ZTsKLSAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgQ3Bw
VmFyaWFudDo6dG9Cb29sZWFuKCkgY29uc3QKIHsKLSAgICBXRUJLSVRfQVNTRVJUKGlzQm9vbCgp
KTsKKyAgICBBU1NFUlQoaXNCb29sKCkpOwogICAgIHJldHVybiB2YWx1ZS5ib29sVmFsdWU7CiB9
CiAKLXZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKK1Zl
Y3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKIHsKIAotICAg
IFdFQktJVF9BU1NFUlQoaXNPYmplY3QoKSk7Ci0gICAgdmVjdG9yPHN0cmluZz4gc3RyaW5nVmVj
dG9yOworICAgIEFTU0VSVChpc09iamVjdCgpKTsKKyAgICBWZWN0b3I8c3RyaW5nPiBzdHJpbmdW
ZWN0b3I7CiAgICAgTlBPYmplY3QqIG5wVmFsdWUgPSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBO
UElkZW50aWZpZXIgbGVuZ3RoSWQgPSBXZWJCaW5kaW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcigi
bGVuZ3RoIik7CiAKQEAgLTI4OSw3ICsyOTAsNyBAQCB2ZWN0b3I8c3RyaW5nPiBDcHBWYXJpYW50
Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiAgICAgICAgIGlmIChOUFZBUklBTlRfSVNfU1RSSU5H
KGluZGV4VmFsdWUpKSB7CiAgICAgICAgICAgICBzdHJpbmcgaXRlbShOUFZBUklBTlRfVE9fU1RS
SU5HKGluZGV4VmFsdWUpLlVURjhDaGFyYWN0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
TlBWQVJJQU5UX1RPX1NUUklORyhpbmRleFZhbHVlKS5VVEY4TGVuZ3RoKTsKLSAgICAgICAgICAg
IHN0cmluZ1ZlY3Rvci5wdXNoX2JhY2soaXRlbSk7CisgICAgICAgICAgICBzdHJpbmdWZWN0b3Iu
YXBwZW5kKGl0ZW0pOwogICAgICAgICB9CiAgICAgICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlVmFy
aWFudFZhbHVlKCZpbmRleFZhbHVlKTsKICAgICB9CkBAIC0yOTksNyArMzAwLDcgQEAgdmVjdG9y
PHN0cmluZz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAogYm9vbCBDcHBWYXJp
YW50OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRob2QsIGNvbnN0IENwcFZhcmlhbnQqIGFyZ3Vt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIENw
cFZhcmlhbnQmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkp
OworICAgIEFTU0VSVChpc09iamVjdCgpKTsKICAgICBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSA9
IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG1ldGhvZC5jX3N0cigpKTsKICAgICBO
UE9iamVjdCogbnBPYmplY3QgPSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBpZiAoIVdlYkJpbmRp
bmdzOjpoYXNNZXRob2QoMCwgbnBPYmplY3QsIG1ldGhvZE5hbWUpKQpAQCAtMzEzLDcgKzMxNCw3
IEBAIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlKGNvbnN0IHN0cmluZyYgbWV0aG9kLCBjb25zdCBD
cHBWYXJpYW50KiBhcmd1bWVudHMsCiBib29sIENwcFZhcmlhbnQ6Omludm9rZURlZmF1bHQoY29u
c3QgQ3BwVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENwcFZhcmlhbnQmIHJlc3VsdCkgY29uc3QKIHsKLSAg
ICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOworICAgIEFTU0VSVChpc09iamVjdCgpKTsKICAg
ICBOUE9iamVjdCogbnBPYmplY3QgPSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBOUFZhcmlhbnQg
cjsKICAgICBib29sIHN0YXR1cyA9IFdlYkJpbmRpbmdzOjppbnZva2VEZWZhdWx0KDAsIG5wT2Jq
ZWN0LCBhcmd1bWVudHMsIGFyZ3VtZW50Q291bnQsICZyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaAppbmRl
eCBlOTI5NWEzYmU4OTViYTNlMGE5NzFiMGU5ZWE5ZDhkYWY4ZWNmYzI4Li5lODJhNzBiNjY3NTI0
ZjdiMjZjMmQzYzMwYmY1YzFjMjIzZGZjZjc2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCkBAIC00NCw3
ICs0NCw3IEBACiAKICNpbmNsdWRlICJXZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgPHN0cmluZz4K
LSNpbmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViVGVzdFJ1bm5lciB7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0
b0Jvb2xlYW4oKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZ3MgZm9y
IHRoZSBzcGVjaWZpZWQgYXJndW1lbnQuIFRoaXMgaXMgdXNlZnVsCiAgICAgLy8gZm9yIGNvbnZl
cnRpbmcgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHN0cmluZ3MgaW50byBhIHZlY3RvciBvZiBzdHJp
bmdzLgotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0
OworICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gdG9TdHJpbmdWZWN0b3IoKSBjb25zdDsKIAogICAg
IC8vIEludm9rZSBtZXRob2Qgb2YgdGhlIGdpdmVuIG5hbWUgb24gYW4gb2JqZWN0IHdpdGggdGhl
IHN1cHBsaWVkIGFyZ3VtZW50cy4KICAgICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJl
IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGhvZCBpcyB0byBiZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5k
ZXIuY3BwCmluZGV4IGRiYzA4YjIxMTk5MGZmYTVjOTU0MzE4MTZhZjc1NWZlOTkzNTg2ZjAuLmFi
NjAxOTNkNzcwODJkMzljNTU2ZjNlMzljMzNhMDA0Mzc5NjVmNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNl
bmRlci5jcHAKQEAgLTQ1LDE5ICs0NSwxOSBAQAogCiAjaW5jbHVkZSAiS2V5Q29kZU1hcHBpbmcu
aCIKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5oIgotI2luY2x1ZGUgIlRlc3RDb21tb24uaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEuaCIKICNpbmNsdWRlICJXZWJEcmFnT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVG91Y2hQ
b2ludC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
IAotI2lmZGVmIFdJTjMyCisjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlICJ3aW4vV2ViSW5wdXRF
dmVudEZhY3RvcnkuaCIKICNlbmRpZgogCkBAIC05Nyw5ICs5Nyw5IEBAIFdlYkRyYWdEYXRhIGN1
cnJlbnREcmFnRGF0YTsKIFdlYkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdFZmZlY3Q7CiBXZWJE
cmFnT3BlcmF0aW9uc01hc2sgY3VycmVudERyYWdFZmZlY3RzQWxsb3dlZDsKIGJvb2wgcmVwbGF5
aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKLWRlcXVlPFNhdmVkRXZlbnQ+IG1vdXNlRXZlbnRRdWV1
ZTsKK0RlcXVlPFNhdmVkRXZlbnQ+IG1vdXNlRXZlbnRRdWV1ZTsKIGludCB0b3VjaE1vZGlmaWVy
czsKLXZlY3RvcjxXZWJUb3VjaFBvaW50PiB0b3VjaFBvaW50czsKK1ZlY3RvcjxXZWJUb3VjaFBv
aW50PiB0b3VjaFBvaW50czsKIAogLy8gVGltZSBhbmQgcGxhY2Ugb2YgdGhlIGxhc3QgbW91c2Ug
dXAgZXZlbnQuCiBkb3VibGUgbGFzdENsaWNrVGltZVNlYyA9IDA7CkBAIC0xNTUsNyArMTU1LDcg
QEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJ
bnB1dEV2ZW50KiBldmVudCkKICAgICBib29sIGlzU3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgY29u
c3QgY2hhciogY2hhcmFjdGVycyA9IG1vZGlmaWVyTmFtZS5jX3N0cigpOwogICAgIGlmICghc3Ry
Y21wKGNoYXJhY3RlcnMsICJjdHJsS2V5IikKLSNpZm5kZWYgX19BUFBMRV9fCisjaWYgIU9TKE1B
Q19PU19YKQogICAgICAgICB8fCAhc3RyY21wKGNoYXJhY3RlcnMsICJhZGRTZWxlY3Rpb25LZXki
KQogI2VuZGlmCiAgICAgICAgICkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgYXBwbHlLZXlN
b2RpZmllcihjb25zdCBzdHJpbmcmIG1vZGlmaWVyTmFtZSwgV2ViSW5wdXRFdmVudCogZXZlbnQp
CiAgICAgICAgIGV2ZW50LT5tb2RpZmllcnMgfD0gV2ViSW5wdXRFdmVudDo6U2hpZnRLZXk7CiAg
ICAgZWxzZSBpZiAoIXN0cmNtcChjaGFyYWN0ZXJzLCAiYWx0S2V5IikpIHsKICAgICAgICAgZXZl
bnQtPm1vZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpBbHRLZXk7Ci0jaWZuZGVmIF9fQVBQTEVf
XworI2lmICFPUyhNQUNfT1NfWCkKICAgICAgICAgLy8gT24gV2luZG93cyBhbGwga2V5cyB3aXRo
IEFsdCBtb2RpZmllciB3aWxsIGJlIG1hcmtlZCBhcyBzeXN0ZW0ga2V5LgogICAgICAgICAvLyBX
ZSBrZWVwIHRoZSBzYW1lIGJlaGF2aW9yIG9uIExpbnV4IGFuZCBldmVyeXdoZXJlIG5vbi1NYWMs
IHNlZToKICAgICAgICAgLy8gV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZh
Y3RvcnkuY3BwCkBAIC0xNzIsNyArMTcyLDggQEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0
IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkKICAgICAgICAgLy8g
a2VwdCBpbiBzeW5jIHdpdGggdGhlIHJlbGF0ZWQgY29kZSBpbiBhYm92ZSBmaWxlLgogICAgICAg
ICBpc1N5c3RlbUtleSA9IHRydWU7CiAjZW5kaWYKLSNpZmRlZiBfX0FQUExFX18KKyNpZiBPUyhN
QUNfT1NfWCkKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoY2hhcmFjdGVycywgIm1ldGFLZXkiKSB8
fCAhc3RyY21wKGNoYXJhY3RlcnMsICJhZGRTZWxlY3Rpb25LZXkiKSkgewogICAgICAgICBldmVu
dC0+bW9kaWZpZXJzIHw9IFdlYklucHV0RXZlbnQ6Ok1ldGFLZXk7CiAgICAgICAgIC8vIE9uIE1h
YyBvbmx5IGNvbW1hbmQga2V5IHByZXNzZXMgYXJlIG1hcmtlZCBhcyBzeXN0ZW0ga2V5LgogICAg
ICAgICAvLyBTZWUgdGhlIHJlbGF0ZWQgY29kZSBpbjogV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMv
V2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwCkBAIC0xOTAsOCArMTkxLDggQEAgYm9vbCBhcHBseUtl
eU1vZGlmaWVycyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2ViSW5wdXRFdmVudCogZXZl
bnQpCiB7CiAgICAgYm9vbCBpc1N5c3RlbUtleSA9IGZhbHNlOwogICAgIGlmIChhcmd1bWVudC0+
aXNPYmplY3QoKSkgewotICAgICAgICB2ZWN0b3I8c3RyaW5nPiBtb2RpZmllcnMgPSBhcmd1bWVu
dC0+dG9TdHJpbmdWZWN0b3IoKTsKLSAgICAgICAgZm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1vZGlmaWVycy5iZWdpbigpOyBpICE9IG1vZGlmaWVycy5lbmQoKTsgKytp
KQorICAgICAgICBWZWN0b3I8c3RyaW5nPiBtb2RpZmllcnMgPSBhcmd1bWVudC0+dG9TdHJpbmdW
ZWN0b3IoKTsKKyAgICAgICAgZm9yIChWZWN0b3I8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1vZGlmaWVycy5iZWdpbigpOyBpICE9IG1vZGlmaWVycy5lbmQoKTsgKytpKQogICAgICAgICAg
ICAgaXNTeXN0ZW1LZXkgfD0gYXBwbHlLZXlNb2RpZmllcigqaSwgZXZlbnQpOwogICAgIH0gZWxz
ZSBpZiAoYXJndW1lbnQtPmlzU3RyaW5nKCkpCiAgICAgICAgIGlzU3lzdGVtS2V5ID0gYXBwbHlL
ZXlNb2RpZmllcihhcmd1bWVudC0+dG9TdHJpbmcoKSwgZXZlbnQpOwpAQCAtMjAzLDcgKzIwNCw3
IEBAIGJvb2wgYXBwbHlLZXlNb2RpZmllcnMoY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnQsIFdl
YklucHV0RXZlbnQqIGV2ZW50KQogLy8gb2YgdGhlIGVkaXQgY29tbWFuZCB3aWxsIGJlIHN0b3Jl
ZCBpbiB8Km5hbWV8LgogYm9vbCBnZXRFZGl0Q29tbWFuZChjb25zdCBXZWJLZXlib2FyZEV2ZW50
JiBldmVudCwgc3RyaW5nKiBuYW1lKQogewotI2lmZGVmIF9fQVBQTEVfXworI2lmIE9TKE1BQ19P
U19YKQogICAgIC8vIFdlIG9ubHkgY2FyZXMgYWJvdXQgTGVmdCxSaWdodCxVcCxEb3duIGtleXMg
d2l0aCBDb21tYW5kIG9yIENvbW1hbmQrU2hpZnQKICAgICAvLyBtb2RpZmllcnMuIFRoZXNlIGtl
eSBldmVudHMgY29ycmVzcG9uZCB0byBzb21lIHNwZWNpYWwgbW92ZW1lbnQgYW5kCiAgICAgLy8g
c2VsZWN0aW9uIGVkaXRvciBjb21tYW5kcywgYW5kIHdhcyBzdXBwb3NlZCB0byBiZSBoYW5kbGVk
IGluCkBAIC0zMDUsNyArMzA2LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkKICAgICAv
LyBXaGVuIHNldCB0byB0cnVlICh0aGUgZGVmYXVsdCB2YWx1ZSksIHdlIGJhdGNoIG1vdXNlIG1v
dmUgYW5kIG1vdXNlIHVwCiAgICAgLy8gZXZlbnRzIHNvIHdlIGNhbiBzaW11bGF0ZSBkcmFnICYg
ZHJvcC4KICAgICBiaW5kUHJvcGVydHkoImRyYWdNb2RlIiwgJmRyYWdNb2RlKTsKLSNpZmRlZiBX
SU4zMgorI2lmIE9TKFdJTkRPV1MpCiAgICAgYmluZFByb3BlcnR5KCJXTV9LRVlET1dOIiwgJndt
S2V5RG93bik7CiAgICAgYmluZFByb3BlcnR5KCJXTV9LRVlVUCIsICZ3bUtleVVwKTsKICAgICBi
aW5kUHJvcGVydHkoIldNX0NIQVIiLCAmd21DaGFyKTsKQEAgLTMyMCwxMyArMzIxLDEzIEBAIEV2
ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiB2b2lkIEV2ZW50U2VuZGVyOjpyZXNldCgpCiB7CiAg
ICAgLy8gVGhlIHRlc3Qgc2hvdWxkIGhhdmUgZmluaXNoZWQgYSBkcmFnIGFuZCB0aGUgbW91c2Ug
YnV0dG9uIHN0YXRlLgotICAgIFdFQktJVF9BU1NFUlQoY3VycmVudERyYWdEYXRhLmlzTnVsbCgp
KTsKKyAgICBBU1NFUlQoY3VycmVudERyYWdEYXRhLmlzTnVsbCgpKTsKICAgICBjdXJyZW50RHJh
Z0RhdGEucmVzZXQoKTsKICAgICBjdXJyZW50RHJhZ0VmZmVjdCA9IFdlYktpdDo6V2ViRHJhZ09w
ZXJhdGlvbk5vbmU7CiAgICAgY3VycmVudERyYWdFZmZlY3RzQWxsb3dlZCA9IFdlYktpdDo6V2Vi
RHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgcHJlc3NlZEJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbk5vbmU7CiAgICAgZHJhZ01vZGUuc2V0KHRydWUpOwotI2lmZGVmIFdJTjMyCisjaWYgT1Mo
V0lORE9XUykKICAgICB3bUtleURvd24uc2V0KFdNX0tFWURPV04pOwogICAgIHdtS2V5VXAuc2V0
KFdNX0tFWVVQKTsKICAgICB3bUNoYXIuc2V0KFdNX0NIQVIpOwpAQCAtNDE2LDcgKzQxNyw3IEBA
IHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlRG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0CiAgICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAogICAg
IGludCBidXR0b25OdW1iZXIgPSBnZXRCdXR0b25OdW1iZXJGcm9tU2luZ2xlQXJnKGFyZ3VtZW50
cyk7Ci0gICAgV0VCS0lUX0FTU0VSVChidXR0b25OdW1iZXIgIT0gLTEpOworICAgIEFTU0VSVChi
dXR0b25OdW1iZXIgIT0gLTEpOwogCiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvblR5
cGUgPSBnZXRCdXR0b25UeXBlRnJvbUJ1dHRvbk51bWJlcihidXR0b25OdW1iZXIpOwogCkBAIC00
MzgsNyArNDM5LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VVcChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIHdlYnZpZXcoKS0+bGF5
b3V0KCk7CiAKICAgICBpbnQgYnV0dG9uTnVtYmVyID0gZ2V0QnV0dG9uTnVtYmVyRnJvbVNpbmds
ZUFyZyhhcmd1bWVudHMpOwotICAgIFdFQktJVF9BU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsK
KyAgICBBU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKIAogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbiBidXR0b25UeXBlID0gZ2V0QnV0dG9uVHlwZUZyb21CdXR0b25OdW1iZXIoYnV0dG9uTnVt
YmVyKTsKIApAQCAtNDQ2LDcgKzQ0Nyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlVXAoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICAg
ICAgU2F2ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAgICBzYXZlZEV2ZW50LnR5cGUgPSBTYXZl
ZEV2ZW50OjpNb3VzZVVwOwogICAgICAgICBzYXZlZEV2ZW50LmJ1dHRvblR5cGUgPSBidXR0b25U
eXBlOwotICAgICAgICBtb3VzZUV2ZW50UXVldWUucHVzaF9iYWNrKHNhdmVkRXZlbnQpOworICAg
ICAgICBtb3VzZUV2ZW50UXVldWUuYXBwZW5kKHNhdmVkRXZlbnQpOwogICAgICAgICByZXBsYXlT
YXZlZEV2ZW50cygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYk1vdXNlRXZlbnQgZXZlbnQ7
CkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8oY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3UKICAgICAgICAgU2F2
ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAgICBzYXZlZEV2ZW50LnR5cGUgPSBTYXZlZEV2ZW50
OjpNb3VzZU1vdmU7CiAgICAgICAgIHNhdmVkRXZlbnQucG9zID0gbW91c2VQb3M7Ci0gICAgICAg
IG1vdXNlRXZlbnRRdWV1ZS5wdXNoX2JhY2soc2F2ZWRFdmVudCk7CisgICAgICAgIG1vdXNlRXZl
bnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV2ViTW91
c2VFdmVudCBldmVudDsKICAgICAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91
c2VNb3ZlLCBwcmVzc2VkQnV0dG9uLCBtb3VzZVBvcywgJmV2ZW50LCBnZXRDdXJyZW50RXZlbnRU
aW1lU2VjKG1fZGVsZWdhdGUpKTsKQEAgLTU5Niw3ICs1OTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
OjprZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjb2RlKSB7CiAgICAgICAgICAgICBXZWJT
dHJpbmcgd2ViQ29kZVN0ciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoY29kZVN0ci5kYXRhKCksIGNv
ZGVTdHIuc2l6ZSgpKTsKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQod2ViQ29kZVN0ci5sZW5n
dGgoKSA9PSAxKTsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWJDb2RlU3RyLmxlbmd0aCgpID09IDEp
OwogICAgICAgICAgICAgdGV4dCA9IGNvZGUgPSB3ZWJDb2RlU3RyLmRhdGEoKVswXTsKICAgICAg
ICAgICAgIG5lZWRzU2hpZnRLZXlNb2RpZmllciA9IG5lZWRzU2hpZnRNb2RpZmllcihjb2RlKTsK
ICAgICAgICAgICAgIGlmICgoY29kZSAmIDB4RkYpID49ICdhJyAmJiAoY29kZSAmIDB4RkYpIDw9
ICd6JykKQEAgLTYxNCw3ICs2MTUsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgZXZl
bnREb3duLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOwogICAgIGV2ZW50RG93bi5t
b2RpZmllcnMgPSAwOwogICAgIGV2ZW50RG93bi53aW5kb3dzS2V5Q29kZSA9IGNvZGU7Ci0jaWYg
ZGVmaW5lZChfX2xpbnV4X18pICYmIFVTRShHVEspCisjaWYgT1MoTElOVVgpICYmIFVTRShHVEsp
CiAgICAgZXZlbnREb3duLm5hdGl2ZUtleUNvZGUgPSBOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tl
eUNvZGUoY29kZSk7CiAjZW5kaWYKIApAQCAtNjc2LDcgKzY3Nyw3IEBAIHZvaWQgRXZlbnRTZW5k
ZXI6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCoKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIAotI2lmZGVmIFdJTjMyCisjaWYg
T1MoV0lORE9XUykKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA9PSAzKSB7CiAgICAgICAgIC8v
IEdyYWIgdGhlIG1lc3NhZ2UgaWQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gZGlzcGF0Y2ggaXQuCiAg
ICAgICAgIGludCBtc2cgPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwpAQCAtNjkyLDcgKzY5Myw3
IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICAgICAgdW5zaWduZWQgbG9uZyBscGFyYW0g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CiAg
ICAgICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChXZWJJbnB1dEV2ZW50RmFjdG9yeTo6
a2V5Ym9hcmRFdmVudCgwLCBtc2csIGFyZ3VtZW50c1sxXS50b0ludDMyKCksIGxwYXJhbSkpOwog
ICAgIH0gZWxzZQotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CiAKQEAgLTcxNiw3ICs3MTcsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdQogICAgICAgICBTYXZlZEV2ZW50IHNhdmVkRXZlbnQ7CiAg
ICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6OkxlYXBGb3J3YXJkOwogICAgICAg
ICBzYXZlZEV2ZW50Lm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kczsKLSAgICAgICAgbW91c2VF
dmVudFF1ZXVlLnB1c2hfYmFjayhzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91c2VFdmVudFF1ZXVl
LmFwcGVuZChzYXZlZEV2ZW50KTsKICAgICB9IGVsc2UKICAgICAgICAgZG9MZWFwRm9yd2FyZCht
aWxsaXNlY29uZHMpOwogfQpAQCAtNzc3LDkgKzc3OCw4IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNv
bnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWCiB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cygpCiB7CiAgICAgcmVwbGF5
aW5nU2F2ZWRFdmVudHMgPSB0cnVlOwotICAgIHdoaWxlICghbW91c2VFdmVudFF1ZXVlLmVtcHR5
KCkpIHsKLSAgICAgICAgU2F2ZWRFdmVudCBlID0gbW91c2VFdmVudFF1ZXVlLmZyb250KCk7Ci0g
ICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5wb3BfZnJvbnQoKTsKKyAgICB3aGlsZSAoIW1vdXNlRXZl
bnRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgU2F2ZWRFdmVudCBlID0gbW91c2VFdmVudFF1
ZXVlLnRha2VGaXJzdCgpOwogCiAgICAgICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgICAgIGNh
c2UgU2F2ZWRFdmVudDo6TW91c2VNb3ZlOiB7CkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC04MTIsNyArODEyLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVu
dHMoKQogLy8gICBhbHNvIG1ha2VzIHNlbnNlLiBUaGlzIGZ1bmN0aW9uIGlzIGRvaW5nIHN1Y2gg
Zm9yIHNvbWUgZmxhZ3MuCiAvLyAtIFNvbWUgdGVzdCBldmVuIGNoZWNrcyBhY3R1YWwgc3RyaW5n
IGNvbnRlbnQuIFNvIHByb3ZpZGluZyBpdCB3b3VsZCBiZSBhbHNvIGhlbHBmdWwuCiAvLwotc3Rh
dGljIHZlY3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1l
bnVEYXRhKiBjb250ZXh0TWVudSwgV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3N0YXRpYyBW
ZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNvbnRleHRNZW51RGF0
YSogY29udGV4dE1lbnUsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgLy8gVGhl
c2UgY29uc3RhbnRzIGFyZSBiYXNlZCBvbiBTYWZhcmkncyBjb250ZXh0IG1lbnUgYmVjYXVzZSB0
ZXN0cyBhcmUgbWFkZSBmb3IgaXQuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5vbkVkaXRhYmxl
TWVudVN0cmluZ3NbXSA9IHsgIkJhY2siLCAiUmVsb2FkIFBhZ2UiLCAiT3BlbiBpbiBEYXNoYmFv
cmQiLCAiPHNlcGFyYXRvcj4iLCAiVmlldyBTb3VyY2UiLCAiU2F2ZSBQYWdlIEFzIiwgIlByaW50
IFBhZ2UiLCAiSW5zcGVjdCBFbGVtZW50IiwgMCB9OwpAQCAtODIwLDIwICs4MjAsMjAgQEAgc3Rh
dGljIHZlY3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1l
bnVEYXRhKiBjb250ZXh0TWVudSwKIAogICAgIC8vIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBt
b3VzZSBldmVudHMgYXJlIGNhbmNlbGxlYWJsZS4KICAgICBpZiAoIWNvbnRleHRNZW51KQotICAg
ICAgICByZXR1cm4gdmVjdG9yPFdlYlN0cmluZz4oKTsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxX
ZWJTdHJpbmc+KCk7CiAKLSAgICB2ZWN0b3I8V2ViU3RyaW5nPiBzdHJpbmdzOworICAgIFZlY3Rv
cjxXZWJTdHJpbmc+IHN0cmluZ3M7CiAKICAgICBpZiAoY29udGV4dE1lbnUtPmlzRWRpdGFibGUp
IHsKICAgICAgICAgZm9yIChjb25zdCBjaGFyKiogaXRlbSA9IGVkaXRhYmxlTWVudVN0cmluZ3M7
ICppdGVtOyArK2l0ZW0pIAotICAgICAgICAgICAgc3RyaW5ncy5wdXNoX2JhY2soV2ViU3RyaW5n
Ojpmcm9tVVRGOCgqaXRlbSkpOworICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQoV2ViU3RyaW5n
Ojpmcm9tVVRGOCgqaXRlbSkpOwogICAgICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBzdWdnZXN0
aW9uczsKICAgICAgICAgTW9ja1NwZWxsQ2hlY2s6OmZpbGxTdWdnZXN0aW9uTGlzdChjb250ZXh0
TWVudS0+bWlzc3BlbGxlZFdvcmQsICZzdWdnZXN0aW9ucyk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyArK2kpIAotICAgICAgICAgICAgc3RyaW5n
cy5wdXNoX2JhY2soc3VnZ2VzdGlvbnNbaV0pOworICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQo
c3VnZ2VzdGlvbnNbaV0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoY29uc3QgY2hhcioq
IGl0ZW0gPSBub25FZGl0YWJsZU1lbnVTdHJpbmdzOyAqaXRlbTsgKytpdGVtKSAKLSAgICAgICAg
ICAgIHN0cmluZ3MucHVzaF9iYWNrKFdlYlN0cmluZzo6ZnJvbVVURjgoKml0ZW0pKTsKKyAgICAg
ICAgICAgIHN0cmluZ3MuYXBwZW5kKFdlYlN0cmluZzo6ZnJvbVVURjgoKml0ZW0pKTsKICAgICB9
CiAKICAgICByZXR1cm4gc3RyaW5nczsKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGVyOjpjb250ZXh0Q2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlcwogICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93biwg
V2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQsIGxhc3RNb3VzZVBvcywgJmV2ZW50LCBnZXRDdXJy
ZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdhdGUpKTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0
RXZlbnQoZXZlbnQpOwogCi0jaWZkZWYgV0lOMzIKKyNpZiBPUyhXSU5ET1dTKQogICAgIGluaXRN
b3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlVXAsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvblJp
Z2h0LCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2ZW50VGltZVNlYyhtX2RlbGVn
YXRlKSk7CiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KTsKIApAQCAtOTE1
LDcgKzkxNSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywKIHZvaWQgRXZlbnRTZW5kZXI6OmJl
Z2luRHJhZ1dpdGhGaWxlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQogewogICAgIGN1cnJlbnREcmFnRGF0YS5pbml0aWFsaXplKCk7Ci0gICAg
dmVjdG9yPHN0cmluZz4gZmlsZXMgPSBhcmd1bWVudHNbMF0udG9TdHJpbmdWZWN0b3IoKTsKKyAg
ICBWZWN0b3I8c3RyaW5nPiBmaWxlcyA9IGFyZ3VtZW50c1swXS50b1N0cmluZ1ZlY3RvcigpOwog
ICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFic29sdXRlRmlsZW5hbWVzKGZpbGVzLnNpemUoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBXZWJEcmFnRGF0YTo6SXRlbSBpdGVtOwpAQCAtOTU0LDcgKzk1NCw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXI6OmFkZFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQqIHJlCiAgICAgICAgICAgICBsb3dlc3RJZCsrOwogICAgIH0KICAgICB0b3VjaFBv
aW50LmlkID0gbG93ZXN0SWQ7Ci0gICAgdG91Y2hQb2ludHMucHVzaF9iYWNrKHRvdWNoUG9pbnQp
OworICAgIHRvdWNoUG9pbnRzLmFwcGVuZCh0b3VjaFBvaW50KTsKIH0KIAogdm9pZCBFdmVudFNl
bmRlcjo6Y2xlYXJUb3VjaFBvaW50cyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
KiByZXN1bHQpCkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6cmVsZWFzZVRv
dWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQKICAg
ICByZXN1bHQtPnNldE51bGwoKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1l
bnRzWzBdLnRvSW50MzIoKTsKLSAgICBXRUJLSVRfQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMu
c2l6ZSgpKTsKKyAgICBBU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAg
V2ViVG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpbmRleF07CiAgICAgdG91
Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2VkOwpAQCAtMTAwMCw3
ICsxMDAwLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6dXBkYXRlVG91Y2hQb2ludChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwo
KTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsK
LSAgICBXRUJLSVRfQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBBU1NF
UlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAgV2ViUG9pbnQgcG9zaXRpb24o
YXJndW1lbnRzWzFdLnRvSW50MzIoKSwgYXJndW1lbnRzWzJdLnRvSW50MzIoKSk7CiAgICAgV2Vi
VG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpbmRleF07CkBAIC0xMDE0LDcg
KzEwMTQsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjYW5jZWxUb3VjaFBvaW50KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwot
ICAgIFdFQktJVF9BU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOworICAgIEFTU0VS
VChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJUb3VjaFBvaW50KiB0b3Vj
aFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKICAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IFdl
YlRvdWNoUG9pbnQ6OlN0YXRlQ2FuY2VsbGVkOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBF
dmVudFNlbmRlcjo6Y2FuY2VsVG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCoKIAogdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2
ZW50KGNvbnN0IFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBXRUJLSVRfQVNTRVJU
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+
IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihX
ZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAg
ICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAogICAgIFdlYlRvdWNoRXZlbnQgdG91Y2hFdmVudDsK
QEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRvdWNoUG9pbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYlRvdWNoUG9p
bnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaV07CiAgICAgICAgIGlmICh0b3VjaFBvaW50
LT5zdGF0ZSA9PSBXZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2VkKSB7Ci0gICAgICAgICAgICB0
b3VjaFBvaW50cy5lcmFzZSh0b3VjaFBvaW50cy5iZWdpbigpICsgaSk7CisgICAgICAgICAgICB0
b3VjaFBvaW50cy5yZW1vdmUoaSk7CiAgICAgICAgICAgICAtLWk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3VjaFBvaW50OjpTdGF0ZVN0YXRp
b25hcnk7CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZl
bnQoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
ICAgICBldmVudC5nbG9iYWxYID0gZXZlbnQueDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNw
cAppbmRleCAyMTE1ODZlMzVlMGM2ZjdhMjg1ZGM5NmU2Njc2MTk4ZmUwMGM1OWQ4Li5jMzM5ZjJm
MmJjZDI1YTg0MDZjMzQ2N2Y4ODRlOGZiYTUzNDY5NzY1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1h
cHBpbmcuY3BwCkBAIC0zMSwxMSArMzEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJLZXlDb2RlTWFwcGluZy5oIgogCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisK
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogaW50IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dz
S2V5Q29kZShpbnQga2V5c3ltKQogewotI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBVU0UoR1RL
KQorI2lmIE9TKExJTlVYKSAmJiBVU0UoR1RLKQogICAgIC8vIFNlZSAvdXNyL3NoYXJlL1gxMS94
a2Iva2V5Y29kZXMvKgogICAgIHN0YXRpYyBjb25zdCBpbnQgYXNjaWlUb0tleUNvZGVbXSA9IHsK
ICAgICAgICAgMCwKQEAgLTIzOCw3ICsyNDAsOCBAQCBpbnQgTmF0aXZlS2V5Q29kZUZvcldpbmRv
d3NLZXlDb2RlKGludCBrZXlzeW0pCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICNlbHNlCi0g
ICAgcmV0dXJuIGtleXN5bSAtIGtleXN5bTsKKyAgICBVTlVTRURfUEFSQU0oa2V5c3ltKTsKKyAg
ICByZXR1cm4gMDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3Bw
CmluZGV4IDYxZWVlMGM4MDUyNTBlY2U3NWQ2ODU3MGZiNzBhZjMzZmM2YWZmOWUuLjdkNDllZDJm
YWEzODhlYzY4ZGU2MDdlNWEwZTNjZTYxMDUzMWYyN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFt
bWFyQ2hlY2suY3BwCkBAIC0zMSwyMiArMzEsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNb2NrR3JhbW1hckNoZWNrLmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViVGV4
dENoZWNraW5nUmVzdWx0LmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKLWJvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29u
c3QgV2ViU3RyaW5nJiB0ZXh0LCB2ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiogcmVzdWx0
cykKK2Jvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiogcmVzdWx0cykKIHsK
LSAgICBXRUJLSVRfQVNTRVJUKHJlc3VsdHMpOwotICAgIHN0cmluZzE2IHN0cmluZ1RleHQgPSB0
ZXh0OwotICAgIGlmIChmaW5kX2lmKHN0cmluZ1RleHQuYmVnaW4oKSwgc3RyaW5nVGV4dC5lbmQo
KSwgaXNBU0NJSUFscGhhKSA9PSBzdHJpbmdUZXh0LmVuZCgpKQorICAgIEFTU0VSVChyZXN1bHRz
KTsKKyAgICBXVEY6OlN0cmluZyBzdHJpbmdUZXh0KHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgp
KTsKKyAgICBpZiAoc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBoYSkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PigtMSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRmluZCBtYXRjaGlu
ZyBncmFtbWF0aWNhbCBlcnJvcnMgZnJvbSBrbm93biBvbmVzLiBUaGlzIGZ1bmN0aW9uIGhhcyB0
bwpAQCAtNzEsMTMgKzY5LDEwIEBAIGJvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFy
T2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCB2ZWN0b3I8V2ViVGV4CiAgICAgfTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZU0laRV9VTlNBRkUoZ3JhbW1hckVycm9ycyk7
ICsraSkgewogICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICAgICAgc3RyaW5nMTYgZXJyb3Io
Z3JhbW1hckVycm9yc1tpXS50ZXh0LCBncmFtbWFyRXJyb3JzW2ldLnRleHQgKyBzdHJsZW4oZ3Jh
bW1hckVycm9yc1tpXS50ZXh0KSk7Ci0gICAgICAgIHdoaWxlICgob2Zmc2V0ID0gc3RyaW5nVGV4
dC5maW5kKGVycm9yLCBvZmZzZXQpKSAhPSBzdHJpbmcxNjo6bnBvcykgewotICAgICAgICAgICAg
cmVzdWx0cy0+cHVzaF9iYWNrKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdU
eXBlR3JhbW1hciwgb2Zmc2V0ICsgZ3JhbW1hckVycm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVy
cm9yc1tpXS5sZW5ndGgpKTsKKyAgICAgICAgd2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZp
bmQoZ3JhbW1hckVycm9yc1tpXS50ZXh0LCBvZmZzZXQpKSAhPSAtMSkgeworICAgICAgICAgICAg
cmVzdWx0cy0+YXBwZW5kKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBl
R3JhbW1hciwgb2Zmc2V0ICsgZ3JhbW1hckVycm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVycm9y
c1tpXS5sZW5ndGgpKTsKICAgICAgICAgICAgIG9mZnNldCArPSBncmFtbWFyRXJyb3JzW2ldLmxl
bmd0aDsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9Ci0KLX0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tH
cmFtbWFyQ2hlY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tHcmFtbWFyQ2hlY2suaAppbmRleCBhMTgzZGNjYjA3NGM3OTBiZmFjYWMzZjc3OTg3
NWQ5ZGE4ODE5OTVjLi42NDI3MWIzZmEzYzJjMDFhYzEzNmM4ZTEwMzA3MTYxOTI2ZDNlOTgzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9N
b2NrR3JhbW1hckNoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oCkBAIC0zMSw3ICszMSw4IEBACiAjaWZuZGVm
IE1vY2tHcmFtbWFyQ2hlY2tfaAogI2RlZmluZSBNb2NrR3JhbW1hckNoZWNrX2gKIAotI2luY2x1
ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MCw4ICs0MSw2IEBAIHN0
cnVjdCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIH0KIAotbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXIgewotCiAvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgYSBncmFtbWFyLWNoZWNrZXIgdXNl
ZCBmb3IgV2ViS2l0IHRlc3RzLiBUaGlzIGNsYXNzCiAvLyBvbmx5IGltcGxlbWVudHMgdGhlIG1p
bmltYWwgZnVuY3Rpb25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdCB0ZXN0cywgaS5lLgogLy8g
dGhpcyBjbGFzcyBqdXN0IGNvbXBhcmVzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBrbm93biBncmFt
bWFyIG1pc3Rha2VzIGluCkBAIC00OSw5ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVy
IHsKIC8vIGZvciB3ZWJraXQgdGVzdHMsIHRoaXMgY2xhc3MgaXMgbm90IHN1aXRhYmxlIGZvciBh
bnkgb3RoZXIgdXNhZ2VzLgogY2xhc3MgTW9ja0dyYW1tYXJDaGVjayB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIGJvb2wgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
LCBzdGQ6OnZlY3RvcjxXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdD4qKTsKKyAgICBzdGF0
aWMgYm9vbCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIFZl
Y3RvcjxXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdD4qKTsKIH07CiAKLX0KLQogI2VuZGlm
IC8vIE1vY2tTcGVsbENoZWNrX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAppbmRleCBm
MjczY2IyNzJkYzY5NTc0MjM1ODgxMDc1ZmI2MzRiNTFiOTNjZTliLi44MWIzMDg5MmI1ODIwYWNm
M2M4YjJhZDc4ZmU4NDExNmY5MGU4Y2JmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3Bw
CkBAIC0zMSwxNyArMzEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2Nr
U3BlbGxDaGVjay5oIgogCi0jaW5jbHVkZSAiVGVzdENvbW1vbi5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXIgewotCi1uYW1lc3BhY2UgewotCi12b2lkIGFwcGVuZChXZWJWZWN0b3I8V2Vi
U3RyaW5nPiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVtKQorc3RhdGljIHZvaWQgYXBwZW5k
KFdlYlZlY3RvcjxXZWJTdHJpbmc+KiBkYXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCiB7CiAg
ICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVzdWx0KGRhdGEtPnNpemUoKSArIDEpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS0+c2l6ZSgpOyArK2kpCkBAIC01MCwxNyArNDYsMTcg
QEAgdm9pZCBhcHBlbmQoV2ViVmVjdG9yPFdlYlN0cmluZz4qIGRhdGEsIGNvbnN0IFdlYlN0cmlu
ZyYgaXRlbSkKICAgICBkYXRhLT5zd2FwKHJlc3VsdCk7CiB9CiAKLX0KLQogTW9ja1NwZWxsQ2hl
Y2s6Ok1vY2tTcGVsbENoZWNrKCkKICAgICA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpIHsgfQogCiBN
b2NrU3BlbGxDaGVjazo6fk1vY2tTcGVsbENoZWNrKCkgeyB9CiAKK3N0YXRpYyBib29sIGlzTm90
QVNDSUlBbHBoYShVQ2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlBbHBoYShjaCk7IH0KKwogYm9v
bCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBp
bnQqIG1pc3NwZWxsZWRPZmZzZXQsIGludCogbWlzc3BlbGxlZExlbmd0aCkKIHsKLSAgICBXRUJL
SVRfQVNTRVJUKG1pc3NwZWxsZWRPZmZzZXQpOwotICAgIFdFQktJVF9BU1NFUlQobWlzc3BlbGxl
ZExlbmd0aCk7CisgICAgQVNTRVJUKG1pc3NwZWxsZWRPZmZzZXQpOworICAgIEFTU0VSVChtaXNz
cGVsbGVkTGVuZ3RoKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhpcyBzcGVsbGNoZWNrZXIuCiAg
ICAgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CkBAIC02OSwxMiArNjUsMTIgQEAgYm9vbCBNb2NrU3Bl
bGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3Nw
ZWxsZWRPZmZzZXQKICAgICAqbWlzc3BlbGxlZE9mZnNldCA9IDA7CiAgICAgKm1pc3NwZWxsZWRM
ZW5ndGggPSAwOwogCi0gICAgLy8gQ29udmVydCB0byBhIHN0cmluZzE2IGJlY2F1c2Ugd2Ugc3Rv
cmUgc3RyaW5nMTYgaW5zdGFuY2VzIGluCisgICAgLy8gQ29udmVydCB0byBhIFN0cmluZyBiZWNh
dXNlIHdlIHN0b3JlIFN0cmluZyBpbnN0YW5jZXMgaW4KICAgICAvLyBtX21pc3NwZWxsZWRXb3Jk
cyBhbmQgV2ViU3RyaW5nIGhhcyBubyBmaW5kKCkuCi0gICAgc3RyaW5nMTYgc3RyaW5nVGV4dCA9
IHRleHQ7CisgICAgU3RyaW5nIHN0cmluZ1RleHQodGV4dC5kYXRhKCksIHRleHQubGVuZ3RoKCkp
OwogICAgIGludCBza2lwcGVkTGVuZ3RoID0gMDsKIAotICAgIHdoaWxlICghc3RyaW5nVGV4dC5l
bXB0eSgpKSB7CisgICAgd2hpbGUgKCFzdHJpbmdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAv
LyBFeHRyYWN0IHRoZSBmaXJzdCBwb3NzaWJsZSBFbmdsaXNoIHdvcmQgZnJvbSB0aGUgZ2l2ZW4g
c3RyaW5nLgogICAgICAgICAvLyBUaGUgZ2l2ZW4gc3RyaW5nIG1heSBpbmNsdWRlIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMuIFNvLCB3ZQogICAgICAgICAvLyBzaG91bGQgZmlsdGVy
IG91dCBzdWNoIGNoYXJhY3RlcnMgYmVmb3JlIHN0YXJ0IGxvb2tpbmcgdXAgb3VyCkBAIC04Miwx
MyArNzgsMTIgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgLy8gKFRoaXMgaXMg
YSBzaW1wbGUgdmVyc2lvbiBvZiBvdXIgU3BlbGxDaGVja1dvcmRJdGVyYXRvciBjbGFzcy4pCiAg
ICAgICAgIC8vIElmIHRoZSBnaXZlbiBzdHJpbmcgZG9lc24ndCBpbmNsdWRlIGFueSBBU0NJSSBj
aGFyYWN0ZXJzLCB3ZSBjYW4gdHJlYXQgdGhlCiAgICAgICAgIC8vIHN0cmluZyBhcyB2YWxpZCBv
bmUuCi0gICAgICAgIHN0cmluZzE2OjppdGVyYXRvciBmaXJzdENoYXIgPSBmaW5kX2lmKHN0cmlu
Z1RleHQuYmVnaW4oKSwgc3RyaW5nVGV4dC5lbmQoKSwgaXNBU0NJSUFscGhhKTsKLSAgICAgICAg
aWYgKGZpcnN0Q2hhciA9PSBzdHJpbmdUZXh0LmVuZCgpKQorICAgICAgICBpbnQgd29yZE9mZnNl
dCA9IHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpOworICAgICAgICBpZiAod29yZE9mZnNl
dCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpbnQgd29yZE9mZnNl
dCA9IGRpc3RhbmNlKHN0cmluZ1RleHQuYmVnaW4oKSwgZmlyc3RDaGFyKTsKICAgICAgICAgaW50
IG1heFdvcmRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0g
d29yZE9mZnNldDsKICAgICAgICAgaW50IHdvcmRMZW5ndGg7Ci0gICAgICAgIHN0cmluZzE2IHdv
cmQ7CisgICAgICAgIFN0cmluZyB3b3JkOwogCiAgICAgICAgIC8vIExvb2sgdXAgb3VyIG1pc3Nw
ZWxsZWQtd29yZCB0YWJsZSB0byBjaGVjayBpZiB0aGUgZXh0cmFjdGVkIHdvcmQgaXMgYQogICAg
ICAgICAvLyBrbm93biBtaXNzcGVsbGVkIHdvcmQsIGFuZCByZXR1cm4gdGhlIG9mZnNldCBhbmQg
dGhlIGxlbmd0aCBvZiB0aGUKQEAgLTk3LDcgKzkyLDcgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6
c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZz
ZXQKICAgICAgICAgLy8gbWlzc3BlbGxlZC13b3JkIHRhYmxlLikKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX21pc3NwZWxsZWRXb3Jkcy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgd29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4obV9taXNzcGVsbGVkV29yZHMuYXQoaSku
bGVuZ3RoKCkpID4gbWF4V29yZExlbmd0aCA/IG1heFdvcmRMZW5ndGggOiBzdGF0aWNfY2FzdDxp
bnQ+KG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHdvcmQg
PSBzdHJpbmdUZXh0LnN1YnN0cih3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKKyAgICAgICAgICAg
IHdvcmQgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKICAg
ICAgICAgICAgIGlmICh3b3JkID09IG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpICYmIChzdGF0aWNf
Y2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpID09IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3Ro
IHx8IGlzTm90QVNDSUlBbHBoYShzdHJpbmdUZXh0W3dvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoXSkp
KSB7CiAgICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRPZmZzZXQgPSB3b3JkT2Zmc2V0ICsgc2tp
cHBlZExlbmd0aDsKICAgICAgICAgICAgICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IHdvcmRMZW5n
dGg7CkBAIC0xMDgsMTQgKzEwMywxMSBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNr
V29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAg
ICBpZiAoKm1pc3NwZWxsZWRMZW5ndGggPiAwKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgc3RyaW5nMTY6Oml0ZXJhdG9yIGxhc3RDaGFyID0gZmluZF9pZihzdHJpbmdUZXh0LmJlZ2lu
KCkgKyB3b3JkT2Zmc2V0LCBzdHJpbmdUZXh0LmVuZCgpLCBpc05vdEFTQ0lJQWxwaGEpOwotICAg
ICAgICBpZiAobGFzdENoYXIgPT0gc3RyaW5nVGV4dC5lbmQoKSkKLSAgICAgICAgICAgIHdvcmRM
ZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNl
dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29yZExlbmd0aCA9IGRpc3RhbmNlKGZpcnN0
Q2hhciwgbGFzdENoYXIpOworICAgICAgICBpbnQgd29yZEVuZCA9IHN0cmluZ1RleHQuZmluZChp
c05vdEFTQ0lJQWxwaGEsIHdvcmRPZmZzZXQpOworICAgICAgICB3b3JkTGVuZ3RoID0gd29yZEVu
ZCA9PSAtMSA/IHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zm
c2V0IDogd29yZEVuZCAtIHdvcmRPZmZzZXQ7CiAKLSAgICAgICAgV0VCS0lUX0FTU0VSVCgwIDwg
d29yZE9mZnNldCArIHdvcmRMZW5ndGgpOwotICAgICAgICBzdHJpbmdUZXh0ID0gc3RyaW5nVGV4
dC5zdWJzdHIod29yZE9mZnNldCArIHdvcmRMZW5ndGgpOworICAgICAgICBBU1NFUlQoMCA8IHdv
cmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKKyAgICAgICAgc3RyaW5nVGV4dCA9IHN0cmluZ1RleHQu
c3Vic3RyaW5nKHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKICAgICAgICAgc2tpcHBlZExlbmd0
aCArPSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aDsKICAgICB9CiAKQEAgLTE3OCw3ICsxNzAsNyBA
QCBib29sIE1vY2tTcGVsbENoZWNrOjppbml0aWFsaXplSWZOZWVkZWQoKQogCiAgICAgbV9taXNz
cGVsbGVkV29yZHMuY2xlYXIoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6
ZShtaXNzcGVsbGVkV29yZHMpOyArK2kpCi0gICAgICAgIG1fbWlzc3BlbGxlZFdvcmRzLnB1c2hf
YmFjayhzdHJpbmcxNihtaXNzcGVsbGVkV29yZHNbaV0sIG1pc3NwZWxsZWRXb3Jkc1tpXSArIHN0
cmxlbihtaXNzcGVsbGVkV29yZHNbaV0pKSk7CisgICAgICAgIG1fbWlzc3BlbGxlZFdvcmRzLmFw
cGVuZChTdHJpbmc6OmZyb21VVEY4KG1pc3NwZWxsZWRXb3Jkc1tpXSkpOwogCiAgICAgLy8gTWFy
ayBhcyBpbml0aWFsaXplZCB0byBwcmV2ZW50IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgaW5pdGlh
bGl6ZWQgdHdpY2UKICAgICAvLyBvciBtb3JlLgpAQCAtMTg4LDUgKzE4MCwzIEBAIGJvb2wgTW9j
a1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgLy8gZnVuY3Rpb24gYWx3YXlz
IHJldHVybnMgZmFsc2UuCiAgICAgcmV0dXJuIGZhbHNlOwogfQotCi19CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVj
ay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1Nw
ZWxsQ2hlY2suaAppbmRleCA1MzU5Yzg4OGFhZWRhODU1YjIyZTE5N2M1MWRlODg4MjA5MjkwNmIx
Li5lZTM4ZjIyOTIyMjYzZTdmMzE2ODM4Y2RmODQzNjVlNDMwYTVmMWE2IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVj
ay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmgKQEAgLTMzLDkgKzMzLDggQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViVmVjdG9yLmgiCi0jaW5jbHVkZSA8dmVjdG9yPgotCi1uYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgYSBzcGVsbC1jaGVja2Vy
IHVzZWQgZm9yIFdlYktpdCB0ZXN0cy4KIC8vIFRoaXMgY2xhc3Mgb25seSBpbXBsZW1lbnRzIHRo
ZSBtaW5pbWFsIGZ1bmN0aW9uYXJpdGllcyByZXF1aXJlZCBieSBXZWJLaXQKQEAgLTcxLDEyICs3
MCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAKICAgICAv
LyBBIHRhYmxlIHRoYXQgY29uc2lzdHMgb2YgbWlzc3BlbGxlZCB3b3Jkcy4KLSAgICBzdGQ6OnZl
Y3RvcjxzdHJpbmcxNj4gbV9taXNzcGVsbGVkV29yZHM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9t
aXNzcGVsbGVkV29yZHM7CiAKICAgICAvLyBBIGZsYWcgcmVwcmVzZW50aW5nIHdoZXRoZXIgb3Ig
bm90IHRoaXMgb2JqZWN0IGlzIGluaXRpYWxpemVkLgogICAgIGJvb2wgbV9pbml0aWFsaXplZDsK
IH07CiAKLX0KLQogI2VuZGlmIC8vIE1vY2tTcGVsbENoZWNrX2gKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxD
aGVja0NsaWVudC5jcHAKaW5kZXggYjA1MTgzNTJkNDc3YmNiNmY2OWNjZjcyODA2ODU5MzI4ZWIw
Y2ZlNS4uNmVmMGY1YjE5ZmFhYzdjMWI5M2Q2NDY3NzRiMWI4MjZlN2M1ZmM4MCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVj
a0NsaWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtODIsNyAr
ODEsNyBAQCB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OnNwZWxsQ2hlY2soY29uc3QgV2ViU3RyaW5n
JiB0ZXh0LCBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsCiAKIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2tp
bmdUeXBlTWFzayBtYXNrLCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0Piogd2ViUmVz
dWx0cykKIHsKLSAgICB2ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAg
IFZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKG1hc2sgJiBX
ZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpIHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IDA7
CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtOTcsNyArOTYsNyBA
QCB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFdlYlN0
cmluZyYgdGV4dCwgV2ViVGV4dENoZWNraQogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBXZWJU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBv
ZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
bWlzc3BlbGxlZExlbmd0aDsKLSAgICAgICAgICAgIHJlc3VsdHMucHVzaF9iYWNrKHJlc3VsdCk7
CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICAgICAgb2Zmc2V0
ICs9IG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGg7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMjEsMTkgKzEyMCwxOSBAQCB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mVGV4dChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdlYlRleHRDaGVjawogCiB2b2lk
IFNwZWxsQ2hlY2tDbGllbnQ6OmZpbmlzaExhc3RUZXh0Q2hlY2soKQogewotICAgIHZlY3RvcjxX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgVmVjdG9yPFdlYlRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKICAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICBzdHJpbmcxNiB0ZXh0
ID0gbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nOworICAgIFN0cmluZyB0ZXh0KG1fbGFz
dFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5kYXRhKCksIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVj
a1N0cmluZy5sZW5ndGgoKSk7CiAgICAgd2hpbGUgKHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAg
aW50IG1pc3NwZWxsZWRQb3NpdGlvbiA9IDA7CiAgICAgICAgIGludCBtaXNzcGVsbGVkTGVuZ3Ro
ID0gMDsKLSAgICAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKFdlYlN0cmluZyh0ZXh0
KSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBtX3Nw
ZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0
Lmxlbmd0aCgpKSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOwogICAg
ICAgICBpZiAoIW1pc3NwZWxsZWRMZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
V2ViVmVjdG9yPFdlYlN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgICAgIG1fc3BlbGxjaGVjay5m
aWxsU3VnZ2VzdGlvbkxpc3QoV2ViU3RyaW5nKHRleHQuc3Vic3RyKG1pc3NwZWxsZWRQb3NpdGlv
biwgbWlzc3BlbGxlZExlbmd0aCkpLCAmc3VnZ2VzdGlvbnMpOwotICAgICAgICByZXN1bHRzLnB1
c2hfYmFjayhXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
LCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgsIHN1Z2dlc3Rp
b25zLmlzRW1wdHkoKSA/IFdlYlN0cmluZygpIDogc3VnZ2VzdGlvbnNbMF0pKTsKLSAgICAgICAg
dGV4dCA9IHRleHQuc3Vic3RyKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGgp
OworICAgICAgICBtX3NwZWxsY2hlY2suZmlsbFN1Z2dlc3Rpb25MaXN0KFdlYlN0cmluZyh0ZXh0
LmNoYXJhY3RlcnMoKSArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCksICZz
dWdnZXN0aW9ucyk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKFdlYlRleHRDaGVja2luZ1Jlc3Vs
dChXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIG9mZnNldCArIG1pc3NwZWxsZWRQb3NpdGlv
biwgbWlzc3BlbGxlZExlbmd0aCwgc3VnZ2VzdGlvbnMuaXNFbXB0eSgpID8gV2ViU3RyaW5nKCkg
OiBzdWdnZXN0aW9uc1swXSkpOworICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWlzc3Bl
bGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7CiAgICAgICAgIG9mZnNldCArPSBtaXNz
cGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoOwogICAgIH0KICAgICBNb2NrR3JhbW1h
ckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJp
bmcsICZyZXN1bHRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjFmNzZmODRlMjc2NGUxY2IwYjRiYTQxNzAzOTljY2I3ZGVlNTJkMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBUZXN0Q29tbW9uX2gKLSNkZWZpbmUgVGVzdENvbW1vbl9oCi0K
LSNpbmNsdWRlIDxiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YkNvbW1vbi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpZiBkZWZpbmVkKFdJTjMyKQotI2Rl
ZmluZSBzbnByaW50ZihzdHIsIHNpemUsIC4uLikgX3NucHJpbnRmX3Moc3RyLCBzaXplLCBzaXpl
LCBfX1ZBX0FSR1NfXykKLSNlbmRpZgotCi1pbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoY2hhciBj
aCkgeyByZXR1cm4gKGNoIHwgMHgyMCkgPj0gJ2EnICYmIChjaCB8IDB4MjApIDw9ICd6JzsgfQot
Ci1pbmxpbmUgYm9vbCBpc05vdEFTQ0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlB
bHBoYShjaCk7IH0KLQotI2VuZGlmIC8vIFRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVy
ZmFjZXMuY3BwCmluZGV4IDQ2ZDZhZDA2NWJhMzBhMmE2MWZjYmUxZWVlODljODQ1MmVmZjU4YmIu
LmUzZGNmODAyMDUxNmM1YzFiZmUxNWMzMmM2ZDI3NDAxY2U1YjE2MDggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2Vz
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBXZWJLaXQ6OldlYlZp
ZXc7CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIFRlc3RJbnRlcmZhY2VzOjpUZXN0SW50
ZXJmYWNlcygpCi0gICAgOiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG5ldyBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpKQotICAgICwgbV9ldmVudFNlbmRlcihuZXcgRXZlbnRTZW5kZXIoKSkK
LSAgICAsIG1fZ2FtZXBhZENvbnRyb2xsZXIobmV3IEdhbWVwYWRDb250cm9sbGVyKCkpCi0gICAg
LCBtX3RleHRJbnB1dENvbnRyb2xsZXIobmV3IFRleHRJbnB1dENvbnRyb2xsZXIoKSkKLSAgICAs
IG1fdGVzdFJ1bm5lcihuZXcgVGVzdFJ1bm5lcigpKQotICAgICwgbV93ZWJWaWV3KDApCisgICAg
OiBtX3dlYlZpZXcoMCkKIHsKKyAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQ
dHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpOworICAgIG1fZXZlbnRTZW5kZXIgPSBh
ZG9wdFB0cihuZXcgRXZlbnRTZW5kZXIoKSk7CisgICAgbV9nYW1lcGFkQ29udHJvbGxlciA9IGFk
b3B0UHRyKG5ldyBHYW1lcGFkQ29udHJvbGxlcigpKTsKKyAgICBtX3RleHRJbnB1dENvbnRyb2xs
ZXIgPSBhZG9wdFB0cihuZXcgVGV4dElucHV0Q29udHJvbGxlcigpKTsKKyAgICBtX3Rlc3RSdW5u
ZXIgPSBhZG9wdFB0cihuZXcgVGVzdFJ1bm5lcigpKTsKIH0KIAogVGVzdEludGVyZmFjZXM6On5U
ZXN0SW50ZXJmYWNlcygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCA4M2IzOGRiNjgx
NzlhZDM4NWUxZjI1MDEwMjU4ZWI1MGM5ZGZkNDkxLi5kODM0YzQwYjE2Mjc0MmE2NDg2MWFjZDRj
YmM3OGI2ZWJiZTc0OTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpZm5kZWYgVGVzdEludGVyZmFjZXNfaAogI2RlZmluZSBUZXN0SW50ZXJmYWNlc19o
CiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoK
IAogCiBwcml2YXRlOgotICAgIHN0ZDo6YXV0b19wdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+
IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7Ci0gICAgc3RkOjphdXRvX3B0cjxFdmVudFNlbmRl
cj4gbV9ldmVudFNlbmRlcjsKLSAgICBzdGQ6OmF1dG9fcHRyPEdhbWVwYWRDb250cm9sbGVyPiBt
X2dhbWVwYWRDb250cm9sbGVyOwotICAgIHN0ZDo6YXV0b19wdHI8VGV4dElucHV0Q29udHJvbGxl
cj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOwotICAgIHN0ZDo6YXV0b19wdHI8VGVzdFJ1bm5lcj4g
bV90ZXN0UnVubmVyOworICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5k
ZXI7CisgICAgT3duUHRyPEdhbWVwYWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOwor
ICAgIE93blB0cjxUZXh0SW5wdXRDb250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7Cisg
ICAgT3duUHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJLaXQ6OldlYlZpZXcq
IG1fd2ViVmlldzsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKaW5kZXggYTRlZDhiMGY1OTI3
ZWY5MGYxODE5ZWU5MGY0MjllZDI5MmUyOThiMi4uMTlmZDBiMjY2ZDM5Y2U5YjU0NTAwM2MwNTM2
MGUxMTNkYmUxZWJlZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0UGx1Z2luLmgiCiAKLSNpbmNsdWRl
ICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0zNiw5ICszNSwxMiBAQAogI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3Vw
cG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC05Nyw3ICs5OSw3IEBAIGNvbnN0IGNoYXIqIHBvaW50
U3RhdGUoV2ViVG91Y2hQb2ludDo6U3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybiAiVW5rbm93
biI7CiAgICAgfQogCi0gICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzIsOSArMTM0LDEyIEBA
IHZvaWQgcHJpbnRFdmVudERldGFpbHMoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3Qg
V2ViSW5wdXRFdmVudCYgZXZlbnQpCiAKIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJl
cXVlc3RUeXBlIHBhcnNlVG91Y2hFdmVudFJlcXVlc3RUeXBlKGNvbnN0IFdlYlN0cmluZyYgc3Ry
aW5nKQogewotICAgIGlmIChzdHJpbmcgPT0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicmF3IikpCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBXZWJTdHJpbmcsIGtQcmltaXRpdmVSYXcsIChX
ZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZlU3ludGhldGljLCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgi
c3ludGhldGljIikpKTsKKworICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVJhdykKICAgICAg
ICAgcmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlUmF3Owot
ICAgIGlmIChzdHJpbmcgPT0gV2ViU3RyaW5nOjpmcm9tVVRGOCgic3ludGhldGljIikpCisgICAg
aWYgKHN0cmluZyA9PSBrUHJpbWl0aXZlU3ludGhldGljKQogICAgICAgICByZXR1cm4gV2ViUGx1
Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVTeW50aGVzaXplZE1vdXNlOwogICAg
IHJldHVybiBXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZU5vbmU7CiB9
CkBAIC0xNjMsNyArMTY4LDcgQEAgVGVzdFBsdWdpbjo6VGVzdFBsdWdpbihXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFdlYlBsdWdpblBhcmFtcyYgcGFyYW1zLCBXZWJUZXN0RGUKICAgICBzdGF0aWMg
Y29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZyA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoImNhbi1wcm9jZXNzLWRyYWciKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtB
dHRyaWJ1dGVQcmludFVzZXJHZXN0dXJlU3RhdHVzID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJp
bnQtdXNlci1nZXN0dXJlLXN0YXR1cyIpOwogCi0gICAgV0VCS0lUX0FTU0VSVChwYXJhbXMuYXR0
cmlidXRlTmFtZXMuc2l6ZSgpID09IHBhcmFtcy5hdHRyaWJ1dGVWYWx1ZXMuc2l6ZSgpKTsKKyAg
ICBBU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRl
VmFsdWVzLnNpemUoKSk7CiAgICAgc2l6ZV90IHNpemUgPSBwYXJhbXMuYXR0cmlidXRlTmFtZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgYXR0cmlidXRlTmFtZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lc1tp
XTsKQEAgLTIwNyw3ICsyMTIsNyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRpYWxpemUoV2ViUGx1
Z2luQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgaWYgKCFpbml0U2NlbmUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbV9sYXllciA9IGF1dG9fcHRyPFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyPihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVF
eHRlcm5hbFRleHR1cmVMYXllcih0aGlzKSk7CisgICAgbV9sYXllciA9IGFkb3B0UHRyKFBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVy
ZUxheWVyKHRoaXMpKTsKICAgICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgICBtX2NvbnRh
aW5lci0+c2V0V2ViTGF5ZXIobV9sYXllci0+bGF5ZXIoKSk7CiAgICAgaWYgKG1fcmVSZXF1ZXN0
VG91Y2hFdmVudHMpIHsKQEAgLTIyMyw3ICsyMjgsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ry
b3koKQogewogICAgIGlmIChtX2NvbnRhaW5lcikKICAgICAgICAgbV9jb250YWluZXItPnNldFdl
YkxheWVyKDApOwotICAgIG1fbGF5ZXIucmVzZXQoKTsKKyAgICBtX2xheWVyLmNsZWFyKCk7CiAg
ICAgZGVzdHJveVNjZW5lKCk7CiAKICAgICBkZWxldGUgbV9jb250ZXh0OwpAQCAtMjcwLDcgKzI3
NSw3IEBAIFRlc3RQbHVnaW46OlByaW1pdGl2ZSBUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZShj
b25zdCBXZWJTdHJpbmcmIHN0cmluZykKICAgICBlbHNlIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2
ZVRyaWFuZ2xlKQogICAgICAgICBwcmltaXRpdmUgPSBQcmltaXRpdmVUcmlhbmdsZTsKICAgICBl
bHNlCi0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHByaW1pdGl2ZTsKIH0KIApAQCAtMjg5LDcgKzI5
NCw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6cGFyc2VDb2xvcihjb25zdCBXZWJTdHJpbmcmIHN0cmlu
ZywgdW5zaWduZWQgY29sb3JbM10pCiAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJibHVlIikKICAg
ICAgICAgY29sb3JbMl0gPSAyNTU7CiAgICAgZWxzZQotICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBmbG9hdCBU
ZXN0UGx1Z2luOjpwYXJzZU9wYWNpdHkoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCkBAIC0zNTYs
MTQgKzM2MSwxNCBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ryb3lTY2VuZSgpCiAKIGJvb2wgVGVz
dFBsdWdpbjo6aW5pdFByb2dyYW0oKQogewotICAgIGNvbnN0IHN0cmluZyB2ZXJ0ZXhTb3VyY2Uo
CisgICAgY29uc3QgQ1N0cmluZyB2ZXJ0ZXhTb3VyY2UoCiAgICAgICAgICJhdHRyaWJ1dGUgdmVj
NCBwb3NpdGlvbjsgIFxuIgogICAgICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgICBcbiIK
ICAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsgXG4iCiAgICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgogICAgICk7CiAKLSAgICBjb25zdCBzdHJpbmcgZnJhZ21l
bnRTb3VyY2UoCisgICAgY29uc3QgQ1N0cmluZyBmcmFnbWVudFNvdXJjZSgKICAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyBcbiIKICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsg
ICAgICBcbiIKICAgICAgICAgInZvaWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKQEAgLTM4Miw3
ICszODcsNyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRQcm9ncmFtKCkKIAogYm9vbCBUZXN0UGx1
Z2luOjppbml0UHJpbWl0aXZlKCkKIHsKLSAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUucHJpbWl0
aXZlID09IFByaW1pdGl2ZVRyaWFuZ2xlKTsKKyAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUg
PT0gUHJpbWl0aXZlVHJpYW5nbGUpOwogCiAgICAgbV9zY2VuZS52Ym8gPSBtX2NvbnRleHQtPmNy
ZWF0ZUJ1ZmZlcigpOwogICAgIGlmICghbV9zY2VuZS52Ym8pCkBAIC00MDAsOSArNDA1LDkgQEAg
Ym9vbCBUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKCkKIAogdm9pZCBUZXN0UGx1Z2luOjpkcmF3
UHJpbWl0aXZlKCkKIHsKLSAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUucHJpbWl0aXZlID09IFBy
aW1pdGl2ZVRyaWFuZ2xlKTsKLSAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUudmJvKTsKLSAgICBX
RUJLSVRfQVNTRVJUKG1fc2NlbmUucHJvZ3JhbSk7CisgICAgQVNTRVJUKG1fc2NlbmUucHJpbWl0
aXZlID09IFByaW1pdGl2ZVRyaWFuZ2xlKTsKKyAgICBBU1NFUlQobV9zY2VuZS52Ym8pOworICAg
IEFTU0VSVChtX3NjZW5lLnByb2dyYW0pOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1f
c2NlbmUucHJvZ3JhbSk7CiAKQEAgLTQxOCw3ICs0MjMsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRy
YXdQcmltaXRpdmUoKQogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAs
IDMpOwogfQogCi11bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUs
IGNvbnN0IHN0cmluZyYgc291cmNlKQordW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFNoYWRlcih1
bnNpZ25lZCB0eXBlLCBjb25zdCBDU3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgdW5zaWduZWQgc2hh
ZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CiAgICAgaWYgKHNoYWRlcikgewpA
QCAtNDM1LDcgKzQ0MCw3IEBAIHVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWdu
ZWQgdHlwZSwgY29uc3Qgc3RyaW5nJiBzb3VyY2UpCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAot
dW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFByb2dyYW0oY29uc3Qgc3RyaW5nJiB2ZXJ0ZXhTb3Vy
Y2UsIGNvbnN0IHN0cmluZyYgZnJhZ21lbnRTb3VyY2UpCit1bnNpZ25lZCBUZXN0UGx1Z2luOjps
b2FkUHJvZ3JhbShjb25zdCBDU3RyaW5nJiB2ZXJ0ZXhTb3VyY2UsIGNvbnN0IENTdHJpbmcmIGZy
YWdtZW50U291cmNlKQogewogICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIo
R0xfVkVSVEVYX1NIQURFUiwgdmVydGV4U291cmNlKTsKICAgICB1bnNpZ25lZCBmcmFnbWVudFNo
YWRlciA9IGxvYWRTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNvdXJjZSk7CkBA
IC01MjcsNyArNTMyLDcgQEAgYm9vbCBUZXN0UGx1Z2luOjpoYW5kbGVEcmFnU3RhdHVzVXBkYXRl
KFdlYkRyYWdTdGF0dXMgZHJhZ1N0YXR1cywgY29uc3QgV2ViRHJhZ0QKICAgICAgICAgZHJhZ1N0
YXR1c05hbWUgPSAiRHJhZ0Ryb3AiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkRyYWdT
dGF0dXNVbmtub3duOgotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBtX2RlbGVnYXRlLT5wcmludE1l
c3NhZ2Uoc3RkOjpzdHJpbmcoIlBsdWdpbiByZWNlaXZlZCBldmVudDogIikgKyBkcmFnU3RhdHVz
TmFtZSArICJcbiIpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaAppbmRleCA1
M2IyMmUxMWJjNjZiZDUxZmE1MzMyMjNlMjhmM2U1M2RkMjBiODliLi4xZTEwMGRhZTkxZmMwMmMw
ZDEwOTkyZDU3NmM4NDIwYjBhZDRlNDQ2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oCkBAIC0yOCwxMCAr
MjgsOSBAQAogCiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29u
dGFpbmVyLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ckNsaWVudC5oPgotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtMTI1LDggKzEyNCw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpbml0UHJvZ3JhbSgpOwogICAgIGJvb2wgaW5pdFByaW1pdGl2ZSgpOwogICAg
IHZvaWQgZHJhd1ByaW1pdGl2ZSgpOwotICAgIHVuc2lnbmVkIGxvYWRTaGFkZXIodW5zaWduZWQg
dHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNvdXJjZSk7Ci0gICAgdW5zaWduZWQgbG9hZFByb2dy
YW0oY29uc3Qgc3RkOjpzdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGZy
YWdtZW50U291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNv
bnN0IFdURjo6Q1N0cmluZyYgc291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShjb25z
dCBXVEY6OkNTdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3QgV1RGOjpDU3RyaW5nJiBmcmFnbWVu
dFNvdXJjZSk7CiAKICAgICBXZWJLaXQ6OldlYkZyYW1lKiBtX2ZyYW1lOwogICAgIFdlYlRlc3RE
ZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKQEAgLTEzNyw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fY29sb3JUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1fZnJhbWVidWZmZXI7CiAgICAg
U2NlbmUgbV9zY2VuZTsKLSAgICBzdGQ6OmF1dG9fcHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI+IG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI+IG1fbGF5ZXI7CiAKICAgICBXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hF
dmVudFJlcXVlc3RUeXBlIG1fdG91Y2hFdmVudFJlcXVlc3Q7CiAgICAgLy8gUmVxdWVzdHMgdG91
Y2ggZXZlbnRzIGZyb20gdGhlIFdlYlBsdWdpbkNvbnRhaW5lckltcGwgbXVsdGlwbGUgdGltZXMg
dG8gdGlja2xlIHdlYmtpdC5vcmcvYi8xMDgzODEKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXgg
ZGFhYzUyMTJiMjhiMzlhYjdmNDQzNmE2YzAzYjYwYTk4MTExYzY4ZC4uODk5MDEyYjMyYWMyYjE1
YWU1YTA2MGRlN2MyZGVjMzU0ZDNjNTM4OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTU1
LDEyICs1NSwxMiBAQAogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJ
bmZvLmgiCiAjaW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgotI2luY2x1ZGUgPGxpbWl0cz4KLSNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cHVibGljL1dlYkRhdGEuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViUG9pbnQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZp
bmVkKEFORFJPSUQpCisjaWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCiAjaW5jbHVkZSAibGlu
dXgvV2ViRm9udFJlbmRlcmluZy5oIgogI2VuZGlmCiAKQEAgLTgzLDIwICs4MywyMiBAQCBwdWJs
aWM6CiAKIGNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFRl
c3RSdW5uZXI+IHsKIHB1YmxpYzoKLSAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciog
b2JqZWN0LCBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cykKKyAgICBJbnZv
a2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciogb2JqZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3BwVmFy
aWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQzMl90IG51bWJlck9mQXJndW1lbnRzKQogICAg
ICAgICA6IFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4ob2JqZWN0KQogICAgICAgICAsIG1fY2Fs
bGJhY2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCisgICAgICAgICwgbV9udW1iZXJPZkFy
Z3VtZW50cyhudW1iZXJPZkFyZ3VtZW50cykKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIHJ1bklmVmFsaWQoKQogICAgIHsKICAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VSZXN1bHQ7
Ci0gICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHMtPmludm9rZURlZmF1bHQobV9jYWxsYmFja0Fy
Z3VtZW50cy5nZXQoKSwgMSwgaW52b2tlUmVzdWx0KTsKKyAgICAgICAgbV9jYWxsYmFja0FyZ3Vt
ZW50c1swXS5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCksIG1fbnVtYmVy
T2ZBcmd1bWVudHMsIGludm9rZVJlc3VsdCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGF1dG9f
cHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1bWVudHM7CisgICAgT3duQXJyYXlQdHI8Q3Bw
VmFyaWFudD4gbV9jYWxsYmFja0FyZ3VtZW50czsKKyAgICB1aW50MzJfdCBtX251bWJlck9mQXJn
dW1lbnRzOwogfTsKIAogfQpAQCAtMTExLDcgKzExMyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29y
a1F1ZXVlOjpwcm9jZXNzV29ya1Nvb24oKQogICAgIGlmIChtX2NvbnRyb2xsZXItPnRvcExvYWRp
bmdGcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcXVldWUuZW1wdHkoKSkg
eworICAgIGlmICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgZGVsYXkgcHJv
Y2Vzc2luZyBxdWV1ZWQgd29yayB0byBhdm9pZCByZWN1cnNpb24gcHJvYmxlbXMuCiAgICAgICAg
IG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IFdvcmtRdWV1ZVRhc2sodGhp
cykpOwogICAgIH0gZWxzZSBpZiAoIW1fY29udHJvbGxlci0+bV93YWl0VW50aWxEb25lKQpAQCAt
MTIxLDEwICsxMjMsOSBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtT
b29uKCkKIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29yaygpCiB7CiAgICAg
Ly8gUXVpdCBkb2luZyB3b3JrIG9uY2UgYSBsb2FkIGlzIGluIHByb2dyZXNzLgotICAgIHdoaWxl
ICghbV9xdWV1ZS5lbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1ZXVl
LmZyb250KCktPnJ1bihtX2NvbnRyb2xsZXItPm1fZGVsZWdhdGUsIG1fY29udHJvbGxlci0+bV93
ZWJWaWV3KTsKLSAgICAgICAgZGVsZXRlIG1fcXVldWUuZnJvbnQoKTsKLSAgICAgICAgbV9xdWV1
ZS5wb3BfZnJvbnQoKTsKKyAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1ZXVlLmZpcnN0KCktPnJ1bihtX2NvbnRyb2xsZXItPm1f
ZGVsZWdhdGUsIG1fY29udHJvbGxlci0+bV93ZWJWaWV3KTsKKyAgICAgICAgZGVsZXRlIG1fcXVl
dWUudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChzdGFydGVkTG9hZCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMzYsMTAgKzEzNyw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1
ZXVlOjpwcm9jZXNzV29yaygpCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cmVzZXQoKQog
ewogICAgIG1fZnJvemVuID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFtX3F1ZXVlLmVtcHR5KCkpIHsK
LSAgICAgICAgZGVsZXRlIG1fcXVldWUuZnJvbnQoKTsKLSAgICAgICAgbV9xdWV1ZS5wb3BfZnJv
bnQoKTsKLSAgICB9CisgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgZGVs
ZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVl
OjphZGRXb3JrKFdvcmtJdGVtKiB3b3JrKQpAQCAtMTQ4LDcgKzE0Nyw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6V29ya1F1ZXVlOjphZGRXb3JrKFdvcmtJdGVtKiB3b3JrKQogICAgICAgICBkZWxldGUg
d29yazsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlLnB1c2hfYmFjayh3b3Jr
KTsKKyAgICBtX3F1ZXVlLmFwcGVuZCh3b3JrKTsKIH0KIAogCkBAIC0xNTcsOCArMTU2LDggQEAg
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX3dvcmtRdWV1ZSh0aGlzKQogICAgICwg
bV9kZWxlZ2F0ZSgwKQogICAgICwgbV93ZWJWaWV3KDApCi0gICAgLCBtX2ludGVudENsaWVudChu
ZXcgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQpCi0gICAgLCBtX3dlYlBlcm1pc3Npb25z
KG5ldyBXZWJQZXJtaXNzaW9ucykKKyAgICAsIG1faW50ZW50Q2xpZW50KGFkb3B0UHRyKG5ldyBF
bXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCkpCisgICAgLCBtX3dlYlBlcm1pc3Npb25zKGFk
b3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucykpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbWFw
IHRoYXQgYXNzb2NpYXRlcyBtZXRob2RzIG9mIHRoaXMgY2xhc3Mgd2l0aCB0aGUgbmFtZXMKICAg
ICAvLyB0aGV5IHdpbGwgdXNlIHdoZW4gY2FsbGVkIGJ5IEphdmFTY3JpcHQuIFRoZSBhY3R1YWwg
YmluZGluZyBvZiB0aG9zZQpAQCAtMjE2LDExICsyMTUsMTMgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcigpCiAgICAgYmluZE1ldGhvZCgic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgJlRl
c3RSdW5uZXI6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgi
c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRTZWxl
Y3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24iLCAmVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGJpbmRNZXRob2QoImRpZEFjcXVpcmVQb2lu
dGVyTG9jayIsICZUZXN0UnVubmVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOwogICAgIGJpbmRN
ZXRob2QoImRpZExvc2VQb2ludGVyTG9jayIsICZUZXN0UnVubmVyOjpkaWRMb3NlUG9pbnRlckxv
Y2spOwogICAgIGJpbmRNZXRob2QoImRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayIsICZUZXN0UnVu
bmVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOwogICAgIGJpbmRNZXRob2QoInNldFBvaW50
ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZUZXN0UnVubmVyOjpzZXRQb2ludGVy
TG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJpbmRNZXRob2QoInNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJlRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2Nr
V2lsbEZhaWxTeW5jaHJvbm91c2x5KTsKKyNlbmRpZgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBt
b2RpZnkgV2ViUHJlZmVyZW5jZXMuCiAgICAgYmluZE1ldGhvZCgic2V0VXNlclN0eWxlU2hlZXRF
bmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCk7CkBAIC0yNzIs
OCArMjczLDggQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZE1ldGhvZCgic2V0
V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwiLCAmVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1
ZXN0UmV0dXJuc051bGwpOwogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsT25SZWRpcmVjdCIsICZUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5z
TnVsbE9uUmVkaXJlY3QpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBpbnRlcmFjdCB3aXRoIHRoZSBXZWJUZXN0UHJveHkuCi0jaWYgRU5B
QkxFX1dFQl9JTlRFTlRTCiAgICAgYmluZE1ldGhvZCgic2VuZFdlYkludGVudFJlc3BvbnNlIiwg
JlRlc3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk7CiAgICAgYmluZE1ldGhvZCgiZGVs
aXZlcldlYkludGVudCIsICZUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KTsKICNlbmRpZgpA
QCAtMjkzLDEzICsyOTQsMTkgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZE1l
dGhvZCgic2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uIiwgJlRlc3RSdW5uZXI6OnNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24iLCAmVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGJpbmRNZXRob2QoImdyYW50V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Np
b24pOwogICAgIGJpbmRNZXRob2QoInNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2si
LCAmVGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayk7CisjZW5k
aWYKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIGJpbmRNZXRob2QoImFkZE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdCIsICZUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOwog
ICAgIGJpbmRNZXRob2QoInNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0IiwgJlRlc3RSdW5uZXI6
OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KTsKKyNlbmRpZgorI2lmIEVOQUJMRShTQ1JJUFRF
RF9TUEVFQ0gpCiAgICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0
IiwgJlRlc3RSdW5uZXI6OmFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CiAgICAgYmlu
ZE1ldGhvZCgic2V0TW9ja1NwZWVjaFJlY29nbml0aW9uRXJyb3IiLCAmVGVzdFJ1bm5lcjo6c2V0
TW9ja1NwZWVjaFJlY29nbml0aW9uRXJyb3IpOwogICAgIGJpbmRNZXRob2QoIndhc01vY2tTcGVl
Y2hSZWNvZ25pdGlvbkFib3J0ZWQiLCAmVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0
aW9uQWJvcnRlZCk7CisjZW5kaWYKICAgICBiaW5kTWV0aG9kKCJkaXNwbGF5IiwgJlRlc3RSdW5u
ZXI6OmRpc3BsYXkpOwogICAgIGJpbmRNZXRob2QoImRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbiIs
ICZUZXN0UnVubmVyOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24pOwogCkBAIC0zMTQsOSArMzIx
LDExIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBh
cmUgc3R1YnMuCiAgICAgYmluZE1ldGhvZCgiZHVtcERhdGFiYXNlQ2FsbGJhY2tzIiwgJlRlc3RS
dW5uZXI6Om5vdEltcGxlbWVudGVkKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBi
aW5kTWV0aG9kKCJkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpu
b3RJbXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgicmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMiLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwogICAgIGJpbmRNZXRo
b2QoInNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVt
ZW50ZWQpOworI2VuZGlmCiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIs
ICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0U2Nyb2xs
YmFyUG9saWN5IiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9k
KCJjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzIiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVk
KTsKQEAgLTM1Nyw3ICszNjYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBpZiAo
bV93ZWJWaWV3KSB7CiAgICAgICAgIG1fd2ViVmlldy0+c2V0Wm9vbUxldmVsKGZhbHNlLCAwKTsK
ICAgICAgICAgbV93ZWJWaWV3LT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHModHJ1ZSk7
Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChXSU4zMikgLy8gQWN0dWFsbHks
IFRPT0xLSVRfR1RLCisjaWYgIU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpIC8vIEFjdHVhbGx5
LCBUT09MS0lUX0dUSwogICAgICAgICAvLyAoQ29uc3RhbnRzIGNvcGllZCBiZWNhdXNlIHdlIGNh
bid0IGRlcGVuZCBvbiB0aGUgaGVhZGVyIHRoYXQgZGVmaW5lZAogICAgICAgICAvLyB0aGVtIGZy
b20gdGhpcyBmaWxlLikKICAgICAgICAgbV93ZWJWaWV3LT5zZXRTZWxlY3Rpb25Db2xvcnMoMHhm
ZjFlOTBmZiwgMHhmZjAwMDAwMCwgMHhmZmM4YzhjOCwgMHhmZjMyMzIzMik7CkBAIC0zNzIsNyAr
MzgxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9wb2xpY3lEZWxlZ2F0ZVNo
b3VsZE5vdGlmeURvbmUgPSBmYWxzZTsKIAogICAgIFdlYlNlY3VyaXR5UG9saWN5OjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKLSNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5l
ZChBTkRST0lEKQorI2lmIE9TKExJTlVYKSB8fCBPUyhBTkRST0lEKQogICAgIFdlYkZvbnRSZW5k
ZXJpbmc6OnNldFN1YnBpeGVsUG9zaXRpb25pbmcoZmFsc2UpOwogI2VuZGlmCiAKQEAgLTQxMSw3
ICs0MjAsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3Nob3VsZEJsb2NrUmVk
aXJlY3RzID0gZmFsc2U7CiAgICAgbV93aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsID0g
ZmFsc2U7CiAgICAgbV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSB0cnVlOwotI2lmZGVmIFdJ
TjMyCisjaWYgT1MoV0lORE9XUykKICAgICBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQgPSB0cnVlOwogI2Vsc2UKICAgICBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQg
PSBmYWxzZTsKQEAgLTYyNyw3ICs2MzYsNyBAQCBXZWJGcmFtZSogVGVzdFJ1bm5lcjo6dG9wTG9h
ZGluZ0ZyYW1lKCkgY29uc3QKIAogdm9pZCBUZXN0UnVubmVyOjpwb2xpY3lEZWxlZ2F0ZURvbmUo
KQogewotICAgIFdFQktJVF9BU1NFUlQobV93YWl0VW50aWxEb25lKTsKKyAgICBBU1NFUlQobV93
YWl0VW50aWxEb25lKTsKICAgICBtX2RlbGVnYXRlLT50ZXN0RmluaXNoZWQoKTsKICAgICBtX3dh
aXRVbnRpbERvbmUgPSBmYWxzZTsKIH0KQEAgLTEzMjIsNyArMTMzMSw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZmluZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0CiAgICAgV2ViRmluZE9wdGlvbnMgZmluZE9wdGlvbnM7CiAgICAgYm9vbCB3
cmFwQXJvdW5kID0gZmFsc2U7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPj0gMikgewotICAg
ICAgICB2ZWN0b3I8c3RyaW5nPiBvcHRpb25zQXJyYXkgPSBhcmd1bWVudHNbMV0udG9TdHJpbmdW
ZWN0b3IoKTsKKyAgICAgICAgVmVjdG9yPHN0ZDo6c3RyaW5nPiBvcHRpb25zQXJyYXkgPSBhcmd1
bWVudHNbMV0udG9TdHJpbmdWZWN0b3IoKTsKICAgICAgICAgZmluZE9wdGlvbnMubWF0Y2hDYXNl
ID0gdHJ1ZTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbnNBcnJheS5z
aXplKCk7ICsraSkgewpAQCAtMTQwMiw3ICsxNDExLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZWxl
Y3Rpb25Bc01hcmt1cChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCoKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRUZXh0U3VicGl4ZWxQb3NpdGlvbmluZyhjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotI2lmIGRl
ZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFORFJPSUQpCisjaWYgT1MoTElOVVgpIHx8IE9T
KEFORFJPSUQpCiAgICAgLy8gU2luY2UgRm9udENvbmZpZyBkb2Vzbid0IHByb3ZpZGUgYSB2YXJp
YWJsZSB0byBjb250cm9sIHN1YnBpeGVsIHBvc2l0aW9uaW5nLCB3ZSdsbCBmYWxsIGJhY2sKICAg
ICAvLyB0byBzZXR0aW5nIGl0IGdsb2JhbGx5IGZvciBhbGwgZm9udHMuCiAgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKQEAgLTE2NzEsNyArMTY4
MCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJL
aXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIpCiAgICAgICAgIHByZWZzLT5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwogICAgIGVs
c2UgaWYgKGtleSA9PSAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIikKLSAgICAgICAgV0VCS0lUX0FT
U0VSVChjcHBWYXJpYW50VG9Cb29sKHZhbHVlKSk7CisgICAgICAgIEFTU0VSVChjcHBWYXJpYW50
VG9Cb29sKHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHN0cmluZyBtZXNzYWdlKCJJbnZh
bGlkIG5hbWUgZm9yIHByZWZlcmVuY2U6ICIpOwogICAgICAgICBtZXNzYWdlLmFwcGVuZChrZXkp
OwpAQCAtMTcxNiw3ICsxNzI1LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUb3VjaERyYWdEcm9w
RW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmEKICAgICByZXN1
bHQtPnNldE51bGwoKTsKIH0KIAotI2lmIEVOQUJMRV9XRUJfSU5URU5UUworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKIHZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAg
djg6OkhhbmRsZVNjb3BlIHNjb3BlOwpAQCAtMTgyNCwxMCArMTgzMywxMCBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaQogICAgIGZsb2F0IHZhbHVlID0gYXJndW1lbnRzWzBdLnZhbHVlLmRvdWJs
ZVZhbHVlOwogICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxlRmFjdG9yKHZhbHVlKTsKIAot
ICAgIGF1dG9fcHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzKG5ldyBDcHBWYXJpYW50
KCkpOwotICAgIGNhbGxiYWNrQXJndW1lbnRzLT5zZXQoYXJndW1lbnRzWzFdKTsKKyAgICBPd25B
cnJheVB0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3
IENwcFZhcmlhbnRbMV0pOworICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNb
MV0pOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5l
dyBJbnZva2VDYWxsYmFja1Rhc2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMpKTsKKyAgICBtX2Rl
bGVnYXRlLT5wb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMsIGNhbGxiYWNrQXJn
dW1lbnRzLnJlbGVhc2UoKSwgMSkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFBPU0lYTG9j
YWxlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
CkBAIC0xODY4LDYgKzE4NzcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBDcHBBcmd1bWVudExpcwogICAgIG1fZGVs
ZWdhdGUtPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihhcmd1bWVu
dHNbMF0udG9TdHJpbmcoKSk7CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIHZvaWQg
VGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpIHsKQEAgLTE4ODYs
NyArMTg5Niw5IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRp
b25DbGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgfQogICAgIHJlc3VsdC0+
c2V0KG1fZGVsZWdhdGUtPnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soYXJndW1l
bnRzWzBdLnRvU3RyaW5nKCkpKTsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CkBAIC0xOTA0LDcgKzE5MTYsOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cAogCiAgICAgbV9kZWxlZ2F0ZS0+c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYXJndW1lbnRz
WzBdLnRvQm9vbGVhbigpKTsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVD
SCkKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0KGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAg
cmVzdWx0LT5zZXROdWxsKCk7CkBAIC0xOTI3LDYgKzE5NDEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaQogewogICAgIHJlc3VsdC0+c2V0KG1fZGVsZWdhdGUtPndhc01vY2tTcGVlY2hSZWNv
Z25pdGlvbkFib3J0ZWQoKSk7CiB9CisjZW5kaWYKIAogdm9pZCBUZXN0UnVubmVyOjpkaXNwbGF5
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CkBAIC0yMTA2LDYgKzIxMjEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICByZXN1bHQtPnNl
dE51bGwoKTsKIH0KIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIFRlc3RSdW5uZXI6
OmRpZEFjcXVpcmVQb2ludGVyTG9jayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
KiByZXN1bHQpCiB7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CkBA
IC0yMTM1LDUgKzIxNTEsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZh
aWxTeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcAogICAgIG1fZGVsZWdh
dGUtPnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CiAgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IDNmZTFjMWZl
M2Q3NjVkZTRiZTk1NjNjZmE5N2I5ZWExOWVhNjg4OTIuLjA0MmQ1MzUwOTI5NTFjMmMwMDgxN2Ix
N2QwYmJlMWVkMTVhY2E1ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTM0LDE3ICszNCwxNSBA
QAogI2RlZmluZSBUZXN0UnVubmVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKLSNp
bmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXJWaWV3LmgiCiAj
aW5jbHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVGFzay5o
IgogI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0RGlyZWN0aW9u
LmgiCi0jaW5jbHVkZSA8ZGVxdWU+Ci0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJVUkwuaD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFycmF5QnVmZmVy
VmlldzsKQEAgLTE0Myw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZFdvcmso
V29ya0l0ZW0qKTsKIAogICAgICAgICB2b2lkIHNldEZyb3plbihib29sIGZyb3plbikgeyBtX2Zy
b3plbiA9IGZyb3plbjsgfQotICAgICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVl
LmVtcHR5KCk7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0Vt
cHR5KCk7IH0KICAgICAgICAgV2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFz
a0xpc3Q7IH0KIAogICAgIHByaXZhdGU6CkBAIC0xNTUsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfTsKIAogICAgICAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotICAgICAgICBzdGQ6
OmRlcXVlPFdvcmtJdGVtKj4gbV9xdWV1ZTsKKyAgICAgICAgRGVxdWU8V29ya0l0ZW0qPiBtX3F1
ZXVlOwogICAgICAgICBib29sIG1fZnJvemVuOwogICAgICAgICBUZXN0UnVubmVyKiBtX2NvbnRy
b2xsZXI7CiAgICAgfTsKQEAgLTI3NywxMSArMjc1LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gRGV2
aWNlT3JpZW50YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMKICAgICB2b2lkIHNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGRpZE5vdEFjcXVpcmVQ
b2ludGVyTG9jayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCBkaWRMb3NlUG9pbnRlckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxs
UmVzcG9uZEFzeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKyNlbmRpZgogCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gTWV0aG9kcyBtb2Rp
ZnlpbmcgV2ViUHJlZmVyZW5jZXMuCkBAIC00MjAsNyArNDIwLDcgQEAgcHJpdmF0ZToKICAgICAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBNZXRob2RzIGludGVyYWN0aW5nIHdpdGggdGhlIFdl
YlRlc3RQcm94eQogCi0jaWYgRU5BQkxFX1dFQl9JTlRFTlRTCisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQogICAgIC8vIEV4cGVjdHMgb25lIHN0cmluZyBhcmd1bWVudCBmb3Igc2VuZGluZyBzdWNj
ZXNzZnVsIHJlc3VsdCwgemVybwogICAgIC8vIGFyZ3VtZW50cyBmb3Igc2VuZGluZyBhIGZhaWx1
cmUgcmVzdWx0LgogICAgIHZvaWQgc2VuZFdlYkludGVudFJlc3BvbnNlKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTQ2OCwxNyArNDY4LDIzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLy8gR3JhbnRzIHBlcm1pc3Npb24gZm9yIGRlc2t0
b3Agbm90aWZpY2F0aW9ucyB0byBhbiBvcmlnaW4KICAgICB2b2lkIGdyYW50V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
Ly8gU2ltdWxhdGVzIGEgY2xpY2sgb24gYSBkZXNrdG9wIG5vdGlmaWNhdGlvbi4KICAgICB2b2lk
IHNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworI2VuZGlmCiAKICAgICAvLyBTcGVlY2ggaW5wdXQgcmVsYXRlZCBm
dW5jdGlvbnMuCisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogICAgIHZv
aWQgYWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHdhc01vY2tTcGVl
Y2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworI2VuZGlmCiAKICAgICB2b2lkIGRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTY3NiwxMCArNjgyLDEwIEBAIHByaXZhdGU6
CiAgICAgV2ViS2l0OjpXZWJGcmFtZSogbV90b3BMb2FkaW5nRnJhbWU7CiAKICAgICAvLyBNb2Nr
IG9iamVjdCBmb3IgdGVzdGluZyBkZWxpdmVyaW5nIHdlYiBpbnRlbnRzLgotICAgIHN0ZDo6YXV0
b19wdHI8V2ViS2l0OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50Owor
ICAgIE93blB0cjxXZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudD4gbV9pbnRlbnRDbGll
bnQ7CiAKICAgICAvLyBXZWJQZXJtaXNzaW9uQ2xpZW50IG1vY2sgb2JqZWN0LgotICAgIHN0ZDo6
YXV0b19wdHI8V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CisgICAgT3duUHRyPFdl
YlBlcm1pc3Npb25zPiBtX3dlYlBlcm1pc3Npb25zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCBmNWY5YjJhZTgwOTJhMzc4YzMyNjUyM2FkZjM3
YTE4YWE5NDQwNTUyLi4zMjI1Y2I5MGM0MmE2ZWViYmJhYjU5NDcwNzJlMzJhNGE3YTIwMjgwIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXh0SW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcApAQCAtMzEsNyArMzEsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRyb2xsZXIuaCIK
IAotI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJCaW5kaW5ncy5oIgogI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
QEAgLTQxLDkgKzQwLDkgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlZlY3Rvci5oPgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYv
U3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTE0Nyw3ICsxNDYsNyBA
QCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdAogICAgICAgICByZXR1cm47CiAKICAgICBXZWJSYW5n
ZSByYW5nZSA9IG1haW5GcmFtZS0+bWFya2VkUmFuZ2UoKTsKLSAgICB2ZWN0b3I8aW50PiBpbnRB
cnJheSgyKTsKKyAgICBWZWN0b3I8aW50PiBpbnRBcnJheSgyKTsKICAgICBpbnRBcnJheVswXSA9
IHJhbmdlLnN0YXJ0T2Zmc2V0KCk7CiAgICAgaW50QXJyYXlbMV0gPSByYW5nZS5lbmRPZmZzZXQo
KTsKICAgICByZXN1bHQtPnNldChXZWJCaW5kaW5nczo6bWFrZUludEFycmF5KGludEFycmF5KSk7
CkBAIC0xNjIsNyArMTYxLDcgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJh
bmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3UKICAgICAgICAgcmV0
dXJuOwogCiAgICAgV2ViUmFuZ2UgcmFuZ2UgPSBtYWluRnJhbWUtPnNlbGVjdGlvblJhbmdlKCk7
Ci0gICAgdmVjdG9yPGludD4gaW50QXJyYXkoMik7CisgICAgVmVjdG9yPGludD4gaW50QXJyYXko
Mik7CiAgICAgaW50QXJyYXlbMF0gPSByYW5nZS5zdGFydE9mZnNldCgpOwogICAgIGludEFycmF5
WzFdID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6Om1h
a2VJbnRBcnJheShpbnRBcnJheSkpOwpAQCAtMTgzLDcgKzE4Miw3IEBAIHZvaWQgVGV4dElucHV0
Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1CiAgICAgaWYgKCFmcmFtZS0+Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoYXJn
dW1lbnRzWzBdLnRvSW50MzIoKSwgYXJndW1lbnRzWzFdLnRvSW50MzIoKSwgcmVjdCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHZlY3RvcjxpbnQ+IGludEFycmF5KDQpOworICAgIFZlY3Rvcjxp
bnQ+IGludEFycmF5KDQpOwogICAgIGludEFycmF5WzBdID0gcmVjdC54OwogICAgIGludEFycmF5
WzFdID0gcmVjdC55OwogICAgIGludEFycmF5WzJdID0gcmVjdC53aWR0aDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVu
Y2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlByZWZlcmVuY2VzLmNwcAppbmRleCAyMzkwOTM1MTg3NjE5MWRkMzdmYmRmZjAxNzJmNTkxNGRi
ZmZmYTBiLi45OTMzZmE4Yzc2NjRlZjE4MGEwZjE3M2JhMjBhY2FmMGM3NDYwNmUzIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJU
ZXN0UnVubmVyIHsKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXQoKQogewotI2lmZGVmIF9f
QVBQTEVfXworI2lmIE9TKE1BQ19PU19YKQogICAgIGN1cnNpdmVGb250RmFtaWx5ID0gV2ViU3Ry
aW5nOjpmcm9tVVRGOCgiQXBwbGUgQ2hhbmNlcnkiKTsKICAgICBmYW50YXN5Rm9udEZhbWlseSA9
IFdlYlN0cmluZzo6ZnJvbVVURjgoIlBhcHlydXMiKTsKICAgICBXZWJTdHJpbmcgc2VyaWYgPSBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJUaW1lcyIpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2Vi
UHJlZmVyZW5jZXM6OnJlc2V0KCkKICAgICAvLyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
LCB0byBhY2Nlc3MgaHR0cCBzZXJ2ZXIuCiAgICAgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHMgPSB0cnVlOwogCi0jaWZkZWYgX19BUFBMRV9fCisjaWYgT1MoREFSV0lOKQogICAgIGVk
aXRpbmdCZWhhdmlvciA9IFdlYlNldHRpbmdzOjpFZGl0aW5nQmVoYXZpb3JNYWM7CiAjZWxzZQog
ICAgIGVkaXRpbmdCZWhhdmlvciA9IFdlYlNldHRpbmdzOjpFZGl0aW5nQmVoYXZpb3JXaW47CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUYXNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRhc2suY3BwCmluZGV4IDc3OWY1M2U1OGFlODU0MjIyZWQ4NTZmM2YxNTIwYzE4NGVhYWJh
MDIuLjk3NTMxYzgwZGUxNDU0OWVjMGZhMWMwNTFjYzVkMDgxMGYyYmQ0ZjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRh
c2suY3BwCkBAIC0zMiw5ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViVGFzay5oIgogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewog
CkBAIC01MCwzMSArNDgsMzYgQEAgV2ViVGFzazo6fldlYlRhc2soKQogICAgICAgICBtX3Rhc2tM
aXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKIH0KIAorY2xhc3MgV2ViVGFza0xpc3Q6OlByaXZh
dGUgOiBwdWJsaWMgVmVjdG9yPFdlYlRhc2sqPiB7Cit9OworCiBXZWJUYXNrTGlzdDo6V2ViVGFz
a0xpc3QoKQorICAgIDogbV9wcml2YXRlKG5ldyBQcml2YXRlKQogewogfQogCiBXZWJUYXNrTGlz
dDo6fldlYlRhc2tMaXN0KCkKIHsKICAgICByZXZva2VBbGwoKTsKKyAgICBkZWxldGUgbV9wcml2
YXRlOwogfQogCiB2b2lkIFdlYlRhc2tMaXN0OjpyZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykK
IHsKLSAgICBtX3Rhc2tzLnB1c2hfYmFjayh0YXNrKTsKKyAgICBtX3ByaXZhdGUtPmFwcGVuZCh0
YXNrKTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6dW5yZWdpc3RlclRhc2soV2ViVGFzayogdGFz
aykKIHsKLSAgICB2ZWN0b3I8V2ViVGFzayo+OjppdGVyYXRvciBpdGVyID0gZmluZChtX3Rhc2tz
LmJlZ2luKCksIG1fdGFza3MuZW5kKCksIHRhc2spOwotICAgIGlmIChpdGVyICE9IG1fdGFza3Mu
ZW5kKCkpCi0gICAgICAgIG1fdGFza3MuZXJhc2UoaXRlcik7CisgICAgc2l6ZV90IGluZGV4ID0g
bV9wcml2YXRlLT5maW5kKHRhc2spOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAg
ICAgbV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOwogfQogCiB2b2lkIFdlYlRhc2tMaXN0OjpyZXZv
a2VBbGwoKQogewotICAgIHdoaWxlICghbV90YXNrcy5lbXB0eSgpKQotICAgICAgICBtX3Rhc2tz
WzBdLT5jYW5jZWwoKTsKKyAgICB3aGlsZSAoIW1fcHJpdmF0ZS0+aXNFbXB0eSgpKQorICAgICAg
ICAoKm1fcHJpdmF0ZSlbMF0tPmNhbmNlbCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
SW50ZXJmYWNlcy5jcHAKaW5kZXggN2I1ODI4ZGY5Yjk5ZDY4ZDMzZWE0Njc3MzllZTIxMjNhNTM3
NjU3My4uODkyNjNiZDdiZTAzOWY2NGNiZmZiOTE0MWFlN2IwNjg4NGExNzdkNyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdElu
dGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApAQCAtMzksMTIgKzM5LDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIFdlYlRlc3RJbnRl
cmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcygpCi0gICAgOiBtX2ludGVyZmFjZXMobmV3IFRlc3RJ
bnRlcmZhY2VzKCkpCiB7CisgICAgbV9pbnRlcmZhY2VzID0gbmV3IFRlc3RJbnRlcmZhY2VzOwog
fQogCiBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKCkKIHsKKyAgICBkZWxl
dGUgbV9pbnRlcmZhY2VzOwogfQogCiB2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3
KFdlYlZpZXcqIHdlYlZpZXcpCkBAIC04NCw3ICs4NSw3IEBAIFdlYlRlc3RSdW5uZXIqIFdlYlRl
c3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKIAogVGVzdEludGVyZmFjZXMqIFdlYlRlc3RJbnRl
cmZhY2VzOjp0ZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJmYWNlcy5nZXQo
KTsKKyAgICByZXR1cm4gbV9pbnRlcmZhY2VzOwogfQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5
LmNwcAppbmRleCA1ZWEwZTg0ZDg4OWNmZDBhNzY5YjkwOTc2ZjY5ZGU2ZWRlNDg4NmIzLi42NDcw
ZjBhNDExMjJmOWM5ZmMzNzFkYWNhYmE1MzkzOTM1YWQyNzU5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQ
cm94eS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJTcGVs
bENoZWNrQ2xpZW50LmgiCi0jaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIlRlc3RJ
bnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiVGVzdFBsdWdpbi5oIgogI2luY2x1ZGUgIlRlc3RSdW5u
ZXIuaCIKQEAgLTU5LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMRXJyb3IuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVxdWVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJV
UkxSZXNwb25zZS5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0yMTIsNyArMjEyLDcgQEAg
c3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBzdHJpbmcmIHVybCkKIAogICAg
IHNpemVfdCBwb3MgPSB1cmwucmZpbmQoJy8nKTsKICAgICBpZiAocG9zID09IHN0cmluZzo6bnBv
cykgewotI2lmZGVmIFdJTjMyCisjaWYgT1MoV0lORE9XUykKICAgICAgICAgcG9zID0gdXJsLnJm
aW5kKCdcXCcpOwogICAgICAgICBpZiAocG9zID09IHN0cmluZzo6bnBvcykKICAgICAgICAgICAg
IHBvcyA9IDA7CkBAIC0yNjcsNiArMjY3LDcgQEAgV2ViVGVzdFByb3h5QmFzZTo6V2ViVGVzdFBy
b3h5QmFzZSgpCiAKIFdlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlCYXNlKCkKIHsKKyAg
ICBkZWxldGUgbV9zcGVsbGNoZWNrOwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldElu
dGVyZmFjZXMoV2ViVGVzdEludGVyZmFjZXMqIGludGVyZmFjZXMpCkBAIC0yODksNyArMjkwLDcg
QEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpyZXNldCgpCiAKIFdlYlNwZWxsQ2hlY2tDbGllbnQq
IFdlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hlY2tDbGllbnQoKSBjb25zdAogewotICAgIHJldHVy
biBtX3NwZWxsY2hlY2suZ2V0KCk7CisgICAgcmV0dXJuIG1fc3BlbGxjaGVjazsKIH0KIAogdm9p
ZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRQYWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKQEAg
LTU1NSwxNCArNTU2LDE0IEBAIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkRW5kRWRpdGluZygp
CiAKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKFdlYkZyYW1l
KiwgY29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mIHNlcnZpY2UpCiB7Ci0jaWYgRU5BQkxFX1dF
Ql9JTlRFTlRTCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIG1fZGVsZWdhdGUtPnByaW50
TWVzc2FnZShzdHJpbmcoIlJlZ2lzdGVyZWQgV2ViIEludGVudCBTZXJ2aWNlOiBhY3Rpb249Iikg
KyBzZXJ2aWNlLmFjdGlvbigpLnV0ZjgoKS5kYXRhKCkgKyAiIHR5cGU9IiArIHNlcnZpY2UudHlw
ZSgpLnV0ZjgoKS5kYXRhKCkgKyAiIHRpdGxlPSIgKyBzZXJ2aWNlLnRpdGxlKCkudXRmOCgpLmRh
dGEoKSArICIgdXJsPSIgKyBzZXJ2aWNlLnVybCgpLnNwZWMoKS5kYXRhKCkgKyAiIGRpc3Bvc2l0
aW9uPSIgKyBzZXJ2aWNlLmRpc3Bvc2l0aW9uKCkudXRmOCgpLmRhdGEoKSArICJcbiIpOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUq
IHNvdXJjZSwgY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEVf
V0VCX0lOVEVOVFMKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgbV9kZWxlZ2F0ZS0+cHJp
bnRNZXNzYWdlKHN0cmluZygiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIpICsgcmVxdWVz
dC5pbnRlbnQoKS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyByZXF1ZXN0Lmlu
dGVudCgpLnR5cGUoKS51dGY4KCkuZGF0YSgpICsgIlxuIik7CiAgICAgV2ViTWVzc2FnZVBvcnRD
aGFubmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9ydENoYW5uZWxz
UmVsZWFzZSgpOwogICAgIG1fZGVsZWdhdGUtPnNldEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KHJl
cXVlc3QpOwpAQCAtNzc3LDcgKzc3OCw3IEBAIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkRGV0
ZWN0WFNTKFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMJiwgYm9vbCkKIHZvaWQgV2ViVGVzdFByb3h5
QmFzZTo6YXNzaWduSWRlbnRpZmllclRvUmVxdWVzdChXZWJGcmFtZSosIHVuc2lnbmVkIGlkZW50
aWZpZXIsIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAo
bV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKCkpIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVChtX3Jlc291cmNlSWRlbnRpZmllck1h
cC5maW5kKGlkZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmZpbmQoaWRlbnRpZmllcikgPT0g
bV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZW5kKCkpOwogICAgICAgICBtX3Jlc291cmNlSWRlbnRp
Zmllck1hcFtpZGVudGlmaWVyXSA9IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJl
cXVlc3QudXJsKCkuc3BlYygpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9jb25maWcuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMmZjNmY0MWMyNjYzZThmMTVlY2JhZWM5YTQ3ZWZkNzhmYTkzNDk2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgY29uZmlnX2gKLSNkZWZpbmUgY29uZmlnX2gKLQotI2Rl
ZmluZSBVU0UoZmVhdHVyZSkgKGRlZmluZWQgV1RGX1VTRV8jI2ZlYXR1cmUgJiYgV1RGX1VTRV8j
I2ZlYXR1cmUpCi0KLSNlbmRpZiAvLyBjb25maWdfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>