<?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>109706</bug_id>
          
          <creation_ts>2013-02-13 09:11:48 -0800</creation_ts>
          <short_desc>[chromium] move mock notification presenter to TestRunner library</short_desc>
          <delta_ts>2013-02-14 00:09:25 -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>91308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>831959</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-13 09:11:48 -0800</bug_when>
    <thetext>[chromium] move mock notification presenter to TestRunner library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831960</commentid>
    <comment_count>1</comment_count>
      <attachid>188095</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-13 09:13:37 -0800</bug_when>
    <thetext>Created attachment 188095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831961</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 09:17:11 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831965</commentid>
    <comment_count>3</comment_count>
      <attachid>188095</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-13 09:23:58 -0800</bug_when>
    <thetext>Comment on attachment 188095
Patch

Attachment 188095 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16487964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832028</commentid>
    <comment_count>4</comment_count>
      <attachid>188115</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-13 10:20:48 -0800</bug_when>
    <thetext>Created attachment 188115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832110</commentid>
    <comment_count>5</comment_count>
      <attachid>188115</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 11:33:03 -0800</bug_when>
    <thetext>Comment on attachment 188115
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=188115&amp;action=review

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/NotificationPresenter.h:44
&gt; +// A class that implements WebNotificationPresenter for DRT.

DRT &lt;--- I&apos;d probably change this comment slightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832115</commentid>
    <comment_count>6</comment_count>
      <attachid>188132</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-13 11:41:02 -0800</bug_when>
    <thetext>Created attachment 188132
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832782</commentid>
    <comment_count>7</comment_count>
      <attachid>188132</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 00:09:20 -0800</bug_when>
    <thetext>Comment on attachment 188132
Patch for landing

Clearing flags on attachment: 188132

Committed r142857: &lt;http://trac.webkit.org/changeset/142857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832783</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 00:09:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188095</attachid>
            <date>2013-02-13 09:13:37 -0800</date>
            <delta_ts>2013-02-13 10:20:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109706-20130213181005.patch</filename>
            <type>text/plain</type>
            <size>37191</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTIwOGUxMTE3NDk2ZTE0OTNkZTBmYTkyMzAwZWM5ZGJj
ZWJmYzA1Yy4uYmQ4YTg2MTg0NGI1YzI1MTkwMjNjYjM5YzMwZDgzYTNhOWZiODBjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDEzLTAyLTEzICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBtb2NrIG5vdGlmaWNhdGlvbiBwcmVzZW50ZXIgdG8g
VGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVn
YXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdFByb3h5Ojpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNlbnRl
ci5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Ob3RpZmlj
YXRpb25QcmVzZW50ZXIuY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6On5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyOjpncmFudFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyOjpzaW11bGF0ZUNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6c2hvdyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6Om9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNoZWNrUGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9O
b3RpZmljYXRpb25QcmVzZW50ZXIuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5oLgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNpbXVsYXRl
TGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpub3RpZmljYXRpb25Q
cmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFRlc3RTaGVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0Lmg6CisKIDIwMTMtMDItMTMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBSZW1vdmUgd2ViIGludGVudHMgY2FsbGJhY2tz
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCA0MWIxODQzMGQ5
YzEyNmY2Y2JhNDk5NWM5NjRjOGVlNjg3YjIxODY2Li4wYjljZTM1MGVjMzk1YmJkZTA0OWRlMTNj
YjI0NjU3ZDIzZDVhOGRmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKQEAgLTE2LDggKzE2LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rhc2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGFzay5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCcsCkBAIC03Nyw2
ICs3NSw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNl
bnRlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Ob3RpZmljYXRp
b25QcmVzZW50ZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9T
cGVsbENoZWNrQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvU3BlbGxDaGVja0NsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0Q29tbW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjIzNzI2N2ZkMTdmNTU2NWQ0MGNiNjQ3MTk5NTNiNmZhYThiZjc2NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAiV2ViTm90
aWZpY2F0aW9uLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJnb29nbGV1cmwv
c3JjL2d1cmwuaCIKLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJs
aWMvV2ViU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIFdlYlN0cmluZyBpZGVudGlmaWVyRm9yTm90
aWZpY2F0aW9uKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQotewotICAgIGlm
IChub3RpZmljYXRpb24uaXNIVE1MKCkpCi0gICAgICAgIHJldHVybiBub3RpZmljYXRpb24udXJs
KCkuc3BlYygpLnV0ZjE2KCk7Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlvbi50aXRsZSgpOwotfQot
Ci1zdGF0aWMgdm9pZCBkZWZlcnJlZERpc3BsYXlEaXNwYXRjaCh2b2lkKiBjb250ZXh0KQotewot
ICAgIFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8V2ViTm90aWZp
Y2F0aW9uKj4oY29udGV4dCk7Ci0gICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaERpc3BsYXlFdmVu
dCgpOwotICAgIGRlbGV0ZSBub3RpZmljYXRpb247Ci19Ci0KLU5vdGlmaWNhdGlvblByZXNlbnRl
cjo6fk5vdGlmaWNhdGlvblByZXNlbnRlcigpCi17Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uUHJl
c2VudGVyOjpncmFudFBlcm1pc3Npb24oY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAg
bV9hbGxvd2VkT3JpZ2lucy5hZGQoV1RGOjpTdHJpbmcob3JpZ2luLmRhdGEoKSwgb3JpZ2luLmxl
bmd0aCgpKSk7Ci19Ci0KLWJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaW11bGF0ZUNsaWNr
KGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCi17Ci0gICAgV1RGOjpTdHJpbmcgaWQodGl0bGUuZGF0
YSgpLCB0aXRsZS5sZW5ndGgoKSk7Ci0gICAgaWYgKG1fYWN0aXZlTm90aWZpY2F0aW9ucy5maW5k
KGlkKSA9PSBtX2FjdGl2ZU5vdGlmaWNhdGlvbnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICBjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiA9IG1fYWN0
aXZlTm90aWZpY2F0aW9ucy5maW5kKGlkKS0+dmFsdWU7Ci0gICAgV2ViTm90aWZpY2F0aW9uIGV2
ZW50VGFyZ2V0KG5vdGlmaWNhdGlvbik7Ci0gICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hDbGlja0V2
ZW50KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRoZSBvdXRwdXQgZnJvbSBhbGwgdGhl
c2UgbWV0aG9kcyBtYXRjaGVzIHdoYXQgRHVtcFJlbmRlclRyZWUgcHJvZHVjZXMuCi1ib29sIE5v
dGlmaWNhdGlvblByZXNlbnRlcjo6c2hvdyhjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNh
dGlvbikKLXsKLSAgICBXZWJTdHJpbmcgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JOb3RpZmlj
YXRpb24obm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbi5yZXBsYWNlSWQoKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgV1RGOjpTdHJpbmcgcmVwbGFjZUlkKG5vdGlmaWNhdGlvbi5y
ZXBsYWNlSWQoKS5kYXRhKCksIG5vdGlmaWNhdGlvbi5yZXBsYWNlSWQoKS5sZW5ndGgoKSk7Ci0g
ICAgICAgIGlmIChtX3JlcGxhY2VtZW50cy5maW5kKHJlcGxhY2VJZCkgIT0gbV9yZXBsYWNlbWVu
dHMuZW5kKCkpCi0gICAgICAgICAgICBwcmludGYoIlJFUExBQ0lORyBOT1RJRklDQVRJT04gJXNc
biIsCi0gICAgICAgICAgICAgICAgICAgbV9yZXBsYWNlbWVudHMuZmluZChyZXBsYWNlSWQpLT52
YWx1ZS51dGY4KCkuZGF0YSgpKTsKLQotICAgICAgICBtX3JlcGxhY2VtZW50cy5zZXQocmVwbGFj
ZUlkLCBXVEY6OlN0cmluZyhpZGVudGlmaWVyLmRhdGEoKSwgaWRlbnRpZmllci5sZW5ndGgoKSkp
OwotICAgIH0KLQotICAgIGlmIChub3RpZmljYXRpb24uaXNIVE1MKCkpIHsKLSAgICAgICAgcHJp
bnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgJXNcbiIsCi0gICAgICAgICAg
ICAgICBub3RpZmljYXRpb24udXJsKCkuc3BlYygpLmRhdGEoKSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjolcyBpY29uICVzLCB0aXRsZSAlcywg
dGV4dCAlc1xuIiwKLSAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5kaXJlY3Rpb24oKSA9PSBX
ZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQgPyAiKFJUTCkiIDogIiIsCi0gICAgICAgICAgICAg
ICBub3RpZmljYXRpb24uaWNvblVSTCgpLmlzRW1wdHkoKSA/ICIiIDoKLSAgICAgICAgICAgICAg
IG5vdGlmaWNhdGlvbi5pY29uVVJMKCkuc3BlYygpLmRhdGEoKSwKLSAgICAgICAgICAgICAgIG5v
dGlmaWNhdGlvbi50aXRsZSgpLmlzRW1wdHkoKSA/ICIiIDoKLSAgICAgICAgICAgICAgIG5vdGlm
aWNhdGlvbi50aXRsZSgpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICBub3RpZmljYXRp
b24uYm9keSgpLmlzRW1wdHkoKSA/ICIiIDoKLSAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5i
b2R5KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQotCi0gICAgV1RGOjpTdHJpbmcgaWQoaWRlbnRp
Zmllci5kYXRhKCksIGlkZW50aWZpZXIubGVuZ3RoKCkpOwotICAgIG1fYWN0aXZlTm90aWZpY2F0
aW9ucy5zZXQoaWQsIG5vdGlmaWNhdGlvbik7Ci0KLSAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
YWxsT25NYWluVGhyZWFkKGRlZmVycmVkRGlzcGxheURpc3BhdGNoLCBuZXcgV2ViTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbikpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6Y2FuY2VsKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQotewotICAgIFdlYlN0cmluZyBpZGVudGlmaWVyID0gaWRlbnRpZmllckZvck5vdGlmaWNhdGlv
bihub3RpZmljYXRpb24pOwotICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT04gQ0xPU0VE
OiAlc1xuIiwgaWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICBXZWJOb3RpZmljYXRpb24g
ZXZlbnRUYXJnZXQobm90aWZpY2F0aW9uKTsKLSAgICBldmVudFRhcmdldC5kaXNwYXRjaENsb3Nl
RXZlbnQoZmFsc2UpOwotCi0gICAgV1RGOjpTdHJpbmcgaWQoaWRlbnRpZmllci5kYXRhKCksIGlk
ZW50aWZpZXIubGVuZ3RoKCkpOwotICAgIG1fYWN0aXZlTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQp
OwotfQotCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6b2JqZWN0RGVzdHJveWVkKGNvbnN0
IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCi17Ci0gICAgV2ViU3RyaW5n
IGlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7Ci0g
ICAgV1RGOjpTdHJpbmcgaWQoaWRlbnRpZmllci5kYXRhKCksIGlkZW50aWZpZXIubGVuZ3RoKCkp
OwotICAgIG1fYWN0aXZlTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQpOwotfQotCi1XZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyOjpjaGVja1Bl
cm1pc3Npb24oY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKLXsKLSAgICAvLyBDaGVj
ayB3aXRoIHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyCi0gICAgV2ViU3RyaW5nIG9yaWdpblN0
cmluZyA9IG9yaWdpbi50b1N0cmluZygpOwotICAgIGJvb2wgYWxsb3dlZCA9IG1fYWxsb3dlZE9y
aWdpbnMuZmluZChXVEY6OlN0cmluZyhvcmlnaW5TdHJpbmcuZGF0YSgpLCBvcmlnaW5TdHJpbmcu
bGVuZ3RoKCkpKSAhPSBtX2FsbG93ZWRPcmlnaW5zLmVuZCgpOwotICAgIHJldHVybiBhbGxvd2Vk
ID8gV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uQWxsb3dlZAotICAgICAgICA6
IFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbkRlbmllZDsKLX0KLQotdm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKAotICAgIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4sCi0gICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrKiBjYWxsYmFjaykKLXsKLSAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1J
U1NJT04gUkVRVUVTVEVEOiAlc1xuIiwKLSAgICAgICAgICAgb3JpZ2luLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgY2FsbGJhY2stPnBlcm1pc3Npb25SZXF1ZXN0Q29tcGxldGUoKTsK
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9O
b3RpZmljYXRpb25QcmVzZW50ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL05v
dGlmaWNhdGlvblByZXNlbnRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOThj
YzcyOTQ4NzhkNjc1ZjkwM2VmMDFhMGY0Mzk5ZDA0Y2JkODMzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L05vdGlmaWNhdGlvblByZXNlbnRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgTm90aWZpY2F0aW9uUHJlc2VudGVyX2gKLSNkZWZpbmUgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyX2gKLQotI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgotI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvblByZXNlbnRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLWNsYXNzIFRlc3RTaGVsbDsKLQotLy8gQSBjbGFz
cyB0aGF0IGltcGxlbWVudHMgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGZvciBEUlQuCi1jbGFz
cyBOb3RpZmljYXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IE5vdGlmaWNhdGlvblByZXNlbnRlcihU
ZXN0U2hlbGwqKSB7IH0KLSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKTsKLQot
ICAgIC8vIENhbGxlZCBieSB0aGUgRFJUVGVzdFJ1bm5lciB0byBzaW11bGF0ZSBhIHVzZXIgZ3Jh
bnRpbmcgcGVybWlzc2lvbi4KLSAgICB2b2lkIGdyYW50UGVybWlzc2lvbihjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgb3JpZ2luKTsKLQotICAgIC8vIENhbGxlZCBieSB0aGUgRFJUVGVzdFJ1bm5l
ciB0byBzaW11bGF0ZSBhIHVzZXIgY2xpY2tpbmcgb24gYSBub3RpZmljYXRpb24uCi0gICAgYm9v
bCBzaW11bGF0ZUNsaWNrKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBub3RpZmljYXRpb25JZGVu
dGlmaWVyKTsKLQotICAgIC8vIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGludGVy
ZmFjZQotICAgIHZpcnR1YWwgYm9vbCBzaG93KGNvbnN0IFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbChjb25zdCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCBvYmplY3REZXN0cm95ZWQoY29uc3QgV2ViS2l0OjpXZWJO
b3RpZmljYXRpb24mKTsKLSAgICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKGNv
bnN0IFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oY29uc3QgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKik7Ci0KLSAgICB2b2lkIHJlc2V0KCkgeyBt
X2FsbG93ZWRPcmlnaW5zLmNsZWFyKCk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBTZXQgb2YgYWxs
b3dlZCBvcmlnaW5zLgotICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fYWxsb3dlZE9yaWdpbnM7
Ci0KLSAgICAvLyBNYXAgb2YgYWN0aXZlIG5vdGlmaWNhdGlvbnMuCi0gICAgSGFzaE1hcDxXVEY6
OlN0cmluZywgV2ViS2l0OjpXZWJOb3RpZmljYXRpb24+IG1fYWN0aXZlTm90aWZpY2F0aW9uczsK
LQotICAgIC8vIE1hcCBvZiBhY3RpdmUgcmVwbGFjZW1lbnQgSURzIHRvIHRoZSB0aXRsZXMgb2Yg
dGhvc2Ugbm90aWZpY2F0aW9ucwotICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5n
PiBtX3JlcGxhY2VtZW50czsKLX07Ci0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25QcmVzZW50ZXJf
aApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCA4MmJhYjU3ODIxMGU1Yzg2
MTJkYjA3YzYwNTMyN2E4MjQ0MTI3YzViLi4yODU2YzdkNThiODY1MjZhNjdlOWEyYjJjMjBlMmUy
NzllODM4NGRmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtOTQsOCAr
OTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3Qgc3Rk
OjpzdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2ltdWxhdGVMZWdhY3lXZWJOb3RpZmlj
YXRpb25DbGljayhjb25zdCBzdGQ6OnN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYsIGRv
dWJsZSwgY29uc3Qgc3RkOjpzdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1Nw
ZWVjaElucHV0RHVtcFJlY3QoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZE1vY2tTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYsIGRvdWJsZSkgeyB9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RQcm94eS5oCmluZGV4IGIyMmVkOTQ5ZjhiNzZkYTJhMThmNDY1NTM5M2I3
ZTcwNzI5NTYzMjUuLjE1ZjU2MGJiYTk5NjI3OGRmMDc0MDhiZGI2M2E3ZjQyYWE1N2EyNzIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFdlYkRy
YWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYk5vZGU7
CitjbGFzcyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFz
cyBXZWJSYW5nZTsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKQEAgLTEzMSw2ICsx
MzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJG
cmFtZSosIGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhJik7CiAgICAgV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogICAgIHZvaWQgcHJpbnRQYWdl
KFdlYktpdDo6V2ViRnJhbWUqKTsKKyAgICBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRl
ciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViVVJMJiBmcm9tLCBj
b25zdCBXZWJLaXQ6OldlYlVSTCYgdG8sIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVfdGlt
ZSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYkZyYW1lKik7
CkBAIC0zMzcsNiArMzM5LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYlRlc3RQcm94
eUJhc2U6OnByaW50UGFnZShmcmFtZSk7CiAgICAgfQorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpCisgICAgeworICAg
ICAgICByZXR1cm4gV2ViVGVzdFByb3h5QmFzZTo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Cisg
ICAgfQogCiAgICAgLy8gV2ViRnJhbWVDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVh
bCB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFdlYktpdDo6V2ViVVJMJiBmcm9tLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgdG8sIGRv
dWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVUaW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNh
dGlvblByZXNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFjMWJhMDJkNjI2NjEwNjg2OGZjMDEwNDMx
NDQxNzdhZGU4NTk5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKQEAgLTAsMCAr
MSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24u
aCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgor
I2luY2x1ZGUgImdvb2dsZXVybC9zcmMvZ3VybC5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
VVJMLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwor
CituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFjZSB7CisKK1dlYlN0cmluZyBp
ZGVudGlmaWVyRm9yTm90aWZpY2F0aW9uKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0
aW9uKQoreworICAgIGlmIChub3RpZmljYXRpb24uaXNIVE1MKCkpCisgICAgICAgIHJldHVybiBu
b3RpZmljYXRpb24udXJsKCkuc3BlYygpLnV0ZjE2KCk7CisgICAgcmV0dXJuIG5vdGlmaWNhdGlv
bi50aXRsZSgpOworfQorCit2b2lkIGRlZmVycmVkRGlzcGxheURpc3BhdGNoKHZvaWQqIGNvbnRl
eHQpCit7CisgICAgV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBzdGF0aWNfY2FzdDxX
ZWJOb3RpZmljYXRpb24qPihjb250ZXh0KTsKKyAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRGlz
cGxheUV2ZW50KCk7CisgICAgZGVsZXRlIG5vdGlmaWNhdGlvbjsKK30KKworfQorCitOb3RpZmlj
YXRpb25QcmVzZW50ZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcigpCisgICAgOiBtX2RlbGVnYXRl
KDApCit7Cit9CisKK05vdGlmaWNhdGlvblByZXNlbnRlcjo6fk5vdGlmaWNhdGlvblByZXNlbnRl
cigpCit7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpncmFudFBlcm1pc3Npb24o
Y29uc3QgV2ViU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9hbGxvd2VkT3JpZ2lucy5pbnNlcnQo
b3JpZ2luLnV0ZjgoKSk7Cit9CisKK2Jvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaW11bGF0
ZUNsaWNrKGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCit7CisgICAgc3RyaW5nIGlkKHRpdGxlLnV0
ZjgoKSk7CisgICAgaWYgKG1fYWN0aXZlTm90aWZpY2F0aW9ucy5maW5kKGlkKSA9PSBtX2FjdGl2
ZU5vdGlmaWNhdGlvbnMuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0
IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uID0gbV9hY3RpdmVOb3RpZmljYXRpb25zLmZp
bmQoaWQpLT5zZWNvbmQ7CisgICAgV2ViTm90aWZpY2F0aW9uIGV2ZW50VGFyZ2V0KG5vdGlmaWNh
dGlvbik7CisgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hDbGlja0V2ZW50KCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKy8vIFRoZSBvdXRwdXQgZnJvbSBhbGwgdGhlc2UgbWV0aG9kcyBtYXRjaGVz
IHdoYXQgRHVtcFJlbmRlclRyZWUgcHJvZHVjZXMuCitib29sIE5vdGlmaWNhdGlvblByZXNlbnRl
cjo6c2hvdyhjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICBXZWJT
dHJpbmcgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
KTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbi5yZXBsYWNlSWQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgc3RyaW5nIHJlcGxhY2VJZChub3RpZmljYXRpb24ucmVwbGFjZUlkKCkudXRmOCgpKTsKKyAg
ICAgICAgaWYgKG1fcmVwbGFjZW1lbnRzLmZpbmQocmVwbGFjZUlkKSAhPSBtX3JlcGxhY2VtZW50
cy5lbmQoKSkKKyAgICAgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIlJF
UExBQ0lORyBOT1RJRklDQVRJT04gIikgKyBtX3JlcGxhY2VtZW50cy5maW5kKHJlcGxhY2VJZCkt
PnNlY29uZCArICJcbiIpOworCisgICAgICAgIG1fcmVwbGFjZW1lbnRzW3JlcGxhY2VJZF0gPSBp
ZGVudGlmaWVyLnV0ZjgoKTsKKyAgICB9CisKKyAgICBpZiAobm90aWZpY2F0aW9uLmlzSFRNTCgp
KQorICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJERVNLVE9QIE5PVElG
SUNBVElPTjogY29udGVudHMgYXQgIikgKyBzdHJpbmcobm90aWZpY2F0aW9uLnVybCgpLnNwZWMo
KSkgKyAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdl
KCJERVNLVE9QIE5PVElGSUNBVElPTjoiKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNz
YWdlKG5vdGlmaWNhdGlvbi5kaXJlY3Rpb24oKSA9PSBXZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xl
ZnQgPyAiKFJUTCkiIDogIiIpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIiBp
Y29uICIpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uobm90aWZpY2F0aW9uLmlj
b25VUkwoKS5pc0VtcHR5KCkgPyAiIiA6IG5vdGlmaWNhdGlvbi5pY29uVVJMKCkuc3BlYygpLmRh
dGEoKSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiLCB0aXRsZSAiKTsKKyAg
ICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKG5vdGlmaWNhdGlvbi50aXRsZSgpLmlzRW1w
dHkoKSA/ICIiIDogbm90aWZpY2F0aW9uLnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiLCB0ZXh0ICIpOworICAgICAgICBtX2RlbGVnYXRl
LT5wcmludE1lc3NhZ2Uobm90aWZpY2F0aW9uLmJvZHkoKS5pc0VtcHR5KCkgPyAiIiA6IG5vdGlm
aWNhdGlvbi5ib2R5KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50
TWVzc2FnZSgiXG4iKTsKKyAgICB9CisKKyAgICBzdHJpbmcgaWQoaWRlbnRpZmllci51dGY4KCkp
OworICAgIG1fYWN0aXZlTm90aWZpY2F0aW9uc1tpZF0gPSBub3RpZmljYXRpb247CisKKyAgICBQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jYWxsT25NYWluVGhyZWFkKGRlZmVycmVkRGlzcGxheURpc3Bh
dGNoLCBuZXcgV2ViTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikpOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2FuY2VsKGNvbnN0IFdlYk5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uKQoreworICAgIFdlYlN0cmluZyBpZGVudGlmaWVyID0gaWRl
bnRpZmllckZvck5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pOworICAgIG1fZGVsZWdhdGUtPnBy
aW50TWVzc2FnZShzdHJpbmcoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIENMT1NFRDogIikgKyBzdHJp
bmcoaWRlbnRpZmllci51dGY4KCkpICsgIlxuIik7CisgICAgV2ViTm90aWZpY2F0aW9uIGV2ZW50
VGFyZ2V0KG5vdGlmaWNhdGlvbik7CisgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hDbG9zZUV2ZW50
KGZhbHNlKTsKKworICAgIHN0cmluZyBpZChpZGVudGlmaWVyLnV0ZjgoKSk7CisgICAgbV9hY3Rp
dmVOb3RpZmljYXRpb25zLmVyYXNlKGlkKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXI6Om9iamVjdERlc3Ryb3llZChjb25zdCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYgbm90aWZp
Y2F0aW9uKQoreworICAgIFdlYlN0cmluZyBpZGVudGlmaWVyID0gaWRlbnRpZmllckZvck5vdGlm
aWNhdGlvbihub3RpZmljYXRpb24pOworICAgIHN0cmluZyBpZChpZGVudGlmaWVyLnV0ZjgoKSk7
CisgICAgbV9hY3RpdmVOb3RpZmljYXRpb25zLmVyYXNlKGlkKTsKK30KKworV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2hlY2tQZXJt
aXNzaW9uKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit7CisgICAgLy8gQ2hlY2sg
d2l0aCB0aGUgbGF5b3V0IHRlc3QgY29udHJvbGxlcgorICAgIFdlYlN0cmluZyBvcmlnaW5TdHJp
bmcgPSBvcmlnaW4udG9TdHJpbmcoKTsKKyAgICBib29sIGFsbG93ZWQgPSBtX2FsbG93ZWRPcmln
aW5zLmZpbmQoc3RyaW5nKG9yaWdpblN0cmluZy51dGY4KCkpKSAhPSBtX2FsbG93ZWRPcmlnaW5z
LmVuZCgpOworICAgIHJldHVybiBhbGxvd2VkID8gV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQ
ZXJtaXNzaW9uQWxsb3dlZAorICAgICAgICA6IFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVy
bWlzc2lvbkRlbmllZDsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3RQ
ZXJtaXNzaW9uKAorICAgIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCisgICAgV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKiBjYWxsYmFjaykKK3sKKyAgICBtX2RlbGVn
YXRlLT5wcmludE1lc3NhZ2UoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1JU1NJT04gUkVRVUVT
VEVEOiAiICsgc3RyaW5nKG9yaWdpbi50b1N0cmluZygpLnV0ZjgoKSkgKyAiXG4iKTsKKyAgICBj
YWxsYmFjay0+cGVybWlzc2lvblJlcXVlc3RDb21wbGV0ZSgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Ob3RpZmljYXRp
b25QcmVzZW50ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL05vdGlmaWNhdGlvblByZXNlbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZGNhYmMxOGMxNWE3N2Vk
MmE4ZDQyYmE5M2Y3NGI5MzYwNzljOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaApA
QCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25QcmVzZW50ZXJfaAorI2RlZmluZSBO
b3RpZmljYXRpb25QcmVzZW50ZXJfaAorCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCisj
aW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8bWFwPgorI2lu
Y2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVy
IHsKKworY2xhc3MgV2ViVGVzdERlbGVnYXRlOworCisvLyBBIGNsYXNzIHRoYXQgaW1wbGVtZW50
cyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIgZm9yIERSVC4KK2NsYXNzIE5vdGlmaWNhdGlvblBy
ZXNlbnRlciA6IHB1YmxpYyBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciB7CitwdWJs
aWM6CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CisgICAgdmlydHVhbCB+Tm90aWZpY2F0
aW9uUHJlc2VudGVyKCk7CisKKyAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSog
ZGVsZWdhdGUpIHsgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOyB9CisKKyAgICAvLyBDYWxsZWQgYnkg
dGhlIFRlc3RSdW5uZXIgdG8gc2ltdWxhdGUgYSB1c2VyIGdyYW50aW5nIHBlcm1pc3Npb24uCisg
ICAgdm9pZCBncmFudFBlcm1pc3Npb24oY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG9yaWdpbik7
CisKKyAgICAvLyBDYWxsZWQgYnkgdGhlIFRlc3RSdW5uZXIgdG8gc2ltdWxhdGUgYSB1c2VyIGNs
aWNraW5nIG9uIGEgbm90aWZpY2F0aW9uLgorICAgIGJvb2wgc2ltdWxhdGVDbGljayhjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgbm90aWZpY2F0aW9uSWRlbnRpZmllcik7CisKKyAgICAvLyBXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdyhjb25zdCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWwoY29uc3QgV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b2JqZWN0RGVzdHJveWVkKGNvbnN0IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJik7CisgICAgdmly
dHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihjb25zdCBXZWJLaXQ6OldlYlNlY3VyaXR5
T3JpZ2luJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGNvbnN0IFdlYktp
dDo6V2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjayopOworCisgICAgdm9pZCByZXNldCgpIHsgbV9hbGxvd2VkT3JpZ2lucy5jbGVhcigp
OyB9CisKK3ByaXZhdGU6CisgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOworCisgICAg
Ly8gU2V0IG9mIGFsbG93ZWQgb3JpZ2lucy4KKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbV9h
bGxvd2VkT3JpZ2luczsKKworICAgIC8vIE1hcCBvZiBhY3RpdmUgbm90aWZpY2F0aW9ucy4KKyAg
ICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgV2ViS2l0OjpXZWJOb3RpZmljYXRpb24+IG1fYWN0aXZl
Tm90aWZpY2F0aW9uczsKKworICAgIC8vIE1hcCBvZiBhY3RpdmUgcmVwbGFjZW1lbnQgSURzIHRv
IHRoZSB0aXRsZXMgb2YgdGhvc2Ugbm90aWZpY2F0aW9ucworICAgIHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCBzdGQ6OnN0cmluZz4gbV9yZXBsYWNlbWVudHM7Cit9OworCit9CisKKyNlbmRpZiAvLyBO
b3RpZmljYXRpb25QcmVzZW50ZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCBmODk4ZTFj
ZTMwYjhkZGMzMjUwNDM4NDMzNTRhZDNhMDM0ZjhkMGJmLi5lOGZkMGUxZjBhMTA5NmFiNTg4NTZk
YjM1NWI1OWNiYjNiMWM3NTFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKIAorI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIldlYkJpbmRpbmdzLmgi
CiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0
aW9uLmgiCkBAIC0xNDYsNiArMTQ3LDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAg
LCBtX2RlbGVnYXRlKDApCiAgICAgLCBtX3dlYlZpZXcoMCkKICAgICAsIG1fd2ViUGVybWlzc2lv
bnMobmV3IFdlYlBlcm1pc3Npb25zKQorICAgICwgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIobmV3
IE5vdGlmaWNhdGlvblByZXNlbnRlcikKIHsKICAgICAvLyBJbml0aWFsaXplIHRoZSBtYXAgdGhh
dCBhc3NvY2lhdGVzIG1ldGhvZHMgb2YgdGhpcyBjbGFzcyB3aXRoIHRoZSBuYW1lcwogICAgIC8v
IHRoZXkgd2lsbCB1c2Ugd2hlbiBjYWxsZWQgYnkgSmF2YVNjcmlwdC4gVGhlIGFjdHVhbCBiaW5k
aW5nIG9mIHRob3NlCkBAIC0zMjgsNiArMzMwLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZWxl
Z2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIG1fZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7CisgICAg
bV9ub3RpZmljYXRpb25QcmVzZW50ZXItPnNldERlbGVnYXRlKGRlbGVnYXRlKTsKIH0KIAogdm9p
ZCBUZXN0UnVubmVyOjpyZXNldCgpCkBAIC00MDcsNiArNDEwLDggQEAgdm9pZCBUZXN0UnVubmVy
OjpyZXNldCgpCiAKICAgICBtX3dlYlBlcm1pc3Npb25zLT5yZXNldCgpOwogCisgICAgbV9ub3Rp
ZmljYXRpb25QcmVzZW50ZXItPnJlc2V0KCk7CisKICAgICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgp
OwogICAgIG1fd29ya1F1ZXVlLnJlc2V0KCk7CiAKQEAgLTY1NSw2ICs2NjAsMTEgQEAgYm9vbCBU
ZXN0UnVubmVyOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAogICAg
IHJldHVybiBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9CiAKK1dlYk5vdGlm
aWNhdGlvblByZXNlbnRlciogVGVzdFJ1bm5lcjo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXIuZ2V0KCk7Cit9CisKIHZv
aWQgVGVzdFJ1bm5lcjo6c2hvd0RldlRvb2xzKCkKIHsKICAgICBtX2RlbGVnYXRlLT5zaG93RGV2
VG9vbHMoKTsKQEAgLTE3NjUsNyArMTc3NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Z3JhbnRXZWJO
b3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzCiAg
ICAgICAgIHJlc3VsdC0+c2V0KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X2RlbGVnYXRlLT5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oYXJndW1lbnRzWzBdLnRv
U3RyaW5nKCkpOworICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLT5ncmFudFBlcm1pc3Npb24o
V2ViU3RyaW5nOjpmcm9tVVRGOChhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkpOwogICAgIHJlc3Vs
dC0+c2V0KHRydWUpOwogfQogCkBAIC0xNzc1LDcgKzE3ODUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bQogICAgICAgICByZXN1bHQtPnNldChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgcmVzdWx0LT5zZXQobV9kZWxlZ2F0ZS0+c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmlj
YXRpb25DbGljayhhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkpOworICAgIHJlc3VsdC0+c2V0KG1f
bm90aWZpY2F0aW9uUHJlc2VudGVyLT5zaW11bGF0ZUNsaWNrKFdlYlN0cmluZzo6ZnJvbVVURjgo
YXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKaW5kZXggNjYwNTg0NTgwM2M0ZjJmMDk0
ZDViZDZlOGZmNTQxMzhkYzdkYWY0ZS4uOWYyMGE4MjEwNzRiMmY3NDJjODdiMTRmNjQ4MGVkMzAy
NmNiZDFhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAtNDcsMTIgKzQ3LDE0IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQXJyYXlCdWZmZXJWaWV3OworY2xhc3MgV2ViTm90aWZp
Y2F0aW9uUHJlc2VudGVyOwogY2xhc3MgV2ViUGVybWlzc2lvbkNsaWVudDsKIGNsYXNzIFdlYlZp
ZXc7CiB9CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAorY2xhc3MgTm90aWZpY2F0aW9u
UHJlc2VudGVyOwogY2xhc3MgV2ViUGVybWlzc2lvbnM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7
CiAKQEAgLTExNiw2ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRQ
b3N0TWVzc2FnZSgpIGNvbnN0OwogICAgIGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
KSBjb25zdDsKICAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNv
bnN0OworICAgIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25Q
cmVzZW50ZXIoKSBjb25zdDsKIAogICAgIC8vIEEgc2luZ2xlIGl0ZW0gaW4gdGhlIHdvcmsgcXVl
dWUuCiAgICAgY2xhc3MgV29ya0l0ZW0gewpAQCAtNjYwLDYgKzY2Myw4IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBXZWJQZXJtaXNzaW9uQ2xpZW50IG1vY2sgb2JqZWN0LgogICAgIHN0ZDo6YXV0b19w
dHI8V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CisKKyAgICBzdGQ6OmF1dG9fcHRy
PE5vdGlmaWNhdGlvblByZXNlbnRlcj4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRleCAzOThiMzIyYjExZmU1MzUyZTk2ZjE3ZDY2
MjJkZmI2M2NlZjNkMTQyLi4wYzcwZWE4MjAzNThlYzQ5NjBhNzgwNDNkOTBjNzI5ZjRkMDE0ZTRl
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKQEAgLTc5NCw2ICs3OTQsMTEgQEAgdm9pZCBX
ZWJUZXN0UHJveHlCYXNlOjpwcmludFBhZ2UoV2ViRnJhbWUqIGZyYW1lKQogICAgIGZyYW1lLT5w
cmludEVuZCgpOwogfQogCitXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIFdlYlRlc3RQcm94eUJh
c2U6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCit7CisgICAgcmV0dXJuIG1fdGVzdEludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKS0+bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Cit9CisKIHZvaWQgV2Vi
VGVzdFByb3h5QmFzZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgdG8sIGRvdWJsZSwgZG91YmxlKQogewogICAg
IGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNob3VsZER1bXBGcmFtZUxvYWRD
YWxsYmFja3MoKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAKaW5kZXggMWE2YmNkODdlODMzYTFiNjBjMDE3NWMzM2RhODMyYmM0MmE0ZTQ3NS4uMmU2YWNk
MjQ3Mzc3NWJlYWE3NmQ2MjJiOWZhMDk1MGNhMWE1YWE4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xNjMsOSArMTYzLDYgQEAgdm9pZCBUZXN0
U2hlbGw6OmluaXRpYWxpemUoTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydCogcGxhdGZvcm1TdXBw
b3J0KQogICAgIG1fdGVzdEludGVyZmFjZXMgPSBhZG9wdFB0cihuZXcgV2ViVGVzdEludGVyZmFj
ZXMoKSk7CiAgICAgcGxhdGZvcm1TdXBwb3J0LT5zZXRJbnRlcmZhY2VzKG1fdGVzdEludGVyZmFj
ZXMuZ2V0KCkpOwogICAgIG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBX
ZWJUZXN0SW50ZXJmYWNlcygpKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyID0gYWRv
cHRQdHIobmV3IE5vdGlmaWNhdGlvblByZXNlbnRlcih0aGlzKSk7Ci0jZW5kaWYKICNpZiBFTkFC
TEUoTElOS19QUkVSRU5ERVIpCiAgICAgbV9wcmVyZW5kZXJpbmdTdXBwb3J0ID0gYWRvcHRQdHIo
bmV3IE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCkpOwogI2VuZGlmCkBAIC0zMDksOSArMzA2
LDYgQEAgdm9pZCBUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xsZXIoKQogICAgIG1fdGVzdElu
dGVyZmFjZXMtPnJlc2V0QWxsKCk7CiAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzLT5yZXNl
dEFsbCgpOwogICAgIG1fd2ViVmlld0hvc3QtPnJlc2V0KCk7Ci0jaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBtX25vdGlmaWNhdGlv
blByZXNlbnRlci0+cmVzZXQoKTsKLSNlbmRpZgogI2lmIE9TKEFORFJPSUQpCiAgICAgd2Via2l0
X3N1cHBvcnQ6OlJlbGVhc2VNZWRpYVJlc291cmNlcygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IDMwOTFjZTcxOWFmYTYxNDQ5YjEzNzUz
ZGUzZDZhOTVkZDk3NTg3NmMuLjMwOTNiOTJhOWRmNDQ3NThhNzY2ZmVmYmJlNGVkN2U3YTNmYzI0
YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC0zMSw3
ICszMSw2IEBACiAjaWZuZGVmIFRlc3RTaGVsbF9oCiAjZGVmaW5lIFRlc3RTaGVsbF9oCiAKLSNp
bmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRlICJUZXN0RXZlbnRQcmlu
dGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJUZXN0SW50
ZXJmYWNlcy5oIgpAQCAtNDYsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRnJhbWU7Ci1jbGFzcyBXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXI7CiBjbGFzcyBXZWJUaHJlYWQ7CiBjbGFzcyBXZWJWaWV3OwogY2xhc3Mg
V2ViVVJMOwpAQCAtODUsOSArODMsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgaG9z
dCBmb3IgdGhlIG1haW4gV2ViVmlldy4KICAgICBXZWJWaWV3SG9zdCogd2ViVmlld0hvc3QoKSBj
b25zdCB7IHJldHVybiBtX3dlYlZpZXdIb3N0LmdldCgpOyB9CiAgICAgV2ViVGVzdFJ1bm5lcjo6
V2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKTsgfQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIE5vdGlm
aWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QgeyByZXR1cm4g
bV9ub3RpZmljYXRpb25QcmVzZW50ZXIuZ2V0KCk7IH0KLSNlbmRpZgogICAgIGNvbnN0IFRlc3RF
dmVudFByaW50ZXIqIHByaW50ZXIoKSBjb25zdCB7IHJldHVybiAmbV9wcmludGVyOyB9CiAKICAg
ICBXZWJUZXN0UnVubmVyOjpXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSB7IHJldHVybiAm
bV9wcmVmczsgfQpAQCAtMjAyLDkgKzE5Nyw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERSVERl
dlRvb2xzQ2xpZW50PiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0SW50ZXJmYWNlcz4gbV90ZXN0SW50ZXJmYWNlczsKICAgICBPd25QdHI8V2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM+IG1fZGV2VG9vbHNUZXN0SW50ZXJmYWNlczsK
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQotICAgIE93blB0cjxOb3RpZmljYXRpb25QcmVzZW50ZXI+IG1fbm90aWZpY2F0aW9uUHJlc2Vu
dGVyOwotI2VuZGlmCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIHRocmVhZCBpcyBk
ZXN0cm95ZWQgYWZ0ZXIgdGhlIFdlYlZpZXdIb3N0LgogICAgIE93blB0cjxXZWJLaXQ6OldlYlRo
cmVhZD4gbV93ZWJDb21wb3NpdG9yVGhyZWFkOwogICAgIE93blB0cjxXZWJWaWV3SG9zdD4gbV93
ZWJWaWV3SG9zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAppbmRleCBmZGNiN2ViMzZiZjYxOWVjMjRhYTE4NGUzYjQ1NTRmNjI0NzAyMGRiLi41ZDhm
ZWQzNmJjNjg2NmRkYmY3Y2RhN2ZlZjk0OTkyNDNmYjljNmJlIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0yNzAsMTMgKzI3MCw2IEBAIGlu
dCBXZWJWaWV3SG9zdDo6aGlzdG9yeUZvcndhcmRMaXN0Q291bnQoKQogICAgIHJldHVybiBuYXZp
Z2F0aW9uQ29udHJvbGxlcigpLT5lbnRyeUNvdW50KCkgLSBjdXJyZW50SW5kZXggLSAxOwogfQog
Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIFdl
YlZpZXdIb3N0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKQotewotICAgIHJldHVybiBtX3NoZWxs
LT5ub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKLX0KLSNlbmRpZgotCiBXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uQ2xpZW50KiBXZWJWaWV3SG9zdDo6Z2VvbG9jYXRpb25DbGllbnQoKQogewogICAgIHJl
dHVybiBnZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKQEAgLTgwOSwxOCArODAyLDYgQEAgdm9pZCBX
ZWJWaWV3SG9zdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNv
bnN0IHN0ZDo6c3RyaW5nJgogICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVu
dE1vY2soKS0+c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdlYlN0cmluZzo6ZnJvbVVURjgo
bWVzc2FnZSkpOwogfQogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi12b2lkIFdlYlZpZXdI
b3N0OjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3Qgc3RkOjpzdHJpbmcmIG9y
aWdpbikKLXsKLSAgICBtX3NoZWxsLT5ub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+Z3JhbnRQZXJt
aXNzaW9uKFdlYlN0cmluZzo6ZnJvbVVURjgob3JpZ2luKSk7Ci19Ci0KLWJvb2wgV2ViVmlld0hv
c3Q6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3Qgc3RkOjpzdHJpbmcm
IG5vdGlmaWNhdGlvbklkZW50aWZpZXIpCi17Ci0gICAgcmV0dXJuIG1fc2hlbGwtPm5vdGlmaWNh
dGlvblByZXNlbnRlcigpLT5zaW11bGF0ZUNsaWNrKFdlYlN0cmluZzo6ZnJvbVVURjgobm90aWZp
Y2F0aW9uSWRlbnRpZmllcikpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogdm9pZCBXZWJWaWV3SG9zdDo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IHN0ZDo6
c3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBzdGQ6OnN0cmluZyYgbGFu
Z3VhZ2UpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApp
bmRleCBmNzMwMmVlMmNlMDMzZjc3OTZhODk5ZDlhN2FlZjBjODlkYzE1YzY0Li4yM2EyMmQ4ZmY4
MDhhODIxNGQwNTc5ZTliZWM1OTI0Y2Q2NGRlZDhlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTE0NCwxMCArMTQ0LDYgQEAgY2xhc3MgV2ViVmll
d0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJG
cmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihkb3VibGUsIGRvdWJsZSwgZG91YmxlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IHN0ZDo6c3RyaW5n
JikgT1ZFUlJJREU7Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgdmlydHVhbCB2b2lk
IGdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBzdGQ6OnN0cmluZyYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNr
KGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogICAgIHZpcnR1YWwgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3Qg
c3RkOjpzdHJpbmcmLCBkb3VibGUsIGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wpIE9WRVJSSURFOwpA
QCAtMjA1LDkgKzIwMSw2IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2Vi
Vmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2
b2lkIG5hdmlnYXRlQmFja0ZvcndhcmRTb29uKGludCBvZmZzZXQpOwogICAgIHZpcnR1YWwgaW50
IGhpc3RvcnlCYWNrTGlzdENvdW50KCk7CiAgICAgdmlydHVhbCBpbnQgaGlzdG9yeUZvcndhcmRM
aXN0Q291bnQoKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKLSNl
bmRpZgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudCogZ2VvbG9jYXRp
b25DbGllbnQoKTsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJvbGxlcihXZWJLaXQ6
OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188115</attachid>
            <date>2013-02-13 10:20:48 -0800</date>
            <delta_ts>2013-02-13 11:40:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109706-20130213191716.patch</filename>
            <type>text/plain</type>
            <size>39281</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTIwOGUxMTE3NDk2ZTE0OTNkZTBmYTkyMzAwZWM5ZGJj
ZWJmYzA1Yy4uYmQ4YTg2MTg0NGI1YzI1MTkwMjNjYjM5YzMwZDgzYTNhOWZiODBjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDEzLTAyLTEzICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBtb2NrIG5vdGlmaWNhdGlvbiBwcmVzZW50ZXIgdG8g
VGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVn
YXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdFByb3h5Ojpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNlbnRl
ci5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Ob3RpZmlj
YXRpb25QcmVzZW50ZXIuY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6On5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyOjpncmFudFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyOjpzaW11bGF0ZUNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6c2hvdyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6Om9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNoZWNrUGVybWlzc2lvbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9O
b3RpZmljYXRpb25QcmVzZW50ZXIuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5oLgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OnJlc2V0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNpbXVsYXRl
TGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHA6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpub3RpZmljYXRpb25Q
cmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFRlc3RTaGVsbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0Lmg6CisKIDIwMTMtMDItMTMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBSZW1vdmUgd2ViIGludGVudHMgY2FsbGJhY2tz
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCA0MWIxODQzMGQ5
YzEyNmY2Y2JhNDk5NWM5NjRjOGVlNjg3YjIxODY2Li4wYjljZTM1MGVjMzk1YmJkZTA0OWRlMTNj
YjI0NjU3ZDIzZDVhOGRmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKQEAgLTE2LDggKzE2LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hS
ZWNvZ25pemVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rhc2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGFzay5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCcsCkBAIC03Nyw2
ICs3NSw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNl
bnRlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Ob3RpZmljYXRp
b25QcmVzZW50ZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9T
cGVsbENoZWNrQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvU3BlbGxDaGVja0NsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0Q29tbW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjIzNzI2N2ZkMTdmNTU2NWQ0MGNiNjQ3MTk5NTNiNmZhYThiZjc2NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAiV2ViTm90
aWZpY2F0aW9uLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJnb29nbGV1cmwv
c3JjL2d1cmwuaCIKLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJs
aWMvV2ViU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIFdlYlN0cmluZyBpZGVudGlmaWVyRm9yTm90
aWZpY2F0aW9uKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQotewotICAgIGlm
IChub3RpZmljYXRpb24uaXNIVE1MKCkpCi0gICAgICAgIHJldHVybiBub3RpZmljYXRpb24udXJs
KCkuc3BlYygpLnV0ZjE2KCk7Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlvbi50aXRsZSgpOwotfQot
Ci1zdGF0aWMgdm9pZCBkZWZlcnJlZERpc3BsYXlEaXNwYXRjaCh2b2lkKiBjb250ZXh0KQotewot
ICAgIFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8V2ViTm90aWZp
Y2F0aW9uKj4oY29udGV4dCk7Ci0gICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaERpc3BsYXlFdmVu
dCgpOwotICAgIGRlbGV0ZSBub3RpZmljYXRpb247Ci19Ci0KLU5vdGlmaWNhdGlvblByZXNlbnRl
cjo6fk5vdGlmaWNhdGlvblByZXNlbnRlcigpCi17Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uUHJl
c2VudGVyOjpncmFudFBlcm1pc3Npb24oY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAg
bV9hbGxvd2VkT3JpZ2lucy5hZGQoV1RGOjpTdHJpbmcob3JpZ2luLmRhdGEoKSwgb3JpZ2luLmxl
bmd0aCgpKSk7Ci19Ci0KLWJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaW11bGF0ZUNsaWNr
KGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCi17Ci0gICAgV1RGOjpTdHJpbmcgaWQodGl0bGUuZGF0
YSgpLCB0aXRsZS5sZW5ndGgoKSk7Ci0gICAgaWYgKG1fYWN0aXZlTm90aWZpY2F0aW9ucy5maW5k
KGlkKSA9PSBtX2FjdGl2ZU5vdGlmaWNhdGlvbnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICBjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiA9IG1fYWN0
aXZlTm90aWZpY2F0aW9ucy5maW5kKGlkKS0+dmFsdWU7Ci0gICAgV2ViTm90aWZpY2F0aW9uIGV2
ZW50VGFyZ2V0KG5vdGlmaWNhdGlvbik7Ci0gICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hDbGlja0V2
ZW50KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRoZSBvdXRwdXQgZnJvbSBhbGwgdGhl
c2UgbWV0aG9kcyBtYXRjaGVzIHdoYXQgRHVtcFJlbmRlclRyZWUgcHJvZHVjZXMuCi1ib29sIE5v
dGlmaWNhdGlvblByZXNlbnRlcjo6c2hvdyhjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNh
dGlvbikKLXsKLSAgICBXZWJTdHJpbmcgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JOb3RpZmlj
YXRpb24obm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbi5yZXBsYWNlSWQoKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgV1RGOjpTdHJpbmcgcmVwbGFjZUlkKG5vdGlmaWNhdGlvbi5y
ZXBsYWNlSWQoKS5kYXRhKCksIG5vdGlmaWNhdGlvbi5yZXBsYWNlSWQoKS5sZW5ndGgoKSk7Ci0g
ICAgICAgIGlmIChtX3JlcGxhY2VtZW50cy5maW5kKHJlcGxhY2VJZCkgIT0gbV9yZXBsYWNlbWVu
dHMuZW5kKCkpCi0gICAgICAgICAgICBwcmludGYoIlJFUExBQ0lORyBOT1RJRklDQVRJT04gJXNc
biIsCi0gICAgICAgICAgICAgICAgICAgbV9yZXBsYWNlbWVudHMuZmluZChyZXBsYWNlSWQpLT52
YWx1ZS51dGY4KCkuZGF0YSgpKTsKLQotICAgICAgICBtX3JlcGxhY2VtZW50cy5zZXQocmVwbGFj
ZUlkLCBXVEY6OlN0cmluZyhpZGVudGlmaWVyLmRhdGEoKSwgaWRlbnRpZmllci5sZW5ndGgoKSkp
OwotICAgIH0KLQotICAgIGlmIChub3RpZmljYXRpb24uaXNIVE1MKCkpIHsKLSAgICAgICAgcHJp
bnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgJXNcbiIsCi0gICAgICAgICAg
ICAgICBub3RpZmljYXRpb24udXJsKCkuc3BlYygpLmRhdGEoKSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjolcyBpY29uICVzLCB0aXRsZSAlcywg
dGV4dCAlc1xuIiwKLSAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5kaXJlY3Rpb24oKSA9PSBX
ZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQgPyAiKFJUTCkiIDogIiIsCi0gICAgICAgICAgICAg
ICBub3RpZmljYXRpb24uaWNvblVSTCgpLmlzRW1wdHkoKSA/ICIiIDoKLSAgICAgICAgICAgICAg
IG5vdGlmaWNhdGlvbi5pY29uVVJMKCkuc3BlYygpLmRhdGEoKSwKLSAgICAgICAgICAgICAgIG5v
dGlmaWNhdGlvbi50aXRsZSgpLmlzRW1wdHkoKSA/ICIiIDoKLSAgICAgICAgICAgICAgIG5vdGlm
aWNhdGlvbi50aXRsZSgpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICBub3RpZmljYXRp
b24uYm9keSgpLmlzRW1wdHkoKSA/ICIiIDoKLSAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5i
b2R5KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQotCi0gICAgV1RGOjpTdHJpbmcgaWQoaWRlbnRp
Zmllci5kYXRhKCksIGlkZW50aWZpZXIubGVuZ3RoKCkpOwotICAgIG1fYWN0aXZlTm90aWZpY2F0
aW9ucy5zZXQoaWQsIG5vdGlmaWNhdGlvbik7Ci0KLSAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
YWxsT25NYWluVGhyZWFkKGRlZmVycmVkRGlzcGxheURpc3BhdGNoLCBuZXcgV2ViTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbikpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6Y2FuY2VsKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQotewotICAgIFdlYlN0cmluZyBpZGVudGlmaWVyID0gaWRlbnRpZmllckZvck5vdGlmaWNhdGlv
bihub3RpZmljYXRpb24pOwotICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT04gQ0xPU0VE
OiAlc1xuIiwgaWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICBXZWJOb3RpZmljYXRpb24g
ZXZlbnRUYXJnZXQobm90aWZpY2F0aW9uKTsKLSAgICBldmVudFRhcmdldC5kaXNwYXRjaENsb3Nl
RXZlbnQoZmFsc2UpOwotCi0gICAgV1RGOjpTdHJpbmcgaWQoaWRlbnRpZmllci5kYXRhKCksIGlk
ZW50aWZpZXIubGVuZ3RoKCkpOwotICAgIG1fYWN0aXZlTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQp
OwotfQotCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6b2JqZWN0RGVzdHJveWVkKGNvbnN0
IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCi17Ci0gICAgV2ViU3RyaW5n
IGlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7Ci0g
ICAgV1RGOjpTdHJpbmcgaWQoaWRlbnRpZmllci5kYXRhKCksIGlkZW50aWZpZXIubGVuZ3RoKCkp
OwotICAgIG1fYWN0aXZlTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQpOwotfQotCi1XZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyOjpjaGVja1Bl
cm1pc3Npb24oY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKLXsKLSAgICAvLyBDaGVj
ayB3aXRoIHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyCi0gICAgV2ViU3RyaW5nIG9yaWdpblN0
cmluZyA9IG9yaWdpbi50b1N0cmluZygpOwotICAgIGJvb2wgYWxsb3dlZCA9IG1fYWxsb3dlZE9y
aWdpbnMuZmluZChXVEY6OlN0cmluZyhvcmlnaW5TdHJpbmcuZGF0YSgpLCBvcmlnaW5TdHJpbmcu
bGVuZ3RoKCkpKSAhPSBtX2FsbG93ZWRPcmlnaW5zLmVuZCgpOwotICAgIHJldHVybiBhbGxvd2Vk
ID8gV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uQWxsb3dlZAotICAgICAgICA6
IFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbkRlbmllZDsKLX0KLQotdm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKAotICAgIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4sCi0gICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrKiBjYWxsYmFjaykKLXsKLSAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1J
U1NJT04gUkVRVUVTVEVEOiAlc1xuIiwKLSAgICAgICAgICAgb3JpZ2luLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgY2FsbGJhY2stPnBlcm1pc3Npb25SZXF1ZXN0Q29tcGxldGUoKTsK
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9O
b3RpZmljYXRpb25QcmVzZW50ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL05v
dGlmaWNhdGlvblByZXNlbnRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOThj
YzcyOTQ4NzhkNjc1ZjkwM2VmMDFhMGY0Mzk5ZDA0Y2JkODMzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L05vdGlmaWNhdGlvblByZXNlbnRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgTm90aWZpY2F0aW9uUHJlc2VudGVyX2gKLSNkZWZpbmUgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyX2gKLQotI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgotI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvblByZXNlbnRlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLWNsYXNzIFRlc3RTaGVsbDsKLQotLy8gQSBjbGFz
cyB0aGF0IGltcGxlbWVudHMgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGZvciBEUlQuCi1jbGFz
cyBOb3RpZmljYXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IE5vdGlmaWNhdGlvblByZXNlbnRlcihU
ZXN0U2hlbGwqKSB7IH0KLSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKTsKLQot
ICAgIC8vIENhbGxlZCBieSB0aGUgRFJUVGVzdFJ1bm5lciB0byBzaW11bGF0ZSBhIHVzZXIgZ3Jh
bnRpbmcgcGVybWlzc2lvbi4KLSAgICB2b2lkIGdyYW50UGVybWlzc2lvbihjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgb3JpZ2luKTsKLQotICAgIC8vIENhbGxlZCBieSB0aGUgRFJUVGVzdFJ1bm5l
ciB0byBzaW11bGF0ZSBhIHVzZXIgY2xpY2tpbmcgb24gYSBub3RpZmljYXRpb24uCi0gICAgYm9v
bCBzaW11bGF0ZUNsaWNrKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBub3RpZmljYXRpb25JZGVu
dGlmaWVyKTsKLQotICAgIC8vIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGludGVy
ZmFjZQotICAgIHZpcnR1YWwgYm9vbCBzaG93KGNvbnN0IFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbChjb25zdCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
biYpOwotICAgIHZpcnR1YWwgdm9pZCBvYmplY3REZXN0cm95ZWQoY29uc3QgV2ViS2l0OjpXZWJO
b3RpZmljYXRpb24mKTsKLSAgICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKGNv
bnN0IFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oY29uc3QgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKik7Ci0KLSAgICB2b2lkIHJlc2V0KCkgeyBt
X2FsbG93ZWRPcmlnaW5zLmNsZWFyKCk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBTZXQgb2YgYWxs
b3dlZCBvcmlnaW5zLgotICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fYWxsb3dlZE9yaWdpbnM7
Ci0KLSAgICAvLyBNYXAgb2YgYWN0aXZlIG5vdGlmaWNhdGlvbnMuCi0gICAgSGFzaE1hcDxXVEY6
OlN0cmluZywgV2ViS2l0OjpXZWJOb3RpZmljYXRpb24+IG1fYWN0aXZlTm90aWZpY2F0aW9uczsK
LQotICAgIC8vIE1hcCBvZiBhY3RpdmUgcmVwbGFjZW1lbnQgSURzIHRvIHRoZSB0aXRsZXMgb2Yg
dGhvc2Ugbm90aWZpY2F0aW9ucwotICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5n
PiBtX3JlcGxhY2VtZW50czsKLX07Ci0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25QcmVzZW50ZXJf
aApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAppbmRleCA4MmJhYjU3ODIxMGU1Yzg2
MTJkYjA3YzYwNTMyN2E4MjQ0MTI3YzViLi4yODU2YzdkNThiODY1MjZhNjdlOWEyYjJjMjBlMmUy
NzllODM4NGRmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaApAQCAtOTQsOCAr
OTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3Qgc3Rk
OjpzdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2ltdWxhdGVMZWdhY3lXZWJOb3RpZmlj
YXRpb25DbGljayhjb25zdCBzdGQ6OnN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYsIGRv
dWJsZSwgY29uc3Qgc3RkOjpzdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja1Nw
ZWVjaElucHV0RHVtcFJlY3QoYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZE1vY2tTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYsIGRvdWJsZSkgeyB9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RQcm94eS5oCmluZGV4IGIyMmVkOTQ5ZjhiNzZkYTJhMThmNDY1NTM5M2I3
ZTcwNzI5NTYzMjUuLjE1ZjU2MGJiYTk5NjI3OGRmMDc0MDhiZGI2M2E3ZjQyYWE1N2EyNzIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFdlYkRy
YWdEYXRhOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYk5vZGU7
CitjbGFzcyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7CiBjbGFzcyBXZWJQbHVnaW47CiBjbGFz
cyBXZWJSYW5nZTsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKQEAgLTEzMSw2ICsx
MzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJG
cmFtZSosIGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhJik7CiAgICAgV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogICAgIHZvaWQgcHJpbnRQYWdl
KFdlYktpdDo6V2ViRnJhbWUqKTsKKyAgICBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRl
ciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViVVJMJiBmcm9tLCBj
b25zdCBXZWJLaXQ6OldlYlVSTCYgdG8sIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVfdGlt
ZSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYkZyYW1lKik7
CkBAIC0zMzcsNiArMzM5LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYlRlc3RQcm94
eUJhc2U6OnByaW50UGFnZShmcmFtZSk7CiAgICAgfQorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpCisgICAgeworICAg
ICAgICByZXR1cm4gV2ViVGVzdFByb3h5QmFzZTo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCk7Cisg
ICAgfQogCiAgICAgLy8gV2ViRnJhbWVDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVh
bCB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFdlYktpdDo6V2ViVVJMJiBmcm9tLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgdG8sIGRv
dWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVUaW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNh
dGlvblByZXNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBjMjcyNjY4ZWFmYTkxNDZmZjlmNDIwZTRj
N2IyNDNkNTcyMTVhOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKQEAgLTAsMCAr
MSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUwor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0Lmgi
CisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKyNp
bmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKKyNpbmNsdWRlICJnb29nbGV1cmwvc3JjL2d1cmwu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3Ry
aW5nLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewor
CituYW1lc3BhY2UgeworCitXZWJTdHJpbmcgaWRlbnRpZmllckZvck5vdGlmaWNhdGlvbihjb25z
dCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICBpZiAobm90aWZpY2F0aW9u
LmlzSFRNTCgpKQorICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uLnVybCgpLnNwZWMoKS51dGYx
NigpOworICAgIHJldHVybiBub3RpZmljYXRpb24udGl0bGUoKTsKK30KKwordm9pZCBkZWZlcnJl
ZERpc3BsYXlEaXNwYXRjaCh2b2lkKiBjb250ZXh0KQoreworICAgIFdlYk5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8V2ViTm90aWZpY2F0aW9uKj4oY29udGV4dCk7Cisg
ICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaERpc3BsYXlFdmVudCgpOworICAgIGRlbGV0ZSBub3Rp
ZmljYXRpb247Cit9CisKK30KKworTm90aWZpY2F0aW9uUHJlc2VudGVyOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXIoKQorICAgIDogbV9kZWxlZ2F0ZSgwKQoreworfQorCitOb3RpZmljYXRpb25QcmVz
ZW50ZXI6On5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKQoreworfQorCit2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlcjo6Z3JhbnRQZXJtaXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luKQorewor
ICAgIG1fYWxsb3dlZE9yaWdpbnMuaW5zZXJ0KG9yaWdpbi51dGY4KCkpOworfQorCitib29sIE5v
dGlmaWNhdGlvblByZXNlbnRlcjo6c2ltdWxhdGVDbGljayhjb25zdCBXZWJTdHJpbmcmIHRpdGxl
KQoreworICAgIHN0cmluZyBpZCh0aXRsZS51dGY4KCkpOworICAgIGlmIChtX2FjdGl2ZU5vdGlm
aWNhdGlvbnMuZmluZChpZCkgPT0gbV9hY3RpdmVOb3RpZmljYXRpb25zLmVuZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlv
biA9IG1fYWN0aXZlTm90aWZpY2F0aW9ucy5maW5kKGlkKS0+c2Vjb25kOworICAgIFdlYk5vdGlm
aWNhdGlvbiBldmVudFRhcmdldChub3RpZmljYXRpb24pOworICAgIGV2ZW50VGFyZ2V0LmRpc3Bh
dGNoQ2xpY2tFdmVudCgpOworICAgIHJldHVybiB0cnVlOworfQorCisvLyBUaGUgb3V0cHV0IGZy
b20gYWxsIHRoZXNlIG1ldGhvZHMgbWF0Y2hlcyB3aGF0IER1bXBSZW5kZXJUcmVlIHByb2R1Y2Vz
LgorYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OnNob3coY29uc3QgV2ViTm90aWZpY2F0aW9u
JiBub3RpZmljYXRpb24pCit7CisgICAgV2ViU3RyaW5nIGlkZW50aWZpZXIgPSBpZGVudGlmaWVy
Rm9yTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKCFub3RpZmljYXRpb24ucmVw
bGFjZUlkKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIHN0cmluZyByZXBsYWNlSWQobm90aWZpY2F0
aW9uLnJlcGxhY2VJZCgpLnV0ZjgoKSk7CisgICAgICAgIGlmIChtX3JlcGxhY2VtZW50cy5maW5k
KHJlcGxhY2VJZCkgIT0gbV9yZXBsYWNlbWVudHMuZW5kKCkpCisgICAgICAgICAgICBtX2RlbGVn
YXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJSRVBMQUNJTkcgTk9USUZJQ0FUSU9OICIpICsgbV9y
ZXBsYWNlbWVudHMuZmluZChyZXBsYWNlSWQpLT5zZWNvbmQgKyAiXG4iKTsKKworICAgICAgICBt
X3JlcGxhY2VtZW50c1tyZXBsYWNlSWRdID0gaWRlbnRpZmllci51dGY4KCk7CisgICAgfQorCisg
ICAgaWYgKG5vdGlmaWNhdGlvbi5pc0hUTUwoKSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKHN0cmluZygiREVTS1RPUCBOT1RJRklDQVRJT046IGNvbnRlbnRzIGF0ICIpICsgc3Ry
aW5nKG5vdGlmaWNhdGlvbi51cmwoKS5zcGVjKCkpICsgIlxuIik7CisgICAgZWxzZSB7CisgICAg
ICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiREVTS1RPUCBOT1RJRklDQVRJT046Iik7Cisg
ICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShub3RpZmljYXRpb24uZGlyZWN0aW9uKCkg
PT0gV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0ID8gIihSVEwpIiA6ICIiKTsKKyAgICAgICAg
bV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCIgaWNvbiAiKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+
cHJpbnRNZXNzYWdlKG5vdGlmaWNhdGlvbi5pY29uVVJMKCkuaXNFbXB0eSgpID8gIiIgOiBub3Rp
ZmljYXRpb24uaWNvblVSTCgpLnNwZWMoKS5kYXRhKCkpOworICAgICAgICBtX2RlbGVnYXRlLT5w
cmludE1lc3NhZ2UoIiwgdGl0bGUgIik7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2Fn
ZShub3RpZmljYXRpb24udGl0bGUoKS5pc0VtcHR5KCkgPyAiIiA6IG5vdGlmaWNhdGlvbi50aXRs
ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIiwg
dGV4dCAiKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKG5vdGlmaWNhdGlvbi5i
b2R5KCkuaXNFbXB0eSgpID8gIiIgOiBub3RpZmljYXRpb24uYm9keSgpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIlxuIik7CisgICAgfQorCisgICAg
c3RyaW5nIGlkKGlkZW50aWZpZXIudXRmOCgpKTsKKyAgICBtX2FjdGl2ZU5vdGlmaWNhdGlvbnNb
aWRdID0gbm90aWZpY2F0aW9uOworCisgICAgUGxhdGZvcm06OmN1cnJlbnQoKS0+Y2FsbE9uTWFp
blRocmVhZChkZWZlcnJlZERpc3BsYXlEaXNwYXRjaCwgbmV3IFdlYk5vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXI6OmNhbmNlbChjb25zdCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3sKKyAg
ICBXZWJTdHJpbmcgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JOb3RpZmljYXRpb24obm90aWZp
Y2F0aW9uKTsKKyAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJERVNLVE9QIE5P
VElGSUNBVElPTiBDTE9TRUQ6ICIpICsgc3RyaW5nKGlkZW50aWZpZXIudXRmOCgpKSArICJcbiIp
OworICAgIFdlYk5vdGlmaWNhdGlvbiBldmVudFRhcmdldChub3RpZmljYXRpb24pOworICAgIGV2
ZW50VGFyZ2V0LmRpc3BhdGNoQ2xvc2VFdmVudChmYWxzZSk7CisKKyAgICBzdHJpbmcgaWQoaWRl
bnRpZmllci51dGY4KCkpOworICAgIG1fYWN0aXZlTm90aWZpY2F0aW9ucy5lcmFzZShpZCk7Cit9
CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICBXZWJTdHJpbmcgaWRl
bnRpZmllciA9IGlkZW50aWZpZXJGb3JOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKTsKKyAgICBz
dHJpbmcgaWQoaWRlbnRpZmllci51dGY4KCkpOworICAgIG1fYWN0aXZlTm90aWZpY2F0aW9ucy5l
cmFzZShpZCk7Cit9CisKK1dlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3Rp
ZmljYXRpb25QcmVzZW50ZXI6OmNoZWNrUGVybWlzc2lvbihjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYgb3JpZ2luKQoreworICAgIC8vIENoZWNrIHdpdGggdGhlIGxheW91dCB0ZXN0IGNvbnRyb2xs
ZXIKKyAgICBXZWJTdHJpbmcgb3JpZ2luU3RyaW5nID0gb3JpZ2luLnRvU3RyaW5nKCk7CisgICAg
Ym9vbCBhbGxvd2VkID0gbV9hbGxvd2VkT3JpZ2lucy5maW5kKHN0cmluZyhvcmlnaW5TdHJpbmcu
dXRmOCgpKSkgIT0gbV9hbGxvd2VkT3JpZ2lucy5lbmQoKTsKKyAgICByZXR1cm4gYWxsb3dlZCA/
IFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbkFsbG93ZWQKKyAgICAgICAgOiBX
ZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb25EZW5pZWQ7Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uUHJlc2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbigKKyAgICBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYgb3JpZ2luLAorICAgIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ayogY2FsbGJhY2spCit7CisgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJERVNLVE9QIE5P
VElGSUNBVElPTiBQRVJNSVNTSU9OIFJFUVVFU1RFRDogIiArIHN0cmluZyhvcmlnaW4udG9TdHJp
bmcoKS51dGY4KCkpICsgIlxuIik7CisgICAgY2FsbGJhY2stPnBlcm1pc3Npb25SZXF1ZXN0Q29t
cGxldGUoKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFX05PVElGSUNBVElPTlMKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlm
aWNhdGlvblByZXNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNkY2FiYzE4YzE1
YTc3ZWQyYThkNDJiYTkzZjc0YjkzNjA3OWM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblByZXNlbnRl
ci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblByZXNlbnRlcl9oCisjZGVm
aW5lIE5vdGlmaWNhdGlvblByZXNlbnRlcl9oCisKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24u
aCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDxtYXA+
CisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNlIFdlYlRlc3RS
dW5uZXIgeworCitjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CisKKy8vIEEgY2xhc3MgdGhhdCBpbXBs
ZW1lbnRzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciBmb3IgRFJULgorY2xhc3MgTm90aWZpY2F0
aW9uUHJlc2VudGVyIDogcHVibGljIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIHsK
K3B1YmxpYzoKKyAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKyAgICB2aXJ0dWFsIH5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXIoKTsKKworICAgIHZvaWQgc2V0RGVsZWdhdGUoV2ViVGVzdERlbGVn
YXRlKiBkZWxlZ2F0ZSkgeyBtX2RlbGVnYXRlID0gZGVsZWdhdGU7IH0KKworICAgIC8vIENhbGxl
ZCBieSB0aGUgVGVzdFJ1bm5lciB0byBzaW11bGF0ZSBhIHVzZXIgZ3JhbnRpbmcgcGVybWlzc2lv
bi4KKyAgICB2b2lkIGdyYW50UGVybWlzc2lvbihjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgb3Jp
Z2luKTsKKworICAgIC8vIENhbGxlZCBieSB0aGUgVGVzdFJ1bm5lciB0byBzaW11bGF0ZSBhIHVz
ZXIgY2xpY2tpbmcgb24gYSBub3RpZmljYXRpb24uCisgICAgYm9vbCBzaW11bGF0ZUNsaWNrKGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBub3RpZmljYXRpb25JZGVudGlmaWVyKTsKKworICAgIC8v
IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGludGVyZmFjZQorICAgIHZpcnR1YWwg
Ym9vbCBzaG93KGNvbnN0IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJik7CisgICAgdmlydHVhbCB2
b2lkIGNhbmNlbChjb25zdCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYpOworICAgIHZpcnR1YWwg
dm9pZCBvYmplY3REZXN0cm95ZWQoY29uc3QgV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKTsKKyAg
ICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKGNvbnN0IFdlYktpdDo6V2ViU2Vj
dXJpdHlPcmlnaW4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oY29uc3Qg
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrKik7CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2FsbG93ZWRPcmlnaW5zLmNs
ZWFyKCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7CisK
KyAgICAvLyBTZXQgb2YgYWxsb3dlZCBvcmlnaW5zLgorICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
PiBtX2FsbG93ZWRPcmlnaW5zOworCisgICAgLy8gTWFwIG9mIGFjdGl2ZSBub3RpZmljYXRpb25z
LgorICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbj4gbV9h
Y3RpdmVOb3RpZmljYXRpb25zOworCisgICAgLy8gTWFwIG9mIGFjdGl2ZSByZXBsYWNlbWVudCBJ
RHMgdG8gdGhlIHRpdGxlcyBvZiB0aG9zZSBub3RpZmljYXRpb25zCisgICAgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtX3JlcGxhY2VtZW50czsKK307CisKK30KKworI2VuZGlm
IC8vIE5vdGlmaWNhdGlvblByZXNlbnRlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGY4
OThlMWNlMzBiOGRkYzMyNTA0Mzg0MzM1NGFkM2EwMzRmOGQwYmYuLmQ2NDlhYmQwZDZlMzY2MjE4
Mzg1ZGRiNjFkNDI4ODk0ZDRjZGY2MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgog
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViQmluZGlu
Z3MuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3Jp
ZW50YXRpb24uaCIKQEAgLTE0Niw2ICsxNDcsOSBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkK
ICAgICAsIG1fZGVsZWdhdGUoMCkKICAgICAsIG1fd2ViVmlldygwKQogICAgICwgbV93ZWJQZXJt
aXNzaW9ucyhuZXcgV2ViUGVybWlzc2lvbnMpCisjaWYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAg
ICAsIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyKG5ldyBOb3RpZmljYXRpb25QcmVzZW50ZXIpCisj
ZW5kaWYKIHsKICAgICAvLyBJbml0aWFsaXplIHRoZSBtYXAgdGhhdCBhc3NvY2lhdGVzIG1ldGhv
ZHMgb2YgdGhpcyBjbGFzcyB3aXRoIHRoZSBuYW1lcwogICAgIC8vIHRoZXkgd2lsbCB1c2Ugd2hl
biBjYWxsZWQgYnkgSmF2YVNjcmlwdC4gVGhlIGFjdHVhbCBiaW5kaW5nIG9mIHRob3NlCkBAIC0y
NzIsOCArMjc2LDEwIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2Qo
InNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvciIsICZUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVu
YXZhaWxhYmxlRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKKyNpZiBFTkFC
TEVfTk9USUZJQ0FUSU9OUwogICAgIGJpbmRNZXRob2QoImdyYW50V2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbiIsICZUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24pOwog
ICAgIGJpbmRNZXRob2QoInNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2siLCAmVGVz
dFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayk7CisjZW5kaWYKICAg
ICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAmVGVzdFJ1bm5lcjo6YWRk
TW9ja1NwZWVjaElucHV0UmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrU3BlZWNoSW5w
dXREdW1wUmVjdCIsICZUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCk7CiAg
ICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0IiwgJlRlc3RSdW5u
ZXI6OmFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CkBAIC0zMjgsNiArMzM0LDkgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQog
ewogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5zZXRE
ZWxlZ2F0ZShkZWxlZ2F0ZSk7CisjaWYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICBtX25vdGlm
aWNhdGlvblByZXNlbnRlci0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOworI2VuZGlmCiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQpAQCAtNDA3LDYgKzQxNiwxMCBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnJlc2V0KCkKIAogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CiAKKyNpZiBFTkFC
TEVfTk9USUZJQ0FUSU9OUworICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLT5yZXNldCgpOwor
I2VuZGlmCisKICAgICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOwogICAgIG1fd29ya1F1ZXVlLnJl
c2V0KCk7CiAKQEAgLTY1NSw2ICs2NjgsMTMgQEAgYm9vbCBUZXN0UnVubmVyOjppc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX3NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBUZXN0UnVubmVyOjpub3RpZmljYXRpb25QcmVzZW50ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX25vdGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsKK30K
KyNlbmRpZgorCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dEZXZUb29scygpCiB7CiAgICAgbV9kZWxl
Z2F0ZS0+c2hvd0RldlRvb2xzKCk7CkBAIC0xNzU5LDEzICsxNzc5LDE0IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENw
cEFyZ3VtZW50TGlzCiAgICAgbV9kZWxlZ2F0ZS0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKGFyZ3VtZW50c1swXS50b1N0cmluZygpKTsKIH0KIAorI2lmIEVOQUJM
RV9OT1RJRklDQVRJT05TCiB2b2lkIFRlc3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEgfHwgIWFyZ3VtZW50c1swXS5p
c1N0cmluZygpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0KGZhbHNlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX2RlbGVnYXRlLT5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24o
YXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpOworICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLT5n
cmFudFBlcm1pc3Npb24oV2ViU3RyaW5nOjpmcm9tVVRGOChhcmd1bWVudHNbMF0udG9TdHJpbmco
KSkpOwogICAgIHJlc3VsdC0+c2V0KHRydWUpOwogfQogCkBAIC0xNzc1LDggKzE3OTYsOSBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bQogICAgICAgICByZXN1bHQtPnNldChmYWxzZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0LT5zZXQobV9kZWxlZ2F0ZS0+c2ltdWxhdGVM
ZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkpOworICAg
IHJlc3VsdC0+c2V0KG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLT5zaW11bGF0ZUNsaWNrKFdlYlN0
cmluZzo6ZnJvbVVURjgoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKSk7CiB9CisjZW5kaWYKIAog
dm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
aAppbmRleCA2NjA1ODQ1ODAzYzRmMmYwOTRkNWJkNmU4ZmY1NDEzOGRjN2RhZjRlLi41MWYzMDlj
ZWEwYTA4MGVlOWQxMDk1ZTY5MjZjYzExZWJiMmQ4YzY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBA
IC00NywxMiArNDcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBcnJheUJ1
ZmZlclZpZXc7CitjbGFzcyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7CiBjbGFzcyBXZWJQZXJt
aXNzaW9uQ2xpZW50OwogY2xhc3MgV2ViVmlldzsKIH0KIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXIgewogCitjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiBjbGFzcyBXZWJQZXJtaXNzaW9u
czsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIApAQCAtMTE2LDYgKzExOCw5IEBAIHB1YmxpYzoK
ICAgICBib29sIHNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3Q7CisjaWYgRU5BQkxFX05PVElGSUNBVElPTlMK
KyAgICBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIC8vIEEgc2luZ2xlIGl0ZW0gaW4gdGhlIHdvcmsg
cXVldWUuCiAgICAgY2xhc3MgV29ya0l0ZW0gewpAQCAtNDU2LDEwICs0NjEsMTIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
KyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUwogICAgIC8vIEdyYW50cyBwZXJtaXNzaW9uIGZvciBk
ZXNrdG9wIG5vdGlmaWNhdGlvbnMgdG8gYW4gb3JpZ2luCiAgICAgdm9pZCBncmFudFdlYk5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIC8vIFNpbXVsYXRlcyBhIGNsaWNrIG9uIGEgZGVza3RvcCBub3RpZmljYXRpb24uCiAgICAg
dm9pZCBzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKKyNlbmRpZgogCiAgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0
ZWQgZnVuY3Rpb25zLgogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTY2MCw2ICs2NjcsMTAgQEAgcHJpdmF0
ZToKIAogICAgIC8vIFdlYlBlcm1pc3Npb25DbGllbnQgbW9jayBvYmplY3QuCiAgICAgc3RkOjph
dXRvX3B0cjxXZWJQZXJtaXNzaW9ucz4gbV93ZWJQZXJtaXNzaW9uczsKKworI2lmIEVOQUJMRV9O
T1RJRklDQVRJT05TCisgICAgc3RkOjphdXRvX3B0cjxOb3RpZmljYXRpb25QcmVzZW50ZXI+IG1f
bm90aWZpY2F0aW9uUHJlc2VudGVyOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFBy
b3h5LmNwcAppbmRleCAzOThiMzIyYjExZmU1MzUyZTk2ZjE3ZDY2MjJkZmI2M2NlZjNkMTQyLi4z
MTZmZjMwYzBjMWE1OWQ5OGQxNGYyN2Q3ZGQ3Y2NjZmFlYWRjMzM0IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRl
c3RQcm94eS5jcHAKQEAgLTc5NCw2ICs3OTQsMTUgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpw
cmludFBhZ2UoV2ViRnJhbWUqIGZyYW1lKQogICAgIGZyYW1lLT5wcmludEVuZCgpOwogfQogCitX
ZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIFdlYlRlc3RQcm94eUJhc2U6Om5vdGlmaWNhdGlvblBy
ZXNlbnRlcigpCit7CisjaWYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICByZXR1cm4gbV90ZXN0
SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5ub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKyNlbHNl
CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjp3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViVVJMJiwgY29u
c3QgV2ViVVJMJiB0bywgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgaWYgKG1fdGVzdEludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCAxYTZiY2Q4N2U4
MzNhMWI2MGMwMTc1YzMzZGE4MzJiYzQyYTRlNDc1Li4yZTZhY2QyNDczNzc1YmVhYTc2ZDYyMmI5
ZmEwOTUwY2ExYTVhYThkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAKQEAgLTE2Myw5ICsxNjMsNiBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZShN
b2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiBwbGF0Zm9ybVN1cHBvcnQpCiAgICAgbV90ZXN0SW50
ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50ZXJmYWNlcygpKTsKICAgICBwbGF0Zm9y
bVN1cHBvcnQtPnNldEludGVyZmFjZXMobV90ZXN0SW50ZXJmYWNlcy5nZXQoKSk7CiAgICAgbV9k
ZXZUb29sc1Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdlYlRlc3RJbnRlcmZhY2VzKCkp
OwotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCi0gICAgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIgPSBhZG9wdFB0cihuZXcgTm90aWZpY2F0
aW9uUHJlc2VudGVyKHRoaXMpKTsKLSNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikK
ICAgICBtX3ByZXJlbmRlcmluZ1N1cHBvcnQgPSBhZG9wdFB0cihuZXcgTW9ja1dlYlByZXJlbmRl
cmluZ1N1cHBvcnQoKSk7CiAjZW5kaWYKQEAgLTMwOSw5ICszMDYsNiBAQCB2b2lkIFRlc3RTaGVs
bDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiAgICAgbV90ZXN0SW50ZXJmYWNlcy0+cmVzZXRBbGwo
KTsKICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnJlc2V0QWxsKCk7CiAgICAgbV93ZWJW
aWV3SG9zdC0+cmVzZXQoKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQotICAgIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLT5yZXNldCgp
OwotI2VuZGlmCiAjaWYgT1MoQU5EUk9JRCkKICAgICB3ZWJraXRfc3VwcG9ydDo6UmVsZWFzZU1l
ZGlhUmVzb3VyY2VzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmgKaW5kZXggMzA5MWNlNzE5YWZhNjE0NDliMTM3NTNkZTNkNmE5NWRkOTc1ODc2Yy4u
MzA5M2I5MmE5ZGY0NDc1OGE3NjZmZWZiYmU0ZWQ3ZTdhM2ZjMjRhZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpZm5kZWYg
VGVzdFNoZWxsX2gKICNkZWZpbmUgVGVzdFNoZWxsX2gKIAotI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlci5oIgogI2luY2x1ZGUgIlRlc3RFdmVudFByaW50ZXIuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlRlc3RJbnRlcmZhY2VzLmgiCkBAIC00Niw3
ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGll
bnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKIGNs
YXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJVUkw7CkBAIC04NSw5ICs4
Myw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBob3N0IGZvciB0aGUgbWFpbiBXZWJW
aWV3LgogICAgIFdlYlZpZXdIb3N0KiB3ZWJWaWV3SG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vi
Vmlld0hvc3QuZ2V0KCk7IH0KICAgICBXZWJUZXN0UnVubmVyOjpXZWJUZXN0UnVubmVyKiB0ZXN0
UnVubmVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpOyB9
Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBu
b3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblByZXNl
bnRlci5nZXQoKTsgfQotI2VuZGlmCiAgICAgY29uc3QgVGVzdEV2ZW50UHJpbnRlciogcHJpbnRl
cigpIGNvbnN0IHsgcmV0dXJuICZtX3ByaW50ZXI7IH0KIAogICAgIFdlYlRlc3RSdW5uZXI6Oldl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIHsgcmV0dXJuICZtX3ByZWZzOyB9CkBAIC0yMDIs
OSArMTk3LDYgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0
RGV2VG9vbHNDbGllbnQ7CiAgICAgT3duUHRyPFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZh
Y2VzPiBtX3Rlc3RJbnRlcmZhY2VzOwogICAgIE93blB0cjxXZWJUZXN0UnVubmVyOjpXZWJUZXN0
SW50ZXJmYWNlcz4gbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzOwotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgT3duUHRyPE5vdGlm
aWNhdGlvblByZXNlbnRlcj4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7Ci0jZW5kaWYKICAgICAv
LyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMgdGhyZWFkIGlzIGRlc3Ryb3llZCBhZnRlciB0aGUg
V2ViVmlld0hvc3QuCiAgICAgT3duUHRyPFdlYktpdDo6V2ViVGhyZWFkPiBtX3dlYkNvbXBvc2l0
b3JUaHJlYWQ7CiAgICAgT3duUHRyPFdlYlZpZXdIb3N0PiBtX3dlYlZpZXdIb3N0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGZkY2I3ZWIz
NmJmNjE5ZWMyNGFhMTg0ZTNiNDU1NGY2MjQ3MDIwZGIuLjVkOGZlZDM2YmM2ODY2ZGRiZjdjZGE3
ZmVmOTQ5OTI0M2ZiOWM2YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAKQEAgLTI3MCwxMyArMjcwLDYgQEAgaW50IFdlYlZpZXdIb3N0OjpoaXN0
b3J5Rm9yd2FyZExpc3RDb3VudCgpCiAgICAgcmV0dXJuIG5hdmlnYXRpb25Db250cm9sbGVyKCkt
PmVudHJ5Q291bnQoKSAtIGN1cnJlbnRJbmRleCAtIDE7CiB9CiAKLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLVdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogV2ViVmlld0hvc3Q6Om5vdGlmaWNh
dGlvblByZXNlbnRlcigpCi17Ci0gICAgcmV0dXJuIG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNl
bnRlcigpOwotfQotI2VuZGlmCi0KIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQqIFdlYlZp
ZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudCgpCiB7CiAgICAgcmV0dXJuIGdlb2xvY2F0aW9uQ2xp
ZW50TW9jaygpOwpAQCAtODA5LDE4ICs4MDIsNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmCiAg
ICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRQb3NpdGlv
blVuYXZhaWxhYmxlRXJyb3IoV2ViU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSk7CiB9CiAKLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXZvaWQgV2ViVmlld0hvc3Q6OmdyYW50V2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2luKQotewotICAgIG1fc2hl
bGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5ncmFudFBlcm1pc3Npb24oV2ViU3RyaW5nOjpm
cm9tVVRGOChvcmlnaW4pKTsKLX0KLQotYm9vbCBXZWJWaWV3SG9zdDo6c2ltdWxhdGVMZWdhY3lX
ZWJOb3RpZmljYXRpb25DbGljayhjb25zdCBzdGQ6OnN0cmluZyYgbm90aWZpY2F0aW9uSWRlbnRp
ZmllcikKLXsKLSAgICByZXR1cm4gbV9zaGVsbC0+bm90aWZpY2F0aW9uUHJlc2VudGVyKCktPnNp
bXVsYXRlQ2xpY2soV2ViU3RyaW5nOjpmcm9tVVRGOChub3RpZmljYXRpb25JZGVudGlmaWVyKSk7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiB2b2lkIFdlYlZpZXdIb3N0
OjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIHJlc3VsdCwgZG91
YmxlIGNvbmZpZGVuY2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBsYW5ndWFnZSkKIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IGY3MzAyZWUyY2UwMzNm
Nzc5NmE4OTlkOWE3YWVmMGM4OWRjMTVjNjQuLjIzYTIyZDhmZjgwOGE4MjE0ZDA1NzllOWJlYzU5
MjRjZDY0ZGVkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaApAQCAtMTQ0LDEwICsxNDQsNiBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJL
aXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZp
cnR1YWwgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSwgZG91YmxlLCBk
b3VibGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKLSNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9uKGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIHNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3Qgc3RkOjpzdHJpbmcm
KSBPVkVSUklERTsKLSNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgdmlydHVh
bCB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYsIGRvdWJs
ZSwgY29uc3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9j
a1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCkgT1ZFUlJJREU7CkBAIC0yMDUsOSArMjAxLDYgQEAg
Y2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMg
V2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGVCYWNrRm9y
d2FyZFNvb24oaW50IG9mZnNldCk7CiAgICAgdmlydHVhbCBpbnQgaGlzdG9yeUJhY2tMaXN0Q291
bnQoKTsKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RDb3VudCgpOwotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotI2VuZGlmCiAgICAgdmlydHVhbCBX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpOwogI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29u
dHJvbGxlciogc3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0
ZW5lciopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188132</attachid>
            <date>2013-02-13 11:41:02 -0800</date>
            <delta_ts>2013-02-14 00:09:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109706-20130213203730.patch</filename>
            <type>text/plain</type>
            <size>39296</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTIwOGUxMTE3NDk2ZTE0OTNkZTBmYTkyMzAwZWM5ZGJj
ZWJmYzA1Yy4uZjUyMTM2Mzg3YWIxOWJmZjE3NTkzMjA3NWIwMTg4OTJlNzQzMjM1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDEzLTAyLTEzICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBtb2NrIG5vdGlmaWNhdGlvbiBwcmVzZW50ZXIgdG8g
VGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0UHJveHk6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmNw
cDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL05vdGlmaWNhdGlv
blByZXNlbnRlci5jcHAuCisgICAgICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6fk5vdGlmaWNh
dGlvblByZXNlbnRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXI6OmdyYW50UGVybWlzc2lvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OnNpbXVsYXRlQ2xpY2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaG93KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok5v
dGlmaWNhdGlvblByZXNlbnRlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Ok5v
dGlmaWNhdGlvblByZXNlbnRlcjo6b2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlm
aWNhdGlvblByZXNlbnRlci5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmguCisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UnVubmVyOjpyZXNldCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVy
Ojpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdh
Y3lXZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6Om5vdGlmaWNhdGlvblByZXNl
bnRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoVGVzdFNoZWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaDoKKwogMjAxMy0wMi0xMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtXSzJdIFJlbW92ZSB3ZWIgaW50ZW50cyBjYWxsYmFja3MKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDQxYjE4NDMwZDljMTI2
ZjZjYmE0OTk1Yzk2NGM4ZWU2ODdiMjE4NjYuLjBiOWNlMzUwZWMzOTViYmRlMDQ5ZGUxM2NiMjQ2
NTdkMjNkNWE4ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpA
QCAtMTYsOCArMTYsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29n
bml6ZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXpl
ci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vVGFzay5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UYXNrLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdEV2ZW50UHJpbnRlci5oJywKQEAgLTc3LDYgKzc1
LDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVy
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL05vdGlmaWNhdGlvblBy
ZXNlbnRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxs
Q2hlY2tDbGllbnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9T
cGVsbENoZWNrQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RDb21tb24uY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMjM3MjY3ZmQxN2Y1NTY1ZDQwY2I2NDcxOTk1M2I2ZmFhOGJmNzY0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVz
ZW50ZXIuaCIKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb24uaCIKLSNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIK
LSNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgImdvb2dsZXVybC9zcmMv
Z3VybC5oIgotI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwotCi1zdGF0aWMgV2ViU3RyaW5nIGlkZW50aWZpZXJGb3JOb3RpZmlj
YXRpb24oY29uc3QgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCi17Ci0gICAgaWYgKG5v
dGlmaWNhdGlvbi5pc0hUTUwoKSkKLSAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi51cmwoKS5z
cGVjKCkudXRmMTYoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uLnRpdGxlKCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIGRlZmVycmVkRGlzcGxheURpc3BhdGNoKHZvaWQqIGNvbnRleHQpCi17Ci0gICAg
V2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJOb3RpZmljYXRp
b24qPihjb250ZXh0KTsKLSAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRGlzcGxheUV2ZW50KCk7
Ci0gICAgZGVsZXRlIG5vdGlmaWNhdGlvbjsKLX0KLQotTm90aWZpY2F0aW9uUHJlc2VudGVyOjp+
Tm90aWZpY2F0aW9uUHJlc2VudGVyKCkKLXsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXI6OmdyYW50UGVybWlzc2lvbihjb25zdCBXZWJTdHJpbmcmIG9yaWdpbikKLXsKLSAgICBtX2Fs
bG93ZWRPcmlnaW5zLmFkZChXVEY6OlN0cmluZyhvcmlnaW4uZGF0YSgpLCBvcmlnaW4ubGVuZ3Ro
KCkpKTsKLX0KLQotYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OnNpbXVsYXRlQ2xpY2soY29u
c3QgV2ViU3RyaW5nJiB0aXRsZSkKLXsKLSAgICBXVEY6OlN0cmluZyBpZCh0aXRsZS5kYXRhKCks
IHRpdGxlLmxlbmd0aCgpKTsKLSAgICBpZiAobV9hY3RpdmVOb3RpZmljYXRpb25zLmZpbmQoaWQp
ID09IG1fYWN0aXZlTm90aWZpY2F0aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIAotICAgIGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uID0gbV9hY3RpdmVO
b3RpZmljYXRpb25zLmZpbmQoaWQpLT52YWx1ZTsKLSAgICBXZWJOb3RpZmljYXRpb24gZXZlbnRU
YXJnZXQobm90aWZpY2F0aW9uKTsKLSAgICBldmVudFRhcmdldC5kaXNwYXRjaENsaWNrRXZlbnQo
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVGhlIG91dHB1dCBmcm9tIGFsbCB0aGVzZSBt
ZXRob2RzIG1hdGNoZXMgd2hhdCBEdW1wUmVuZGVyVHJlZSBwcm9kdWNlcy4KLWJvb2wgTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpzaG93KGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQotewotICAgIFdlYlN0cmluZyBpZGVudGlmaWVyID0gaWRlbnRpZmllckZvck5vdGlmaWNhdGlv
bihub3RpZmljYXRpb24pOwotICAgIGlmICghbm90aWZpY2F0aW9uLnJlcGxhY2VJZCgpLmlzRW1w
dHkoKSkgewotICAgICAgICBXVEY6OlN0cmluZyByZXBsYWNlSWQobm90aWZpY2F0aW9uLnJlcGxh
Y2VJZCgpLmRhdGEoKSwgbm90aWZpY2F0aW9uLnJlcGxhY2VJZCgpLmxlbmd0aCgpKTsKLSAgICAg
ICAgaWYgKG1fcmVwbGFjZW1lbnRzLmZpbmQocmVwbGFjZUlkKSAhPSBtX3JlcGxhY2VtZW50cy5l
bmQoKSkKLSAgICAgICAgICAgIHByaW50ZigiUkVQTEFDSU5HIE5PVElGSUNBVElPTiAlc1xuIiwK
LSAgICAgICAgICAgICAgICAgICBtX3JlcGxhY2VtZW50cy5maW5kKHJlcGxhY2VJZCktPnZhbHVl
LnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgICAgIG1fcmVwbGFjZW1lbnRzLnNldChyZXBsYWNlSWQs
IFdURjo6U3RyaW5nKGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLmxlbmd0aCgpKSk7Ci0g
ICAgfQotCi0gICAgaWYgKG5vdGlmaWNhdGlvbi5pc0hUTUwoKSkgewotICAgICAgICBwcmludGYo
IkRFU0tUT1AgTk9USUZJQ0FUSU9OOiBjb250ZW50cyBhdCAlc1xuIiwKLSAgICAgICAgICAgICAg
IG5vdGlmaWNhdGlvbi51cmwoKS5zcGVjKCkuZGF0YSgpKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OOiVzIGljb24gJXMsIHRpdGxlICVzLCB0ZXh0
ICVzXG4iLAotICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmRpcmVjdGlvbigpID09IFdlYlRl
eHREaXJlY3Rpb25SaWdodFRvTGVmdCA/ICIoUlRMKSIgOiAiIiwKLSAgICAgICAgICAgICAgIG5v
dGlmaWNhdGlvbi5pY29uVVJMKCkuaXNFbXB0eSgpID8gIiIgOgotICAgICAgICAgICAgICAgbm90
aWZpY2F0aW9uLmljb25VUkwoKS5zcGVjKCkuZGF0YSgpLAotICAgICAgICAgICAgICAgbm90aWZp
Y2F0aW9uLnRpdGxlKCkuaXNFbXB0eSgpID8gIiIgOgotICAgICAgICAgICAgICAgbm90aWZpY2F0
aW9uLnRpdGxlKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5i
b2R5KCkuaXNFbXB0eSgpID8gIiIgOgotICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmJvZHko
KS51dGY4KCkuZGF0YSgpKTsKLSAgICB9Ci0KLSAgICBXVEY6OlN0cmluZyBpZChpZGVudGlmaWVy
LmRhdGEoKSwgaWRlbnRpZmllci5sZW5ndGgoKSk7Ci0gICAgbV9hY3RpdmVOb3RpZmljYXRpb25z
LnNldChpZCwgbm90aWZpY2F0aW9uKTsKLQotICAgIFBsYXRmb3JtOjpjdXJyZW50KCktPmNhbGxP
bk1haW5UaHJlYWQoZGVmZXJyZWREaXNwbGF5RGlzcGF0Y2gsIG5ldyBXZWJOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9u
UHJlc2VudGVyOjpjYW5jZWwoY29uc3QgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCi17
Ci0gICAgV2ViU3RyaW5nIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yTm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbik7Ci0gICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTiBDTE9TRUQ6ICVz
XG4iLCBpZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwotICAgIFdlYk5vdGlmaWNhdGlvbiBldmVu
dFRhcmdldChub3RpZmljYXRpb24pOwotICAgIGV2ZW50VGFyZ2V0LmRpc3BhdGNoQ2xvc2VFdmVu
dChmYWxzZSk7Ci0KLSAgICBXVEY6OlN0cmluZyBpZChpZGVudGlmaWVyLmRhdGEoKSwgaWRlbnRp
Zmllci5sZW5ndGgoKSk7Ci0gICAgbV9hY3RpdmVOb3RpZmljYXRpb25zLnJlbW92ZShpZCk7Ci19
Ci0KLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKLXsKLSAgICBXZWJTdHJpbmcgaWRl
bnRpZmllciA9IGlkZW50aWZpZXJGb3JOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKTsKLSAgICBX
VEY6OlN0cmluZyBpZChpZGVudGlmaWVyLmRhdGEoKSwgaWRlbnRpZmllci5sZW5ndGgoKSk7Ci0g
ICAgbV9hY3RpdmVOb3RpZmljYXRpb25zLnJlbW92ZShpZCk7Ci19Ci0KLVdlYk5vdGlmaWNhdGlv
blByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNoZWNrUGVybWlz
c2lvbihjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQotewotICAgIC8vIENoZWNrIHdp
dGggdGhlIGxheW91dCB0ZXN0IGNvbnRyb2xsZXIKLSAgICBXZWJTdHJpbmcgb3JpZ2luU3RyaW5n
ID0gb3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgYm9vbCBhbGxvd2VkID0gbV9hbGxvd2VkT3JpZ2lu
cy5maW5kKFdURjo6U3RyaW5nKG9yaWdpblN0cmluZy5kYXRhKCksIG9yaWdpblN0cmluZy5sZW5n
dGgoKSkpICE9IG1fYWxsb3dlZE9yaWdpbnMuZW5kKCk7Ci0gICAgcmV0dXJuIGFsbG93ZWQgPyBX
ZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb25BbGxvd2VkCi0gICAgICAgIDogV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uRGVuaWVkOwotfQotCi12b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oCi0gICAgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwKLSAgICBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sq
IGNhbGxiYWNrKQotewotICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT04gUEVSTUlTU0lP
TiBSRVFVRVNURUQ6ICVzXG4iLAotICAgICAgICAgICBvcmlnaW4udG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICBjYWxsYmFjay0+cGVybWlzc2lvblJlcXVlc3RDb21wbGV0ZSgpOwotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL05vdGlm
aWNhdGlvblByZXNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTm90aWZp
Y2F0aW9uUHJlc2VudGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OGNjNzI5
NDg3OGQ2NzVmOTAzZWYwMWEwZjQzOTlkMDRjYmQ4MzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTm90
aWZpY2F0aW9uUHJlc2VudGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBOb3RpZmljYXRpb25QcmVzZW50ZXJfaAotI2RlZmluZSBOb3RpZmljYXRpb25QcmVzZW50ZXJf
aAotCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotY2xhc3MgVGVzdFNoZWxsOwotCi0vLyBBIGNsYXNzIHRo
YXQgaW1wbGVtZW50cyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIgZm9yIERSVC4KLWNsYXNzIE5v
dGlmaWNhdGlvblByZXNlbnRlciA6IHB1YmxpYyBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNl
bnRlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTm90aWZpY2F0aW9uUHJlc2VudGVyKFRlc3RT
aGVsbCopIHsgfQotICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotCi0gICAg
Ly8gQ2FsbGVkIGJ5IHRoZSBEUlRUZXN0UnVubmVyIHRvIHNpbXVsYXRlIGEgdXNlciBncmFudGlu
ZyBwZXJtaXNzaW9uLgotICAgIHZvaWQgZ3JhbnRQZXJtaXNzaW9uKGNvbnN0IFdlYktpdDo6V2Vi
U3RyaW5nJiBvcmlnaW4pOwotCi0gICAgLy8gQ2FsbGVkIGJ5IHRoZSBEUlRUZXN0UnVubmVyIHRv
IHNpbXVsYXRlIGEgdXNlciBjbGlja2luZyBvbiBhIG5vdGlmaWNhdGlvbi4KLSAgICBib29sIHNp
bXVsYXRlQ2xpY2soY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG5vdGlmaWNhdGlvbklkZW50aWZp
ZXIpOwotCi0gICAgLy8gV2ViS2l0OjpXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIgaW50ZXJmYWNl
Ci0gICAgdmlydHVhbCBib29sIHNob3coY29uc3QgV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKGNvbnN0IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJik7
Ci0gICAgdmlydHVhbCB2b2lkIG9iamVjdERlc3Ryb3llZChjb25zdCBXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbiYpOwotICAgIHZpcnR1YWwgUGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oY29uc3Qg
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihjb25zdCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luJiwgV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqKTsKLQotICAgIHZvaWQgcmVzZXQoKSB7IG1fYWxs
b3dlZE9yaWdpbnMuY2xlYXIoKTsgfQotCi1wcml2YXRlOgotICAgIC8vIFNldCBvZiBhbGxvd2Vk
IG9yaWdpbnMuCi0gICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9hbGxvd2VkT3JpZ2luczsKLQot
ICAgIC8vIE1hcCBvZiBhY3RpdmUgbm90aWZpY2F0aW9ucy4KLSAgICBIYXNoTWFwPFdURjo6U3Ry
aW5nLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbj4gbV9hY3RpdmVOb3RpZmljYXRpb25zOwotCi0g
ICAgLy8gTWFwIG9mIGFjdGl2ZSByZXBsYWNlbWVudCBJRHMgdG8gdGhlIHRpdGxlcyBvZiB0aG9z
ZSBub3RpZmljYXRpb25zCi0gICAgSGFzaE1hcDxXVEY6OlN0cmluZywgV1RGOjpTdHJpbmc+IG1f
cmVwbGFjZW1lbnRzOwotfTsKLQotI2VuZGlmIC8vIE5vdGlmaWNhdGlvblByZXNlbnRlcl9oCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCmluZGV4IDgyYmFiNTc4MjEwZTVjODYxMmRi
MDdjNjA1MzI3YTgyNDQxMjdjNWIuLjI4NTZjN2Q1OGI4NjUyNmE2N2U5YTJiMmMyMGUyZTI3OWU4
Mzg0ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oCkBAIC05NCw4ICs5NCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUsIGRvdWJsZSwgZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IHN0ZDo6c3RyaW5nJikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBzdGQ6OnN0
cmluZyYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlv
bkNsaWNrKGNvbnN0IHN0ZDo6c3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiwgZG91Ymxl
LCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdChib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkTW9ja1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiwgZG91YmxlKSB7IH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RQcm94eS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdFByb3h5LmgKaW5kZXggYjIyZWQ5NDlmOGI3NmRhMmExOGY0NjU1MzkzYjdlNzA3
Mjk1NjMyNS4uMTVmNTYwYmJhOTk2Mjc4ZGYwNzQwOGJkYjYzYTdmNDJhYTU3YTI3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdFByb3h5LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgV2ViRHJhZ0Rh
dGE7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkltYWdlOwogY2xhc3MgV2ViTm9kZTsKK2Ns
YXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjsKIGNsYXNzIFdlYlBsdWdpbjsKIGNsYXNzIFdl
YlJhbmdlOwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtMTMxLDYgKzEzMiw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYkZyYW1l
KiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudURhdGEmKTsKICAgICBXZWJLaXQ6OldlYlVz
ZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50KCk7CiAgICAgdm9pZCBwcmludFBhZ2UoV2Vi
S2l0OjpXZWJGcmFtZSopOworICAgIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBu
b3RpZmljYXRpb25QcmVzZW50ZXIoKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIGZyb20sIGNvbnN0
IFdlYktpdDo6V2ViVVJMJiB0bywgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZV90aW1lKTsK
ICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViRnJhbWUqKTsKQEAg
LTMzNyw2ICszMzksMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2ViVGVzdFByb3h5QmFz
ZTo6cHJpbnRQYWdlKGZyYW1lKTsKICAgICB9CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBXZWJUZXN0UHJveHlCYXNlOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKyAgICB9
CiAKICAgICAvLyBXZWJGcmFtZUNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYkZyYW1lKiBmcmFtZSwgY29u
c3QgV2ViS2l0OjpXZWJVUkwmIGZyb20sIGNvbnN0IFdlYktpdDo6V2ViVVJMJiB0bywgZG91Ymxl
IGludGVydmFsLCBkb3VibGUgZmlyZVRpbWUpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9u
UHJlc2VudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGMyNzI2NjhlYWZhOTE0NmZmOWY0MjBlNGM3YjI0
M2Q1NzIxNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcApAQCAtMCwwICsxLDE2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNp
bmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgorI2luY2x1ZGUgImdvb2dsZXVybC9zcmMvZ3VybC5oIgor
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25h
bWVzcGFjZSB7CisKK1dlYlN0cmluZyBpZGVudGlmaWVyRm9yTm90aWZpY2F0aW9uKGNvbnN0IFdl
Yk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQoreworICAgIGlmIChub3RpZmljYXRpb24uaXNI
VE1MKCkpCisgICAgICAgIHJldHVybiBub3RpZmljYXRpb24udXJsKCkuc3BlYygpLnV0ZjE2KCk7
CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi50aXRsZSgpOworfQorCit2b2lkIGRlZmVycmVkRGlz
cGxheURpc3BhdGNoKHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24gPSBzdGF0aWNfY2FzdDxXZWJOb3RpZmljYXRpb24qPihjb250ZXh0KTsKKyAgICBu
b3RpZmljYXRpb24tPmRpc3BhdGNoRGlzcGxheUV2ZW50KCk7CisgICAgZGVsZXRlIG5vdGlmaWNh
dGlvbjsKK30KKworfQorCitOb3RpZmljYXRpb25QcmVzZW50ZXI6Ok5vdGlmaWNhdGlvblByZXNl
bnRlcigpCisgICAgOiBtX2RlbGVnYXRlKDApCit7Cit9CisKK05vdGlmaWNhdGlvblByZXNlbnRl
cjo6fk5vdGlmaWNhdGlvblByZXNlbnRlcigpCit7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJl
c2VudGVyOjpncmFudFBlcm1pc3Npb24oY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4pCit7CisgICAg
bV9hbGxvd2VkT3JpZ2lucy5pbnNlcnQob3JpZ2luLnV0ZjgoKSk7Cit9CisKK2Jvb2wgTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpzaW11bGF0ZUNsaWNrKGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpCit7
CisgICAgc3RyaW5nIGlkKHRpdGxlLnV0ZjgoKSk7CisgICAgaWYgKG1fYWN0aXZlTm90aWZpY2F0
aW9ucy5maW5kKGlkKSA9PSBtX2FjdGl2ZU5vdGlmaWNhdGlvbnMuZW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uID0g
bV9hY3RpdmVOb3RpZmljYXRpb25zLmZpbmQoaWQpLT5zZWNvbmQ7CisgICAgV2ViTm90aWZpY2F0
aW9uIGV2ZW50VGFyZ2V0KG5vdGlmaWNhdGlvbik7CisgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hD
bGlja0V2ZW50KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRoZSBvdXRwdXQgZnJvbSBh
bGwgdGhlc2UgbWV0aG9kcyBtYXRjaGVzIHdoYXQgRHVtcFJlbmRlclRyZWUgcHJvZHVjZXMuCiti
b29sIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6c2hvdyhjb25zdCBXZWJOb3RpZmljYXRpb24mIG5v
dGlmaWNhdGlvbikKK3sKKyAgICBXZWJTdHJpbmcgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbi5yZXBsYWNl
SWQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3RyaW5nIHJlcGxhY2VJZChub3RpZmljYXRpb24u
cmVwbGFjZUlkKCkudXRmOCgpKTsKKyAgICAgICAgaWYgKG1fcmVwbGFjZW1lbnRzLmZpbmQocmVw
bGFjZUlkKSAhPSBtX3JlcGxhY2VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgIG1fZGVsZWdhdGUt
PnByaW50TWVzc2FnZShzdHJpbmcoIlJFUExBQ0lORyBOT1RJRklDQVRJT04gIikgKyBtX3JlcGxh
Y2VtZW50cy5maW5kKHJlcGxhY2VJZCktPnNlY29uZCArICJcbiIpOworCisgICAgICAgIG1fcmVw
bGFjZW1lbnRzW3JlcGxhY2VJZF0gPSBpZGVudGlmaWVyLnV0ZjgoKTsKKyAgICB9CisKKyAgICBp
ZiAobm90aWZpY2F0aW9uLmlzSFRNTCgpKQorICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3Nh
Z2Uoc3RyaW5nKCJERVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgIikgKyBzdHJpbmco
bm90aWZpY2F0aW9uLnVybCgpLnNwZWMoKSkgKyAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
bV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKCJERVNLVE9QIE5PVElGSUNBVElPTjoiKTsKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKG5vdGlmaWNhdGlvbi5kaXJlY3Rpb24oKSA9PSBX
ZWJUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQgPyAiKFJUTCkiIDogIiIpOworICAgICAgICBtX2Rl
bGVnYXRlLT5wcmludE1lc3NhZ2UoIiBpY29uICIpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmlu
dE1lc3NhZ2Uobm90aWZpY2F0aW9uLmljb25VUkwoKS5pc0VtcHR5KCkgPyAiIiA6IG5vdGlmaWNh
dGlvbi5pY29uVVJMKCkuc3BlYygpLmRhdGEoKSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50
TWVzc2FnZSgiLCB0aXRsZSAiKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKG5v
dGlmaWNhdGlvbi50aXRsZSgpLmlzRW1wdHkoKSA/ICIiIDogbm90aWZpY2F0aW9uLnRpdGxlKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiLCB0ZXh0
ICIpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uobm90aWZpY2F0aW9uLmJvZHko
KS5pc0VtcHR5KCkgPyAiIiA6IG5vdGlmaWNhdGlvbi5ib2R5KCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZSgiXG4iKTsKKyAgICB9CisKKyAgICBzdHJp
bmcgaWQoaWRlbnRpZmllci51dGY4KCkpOworICAgIG1fYWN0aXZlTm90aWZpY2F0aW9uc1tpZF0g
PSBub3RpZmljYXRpb247CisKKyAgICBQbGF0Zm9ybTo6Y3VycmVudCgpLT5jYWxsT25NYWluVGhy
ZWFkKGRlZmVycmVkRGlzcGxheURpc3BhdGNoLCBuZXcgV2ViTm90aWZpY2F0aW9uKG5vdGlmaWNh
dGlvbikpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRl
cjo6Y2FuY2VsKGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQoreworICAgIFdl
YlN0cmluZyBpZGVudGlmaWVyID0gaWRlbnRpZmllckZvck5vdGlmaWNhdGlvbihub3RpZmljYXRp
b24pOworICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIkRFU0tUT1AgTk9USUZJ
Q0FUSU9OIENMT1NFRDogIikgKyBzdHJpbmcoaWRlbnRpZmllci51dGY4KCkpICsgIlxuIik7Cisg
ICAgV2ViTm90aWZpY2F0aW9uIGV2ZW50VGFyZ2V0KG5vdGlmaWNhdGlvbik7CisgICAgZXZlbnRU
YXJnZXQuZGlzcGF0Y2hDbG9zZUV2ZW50KGZhbHNlKTsKKworICAgIHN0cmluZyBpZChpZGVudGlm
aWVyLnV0ZjgoKSk7CisgICAgbV9hY3RpdmVOb3RpZmljYXRpb25zLmVyYXNlKGlkKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXI6Om9iamVjdERlc3Ryb3llZChjb25zdCBXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQoreworICAgIFdlYlN0cmluZyBpZGVudGlm
aWVyID0gaWRlbnRpZmllckZvck5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pOworICAgIHN0cmlu
ZyBpZChpZGVudGlmaWVyLnV0ZjgoKSk7CisgICAgbV9hY3RpdmVOb3RpZmljYXRpb25zLmVyYXNl
KGlkKTsKK30KKworV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9uKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4pCit7CisgICAgLy8gQ2hlY2sgd2l0aCB0aGUgbGF5b3V0IHRlc3QgY29udHJvbGxlcgor
ICAgIFdlYlN0cmluZyBvcmlnaW5TdHJpbmcgPSBvcmlnaW4udG9TdHJpbmcoKTsKKyAgICBib29s
IGFsbG93ZWQgPSBtX2FsbG93ZWRPcmlnaW5zLmZpbmQoc3RyaW5nKG9yaWdpblN0cmluZy51dGY4
KCkpKSAhPSBtX2FsbG93ZWRPcmlnaW5zLmVuZCgpOworICAgIHJldHVybiBhbGxvd2VkID8gV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uQWxsb3dlZAorICAgICAgICA6IFdlYk5v
dGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbkRlbmllZDsKK30KKwordm9pZCBOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKAorICAgIGNvbnN0IFdlYlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sCisgICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKiBj
YWxsYmFjaykKK3sKKyAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2UoIkRFU0tUT1AgTk9USUZJ
Q0FUSU9OIFBFUk1JU1NJT04gUkVRVUVTVEVEOiAiICsgc3RyaW5nKG9yaWdpbi50b1N0cmluZygp
LnV0ZjgoKSkgKyAiXG4iKTsKKyAgICBjYWxsYmFjay0+cGVybWlzc2lvblJlcXVlc3RDb21wbGV0
ZSgpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEVfTk9USUZJQ0FUSU9OUwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0
aW9uUHJlc2VudGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmQ3ZDVjZmI3ZWJmMjY5
YzM2OTI1OTdiZmRmZmVhMWFiZmVjYTVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmgK
QEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKyNkZWZpbmUg
Tm90aWZpY2F0aW9uUHJlc2VudGVyX2gKKworI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgor
I2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgPG1hcD4KKyNp
bmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3RyaW5nPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5l
ciB7CisKK2NsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKKworLy8gQSBjbGFzcyB0aGF0IGltcGxlbWVu
dHMgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGZvciB0aGUgVGVzdFJ1bm5lciBsaWJyYXJ5Lgor
Y2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyIDogcHVibGljIFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyIHsKK3B1YmxpYzoKKyAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKyAg
ICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKworICAgIHZvaWQgc2V0RGVsZWdh
dGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkgeyBtX2RlbGVnYXRlID0gZGVsZWdhdGU7IH0K
KworICAgIC8vIENhbGxlZCBieSB0aGUgVGVzdFJ1bm5lciB0byBzaW11bGF0ZSBhIHVzZXIgZ3Jh
bnRpbmcgcGVybWlzc2lvbi4KKyAgICB2b2lkIGdyYW50UGVybWlzc2lvbihjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgb3JpZ2luKTsKKworICAgIC8vIENhbGxlZCBieSB0aGUgVGVzdFJ1bm5lciB0
byBzaW11bGF0ZSBhIHVzZXIgY2xpY2tpbmcgb24gYSBub3RpZmljYXRpb24uCisgICAgYm9vbCBz
aW11bGF0ZUNsaWNrKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBub3RpZmljYXRpb25JZGVudGlm
aWVyKTsKKworICAgIC8vIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIGludGVyZmFj
ZQorICAgIHZpcnR1YWwgYm9vbCBzaG93KGNvbnN0IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJik7
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbChjb25zdCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYp
OworICAgIHZpcnR1YWwgdm9pZCBvYmplY3REZXN0cm95ZWQoY29uc3QgV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb24mKTsKKyAgICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKGNvbnN0
IFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oY29uc3QgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYsIFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKik7CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2Fs
bG93ZWRPcmlnaW5zLmNsZWFyKCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJUZXN0RGVsZWdhdGUq
IG1fZGVsZWdhdGU7CisKKyAgICAvLyBTZXQgb2YgYWxsb3dlZCBvcmlnaW5zLgorICAgIHN0ZDo6
c2V0PHN0ZDo6c3RyaW5nPiBtX2FsbG93ZWRPcmlnaW5zOworCisgICAgLy8gTWFwIG9mIGFjdGl2
ZSBub3RpZmljYXRpb25zLgorICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbj4gbV9hY3RpdmVOb3RpZmljYXRpb25zOworCisgICAgLy8gTWFwIG9mIGFjdGl2
ZSByZXBsYWNlbWVudCBJRHMgdG8gdGhlIHRpdGxlcyBvZiB0aG9zZSBub3RpZmljYXRpb25zCisg
ICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtX3JlcGxhY2VtZW50czsKK307
CisKK30KKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvblByZXNlbnRlcl9oCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGY4OThlMWNlMzBiOGRkYzMyNTA0Mzg0MzM1NGFkM2EwMzRmOGQwYmYuLmQ2
NDlhYmQwZDZlMzY2MjE4Mzg1ZGRiNjFkNDI4ODk0ZDRjZGY2MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGVzdFJ1bm5lci5oIgogCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5j
bHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVk
ZSAiV2ViRGV2aWNlT3JpZW50YXRpb24uaCIKQEAgLTE0Niw2ICsxNDcsOSBAQCBUZXN0UnVubmVy
OjpUZXN0UnVubmVyKCkKICAgICAsIG1fZGVsZWdhdGUoMCkKICAgICAsIG1fd2ViVmlldygwKQog
ICAgICwgbV93ZWJQZXJtaXNzaW9ucyhuZXcgV2ViUGVybWlzc2lvbnMpCisjaWYgRU5BQkxFX05P
VElGSUNBVElPTlMKKyAgICAsIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyKG5ldyBOb3RpZmljYXRp
b25QcmVzZW50ZXIpCisjZW5kaWYKIHsKICAgICAvLyBJbml0aWFsaXplIHRoZSBtYXAgdGhhdCBh
c3NvY2lhdGVzIG1ldGhvZHMgb2YgdGhpcyBjbGFzcyB3aXRoIHRoZSBuYW1lcwogICAgIC8vIHRo
ZXkgd2lsbCB1c2Ugd2hlbiBjYWxsZWQgYnkgSmF2YVNjcmlwdC4gVGhlIGFjdHVhbCBiaW5kaW5n
IG9mIHRob3NlCkBAIC0yNzIsOCArMjc2LDEwIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQog
ICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpz
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvciIsICZUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKTsKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUwogICAgIGJpbmRNZXRob2QoImdyYW50V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlv
blBlcm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoInNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0
aW9uQ2xpY2siLCAmVGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGlj
ayk7CisjZW5kaWYKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAm
VGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCIsICZUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5w
dXREdW1wUmVjdCk7CiAgICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVz
dWx0IiwgJlRlc3RSdW5uZXI6OmFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CkBAIC0z
MjgsNiArMzM0LDkgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBtX3dlYlBl
cm1pc3Npb25zLT5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7CisjaWYgRU5BQkxFX05PVElGSUNBVElP
TlMKKyAgICBtX25vdGlmaWNhdGlvblByZXNlbnRlci0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOwor
I2VuZGlmCiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQpAQCAtNDA3LDYgKzQxNiwxMCBA
QCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKIAogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0
KCk7CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgIG1fbm90aWZpY2F0aW9uUHJlc2Vu
dGVyLT5yZXNldCgpOworI2VuZGlmCisKICAgICBtX3Rhc2tMaXN0LnJldm9rZUFsbCgpOwogICAg
IG1fd29ya1F1ZXVlLnJlc2V0KCk7CiAKQEAgLTY1NSw2ICs2NjgsMTMgQEAgYm9vbCBUZXN0UnVu
bmVyOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVy
biBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9CiAKKyNpZiBFTkFCTEVfTk9U
SUZJQ0FUSU9OUworV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBUZXN0UnVubmVyOjpub3RpZmlj
YXRpb25QcmVzZW50ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX25vdGlmaWNhdGlvblByZXNl
bnRlci5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dEZXZUb29scygp
CiB7CiAgICAgbV9kZWxlZ2F0ZS0+c2hvd0RldlRvb2xzKCk7CkBAIC0xNzU5LDEzICsxNzc5LDE0
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzCiAgICAgbV9kZWxlZ2F0ZS0+c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGFyZ3VtZW50c1swXS50b1N0cmluZygpKTsK
IH0KIAorI2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCiB2b2lkIFRlc3RSdW5uZXI6OmdyYW50V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEgfHwg
IWFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0KGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2RlbGVnYXRlLT5ncmFudFdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb24oYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpOworICAgIG1fbm90aWZpY2F0
aW9uUHJlc2VudGVyLT5ncmFudFBlcm1pc3Npb24oV2ViU3RyaW5nOjpmcm9tVVRGOChhcmd1bWVu
dHNbMF0udG9TdHJpbmcoKSkpOwogICAgIHJlc3VsdC0+c2V0KHRydWUpOwogfQogCkBAIC0xNzc1
LDggKzE3OTYsOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0
aW9uQ2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bQogICAgICAgICByZXN1bHQtPnNl
dChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0LT5zZXQobV9kZWxl
Z2F0ZS0+c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhhcmd1bWVudHNbMF0udG9T
dHJpbmcoKSkpOworICAgIHJlc3VsdC0+c2V0KG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLT5zaW11
bGF0ZUNsaWNrKFdlYlN0cmluZzo6ZnJvbVVURjgoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKSk7
CiB9CisjZW5kaWYKIAogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuaAppbmRleCA2NjA1ODQ1ODAzYzRmMmYwOTRkNWJkNmU4ZmY1NDEzOGRj
N2RhZjRlLi41MWYzMDljZWEwYTA4MGVlOWQxMDk1ZTY5MjZjYzExZWJiMmQ4YzY5IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdFJ1bm5lci5oCkBAIC00NywxMiArNDcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJBcnJheUJ1ZmZlclZpZXc7CitjbGFzcyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7
CiBjbGFzcyBXZWJQZXJtaXNzaW9uQ2xpZW50OwogY2xhc3MgV2ViVmlldzsKIH0KIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCitjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiBjbGFz
cyBXZWJQZXJtaXNzaW9uczsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIApAQCAtMTE2LDYgKzEx
OCw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0OwogICAgIGJv
b2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3Q7CisjaWYgRU5BQkxF
X05PVElGSUNBVElPTlMKKyAgICBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIC8vIEEgc2luZ2xlIGl0
ZW0gaW4gdGhlIHdvcmsgcXVldWUuCiAgICAgY2xhc3MgV29ya0l0ZW0gewpAQCAtNDU2LDEwICs0
NjEsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUwogICAgIC8vIEdyYW50cyBw
ZXJtaXNzaW9uIGZvciBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgdG8gYW4gb3JpZ2luCiAgICAgdm9p
ZCBncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogICAgIC8vIFNpbXVsYXRlcyBhIGNsaWNrIG9uIGEgZGVza3RvcCBub3Rp
ZmljYXRpb24uCiAgICAgdm9pZCBzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyNlbmRpZgogCiAgICAgLy8gU3Bl
ZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25zLgogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0
UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTY2MCw2ICs2
NjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYlBlcm1pc3Npb25DbGllbnQgbW9jayBvYmpl
Y3QuCiAgICAgc3RkOjphdXRvX3B0cjxXZWJQZXJtaXNzaW9ucz4gbV93ZWJQZXJtaXNzaW9uczsK
KworI2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgc3RkOjphdXRvX3B0cjxOb3RpZmljYXRp
b25QcmVzZW50ZXI+IG1fbm90aWZpY2F0aW9uUHJlc2VudGVyOworI2VuZGlmCiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRleCAzOThiMzIyYjExZmU1MzUyZTk2ZjE3ZDY2MjJk
ZmI2M2NlZjNkMTQyLi4zMTZmZjMwYzBjMWE1OWQ5OGQxNGYyN2Q3ZGQ3Y2NjZmFlYWRjMzM0IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKQEAgLTc5NCw2ICs3OTQsMTUgQEAgdm9pZCBXZWJU
ZXN0UHJveHlCYXNlOjpwcmludFBhZ2UoV2ViRnJhbWUqIGZyYW1lKQogICAgIGZyYW1lLT5wcmlu
dEVuZCgpOwogfQogCitXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIFdlYlRlc3RQcm94eUJhc2U6
Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCit7CisjaWYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAg
ICByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5ub3RpZmljYXRpb25QcmVz
ZW50ZXIoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogdm9pZCBXZWJUZXN0
UHJveHlCYXNlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiB0bywgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgaWYg
KG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApp
bmRleCAxYTZiY2Q4N2U4MzNhMWI2MGMwMTc1YzMzZGE4MzJiYzQyYTRlNDc1Li4yZTZhY2QyNDcz
Nzc1YmVhYTc2ZDYyMmI5ZmEwOTUwY2ExYTVhYThkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE2Myw5ICsxNjMsNiBAQCB2b2lkIFRlc3RTaGVs
bDo6aW5pdGlhbGl6ZShNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiBwbGF0Zm9ybVN1cHBvcnQp
CiAgICAgbV90ZXN0SW50ZXJmYWNlcyA9IGFkb3B0UHRyKG5ldyBXZWJUZXN0SW50ZXJmYWNlcygp
KTsKICAgICBwbGF0Zm9ybVN1cHBvcnQtPnNldEludGVyZmFjZXMobV90ZXN0SW50ZXJmYWNlcy5n
ZXQoKSk7CiAgICAgbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzID0gYWRvcHRQdHIobmV3IFdlYlRl
c3RJbnRlcmZhY2VzKCkpOwotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi0gICAgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIgPSBhZG9wdFB0
cihuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVyKHRoaXMpKTsKLSNlbmRpZgogI2lmIEVOQUJMRShM
SU5LX1BSRVJFTkRFUikKICAgICBtX3ByZXJlbmRlcmluZ1N1cHBvcnQgPSBhZG9wdFB0cihuZXcg
TW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQoKSk7CiAjZW5kaWYKQEAgLTMwOSw5ICszMDYsNiBA
QCB2b2lkIFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiAgICAgbV90ZXN0SW50ZXJm
YWNlcy0+cmVzZXRBbGwoKTsKICAgICBtX2RldlRvb2xzVGVzdEludGVyZmFjZXMtPnJlc2V0QWxs
KCk7CiAgICAgbV93ZWJWaWV3SG9zdC0+cmVzZXQoKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIG1fbm90aWZpY2F0aW9uUHJl
c2VudGVyLT5yZXNldCgpOwotI2VuZGlmCiAjaWYgT1MoQU5EUk9JRCkKICAgICB3ZWJraXRfc3Vw
cG9ydDo6UmVsZWFzZU1lZGlhUmVzb3VyY2VzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKaW5kZXggMzA5MWNlNzE5YWZhNjE0NDliMTM3NTNkZTNk
NmE5NWRkOTc1ODc2Yy4uMzA5M2I5MmE5ZGY0NDc1OGE3NjZmZWZiYmU0ZWQ3ZTdhM2ZjMjRhZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMxLDcgKzMx
LDYgQEAKICNpZm5kZWYgVGVzdFNoZWxsX2gKICNkZWZpbmUgVGVzdFNoZWxsX2gKIAotI2luY2x1
ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIlRlc3RFdmVudFByaW50ZXIu
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlRlc3RJbnRlcmZh
Y2VzLmgiCkBAIC00Niw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkRl
dlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYk5vdGlmaWNhdGlv
blByZXNlbnRlcjsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJV
Ukw7CkBAIC04NSw5ICs4Myw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBob3N0IGZv
ciB0aGUgbWFpbiBXZWJWaWV3LgogICAgIFdlYlZpZXdIb3N0KiB3ZWJWaWV3SG9zdCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2ViVmlld0hvc3QuZ2V0KCk7IH0KICAgICBXZWJUZXN0UnVubmVyOjpXZWJU
ZXN0UnVubmVyKiB0ZXN0UnVubmVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+
dGVzdFJ1bm5lcigpOyB9Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgTm90aWZpY2F0
aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBtX25v
dGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsgfQotI2VuZGlmCiAgICAgY29uc3QgVGVzdEV2ZW50
UHJpbnRlciogcHJpbnRlcigpIGNvbnN0IHsgcmV0dXJuICZtX3ByaW50ZXI7IH0KIAogICAgIFdl
YlRlc3RSdW5uZXI6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIHsgcmV0dXJuICZtX3By
ZWZzOyB9CkBAIC0yMDIsOSArMTk3LDYgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8RFJURGV2VG9v
bHNDbGllbnQ+IG1fZHJ0RGV2VG9vbHNDbGllbnQ7CiAgICAgT3duUHRyPFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RJbnRlcmZhY2VzPiBtX3Rlc3RJbnRlcmZhY2VzOwogICAgIE93blB0cjxXZWJUZXN0
UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlcz4gbV9kZXZUb29sc1Rlc3RJbnRlcmZhY2VzOwotI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0g
ICAgT3duUHRyPE5vdGlmaWNhdGlvblByZXNlbnRlcj4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXI7
Ci0jZW5kaWYKICAgICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMgdGhyZWFkIGlzIGRlc3Ry
b3llZCBhZnRlciB0aGUgV2ViVmlld0hvc3QuCiAgICAgT3duUHRyPFdlYktpdDo6V2ViVGhyZWFk
PiBtX3dlYkNvbXBvc2l0b3JUaHJlYWQ7CiAgICAgT3duUHRyPFdlYlZpZXdIb3N0PiBtX3dlYlZp
ZXdIb3N0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CmluZGV4IGZkY2I3ZWIzNmJmNjE5ZWMyNGFhMTg0ZTNiNDU1NGY2MjQ3MDIwZGIuLjVkOGZlZDM2
YmM2ODY2ZGRiZjdjZGE3ZmVmOTQ5OTI0M2ZiOWM2YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTI3MCwxMyArMjcwLDYgQEAgaW50IFdl
YlZpZXdIb3N0OjpoaXN0b3J5Rm9yd2FyZExpc3RDb3VudCgpCiAgICAgcmV0dXJuIG5hdmlnYXRp
b25Db250cm9sbGVyKCktPmVudHJ5Q291bnQoKSAtIGN1cnJlbnRJbmRleCAtIDE7CiB9CiAKLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLVdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogV2ViVmll
d0hvc3Q6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCi17Ci0gICAgcmV0dXJuIG1fc2hlbGwtPm5v
dGlmaWNhdGlvblByZXNlbnRlcigpOwotfQotI2VuZGlmCi0KIFdlYktpdDo6V2ViR2VvbG9jYXRp
b25DbGllbnQqIFdlYlZpZXdIb3N0OjpnZW9sb2NhdGlvbkNsaWVudCgpCiB7CiAgICAgcmV0dXJu
IGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwpAQCAtODA5LDE4ICs4MDIsNiBAQCB2b2lkIFdlYlZp
ZXdIb3N0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3Qg
c3RkOjpzdHJpbmcmCiAgICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9j
aygpLT5zZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViU3RyaW5nOjpmcm9tVVRGOChtZXNz
YWdlKSk7CiB9CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXZvaWQgV2ViVmlld0hvc3Q6
OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgb3JpZ2lu
KQotewotICAgIG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5ncmFudFBlcm1pc3Np
b24oV2ViU3RyaW5nOjpmcm9tVVRGOChvcmlnaW4pKTsKLX0KLQotYm9vbCBXZWJWaWV3SG9zdDo6
c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhjb25zdCBzdGQ6OnN0cmluZyYgbm90
aWZpY2F0aW9uSWRlbnRpZmllcikKLXsKLSAgICByZXR1cm4gbV9zaGVsbC0+bm90aWZpY2F0aW9u
UHJlc2VudGVyKCktPnNpbXVsYXRlQ2xpY2soV2ViU3RyaW5nOjpmcm9tVVRGOChub3RpZmljYXRp
b25JZGVudGlmaWVyKSk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiB2
b2lkIFdlYlZpZXdIb3N0OjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3Qgc3RkOjpzdHJp
bmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBsYW5ndWFn
ZSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4
IGY3MzAyZWUyY2UwMzNmNzc5NmE4OTlkOWE3YWVmMGM4OWRjMTVjNjQuLjIzYTIyZDhmZjgwOGE4
MjE0ZDA1NzllOWJlYzU5MjRjZDY0ZGVkOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaApAQCAtMTQ0LDEwICsxNDQsNiBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRv
dWJsZSwgZG91YmxlLCBkb3VibGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcmKSBP
VkVSUklERTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIHZvaWQgZ3Jh
bnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIHNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29u
c3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKLSNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCiAgICAgdmlydHVhbCB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBzdGQ6
OnN0cmluZyYsIGRvdWJsZSwgY29uc3Qgc3RkOjpzdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCkgT1ZFUlJJREU7CkBAIC0y
MDUsOSArMjAxLDYgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3
Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQg
bmF2aWdhdGVCYWNrRm9yd2FyZFNvb24oaW50IG9mZnNldCk7CiAgICAgdmlydHVhbCBpbnQgaGlz
dG9yeUJhY2tMaXN0Q291bnQoKTsKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RD
b3VudCgpOwotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwotI2VuZGlm
CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNs
aWVudCgpOwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgdmlydHVhbCBXZWJLaXQ6Oldl
YlNwZWVjaElucHV0Q29udHJvbGxlciogc3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lciopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>