<?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>202772</bug_id>
          
          <creation_ts>2019-10-09 15:51:43 -0700</creation_ts>
          <short_desc>Rename WheelEventTestTrigger and improve naming in related code</short_desc>
          <delta_ts>2019-10-09 17:26:15 -0700</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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1578435</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-09 15:51:43 -0700</bug_when>
    <thetext>Rename WheelEventTestTrigger and improve naming in related code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578437</commentid>
    <comment_count>1</comment_count>
      <attachid>380581</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-09 15:54:18 -0700</bug_when>
    <thetext>Created attachment 380581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578440</commentid>
    <comment_count>2</comment_count>
      <attachid>380582</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-09 16:00:15 -0700</bug_when>
    <thetext>Created attachment 380582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578468</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-10-09 17:25:14 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/250946/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578470</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-09 17:26:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/56137027&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380581</attachid>
            <date>2019-10-09 15:54:18 -0700</date>
            <delta_ts>2019-10-09 16:00:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202772-20191009155417.patch</filename>
            <type>text/plain</type>
            <size>98254</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5ZmU2ZDA0OWY2YmE3
MDJjYzE0MDY0ODBkZTJlMzRmYjlhYjUyZi4uZjVhZWQ4YjBiYjExNTg0NGZiZGQxYjc3MmUwY2Yz
YWJlZDM3NjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxOS0xMC0wOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyIGFuZCBpbXByb3ZlIG5hbWluZyBpbiByZWxhdGVkIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjc3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUg
InRlc3QgdHJpZ2dlciIgdGVybWlub2xvZ3kgdG8gIm1vbml0b3Igd2hlZWwgZXZlbnRzIjsgYWZ0
ZXIgYWxsLCB0ZXN0cworICAgICAgICBjYWxsIG1vbml0b3JXaGVlbEV2ZW50cygpIGFuZCBjYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKSwgYW5kIHRoaXMgaXMgbm90IHRyaWdnZXJpbmcKKyAg
ICAgICAgYSB0ZXN0LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0U2Nyb2xsYmFyc0ZvckxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkQWRkU2Nyb2xsYmFyKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZW5zdXJlV2hlZWxFdmVudFRl
c3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVuc3VyZVRlc3RUcmlnZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OndoZWVsRXZlbnRUZXN0TW9uaXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpj
bGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc01v
bml0b3JpbmdXaGVlbEV2ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp0ZXN0
VHJpZ2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjbGVhclRy
aWdnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZXhwZWN0c1doZWVsRXZl
bnRUcmlnZ2VycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50VGVz
dE1vbml0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmRlZmVy
Rm9yUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6cmVt
b3ZlRGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RN
b25pdG9yOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmguCisgICAgICAg
ICogcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6cGxhdGZvcm1QcmVwYXJlRm9yV2hlZWxFdmVudHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVJc01vbml0b3JpbmdX
aGVlbEV2ZW50c0ZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZGVmZXJXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25Gb3JSZWFzb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJy
YWxGb3JSZWFzb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlRXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcldpdGhGcmFtZVZpZXcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZGVmZXJUZXN0c0ZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyV2l0aEZy
YW1lVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0Fm
dGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXRJc01vbml0b3JpbmdXaGVlbEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0RXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6ZGVmZXJXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZTo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6ZGVmZXJUZXN0c0ZvclJlYXNvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVm
ZXJyYWxGb3JSZWFzb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9y
UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVtb3Zl
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlclRlc3RzRm9yUmVhc29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVtb3ZlVGVzdERl
ZmVycmFsRm9yUmVhc29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6aGFuZGxl
V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjpkZWZlclRlc3RzRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnJlbW92ZVRlc3REZWZl
cnJhbEZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2lu
Zy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJl
YXNvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmVtb3ZlV2hl
ZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmRlZmVyVGVzdHNGb3JSZWFzb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVRlc3REZWZlcnJh
bEZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRv
cjo6c2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcjo6c2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpkZWZlcldoZWVsRXZlbnRUZXN0Q29t
cGxldGlvbkZvclJlYXNvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpkZWZl
clRlc3RzRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bENvbnRyb2xsZXJDbGllbnQ6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzdG9wU25hcFJ1YmJlcmJh
bmRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzY2hlZHVsZVN0
YXRlbGVzc1Njcm9sbFNuYXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6
c3RhcnREZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0b3BEZWZlcnJpbmdXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25hcFRpbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0b3BTY3JvbGxTbmFwVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6c3RhcnREZWZlcnJpbmdUZXN0c0R1ZVRvU2Nyb2xs
U25hcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6
c3RvcERlZmVycmluZ1Rlc3RzRHVlVG9TY3JvbGxTbmFwcGluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEJlZ2luU2Nyb2xsR2VzdHVyZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6ZGlkRW5kU2Nyb2xsR2VzdHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2VuZENvbnRlbnRBcmVhU2Ny
b2xsZWRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzZW5kQ29u
dGVudEFyZWFTY3JvbGxlZFRpbWVyRmlyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBXaGVlbEV2ZW50TW9uaXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldFNjcm9sbExlZnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBXaGVl
bEV2ZW50VGVzdFRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3JlYXRlU2Nyb2xsYmFy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXR1cFdoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwV2hlZWxFdmVudFRl
c3RUcmlnZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6Om1vbml0b3JXaGVlbEV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0
Tm90aWZpY2F0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjbGVhcldo
ZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmNsZWFy
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5oOgorCiAyMDE5LTEwLTA5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQjogdXBkYXRlIHNpemUgdG8gYWN0dWFsIGRp
c2sgdXNhZ2Ugb25seSB3aGVuIGVzdGltYXRlZCBpbmNyZWFzZSBpcyBiaWdnZXIgdGhhbiBzcGFj
ZSBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTkxNWMyMGFjM2JiNDBiYmVmNmE4ZmRkYWRiY2Y5NjQx
NTkyYzExNS4uMWY3M2M0NTQ5M2FhNTU4Nzk3NGQ5NDg2MmE0YzUwMDcyNDIxY2Y1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0xMC0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2hlZWxFdmVudFRlc3RUcmlnZ2VyIGFu
ZCBpbXByb3ZlIG5hbWluZyBpbiByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgInRlc3QgdHJpZ2dlciIgdGVybWlu
b2xvZ3kgdG8gIm1vbml0b3Igd2hlZWwgZXZlbnRzIjsgYWZ0ZXIgYWxsLCB0ZXN0cworICAgICAg
ICBjYWxsIG1vbml0b3JXaGVlbEV2ZW50cygpIGFuZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoKSwgYW5kIHRoaXMgaXMgbm90IHRyaWdnZXJpbmcKKyAgICAgICAgYSB0ZXN0LgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDbGVhcldo
ZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0
VHJpZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcik6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxl
UGFnZVN0YXJ0TW9uaXRvcmluZ1Njcm9sbE9wZXJhdGlvbnMpOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhcldoZWVsRXZlbnRUZXN0TW9u
aXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmln
Z2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5
LTEwLTA5ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IElQQzo6ZGVjb2RlIHNob3VsZCBncmFjZWZ1bGx5IGhhbmRsZSBhIG5pbCBhbGxvd2VkIGNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGY1ZWZmNzMyZTAyMzhmNDA5ODBlNThjYTgzOTZiNGNmMDY1YWMz
M2IuLjRmNDQwNzI3ODJkYWZlOTAzMGM2OTIyNmJjZDUxMWEwZGE2NGEwMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
IHBhZ2UvVmlzaXRlZExpbmtTdG9yZS5jcHAKIHBhZ2UvVmlzdWFsVmlld3BvcnQuY3BwCiBwYWdl
L1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKLXBhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNw
cAorcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNw
cAogcGFnZS9XaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwCiBwYWdlL1dvcmtlck5hdmln
YXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3YTNhOWJkYWVmODczOTljMDhmOWIzZmIzMjdmMGY3NWM4NDk0ZTRjLi4y
ZTYxZGJkMjllZmY3N2FhOWJlYTY5ZTJhMGVjNGRjMDQ5YzgxOGRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTQ1LDcgKzIx
NDUsNyBAQAogCQk3QUFCQTI1QTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUFCQTI1ODE0QkM2MTMz
MDBBQTlBMTEgLyogRE9NRWRpdG9yLmggKi87IH07CiAJCTdBQUZFOEQwMTlDQjg2NzIwMDBGNTZE
OCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUFGRThDRTE5Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hp
bmdTdGF0ZS5oICovOyB9OwogCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1l
bnVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QUUzMzVGMjFB
Q0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYg
LyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZl
bnRUZXN0TW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FFMzM1RjAxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0TW9uaXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRTZD
OTNDMUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRTZDOTNBMUJFMEM2MDEwMEUx
OUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCAqLzsgfTsKIAkJN0FGOUIyMDIxOENGQjJE
RjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmNw
cCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkQxOENGQjJE
RjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9OwpAQCAtOTU4NSw4ICs5NTg1LDggQEAKIAkJ
N0FBRkU4Q0QxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQUZFOENFMTlDQjg2NzIwMDBGNTZEOCAv
KiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbExhdGNoaW5nU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FE
RTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3QUUzMzVFRjFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdB
RTMzNUYwMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBRTMzNUVGMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVl
bEV2ZW50VGVzdE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0FFMzM1RjAxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0TW9uaXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaGVlbEV2ZW50VGVzdE1vbml0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FFNkM5MzcxQkUwQzVDODAwRTE5RTAzIC8q
IE1haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FFNkM5MzkxQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRU
aW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFk
U2hhcmVkVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUU2QzkzQTFC
RTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1haW5UaHJlYWRTaGFyZWRUaW1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA1NjAsOCArMjA1NjAsOCBAQAogCQkJCTQ5NEJENzk0MEY1NUM4
RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5pZGwgKi8sCiAJCQkJMkUxOTUxNkExQjY1OThEMjAw
REY2RUVGIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgKi8sCiAJCQkJMkVCQkMzRDcxQjY1
OTg4MzAwRjUyNTNEIC8qIFdoZWVsRXZlbnREZWx0YUZpbHRlci5oICovLAotCQkJCTdBRTMzNUVG
MUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwICovLAotCQkJCTdB
RTMzNUYwMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCAqLywKKwkJ
CQk3QUUzMzVFRjFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcCAq
LywKKwkJCQk3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RNb25pdG9y
LmggKi8sCiAJCQkJN0M0MTg5QUMxQjA3Q0JGMjAwMEZBNzU3IC8qIFdpbmRvd0V2ZW50SGFuZGxl
cnMuaWRsICovLAogCQkJCUJDODI0M0U2MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJl
cy5jcHAgKi8sCiAJCQkJQkM4MjQzRTcwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVz
LmggKi8sCkBAIC0zMjQ5NCw3ICszMjQ5NCw3IEBACiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5
MkUwIC8qIFdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQkJDM0Q4MUI2NTk4ODMw
MEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJF
OUI1RDhGMUI2NkE5NEUwMDhDNkEyNCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTdBRTMzNUYyMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVz
dFRyaWdnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBRTMzNUYyMUFDQjA5RTIwMEU0MDFFRiAv
KiBXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjI1MjMz
MUFENTMwMDU3RTlEMiAvKiBXSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE5NTZGMjQyMzMxQUQyMTAwNTdFOUQyIC8qIFdITFNMUHJvZ3JhbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE5NTZGMjMyMzMxQUNGMjAwNTdFOUQyIC8qIFdITFNMUmVwbGFjZVdpdGgu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGQ3MmJhN2Vm
N2QxMGE5NDMzZjY4ZDcyYTc0NWY4Y2M0MWE4ZDlkMWIuLmIwYTNlNTY0ODE2NTE0ZTRkMDEyNDc2
NmY2ZDUzNjhjZmJlMzlhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEwMiw3
ICsxMDIsNyBAQAogI2luY2x1ZGUgIlRpbGVkQmFja2luZy5oIgogI2luY2x1ZGUgIlZlbG9jaXR5
RGF0YS5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0LmgiCi0jaW5jbHVkZSAiV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KQEAgLTExOTYsOCArMTE5Niw4IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RTY3Jv
bGxiYXJzRm9yTGF5b3V0KGJvb2wgaXNGaXJzdExheW91dCkKICAgICAgICAgaWYgKGhNb2RlID09
IFNjcm9sbGJhckF1dG8pCiAgICAgICAgICAgICBzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTW9kZShT
Y3JvbGxiYXJBbHdheXNPZmYpOyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwgc2Nyb2xsYmFy
IHRvIGRpc2FwcGVhci4KICAgICAgICAgQVNTRVJUKGZyYW1lKCkucGFnZSgpKTsKLSAgICAgICAg
aWYgKGZyYW1lKCkucGFnZSgpLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCi0gICAgICAg
ICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihmcmFtZSgpLnBh
Z2UoKS0+dGVzdFRyaWdnZXIoKSk7CisgICAgICAgIGlmIChmcmFtZSgpLnBhZ2UoKS0+aXNNb25p
dG9yaW5nV2hlZWxFdmVudHMoKSkKKyAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hl
ZWxFdmVudFRlc3RNb25pdG9yKGZyYW1lKCkucGFnZSgpLT53aGVlbEV2ZW50VGVzdE1vbml0b3Io
KSk7CiAgICAgICAgIHNldFNjcm9sbGJhck1vZGVzKGhNb2RlLCB2TW9kZSk7CiAgICAgICAgIHNl
dFNjcm9sbGJhcnNTdXBwcmVzc2VkKGZhbHNlLCB0cnVlKTsKICAgICB9IGVsc2UgaWYgKGhNb2Rl
ICE9IGhvcml6b250YWxTY3JvbGxiYXJNb2RlKCkgfHwgdk1vZGUgIT0gdmVydGljYWxTY3JvbGxi
YXJNb2RlKCkpCkBAIC0yMjM4LDggKzIyMzgsOCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHNjcm9sbFBvc2l0aW9uKQogICAgIG1fc2hv
dWxkU2Nyb2xsVG9Gb2N1c2VkRWxlbWVudCA9IGZhbHNlOwogICAgIG1fZGVsYXllZFNjcm9sbFRv
Rm9jdXNlZEVsZW1lbnRUaW1lci5zdG9wKCk7CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lKCkucGFn
ZSgpOwotICAgIGlmIChwYWdlICYmIHBhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkK
LSAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZS0+
dGVzdFRyaWdnZXIoKSk7CisgICAgaWYgKHBhZ2UgJiYgcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxF
dmVudHMoKSkKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0
b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwogICAgIFNjcm9sbFZpZXc6OnNldFNj
cm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKIAogICAgIHNldEN1cnJlbnRTY3JvbGxUeXBl
KG9sZFNjcm9sbFR5cGUpOwpAQCAtNTA2MSw4ICs1MDYxLDggQEAgdm9pZCBGcmFtZVZpZXc6OmRp
ZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW4KIHsKICAgICBTY3JvbGxhYmxlQXJlYTo6ZGlkQWRkU2Nyb2xsYmFyKHNjcm9sbGJhciwg
b3JpZW50YXRpb24pOwogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKLSAgICBpZiAo
cGFnZSAmJiBwYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCi0gICAgICAgIHNjcm9s
bEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkp
OworICAgIGlmIChwYWdlICYmIHBhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAg
ICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKHBhZ2UtPndoZWVs
RXZlbnRUZXN0TW9uaXRvcigpKTsKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9i
amVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5oYW5kbGVTY3JvbGxiYXJVcGRhdGUodGhpcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA3NDY5N2M5OWIwNzlkNTFiMTcwMDk4ZDg0OGVjNzYz
YmEzNzUxZTI0Li5iZDhjNjYxYjk0ZWRkMDMyMjYyNjMyMGRjYjFhY2U5NjU0YzU4OTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTI1NjksMTggKzI1NjksMTggQEAgdm9pZCBQYWdlOjpzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCBjbGllbnRJZCwgYm9vbCBzaG91bGRQbGF5
KQogfQogI2VuZGlmCiAKLVdoZWVsRXZlbnRUZXN0VHJpZ2dlciYgUGFnZTo6ZW5zdXJlVGVzdFRy
aWdnZXIoKQorV2hlZWxFdmVudFRlc3RNb25pdG9yJiBQYWdlOjplbnN1cmVXaGVlbEV2ZW50VGVz
dE1vbml0b3IoKQogewotICAgIGlmICghbV90ZXN0VHJpZ2dlcikgewotICAgICAgICBtX3Rlc3RU
cmlnZ2VyID0gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcigpKTsKKyAgICBpZiAo
IW1fd2hlZWxFdmVudFRlc3RNb25pdG9yKSB7CisgICAgICAgIG1fd2hlZWxFdmVudFRlc3RNb25p
dG9yID0gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKICAgICAgICAgLy8g
V2UgbmVlZCB0byB1cGRhdGUgdGhlIHNjcm9sbGluZyBjb29yZGluYXRvciBzbyB0aGF0IHRoZSBt
YWluZnJhbWUgc2Nyb2xsaW5nIG5vZGUgY2FuIGV4cGVjdCB3aGVlbCBldmVudCB0ZXN0IHRyaWdn
ZXJzLgogICAgICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gbWFpbkZyYW1lKCkudmlldygpKSB7
CiAgICAgICAgICAgICBpZiAobV9zY3JvbGxpbmdDb29yZGluYXRvcikKLSAgICAgICAgICAgICAg
ICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmln
Z2VyV2l0aEZyYW1lVmlldygqZnJhbWVWaWV3KTsKKyAgICAgICAgICAgICAgICBtX3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLT51cGRhdGVJc01vbml0b3JpbmdXaGVlbEV2ZW50c0ZvckZyYW1lVmlldygq
ZnJhbWVWaWV3KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAqbV90ZXN0VHJpZ2dl
cjsKKyAgICByZXR1cm4gKm1fd2hlZWxFdmVudFRlc3RNb25pdG9yOwogfQogCiAjaWYgRU5BQkxF
KFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNjllNmZkYTE5MzQwYWIyNTVhOTc0Y2I2ZTUzOGYz
Yzc0MjE0Y2JiLi4zYzExYzYwNjYyZmIwMzA4YjQ3Zjg1YjdhNjM3N2EyZjc1ZjllNDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlZpc2liaWxpdHlTdGF0ZS5oIgotI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgor
I2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAg
LTY0NCwxMCArNjQ0LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90LCBib29sKTsKICNlbmRpZgogCi0gICAg
UmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gdGVzdFRyaWdnZXIoKSBjb25zdCB7IHJldHVy
biBtX3Rlc3RUcmlnZ2VyOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2hlZWxFdmVudFRlc3RUcmln
Z2VyJiBlbnN1cmVUZXN0VHJpZ2dlcigpOwotICAgIHZvaWQgY2xlYXJUcmlnZ2VyKCkgeyBtX3Rl
c3RUcmlnZ2VyID0gbnVsbHB0cjsgfQotICAgIGJvb2wgZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2Vy
cygpIGNvbnN0IHsgcmV0dXJuICEhbV90ZXN0VHJpZ2dlcjsgfQorICAgIFJlZlB0cjxXaGVlbEV2
ZW50VGVzdE1vbml0b3I+IHdoZWVsRXZlbnRUZXN0TW9uaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
d2hlZWxFdmVudFRlc3RNb25pdG9yOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgV2hlZWxFdmVudFRl
c3RNb25pdG9yJiBlbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKKyAgICB2b2lkIGNsZWFy
V2hlZWxFdmVudFRlc3RNb25pdG9yKCkgeyBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IG51bGxw
dHI7IH0KKyAgICBib29sIGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkgY29uc3QgeyByZXR1cm4g
ISFtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsgfQogCiAgICAgdm9pZCBzZXRJc0ZvclNhbml0aXpp
bmdXZWJDb250ZW50KCkgeyBtX2lzRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQgPSB0cnVlOyB9CiAg
ICAgYm9vbCBpc0ZvclNhbml0aXppbmdXZWJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0Zv
clNhbml0aXppbmdXZWJDb250ZW50OyB9CkBAIC05MjYsNyArOTI2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjsKICAgICBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4gbV91c2VyQ29udGVudFByb3ZpZGVyOwog
ICAgIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7Ci0gICAgUmVmUHRy
PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV90ZXN0VHJpZ2dlcjsKKyAgICBSZWZQdHI8V2hlZWxF
dmVudFRlc3RNb25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAogICAgIEhhc2hTZXQ8
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyKj4gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDYxZmYxMWE1MTk4NTI4NzQ4NzAxYzVmMTUwYjNlN2NkMzM1Yzc0NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9y
LmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2hlZWxF
dmVudFRlc3RNb25pdG9yLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgorCisjaWYgIUxPR19ESVNBQkxFRAorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXaGVlbEV2ZW50VGVzdE1vbml0b3I6OldoZWVs
RXZlbnRUZXN0TW9uaXRvcigpCisgICAgOiBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIoUnVuTG9v
cDo6Y3VycmVudCgpLCB0aGlzLCAmV2hlZWxFdmVudFRlc3RNb25pdG9yOjp0cmlnZ2VyVGVzdFRp
bWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpjbGVhckFsbFRl
c3REZWZlcnJhbHMoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcmVhc29u
c0xvY2spOworICAgIG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5jbGVhcigpOworICAgIG1fY29t
cGxldGlvbkNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIu
c3RvcCgpOworICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVh
bSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJy
YWxzOiBjbGVhcmVkIGFsbCB0ZXN0IHN0YXRlLiIpOworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAgIHsKKyAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9yZWFzb25zTG9jayk7CisgICAgICAgIG1fY29tcGxl
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShmdW5jdGlvbkNhbGxiYWNrKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90
ZXN0Rm9yQ29tcGxldGlvblRpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIDYwLik7Cit9CisKK3Zv
aWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpkZWZlckZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgRGVmZXJSZWFzb24gcmVhc29uKQoreworICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKG1fcmVhc29uc0xvY2spOworICAgIG1fZGVmZXJDb21wbGV0aW9u
UmVhc29ucy5lbnN1cmUoaWRlbnRpZmllciwgW10geworICAgICAgICByZXR1cm4gT3B0aW9uU2V0
PERlZmVyUmVhc29uPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQocmVhc29uKTsKKyAg
ICAKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwg
IiAgICAgICg9KSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmRlZmVyRm9yUmVhc29uOiBpZD0iIDw8
IGlkZW50aWZpZXIgPDwgIiwgcmVhc29uPSIgPDwgcmVhc29uKTsKK30KKwordm9pZCBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OnJlbW92ZURlZmVycmFsRm9yUmVhc29uKFNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyLCBEZWZlclJlYXNvbiByZWFzb24pCit7CisgICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9yZWFzb25zTG9jayk7CisgICAgYXV0byBpdCA9IG1fZGVmZXJD
b21wbGV0aW9uUmVhc29ucy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdCA9PSBtX2RlZmVy
Q29tcGxldGlvblJlYXNvbnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExPR19XSVRI
X1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVs
RXZlbnRUZXN0TW9uaXRvcjo6cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb246IGlkPSIgPDwgaWRlbnRp
ZmllciA8PCAiLCByZWFzb249IiA8PCByZWFzb24pOworICAgIGl0LT52YWx1ZS5yZW1vdmUocmVh
c29uKTsKKyAgICAKKyAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9kZWZl
ckNvbXBsZXRpb25SZWFzb25zLnJlbW92ZShpdCk7Cit9CisgICAgCit2b2lkIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVkKCkKK3sKKyAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4gZnVuY3Rpb25DYWxsYmFjazsKKworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9yZWFzb25zTG9jayk7CisgICAgICAgIGlmICghbV9kZWZlckNvbXBs
ZXRpb25SZWFzb25zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdo
ZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
dHJpZ2dlclRlc3RUaW1lckZpcmVkIC0gc2Nyb2xsaW5nIHN0aWxsIGFjdGl2ZSwgcmVhc29ucyAi
IDw8IG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbkNhbGxiYWNrID0gV1RGTW92ZShtX2NvbXBsZXRpb25D
YWxsYmFjayk7CisgICAgfQorCisgICAgbV90ZXN0Rm9yQ29tcGxldGlvblRpbWVyLnN0b3AoKTsK
KworICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAi
ICBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZDogc2Nyb2xsaW5n
IGlzIGlkbGUsIEZJUklORyBURVNUIik7CisgICAgaWYgKGZ1bmN0aW9uQ2FsbGJhY2spCisgICAg
ICAgIGZ1bmN0aW9uQ2FsbGJhY2soKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbiByZWFzb24pCit7
CisgICAgc3dpdGNoIChyZWFzb24pIHsKKyAgICBjYXNlIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
UnViYmVyYmFuZEluUHJvZ3Jlc3M6IHRzIDw8ICJydWJiZXJiYW5kaW5nIjsgYnJlYWs7CisgICAg
Y2FzZSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbFNuYXBJblByb2dyZXNzOiB0cyA8PCAi
c2Nyb2xsLXNuYXBwaW5nIjsgYnJlYWs7CisgICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6
OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQ6IHRzIDw8ICJzY3JvbGxpbmcgdGhyZWFkIHN5bmMg
bmVlZGVkIjsgYnJlYWs7CisgICAgY2FzZSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkNvbnRlbnRT
Y3JvbGxJblByb2dyZXNzOiB0cyA8PCAiY29udGVudCBzY3JvbGxpbmciOyBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhUmVhc29uTWFw
JiByZWFzb25NYXApCit7CisgICAgZm9yIChjb25zdCBhdXRvJiByZWdpb25SZWFzb25zUGFpciA6
IHJlYXNvbk1hcCkKKyAgICAgICAgdHMgPDwgIiAgIHNjcm9sbCByZWdpb246ICIgPDwgcmVnaW9u
UmVhc29uc1BhaXIua2V5IDw8ICIgcmVhc29uczogIiA8PCByZWdpb25SZWFzb25zUGFpci52YWx1
ZTsKKworICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNkY2U1
YzIwZmZmMTQ3ODVjMGZjODM4MTkyMDBiYTU2ZmUyMDgxMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmgKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaGVl
bEV2ZW50VGVzdE1vbml0b3IpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRlc3REZWZlcnJhbHMoKTsK
KyAgICAKKyAgICBlbnVtIERlZmVyUmVhc29uIHsKKyAgICAgICAgUnViYmVyYmFuZEluUHJvZ3Jl
c3MgICAgICAgID0gMSA8PCAwLAorICAgICAgICBTY3JvbGxTbmFwSW5Qcm9ncmVzcyAgICAgICAg
PSAxIDw8IDEsCisgICAgICAgIFNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQgICA9IDEgPDwgMiwK
KyAgICAgICAgQ29udGVudFNjcm9sbEluUHJvZ3Jlc3MgICAgID0gMSA8PCAzCisgICAgfTsKKyAg
ICB0eXBlZGVmIGNvbnN0IHZvaWQqIFNjcm9sbGFibGVBcmVhSWRlbnRpZmllcjsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVmZXJGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVy
LCBEZWZlclJlYXNvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVEZWZlcnJhbEZv
clJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIERlZmVyUmVhc29uKTsKKyAgICAKKyAg
ICB2b2lkIHRyaWdnZXJUZXN0VGltZXJGaXJlZCgpOworCisgICAgdXNpbmcgU2Nyb2xsYWJsZUFy
ZWFSZWFzb25NYXAgPSBXVEY6Okhhc2hNYXA8U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBPcHRp
b25TZXQ8RGVmZXJSZWFzb24+PjsKKworcHJpdmF0ZToKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gbV9jb21wbGV0aW9uQ2FsbGJhY2s7CisgICAgUnVuTG9vcDo6VGltZXI8V2hlZWxFdmVudFRl
c3RNb25pdG9yPiBtX3Rlc3RGb3JDb21wbGV0aW9uVGltZXI7CisKKyAgICBtdXRhYmxlIExvY2sg
bV9yZWFzb25zTG9jazsKKyAgICBTY3JvbGxhYmxlQXJlYVJlYXNvbk1hcCBtX2RlZmVyQ29tcGxl
dGlvblJlYXNvbnM7Cit9OworCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbik7CitXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpTY3JvbGxhYmxlQXJlYVJlYXNvbk1hcCYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0VHJpZ2dl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNzFkOGZjZGM3OWY0NjQ4YzE3NTBiNDRiNGYx
N2Q4ZmM3YWQ5NjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldoZWVs
RXZlbnRUZXN0VHJpZ2dlci5oIgotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQotI2lmICFMT0dfRElTQUJMRUQKLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpXaGVl
bEV2ZW50VGVzdFRyaWdnZXIoKQotICAgIDogbV90ZXN0VHJpZ2dlclRpbWVyKFJ1bkxvb3A6OmN1
cnJlbnQoKSwgdGhpcywgJldoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6dHJpZ2dlclRlc3RUaW1lckZp
cmVkKQotewotfQotCi12b2lkIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6Y2xlYXJBbGxUZXN0RGVm
ZXJyYWxzKCkKLXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rlc3RUcmlnZ2Vy
TXV0ZXgpOwotICAgIG1fZGVmZXJUZXN0VHJpZ2dlclJlYXNvbnMuY2xlYXIoKTsKLSAgICBtX3Rl
c3ROb3RpZmljYXRpb25DYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgbV90ZXN0VHJpZ2dlclRpbWVy
LnN0b3AoKTsKLSAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RUcmlnZ2Vycywgc3Ry
ZWFtIDw8ICIgICAgICAoPSkgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpjbGVhckFsbFRlc3REZWZl
cnJhbHM6IGNsZWFyZWQgYWxsIHRlc3Qgc3RhdGUuIik7Ci19Ci0KLXZvaWQgV2hlZWxFdmVudFRl
c3RUcmlnZ2VyOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uQ2FsbGJhY2spCi17Ci0gICAgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rlc3RUcmlnZ2VyTXV0ZXgpOwotICAgICAgICBt
X3Rlc3ROb3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUoZnVuY3Rpb25DYWxsYmFjayk7Ci0g
ICAgfQotICAgIAotICAgIGlmICghbV90ZXN0VHJpZ2dlclRpbWVyLmlzQWN0aXZlKCkpCi0gICAg
ICAgIG1fdGVzdFRyaWdnZXJUaW1lci5zdGFydFJlcGVhdGluZygxX3MgLyA2MC4pOwotfQotCi12
b2lkIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6ZGVmZXJUZXN0c0ZvclJlYXNvbihTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgRGVmZXJUZXN0VHJpZ2dlclJlYXNvbiByZWFzb24p
Ci17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90ZXN0VHJpZ2dlck11dGV4KTsK
LSAgICBtX2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBPcHRpb25TZXQ8RGVmZXJUZXN0VHJpZ2dlclJlYXNvbj4oKTsKLSAgICB9
KS5pdGVyYXRvci0+dmFsdWUuYWRkKHJlYXNvbik7Ci0gICAgCi0gICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6ZGVmZXJUZXN0c0ZvclJlYXNvbjogaWQ9IiA8PCBpZGVudGlmaWVyIDw8ICIs
IHJlYXNvbj0iIDw8IHJlYXNvbik7Ci19Ci0KLXZvaWQgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpy
ZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIERlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKQotewotICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1fdGVzdFRyaWdnZXJNdXRleCk7Ci0gICAgYXV0byBpdCA9IG1fZGVm
ZXJUZXN0VHJpZ2dlclJlYXNvbnMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgPT0gbV9k
ZWZlclRlc3RUcmlnZ2VyUmVhc29ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9H
X1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVhbSA8PCAiICAgICAgKD0p
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uOiBpZD0i
IDw8IGlkZW50aWZpZXIgPDwgIiwgcmVhc29uPSIgPDwgcmVhc29uKTsKLSAgICBpdC0+dmFsdWUu
cmVtb3ZlKHJlYXNvbik7Ci0gICAgCi0gICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fZGVmZXJUZXN0VHJpZ2dlclJlYXNvbnMucmVtb3ZlKGl0KTsKLX0KLSAgICAKLXZvaWQg
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQoKQotewotICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbkNhbGxiYWNrOwotCi0gICAgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rlc3RUcmlnZ2VyTXV0ZXgpOwotICAgICAgICBp
ZiAoIW1fZGVmZXJUZXN0VHJpZ2dlclJlYXNvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RUcmlnZ2Vycywgc3RyZWFtIDw8ICIgIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVkIC0gc2Nyb2xsaW5nIHN0aWxs
IGFjdGl2ZSwgcmVhc29ucyAiIDw8IG1fZGVmZXJUZXN0VHJpZ2dlclJlYXNvbnMpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb25DYWxsYmFjayA9IFdU
Rk1vdmUobV90ZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2spOwotICAgIH0KLQotICAgIG1fdGVzdFRy
aWdnZXJUaW1lci5zdG9wKCk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RU
cmlnZ2Vycywgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6dHJpZ2dlclRlc3RU
aW1lckZpcmVkOiBzY3JvbGxpbmcgaXMgaWRsZSwgRklSSU5HIFRFU1QiKTsKLSAgICBpZiAoZnVu
Y3Rpb25DYWxsYmFjaykKLSAgICAgICAgZnVuY3Rpb25DYWxsYmFjaygpOwotfQotCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRl
ZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKQotewotICAgIHN3aXRjaCAocmVhc29uKSB7Ci0g
ICAgY2FzZSBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlJ1YmJlcmJhbmRJblByb2dyZXNzOiB0cyA8
PCAicnViYmVyYmFuZGluZyI7IGJyZWFrOwotICAgIGNhc2UgV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
OjpTY3JvbGxTbmFwSW5Qcm9ncmVzczogdHMgPDwgInNjcm9sbC1zbmFwcGluZyI7IGJyZWFrOwot
ICAgIGNhc2UgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVk
OiB0cyA8PCAic2Nyb2xsaW5nIHRocmVhZCBzeW5jIG5lZWRlZCI7IGJyZWFrOwotICAgIGNhc2Ug
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzczogdHMgPDwgImNv
bnRlbnQgc2Nyb2xsaW5nIjsgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2hlZWxFdmVudFRlc3RU
cmlnZ2VyOjpTY3JvbGxhYmxlQXJlYVJlYXNvbk1hcCYgcmVhc29uTWFwKQotewotICAgIGZvciAo
Y29uc3QgYXV0byYgcmVnaW9uUmVhc29uc1BhaXIgOiByZWFzb25NYXApCi0gICAgICAgIHRzIDw8
ICIgICBzY3JvbGwgcmVnaW9uOiAiIDw8IHJlZ2lvblJlYXNvbnNQYWlyLmtleSA8PCAiIHJlYXNv
bnM6ICIgPDwgcmVnaW9uUmVhc29uc1BhaXIudmFsdWU7Ci0KLSAgICByZXR1cm4gdHM7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRU
ZXN0VHJpZ2dlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTNkYjk3NzU3Zjc1
MDQ5NmZjNGNkN2M1ZDVhYWRkMzFiOWVmNDNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KLSNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2hlZWxFdmVudFRlc3RU
cmlnZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5v
dGlmaWNhdGlvblRpbWVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsZWFyQWxsVGVzdERlZmVycmFscygpOwotICAgIAotICAgIGVudW0gRGVmZXJU
ZXN0VHJpZ2dlclJlYXNvbiB7Ci0gICAgICAgIFJ1YmJlcmJhbmRJblByb2dyZXNzICAgICAgICA9
IDEgPDwgMCwKLSAgICAgICAgU2Nyb2xsU25hcEluUHJvZ3Jlc3MgICAgICAgID0gMSA8PCAxLAot
ICAgICAgICBTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkICAgPSAxIDw8IDIsCi0gICAgICAgIENv
bnRlbnRTY3JvbGxJblByb2dyZXNzICAgICA9IDEgPDwgMwotICAgIH07Ci0gICAgdHlwZWRlZiBj
b25zdCB2b2lkKiBTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlZmVyVGVzdHNGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBEZWZl
clRlc3RUcmlnZ2VyUmVhc29uKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVRlc3RE
ZWZlcnJhbEZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIERlZmVyVGVzdFRyaWdn
ZXJSZWFzb24pOwotICAgIAotICAgIHZvaWQgdHJpZ2dlclRlc3RUaW1lckZpcmVkKCk7Ci0KLSAg
ICB1c2luZyBTY3JvbGxhYmxlQXJlYVJlYXNvbk1hcCA9IFdURjo6SGFzaE1hcDxTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXIsIE9wdGlvblNldDxEZWZlclRlc3RUcmlnZ2VyUmVhc29uPj47Ci0KLXBy
aXZhdGU6Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fdGVzdE5vdGlmaWNhdGlvbkNhbGxi
YWNrOwotICAgIFJ1bkxvb3A6OlRpbWVyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV90ZXN0VHJp
Z2dlclRpbWVyOwotICAgIG11dGFibGUgTG9jayBtX3Rlc3RUcmlnZ2VyTXV0ZXg7Ci0gICAgCi0g
ICAgU2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAgbV9kZWZlclRlc3RUcmlnZ2VyUmVhc29uczsKLX07
Ci0KLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaGVlbEV2
ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pOwotV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cjo6U2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGMwZDRjMjUw
ZWMyMjVjY2RkMmYxNjI0NjczMDlhMTUzNjQxNTU0MjEuLjNmOTgxZGQxOWM5ODZjOGNlODBjZjI4
YTlkYjQxZWFiNWZmOGI1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0KQEAgLTY0LDcgKzY0LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCIKLSNp
bmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50VGVz
dE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBA
IC05NTYsOCArOTU2LDggQEAgdm9pZCBFdmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldo
ZWVsRXZlbnRzKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKICAgICB9CiAgICAgCiAg
ICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwotICAgIGlmIChzY3JvbGxhYmxlQXJlYSAm
JiBwYWdlICYmIHBhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKLSAgICAgICAgc2Ny
b2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBh
Z2UtPnRlc3RUcmlnZ2VyKCkpOworICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBwYWdlICYmIHBh
Z2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgIHNjcm9sbGFibGVBcmVhLT5z
Y3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlLT53aGVlbEV2ZW50
VGVzdE1vbml0b3IoKSk7CiAKICAgICBTY3JvbGxMYXRjaGluZ1N0YXRlKiBsYXRjaGluZ1N0YXRl
ID0gcGFnZSA/IHBhZ2UtPmxhdGNoaW5nU3RhdGUoKSA6IG51bGxwdHI7CiAgICAgaWYgKHdoZWVs
RXZlbnQuc2hvdWxkQ29uc2lkZXJMYXRjaGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDUzMWQzZGEwMDFiYTUwOGM1OGJmNTdiNDVkYWZhOTBiYzI3NjYzMjQuLjVmMGE5NzYzZTcz
ZTE1MGRlMDlmZjAwZDgwYzhhNDZiNWMwMjQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBA
IC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNp
bmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50VGVz
dE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMzcsMTUgKzEzNywxNSBAQCB2b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3JiBmcmFtZVZp
ZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHBhZ2UgPSBmcmFtZVZpZXcuZnJhbWUo
KS5wYWdlKCk7Ci0gICAgaWYgKHBhZ2UgJiYgcGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2Vy
cygpKSB7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCBz
dHJlYW0gPDwgIiAgICBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRV
cGRhdGVkOiBFeHBlY3RzIHdoZWVsIGV2ZW50IHRlc3QgdHJpZ2dlcjogIiA8PCBwYWdlLT5leHBl
Y3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpOworICAgIGlmIChwYWdlICYmIHBhZ2UtPmlzTW9uaXRv
cmluZ1doZWVsRXZlbnRzKCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgICAgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3TGF5b3V0VXBkYXRlZDogRXhwZWN0cyB3aGVlbCBldmVudCB0ZXN0IHRyaWdnZXI6ICIg
PDwgcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSk7CiAKICAgICAgICAgYXV0byogbm9k
ZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xs
aW5nTm9kZUlEKCkpOwogICAgICAgICBpZiAoIWlzPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihub2RlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBmcmFt
ZVNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4oKm5vZGUpOwotICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0RXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcihwYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpOworICAgICAg
ICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0SXNNb25pdG9yaW5nV2hlZWxFdmVudHMocGFnZS0+aXNN
b25pdG9yaW5nV2hlZWxFdmVudHMoKSk7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVWaWV3KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmlld1Zpc3VhbFZpZXdwb3J0Q2hhbmdlZChGcmFtZVZpZXcmIGZyYW1lVgog
ICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRWaXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlv
dXRWaWV3cG9ydCh2aXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydChmcmFt
ZVZpZXcpKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVFeHBl
Y3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmIGZy
YW1lVmlldykKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlSXNNb25pdG9y
aW5nV2hlZWxFdmVudHNGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7
CiAgICAgYXV0byogcGFnZSA9IGZyYW1lVmlldy5mcmFtZSgpLnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyV2l0aEZyYW1lVmlldygKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5vZGUtPnNldEV4cGVjdHNXaGVlbEV2ZW50
VGVzdFRyaWdnZXIocGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKTsKKyAgICBub2Rl
LT5zZXRJc01vbml0b3JpbmdXaGVlbEV2ZW50cyhwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50
cygpKTsKIH0KIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdFdmVu
dFRyYWNraW5nUmVnaW9uc0NoYW5nZWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCkBAIC0zNTIsMTAg
KzM1MiwxMCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBv
c2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgICAgICByZWNvbmNpbGVTY3Jv
bGxpbmdTdGF0ZShmcmFtZVZpZXcsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdp
biwgc2Nyb2xsVHlwZSwgVmlld3BvcnRSZWN0U3RhYmlsaXR5OjpTdGFibGUsIHNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb24pOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGlmICht
X3BhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkgewotICAgICAgICAgICAgZnJhbWVW
aWV3LnNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKG1fcGFnZS0+dGVz
dFRyaWdnZXIoKSk7Ci0gICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dlciA9IG1fcGFn
ZS0+dGVzdFRyaWdnZXIoKSkKLSAgICAgICAgICAgICAgICB0cmlnZ2VyLT5yZW1vdmVUZXN0RGVm
ZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllcj4oc2Nyb2xsaW5nTm9kZUlEKSwgV2hlZWxFdmVudFRlc3RU
cmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKKyAgICAgICAgaWYgKG1fcGFnZS0+
aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkgeworICAgICAgICAgICAgZnJhbWVWaWV3LnNjcm9s
bEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKG1fcGFnZS0+d2hlZWxFdmVudFRl
c3RNb25pdG9yKCkpOworICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIG1vbml0b3IgPSBtX3Bh
Z2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKQorICAgICAgICAgICAgICAgIG1vbml0b3ItPnJl
bW92ZURlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25p
dG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05vZGVJRCksIFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAgICAgICAgIH0KICNl
bmRpZgogICAgICAgICAKQEAgLTM3MywxMCArMzczLDEwIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGlu
Z05vCiAgICAgICAgICAgICBtX3BhZ2UtPmVkaXRvckNsaWVudCgpLm92ZXJmbG93U2Nyb2xsUG9z
aXRpb25DaGFuZ2VkKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgaWYgKG1fcGFn
ZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKSB7Ci0gICAgICAgICAgICBmcmFtZVZpZXcu
c2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIobV9wYWdlLT50ZXN0VHJp
Z2dlcigpKTsKLSAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT50
ZXN0VHJpZ2dlcigpKQotICAgICAgICAgICAgICAgIHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJh
bEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyPihzY3JvbGxpbmdOb2RlSUQpLCBXaGVlbEV2ZW50VGVzdFRyaWdn
ZXI6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICBpZiAobV9wYWdlLT5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKSB7CisgICAgICAgICAgICBmcmFtZVZpZXcuc2Nyb2xsQW5p
bWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IobV9wYWdlLT53aGVlbEV2ZW50VGVzdE1v
bml0b3IoKSk7CisgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgbW9uaXRvciA9IG1fcGFnZS0+
d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpCisgICAgICAgICAgICAgICAgbW9uaXRvci0+cmVtb3Zl
RGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6
OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4oc2Nyb2xsaW5nTm9kZUlEKSwgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKICAgICAgICAgfQogI2VuZGlm
CiAgICAgfQpAQCAtODU0LDI3ICs4NTQsMjcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2wKICAg
ICB9CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZGVmZXJUZXN0c0ZvclJl
YXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVh
c29uKSBjb25zdAordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpkZWZlcldoZWVsRXZl
bnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFi
bGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVy
UmVhc29uIHJlYXNvbikgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKKyAg
ICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dlciA9IG1fcGFnZS0+dGVz
dFRyaWdnZXIoKSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RUcmln
Z2Vycywgc3RyZWFtIDw8ICIgICAgKCEpIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmRlZmVy
VGVzdHNGb3JSZWFzb246IERlZmVycmluZyAiIDw8IGlkZW50aWZpZXIgPDwgIiBmb3IgcmVhc29u
ICIgPDwgcmVhc29uKTsKLSAgICAgICAgdHJpZ2dlci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihpZGVu
dGlmaWVyLCByZWFzb24pOworICAgIGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT53
aGVlbEV2ZW50VGVzdE1vbml0b3IoKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxF
dmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZGVmZXJGb3JSZWFzb246IERlZmVycmluZyAiIDw8IGlkZW50aWZpZXIgPDwgIiBmb3Ig
cmVhc29uICIgPDwgcmVhc29uKTsKKyAgICAgICAgdHJpZ2dlci0+ZGVmZXJGb3JSZWFzb24oaWRl
bnRpZmllciwgcmVhc29uKTsKICAgICB9CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbiByZWFzb24pIGNvbnN0Cit2b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9y
UmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25z
dAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX3BhZ2UgfHwgIW1f
cGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQorICAgIGlmICghbV9wYWdlIHx8ICFt
X3BhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT50ZXN0VHJpZ2dlcigpKSB7Ci0gICAg
ICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCBzdHJlYW0gPDwgIiAg
ICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVh
c29uOiBEZWZlcnJpbmcgIiA8PCBpZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNv
bik7Ci0gICAgICAgIHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihpZGVudGlm
aWVyLCByZWFzb24pOworICAgIGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT53aGVl
bEV2ZW50VGVzdE1vbml0b3IoKSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVu
dFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb246IERlZmVy
cmluZyAiIDw8IGlkZW50aWZpZXIgPDwgIiBmb3IgcmVhc29uICIgPDwgcmVhc29uKTsKKyAgICAg
ICAgdHJpZ2dlci0+cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsK
ICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCAyODc3MTIzYzIxZTBlODVk
MjE5MTBhNzU5M2MwM2MxM2UyODg3ZDg4Li45YmU2OWFhZmIxZTI4NWY4YTU1MzkyODk1Y2RlNjM0
YmNjMTZmNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC01NSwxNSArNTUsMTUgQEAgcHVibGlj
OgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWxJ
bmRleCwgdW5zaWduZWQgdmVydGljYWxJbmRleCk7Ci0gICAgdm9pZCBkZWZlclRlc3RzRm9yUmVh
c29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVl
bEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0OwotICAgIHZv
aWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Ny
b2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRy
aWdnZXJSZWFzb24pIGNvbnN0OworICAgIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRp
b25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0OworICAgIHZvaWQg
cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFByb3BlcnRp
ZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXJX
aXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlSXNNb25pdG9yaW5nV2hlZWxFdmVudHNGb3JGcmFtZVZpZXcoY29uc3Qg
RnJhbWVWaWV3Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxlZEFy
ZWEoTW9ub3RvbmljVGltZSwgdW5zaWduZWQgdW5maWxsZWRBcmVhKTsKICAgICB2b2lkIHJlcG9y
dFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbmljVGltZSwgU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDRhOGNmOGM4ZDJiYzU3MDE5MTk3
ZjhhMWViMzUyZjY2OGQ2OWJiMTEuLjA5NWE5Mjk2ZDJiMjUxZTdhNDM4NTFiMTM2ZjQxMWExNmM0
ZTBiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3Q7CiAKICAgICBFdmVudFRy
YWNraW5nUmVnaW9ucyBhYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXJXaXRoRnJhbWVW
aWV3KGNvbnN0IEZyYW1lVmlldyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc01vbml0
b3JpbmdXaGVlbEV2ZW50c0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSB7IH0KIAogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDJkOTlhYzVlYWExZWNkZWZhYThjYWViYTY4NjE1MzMy
YTRhZDkxZWQuLjcxN2JmYzJhNTVjYzE4Y2IzOGNkYjQ0ZWRiMGVmNTQzNTg3ZjJhZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcgogI2VuZGlmCiAgICAgLCBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyhzdGF0ZU5v
ZGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCkpCiAgICAgLCBtX3JlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbChzdGF0ZU5vZGUucmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpCi0gICAgLCBtX2V4cGVj
dHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoc3RhdGVOb2RlLmV4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXIoKSkKKyAgICAsIG1faXNNb25pdG9yaW5nV2hlZWxFdmVudHMoc3RhdGVOb2RlLmlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzKCkpCiB7CiAgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxDb250YWluZXJMYXllcikpCiAgICAgICAgIHNldFNjcm9sbENvbnRhaW5lckxheWVyKHN0YXRl
Tm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVl
LnByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24oKSkpOwpAQCAtOTAsNyArOTAsNyBAQCB2b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0FmdGVy
UmVhdHRhY2goKQogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChDdXJyZW50SG9yaXpvbnRhbFNu
YXBPZmZzZXRJbmRleCk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEN1cnJlbnRWZXJ0aWNh
bFNuYXBPZmZzZXRJbmRleCk7CiAjZW5kaWYKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoRXhw
ZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KElz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xs
Q29udGFpbmVyTGF5ZXIpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChTY3JvbGxlZENvbnRl
bnRzTGF5ZXIpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChIb3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXIpOwpAQCAtMjI2LDEzICsyMjYsMTMgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHIKICAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pOwogfQogCi12b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJp
Z2dlcihib29sIGV4cGVjdHNUZXN0VHJpZ2dlcikKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRJc01vbml0b3JpbmdXaGVlbEV2ZW50cyhib29sIGlzTW9uaXRvcmluZ1doZWVs
RXZlbnRzKQogewotICAgIGlmIChleHBlY3RzVGVzdFRyaWdnZXIgPT0gbV9leHBlY3RzV2hlZWxF
dmVudFRlc3RUcmlnZ2VyKQorICAgIGlmIChpc01vbml0b3JpbmdXaGVlbEV2ZW50cyA9PSBtX2lz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2V4cGVjdHNX
aGVlbEV2ZW50VGVzdFRyaWdnZXIgPSBleHBlY3RzVGVzdFRyaWdnZXI7Ci0gICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKEV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOworICAgIG1faXNNb25pdG9y
aW5nV2hlZWxFdmVudHMgPSBpc01vbml0b3JpbmdXaGVlbEV2ZW50czsKKyAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoSXNNb25pdG9yaW5nV2hlZWxFdmVudHMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIoY29uc3QgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKQEAgLTMzNiw4ICszMzYsOCBAQCB2b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYg
dHMsIFNjcm9sbGluZ1N0YXRlVAogCiAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxlIGFy
ZWEgcGFyYW1ldGVycyIsIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKTsKIAotICAgIGlmICht
X2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZXhwZWN0cyB3aGVlbCBldmVudCB0ZXN0IHRyaWdnZXIiLCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVz
dFRyaWdnZXIpOworICAgIGlmIChtX2lzTW9uaXRvcmluZ1doZWVsRXZlbnRzKQorICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImV4cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyIiwgbV9pc01v
bml0b3JpbmdXaGVlbEV2ZW50cyk7CiAKICAgICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXllcklEcykgewogICAgICAgICBpZiAobV9zY3Jv
bGxDb250YWluZXJMYXllci5sYXllcklEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDNj
MmRlMWRlODEwNDRjNzE2ZTU2YjcyNTUxYzU1Y2I0MjUzOTMzYzEuLjQ5NjdhNmNlODEyZjJiYTNi
MmZiZjBkOTEyYTAzNTcxNzhlOGYxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5k
ZXgsCiAgICAgICAgIEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwKICNlbmRpZgotICAg
ICAgICBFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyLAorICAgICAgICBJc01vbml0b3JpbmdX
aGVlbEV2ZW50cywKICAgICAgICAgU2Nyb2xsQ29udGFpbmVyTGF5ZXIsCiAgICAgICAgIFNjcm9s
bGVkQ29udGVudHNMYXllciwKICAgICAgICAgSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLApAQCAt
MTEzLDggKzExMyw4IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
UmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVk
U2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
JiwgYm9vbCByZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKTsKIAotICAgIGJvb2wgZXhwZWN0
c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0c1doZWVs
RXZlbnRUZXN0VHJpZ2dlcihib29sKTsKKyAgICBib29sIGlzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9pc01vbml0b3JpbmdXaGVlbEV2ZW50czsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SXNNb25pdG9yaW5nV2hlZWxFdmVudHMoYm9vbCk7CiAKICAgICBj
b25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBzY3JvbGxDb250YWluZXJMYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFNjcm9sbENvbnRhaW5lckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKQEAg
LTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyBt
X3Njcm9sbGFibGVBcmVhUGFyYW1ldGVyczsKIAogICAgIGJvb2wgbV9yZXF1ZXN0ZWRTY3JvbGxQ
b3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNN
b25pdG9yaW5nV2hlZWxFdmVudHMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmlu
ZGV4IGNlYTEzMWYyYmRiOTViMDY1ZGNiY2I2YzI1MDZjMDQ3OWRhMDlmMWYuLmExOTJhMmE0MjAw
MmZmMWViN2E5YjYzYmE0NzBhMTFkMDU1NjExMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTY3Jv
bGxpbmdDb29yZGluYXRvci5oIgotI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgor
I2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KQEAgLTEwNiw4ICsxMDYsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMo
U2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25lZCAvKmhvcml6b250YWxJbmRleCovLCB1bnNpZ25lZCAv
KnZlcnRpY2FsSW5kZXgqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlZmVyVGVzdHNGb3JSZWFz
b24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRl
c3RUcmlnZ2VyUmVhc29uKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkZWZlcldoZWVsRXZlbnRU
ZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVB
cmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9y
UmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSB7IH0KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggZDAzNWRhZGVkNzE2YWFl
YTFkZGVhODU4OGI5NTllOTAzNWZhOWFjOS4uZDY0N2I5MjYwYmI0NmRlYmEwN2NjODQ4MTQ4OTlj
M2M4OTUwMmJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtOTcsOCArOTcsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpCiAgICAg
ICAgIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzID0gc3RhdGUuc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzKCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikpCi0gICAgICAg
IG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciA9IHN0YXRlLmV4cGVjdHNXaGVlbEV2ZW50
VGVzdFRyaWdnZXIoKTsKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6SXNNb25pdG9yaW5nV2hlZWxFdmVudHMpKQorICAgICAgICBt
X2lzTW9uaXRvcmluZ1doZWVsRXZlbnRzID0gc3RhdGUuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMo
KTsKIAogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCiAgICAgICAgIG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIgPSBzdGF0ZS5zY3JvbGxDb250YWluZXJMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKaW5kZXggMTZmOGI2ZTllMzAxYjkwOTE3MjU1ZjZmNmZlYjFlYmYzYjJhNjdjOC4uYWU4NmYz
M2Q4NTAyOTVlZTlmYzc5NTAzYjZmNDM3YzJmODIwYTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaGFzRW5hYmxlZEhvcml6
b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy5oYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhcjsgfQogICAgIGJvb2wgaGFzRW5hYmxlZFZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRl
cnMuaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyOyB9CiAKLSAgICBib29sIGV4cGVjdHNXaGVl
bEV2ZW50VGVzdFRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdHNXaGVlbEV2ZW50VGVz
dFRyaWdnZXI7IH0KKyAgICBib29sIGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc01vbml0b3JpbmdXaGVlbEV2ZW50czsgfQogCiAgICAgTGF5b3V0UG9pbnQgcGFy
ZW50VG9Mb2NhbFBvaW50KExheW91dFBvaW50KSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRQ
b2ludCBsb2NhbFRvQ29udGVudHNQb2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC0xNDgsNyArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4IHsgMCB9OwogI2VuZGlmCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwotICAgIGJvb2wgbV9leHBlY3RzV2hlZWxF
dmVudFRlc3RUcmlnZ2VyIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNb25pdG9yaW5nV2hlZWxF
dmVudHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0ZpcnN0Q29tbWl0IHsgdHJ1ZSB9OwogCiAg
ICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5j
cHAKaW5kZXggOWZhYzNjNDhlNTllOGJmNmUyMzg4MTZiZmI1ZmVmMjg5ZTIyOGZjMi4uMTlhNjgx
ZmZkZWVhYmU1ZGY3MDQwZDlhM2YxODIwZTA4MTM5YTgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC0x
OTEsMjMgKzE5MSwyMyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdQogICAgIH0pOwogfQogCi12
b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6ZGVmZXJUZXN0c0ZvclJlYXNvbihXaGVlbEV2ZW50
VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2
ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKQordm9pZCBUaHJl
YWRlZFNjcm9sbGluZ1RyZWU6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29u
KFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQogewogICAgIGlm
ICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29v
cmRpbmF0b3IsIGlkZW50aWZpZXIsIHJlYXNvbl0gewotICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOworICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFz
b24oaWRlbnRpZmllciwgcmVhc29uKTsKICAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdn
ZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRy
aWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKQordm9pZCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29u
KFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKQogewogICAgIGlm
ICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKLSAgICAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24p
OworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21w
bGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaAppbmRleCBlMzJhYzVhYjFiYzgzYzE5MGE0MTAxMDQxZjkzMWIwMWQ2MjgzNjlm
Li5kMWRiNzkwYjY5MDk3YzczMzFlN2YzNjllNWZkMWM0MDk5NWYwN2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApA
QCAtNjUsOCArNjUsOSBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQg
aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5z
aWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsK
LSAgICB2b2lkIGRlZmVyVGVzdHNGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3Jv
bGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJp
Z2dlclJlYXNvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFz
b24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OkRlZmVyUmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0
Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCA5N2Q0NjJiYWI3NDc0YTAzNWI5
YWJmYzlmZmFhMGU2MzFkYzE4ZDE5Li42MjgxM2E2MWFmZWMxMjZmMzA2Yjg4NzFiNTI5ZDYyYmRk
ODlkOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
LmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRnJvbVN0YXRlTm9k
ZShjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmKTsKICAgICB2b2lkIHVwZGF0ZVNj
cm9sbGJhclBhaW50ZXJzKCk7CiAKLSAgICB2b2lkIGRlZmVyVGVzdHNGb3JSZWFzb24oV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3Jv
bGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJp
Z2dlclJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZlcldoZWVsRXZlbnRUZXN0
Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVh
SWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc0FscmVhZHlQaW5uZWRJbkRpcmVjdGlvbk9mR2VzdHVyZShjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxFdmVudEF4aXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCA2ZmJkZjMxNTMwZDhiMjQy
NzYxNzliZmVmNDA5NWZjNDU3MDdmNjJkLi43MDIxOTRmYTZjMTMyOGE1NDI5OGZkZTY3YTE2ZmE3
ZTBmNWJhODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbQpAQCAtOTAsMTEgKzkwLDExIEBAIGJvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsCiAgICAg
fQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQotICAgIGlmIChzY3JvbGxpbmdOb2RlKCkuZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigp
KSB7CisgICAgaWYgKHNjcm9sbGluZ05vZGUoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSB7
CiAgICAgICAgIGlmIChzY3JvbGxpbmdUcmVlKCkuc2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNo
cm9ub3VzbHkod2hlZWxFdmVudCkpCi0gICAgICAgICAgICByZW1vdmVUZXN0RGVmZXJyYWxGb3JS
ZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVB
cmVhSWRlbnRpZmllcj4oc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGluZ05vZGVJRCgpKSwgV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKKyAgICAgICAgICAg
IHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJw
cmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+
KHNjcm9sbGluZ05vZGUoKS5zY3JvbGxpbmdOb2RlSUQoKSksIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGRlZmVyVGVzdHNGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdn
ZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4oc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGluZ05v
ZGVJRCgpKSwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVk
KTsKKyAgICAgICAgICAgIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJl
aW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50
aWZpZXI+KHNjcm9sbGluZ05vZGUoKS5zY3JvbGxpbmdOb2RlSUQoKSksIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTMwNywyMiArMzA3LDIyIEBAIEZsb2F0U2l6ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjOjp2aWV3cG9ydFNpemUoKSBjb25zdAogfQogI2VuZGlmCiAKLXZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6ZGVmZXJUZXN0c0ZvclJlYXNvbihXaGVl
bEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKSBjb25z
dAordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRl
ZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKLSAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5leHBl
Y3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkpCisgICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuaXNN
b25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX1dJVEhf
U1RSRUFNKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVhbSA8PCBpc01haW5UaHJlYWQoKSA8
PCAiICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkZWZlclRlc3RzRm9y
UmVhc29uOiBTVEFSVElORyBkZWZlcnJhbCBmb3IgIiA8PCBpZGVudGlmaWVyIDw8ICIgYmVjYXVz
ZSBvZiAiIDw8IHJlYXNvbik7Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLmRlZmVyVGVzdHNGb3JSZWFz
b24oaWRlbnRpZmllciwgcmVhc29uKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRl
c3RNb25pdG9yLCBzdHJlYW0gPDwgaXNNYWluVGhyZWFkKCkgPDwgIiAgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6ZGVmZXJGb3JSZWFzb246IFNUQVJUSU5HIGRlZmVycmFs
IGZvciAiIDw8IGlkZW50aWZpZXIgPDwgIiBiZWNhdXNlIG9mICIgPDwgcmVhc29uKTsKKyAgICBz
Y3JvbGxpbmdUcmVlKCkuZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oaWRl
bnRpZmllciwgcmVhc29uKTsKIH0KICAgICAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbiByZWFzb24pIGNvbnN0Cit2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnJlbW92ZVdoZWVsRXZlbnRUZXN0
Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVm
ZXJSZWFzb24gcmVhc29uKSBjb25zdAogewotICAgIGlmICghc2Nyb2xsaW5nTm9kZSgpLmV4cGVj
dHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSkKKyAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVhbSA8PCBpc01haW5UaHJlYWQo
KSA8PCAiICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkZWZlclRlc3Rz
Rm9yUmVhc29uOiBFTkRJTkcgZGVmZXJyYWwgZm9yICIgPDwgaWRlbnRpZmllciA8PCAiIGJlY2F1
c2Ugb2YgIiA8PCByZWFzb24pOwotICAgIHNjcm9sbGluZ1RyZWUoKS5yZW1vdmVUZXN0RGVmZXJy
YWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hl
ZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgaXNNYWluVGhyZWFkKCkgPDwgIiAgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6ZGVmZXJGb3JSZWFzb246IEVORElORyBk
ZWZlcnJhbCBmb3IgIiA8PCBpZGVudGlmaWVyIDw8ICIgYmVjYXVzZSBvZiAiIDw8IHJlYXNvbik7
CisgICAgc2Nyb2xsaW5nVHJlZSgpLnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVy
cmFsRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlU2Nyb2xsYmFyUGFpbnRlcnMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDFlZjcyNTY5Zjg2ZWU3Y2M4ZjJlMWQzNTQ3NmIx
ZGIwYzlmZmU0MDAuLjlkMzkxMjNkM2M4OGRjYmFiMjFhNzQyMTQxZTJhZDlmYTBlMmVjZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgTShXZWJHUFUpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2ViUlRD
U3RhdHMpIFwKLSAgICBNKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcnMpIFwKKyAgICBNKFdoZWVsRXZl
bnRUZXN0TW9uaXRvcikgXAogCiAjdW5kZWYgREVDTEFSRV9MT0dfQ0hBTk5FTAogI2RlZmluZSBE
RUNMQVJFX0xPR19DSEFOTkVMKG5hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAppbmRleCBmOGVkYzg4MmQ3ZjM2MDAyZTE5ODUxMGQ4MWI4ZWIzNGFhNTAw
N2M4Li5hNjExODY4MzdkYTg2ZmRmZWMzZDgxY2NjMThhZTQ1MTUzN2M1NjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0yMjgsMjAgKzIyOCwyMCBA
QCBGbG9hdFNpemUgU2Nyb2xsQW5pbWF0b3I6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiAjZW5kaWYK
IAogI2lmIChFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
KSAmJiBQTEFURk9STShNQUMpCi12b2lkIFNjcm9sbEFuaW1hdG9yOjpkZWZlclRlc3RzRm9yUmVh
c29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbiByZWFz
b24pIGNvbnN0Cit2b2lkIFNjcm9sbEFuaW1hdG9yOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNv
bikgY29uc3QKIHsKLSAgICBpZiAoIW1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyKQorICAgIGlmICgh
bV93aGVlbEV2ZW50VGVzdE1vbml0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2hlZWxF
dmVudFRlc3RUcmlnZ2VyLT5kZWZlclRlc3RzRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7
CisgICAgbV93aGVlbEV2ZW50VGVzdE1vbml0b3ItPmRlZmVyRm9yUmVhc29uKGlkZW50aWZpZXIs
IHJlYXNvbik7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVRlc3REZWZlcnJhbEZv
clJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24g
cmVhc29uKSBjb25zdAordm9pZCBTY3JvbGxBbmltYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RD
b21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxh
YmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZl
clJlYXNvbiByZWFzb24pIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3doZWVsRXZlbnRUZXN0VHJpZ2dl
cikKKyAgICBpZiAoIW1fd2hlZWxFdmVudFRlc3RNb25pdG9yKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgbV93aGVlbEV2ZW50VGVzdFRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJl
YXNvbihpZGVudGlmaWVyLCByZWFzb24pOworICAgIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yLT5y
ZW1vdmVEZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDZlMmE4ODRhYmIy
ZjcxMzAxZWM5ZDVmN2U5NjU2ZjNkN2M5MTlmNmIuLmE1YzY5YzUzYjdlOTBkYmNlNjg0NjdlYzI2
MTdmMDRmMTk3ZTQzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
aApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgotI2luY2x1ZGUg
IldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgUGxhdGZvcm1U
b3VjaEV2ZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFz
cyBXaGVlbEV2ZW50VGVzdFRyaWdnZXI7CitjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3I7CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiBj
bGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsQ29udHJvbGxlckNsaWVudCB7CkBA
IC0xMjEsMTAgKzEyMSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFu
ZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZv
aWQgc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKFJlZlB0cjxXaGVlbEV2ZW50VGVzdFRyaWdnZXI+
JiYgdGVzdFRyaWdnZXIpIHsgbV93aGVlbEV2ZW50VGVzdFRyaWdnZXIgPSB0ZXN0VHJpZ2dlcjsg
fQorICAgIHZvaWQgc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKFJlZlB0cjxXaGVlbEV2ZW50VGVz
dE1vbml0b3I+JiYgdGVzdE1vbml0b3IpIHsgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSB0ZXN0
TW9uaXRvcjsgfQorCiAjaWYgKEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJC
RVJfQkFORElORykpICYmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGRlZmVyVGVzdHNGb3JSZWFz
b24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVm
ZXJUZXN0VHJpZ2dlclJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
ZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3Qgb3ZlcnJp
ZGU7CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtMTQ1LDcg
KzE0Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRl
eEZvck9mZnNldCgpOwogCiAgICAgU2Nyb2xsYWJsZUFyZWEmIG1fc2Nyb2xsYWJsZUFyZWE7Ci0g
ICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV93aGVlbEV2ZW50VGVzdFRyaWdnZXI7
CisgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gbV93aGVlbEV2ZW50VGVzdE1vbml0
b3I7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9CQU5ESU5H
KQogICAgIFNjcm9sbENvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXgg
ZmUzNWZmYTdhM2RmNWIwZWY0OTE4ZWE0MDEzYzllYmU4YzFiMjRiYi4uZmQ4ZmU0ZTMxNGY3ZmI3
MDg2MzM5N2NmMWY5NGUxYzMyNzdkZmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgotI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2luY2x1ZGUgIldo
ZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIGNsYXNz
IFNjcm9sbGFibGVBcmVhOwotY2xhc3MgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOworY2xhc3MgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOwogCiBjbGFzcyBTY3JvbGxDb250cm9sbGVyQ2xpZW50IHsKIHBy
b3RlY3RlZDoKQEAgLTc5LDggKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSA9IDA7CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgdm9pZCBkZWZlclRlc3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVz
dFRyaWdnZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90aGluZyAqLyB9Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RU
cmlnZ2VyUmVhc29uKSBjb25zdCB7IC8qIERvIG5vdGhpbmcgKi8gfQorICAgIHZpcnR1YWwgdm9p
ZCBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbikgY29uc3QgeyAvKiBEbyBub3RoaW5nICovIH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90aGluZyAqLyB9CiAKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQo
KSBjb25zdCA9IDA7CkBAIC0xNjYsOSArMTY2LDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIHNo
b3VsZE92ZXJyaWRlSW5lcnRpYWxTY3JvbGxpbmcoKSBjb25zdDsKICAgICB2b2lkIHN0YXRlbGVz
c1NuYXBUcmFuc2l0aW9uVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3RhcnREZWZlcnJpbmdUZXN0
c0R1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKLSAgICB2b2lkIHN0b3BEZWZlcnJpbmdUZXN0c0R1ZVRv
U2Nyb2xsU25hcHBpbmcoKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGVsZXNzU2Nyb2xsU25hcCgp
OworCisgICAgdm9pZCBzdGFydERlZmVycmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRv
U2Nyb2xsU25hcHBpbmcoKTsKKyAgICB2b2lkIHN0b3BEZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENv
bXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCA4
ZmUzOGFkMGNjZTJmZDU0MmQyOTcwMTdmZGEyZDFjYjM1NWI3NzI2Li4zNTYwYmFiZjI5YWM3MDIy
ODBhZTcxYmViNDRlMzY5OTU1ODM0MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9y
dCAiTGF5b3V0U2l6ZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0jaW1wb3J0
ICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKKyNpbXBvcnQgIldoZWVsRXZlbnRUZXN0TW9uaXRv
ci5oIgogI2ltcG9ydCA8c3lzL3N5c2N0bC5oPgogI2ltcG9ydCA8c3lzL3RpbWUuaD4KIApAQCAt
MzkwLDcgKzM5MCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRTbmFwUnViYmVyYmFu
ZFRpbWVyKCkKICAgICBtX2NsaWVudC5zdGFydFNuYXBSdWJiZXJiYW5kVGltZXIoKTsKICAgICBt
X3NuYXBSdWJiZXJiYW5kVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gNjAuKTsKIAotICAgIG1f
Y2xpZW50LmRlZmVyVGVzdHNGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcjo6UnViYmVyYmFuZEluUHJvZ3Jlc3MpOworICAgIG1fY2xpZW50LmRlZmVyV2hlZWxF
dmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzKTsKIH0KIAogdm9pZCBTY3JvbGxDb250cm9s
bGVyOjpzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBT
Y3JvbGxDb250cm9sbGVyOjpzdG9wU25hcFJ1YmJlcmJhbmRUaW1lcigpCiAgICAgbV9zbmFwUnVi
YmVyYmFuZFRpbWVyLnN0b3AoKTsKICAgICBtX3NuYXBSdWJiZXJiYW5kVGltZXJJc0FjdGl2ZSA9
IGZhbHNlOwogICAgIAotICAgIG1fY2xpZW50LnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihy
ZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpSdWJiZXJiYW5kSW5Qcm9ncmVz
cyk7CisgICAgbV9jbGllbnQucmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxG
b3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFi
bGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6UnViYmVyYmFu
ZEluUHJvZ3Jlc3MpOwogfQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNuYXBSdWJiZXJCYW5k
KCkKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNjaGVkdWxlU3Rh
dGVsZXNzU2Nyb2xsU25hcCgpCiAKICAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBzdGF0ZWxlc3NT
Y3JvbGxTbmFwRGVsYXkgPSA3NTBfbXM7CiAgICAgbV9zdGF0ZWxlc3NTbmFwVHJhbnNpdGlvblRp
bWVyLnN0YXJ0T25lU2hvdChzdGF0ZWxlc3NTY3JvbGxTbmFwRGVsYXkpOwotICAgIHN0YXJ0RGVm
ZXJyaW5nVGVzdHNEdWVUb1Njcm9sbFNuYXBwaW5nKCk7CisgICAgc3RhcnREZWZlcnJpbmdXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7CiB9CiAKIHZvaWQgU2Ny
b2xsQ29udHJvbGxlcjo6c3RhdGVsZXNzU25hcFRyYW5zaXRpb25UaW1lckZpcmVkKCkKQEAgLTUw
NSwxNCArNTA1LDE0IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RhdGVsZXNzU25hcFRyYW5z
aXRpb25UaW1lckZpcmVkKCkKICAgICBzdGFydFNjcm9sbFNuYXBUaW1lcigpOwogfQogCi12b2lk
IFNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0RGVmZXJyaW5nVGVzdHNEdWVUb1Njcm9sbFNuYXBwaW5n
KCkKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RhcnREZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENv
bXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCkKIHsKLSAgICBtX2NsaWVudC5kZWZlclRlc3Rz
Rm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxh
YmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbFNu
YXBJblByb2dyZXNzKTsKKyAgICBtX2NsaWVudC5kZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlv
bkZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxT
bmFwSW5Qcm9ncmVzcyk7CiB9CiAKLXZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RvcERlZmVycmlu
Z1Rlc3RzRHVlVG9TY3JvbGxTbmFwcGluZygpCit2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0b3BE
ZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCkKIHsK
LSAgICBtX2NsaWVudC5yZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2Fz
dDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyks
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsU25hcEluUHJvZ3Jlc3MpOworICAgIG1fY2xp
ZW50LnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKHJlaW50
ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbFNuYXBJblByb2dyZXNzKTsK
IH0KIAogYm9vbCBTY3JvbGxDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNu
YXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQpAQCAtNTYyLDcgKzU2Miw3
IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRTY3JvbGxTbmFwVGltZXIoKQogICAgIGlm
IChtX3Njcm9sbFNuYXBUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dGFydERlZmVycmluZ1Rlc3RzRHVlVG9TY3JvbGxTbmFwcGluZygpOworICAgIHN0YXJ0RGVmZXJy
aW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpOwogICAgIG1f
Y2xpZW50LnN0YXJ0U2Nyb2xsU25hcFRpbWVyKCk7CiAgICAgbV9zY3JvbGxTbmFwVGltZXIuc3Rh
cnRSZXBlYXRpbmcoMV9zIC8gNjAuKTsKIH0KQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFNjcm9s
bENvbnRyb2xsZXI6OnN0b3BTY3JvbGxTbmFwVGltZXIoKQogICAgIGlmICghbV9zY3JvbGxTbmFw
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcERlZmVycmluZ1Rl
c3RzRHVlVG9TY3JvbGxTbmFwcGluZygpOworICAgIHN0b3BEZWZlcnJpbmdXaGVlbEV2ZW50VGVz
dENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7CiAgICAgbV9jbGllbnQuc3RvcFNjcm9s
bFNuYXBUaW1lcigpOwogICAgIG1fc2Nyb2xsU25hcFRpbWVyLnN0b3AoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBmMTc4
Mjg2YzU2OWU5MzhiNmI0NTI2NWViMzkyNzdhNDNlMzc2NGRkLi5kMTIzNGYxZTZkZDgwZWQ0YjNk
YWRhNjljOGZhMWMwZDI2YmZjOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC05ODIsOCArOTgyLDggQEAgdm9pZCBTY3JvbGxB
bmltYXRvck1hYzo6ZGlkQmVnaW5TY3JvbGxHZXN0dXJlKCkgY29uc3QKICAgICBbbV9zY3JvbGxl
ckltcFBhaXIgYmVnaW5TY3JvbGxHZXN0dXJlXTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAobV93aGVlbEV2ZW50VGVzdFRy
aWdnZXIpCi0gICAgICAgIG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyLT5kZWZlclRlc3RzRm9yUmVh
c29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJl
YUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkNvbnRlbnRTY3JvbGxJ
blByb2dyZXNzKTsKKyAgICBpZiAobV93aGVlbEV2ZW50VGVzdE1vbml0b3IpCisgICAgICAgIG1f
d2hlZWxFdmVudFRlc3RNb25pdG9yLT5kZWZlckZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CiAjZW5kaWYKIH0K
IApAQCAtOTk1LDggKzk5NSw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEVuZFNjcm9s
bEdlc3R1cmUoKSBjb25zdAogICAgIFttX3Njcm9sbGVySW1wUGFpciBlbmRTY3JvbGxHZXN0dXJl
XTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElO
RykKLSAgICBpZiAobV93aGVlbEV2ZW50VGVzdFRyaWdnZXIpCi0gICAgICAgIG1fd2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLT5yZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2Fz
dDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyks
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6Q29udGVudFNjcm9sbEluUHJvZ3Jlc3MpOworICAgIGlm
IChtX3doZWVsRXZlbnRUZXN0TW9uaXRvcikKKyAgICAgICAgbV93aGVlbEV2ZW50VGVzdE1vbml0
b3ItPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRl
c3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OkNvbnRlbnRTY3JvbGxJblByb2dyZXNzKTsKICNlbmRpZgogfQogCkBAIC0xNDU1
LDggKzE0NTUsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzZW5kQ29udGVudEFyZWFTY3Jv
bGxlZFNvb24oY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKICAgICBpZiAoIW1fc2VuZENvbnRlbnRB
cmVhU2Nyb2xsZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3NlbmRDb250ZW50QXJlYVNj
cm9sbGVkVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAKLSAgICBpZiAobV93aGVlbEV2ZW50VGVz
dFRyaWdnZXIpCi0gICAgICAgIG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyLT5kZWZlclRlc3RzRm9y
UmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkNvbnRlbnRTY3Jv
bGxJblByb2dyZXNzKTsKKyAgICBpZiAobV93aGVlbEV2ZW50VGVzdE1vbml0b3IpCisgICAgICAg
IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yLT5kZWZlckZvclJlYXNvbihyZWludGVycHJldF9jYXN0
PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CiB9CiAKIHZv
aWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNlbmRDb250ZW50QXJlYVNjcm9sbGVkKGNvbnN0IEZsb2F0
U2l6ZSYgZGVsdGEpCkBAIC0xNDY5LDggKzE0NjksOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
OjpzZW5kQ29udGVudEFyZWFTY3JvbGxlZFRpbWVyRmlyZWQoKQogICAgIHNlbmRDb250ZW50QXJl
YVNjcm9sbGVkKG1fY29udGVudEFyZWFTY3JvbGxlZFRpbWVyU2Nyb2xsRGVsdGEpOwogICAgIG1f
Y29udGVudEFyZWFTY3JvbGxlZFRpbWVyU2Nyb2xsRGVsdGEgPSBGbG9hdFNpemUoKTsKIAotICAg
IGlmIChtX3doZWVsRXZlbnRUZXN0VHJpZ2dlcikKLSAgICAgICAgbV93aGVlbEV2ZW50VGVzdFRy
aWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CisgICAgaWYgKG1fd2hl
ZWxFdmVudFRlc3RNb25pdG9yKQorICAgICAgICBtX3doZWVsRXZlbnRUZXN0TW9uaXRvci0+cmVt
b3ZlRGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6Q29udGVudFNjcm9sbEluUHJvZ3Jlc3MpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
OjpzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYgc2Nyb2xsZXJUaHVt
YikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOTY3N2RhZTljZmUy
OGIxZGMzOTA1YzNhODJiMDZlYzZlY2RjZGM0MC4uYTVhNDUzZWFjM2FjNTlkN2FkNjA0YzczMDg3
ZjU1NWU1MzhhNWUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTU2NywxOSArNTY3LDE5IEBAIGludCBSZW5kZXJCb3g6OnNjcm9sbFRvcCgpIGNvbnN0CiAgICAg
cmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxQb3Np
dGlvbigpLnkoKSA6IDA7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudFRlc3RUcmln
Z2VyKFJlbmRlckxheWVyJiBsYXllcikKK3N0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudE1vbml0
b3IoUmVuZGVyTGF5ZXImIGxheWVyKQogewogICAgIFBhZ2UmIHBhZ2UgPSBsYXllci5yZW5kZXJl
cigpLnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQor
ICAgIGlmICghcGFnZS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbGF5ZXIuc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFn
ZS50ZXN0VHJpZ2dlcigpKTsKKyAgICBsYXllci5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZl
bnRUZXN0TW9uaXRvcihwYWdlLndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKIH0KIAogdm9pZCBS
ZW5kZXJCb3g6OnNldFNjcm9sbExlZnQoaW50IG5ld0xlZnQsIFNjcm9sbFR5cGUgc2Nyb2xsVHlw
ZSwgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcpCiB7CiAgICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAo
KSB8fCAhbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldHVwV2hlZWxFdmVudFRlc3RU
cmlnZ2VyKCpsYXllcigpKTsKKyAgICBzZXR1cFdoZWVsRXZlbnRNb25pdG9yKCpsYXllcigpKTsK
ICAgICBsYXllcigpLT5zY3JvbGxUb1hQb3NpdGlvbihuZXdMZWZ0LCBzY3JvbGxUeXBlLCBjbGFt
cGluZyk7CiB9CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIFJlbmRlckJveDo6c2V0U2Nyb2xs
VG9wKGludCBuZXdUb3AsIFNjcm9sbFR5cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsQ2xhbXBpbmcgYwog
ewogICAgIGlmICghaGFzT3ZlcmZsb3dDbGlwKCkgfHwgIWxheWVyKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBzZXR1cFdoZWVsRXZlbnRUZXN0VHJpZ2dlcigqbGF5ZXIoKSk7CisgICAgc2V0dXBX
aGVlbEV2ZW50TW9uaXRvcigqbGF5ZXIoKSk7CiAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZUG9zaXRp
b24obmV3VG9wLCBzY3JvbGxUeXBlLCBjbGFtcGluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGFhMWE2Nzc1OWRlZmMxYjdmODA4NDg1ZGJhYzU0
MzFmNzA1ZmNjYzEuLjljNDQ5MTI2YjIzMGQyMjY1MDg0N2Q5ZjEzMTcxY2I4MmNiNzZjZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTI1LDcgKzEyNSw3
IEBACiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW5j
bHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RN
b25pdG9yLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTMzMzYsOCArMzMzNiw4IEBA
IFJlZjxTY3JvbGxiYXI+IFJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgZWxzZSB7CiAgICAgICAgIHdpZGdldCA9IFNjcm9s
bGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNj
cm9sbGJhcik7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCksIG9yaWVudGF0
aW9uKTsKLSAgICAgICAgaWYgKHBhZ2UoKS5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCi0g
ICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdl
KCkudGVzdFRyaWdnZXIoKSk7CisgICAgICAgIGlmIChwYWdlKCkuaXNNb25pdG9yaW5nV2hlZWxF
dmVudHMoKSkKKyAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RN
b25pdG9yKHBhZ2UoKS53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7CiAgICAgfQogICAgIHJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKCp3aWRnZXQpOwogICAgIHJldHVybiB3
aWRnZXQucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAppbmRleCA2YjNjMTIxYzIzZWFiOGFhMjkxMDNlNDUyMzY3OTRjMWJiZDQ0ZjYx
Li5kZjliMTRiMjE5ZDcwNTFiNjI5NTQ4NTg3ODM1MzBmZGE4N2MxMGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC02Miw3ICs2Miw3IEBACiAjaW5j
bHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRy
aWdnZXIuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDxt
YXRoLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RhY2tTdGF0cy5oPgpAQCAtNzUzLDEyICs3NTMsMTIgQEAgaW50IFJlbmRlckxpc3RCb3g6OnNj
cm9sbFRvcCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5kZXhPZmZzZXQgKiBpdGVtSGVpZ2h0KCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudFRlc3RUcmlnZ2VyKFJlbmRlckxpc3RC
b3gmIHJlbmRlcmVyKQorc3RhdGljIHZvaWQgc2V0dXBXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVu
ZGVyTGlzdEJveCYgcmVuZGVyZXIpCiB7Ci0gICAgaWYgKCFyZW5kZXJlci5wYWdlKCkuZXhwZWN0
c1doZWVsRXZlbnRUcmlnZ2VycygpKQorICAgIGlmICghcmVuZGVyZXIucGFnZSgpLmlzTW9uaXRv
cmluZ1doZWVsRXZlbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlbmRlcmVyLnNjcm9s
bEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHJlbmRlcmVyLnBhZ2UoKS50ZXN0
VHJpZ2dlcigpKTsKKyAgICByZW5kZXJlci5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcihyZW5kZXJlci5wYWdlKCkud2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwogfQog
CiB2b2lkIFJlbmRlckxpc3RCb3g6OnNldFNjcm9sbFRvcChpbnQgbmV3VG9wLCBTY3JvbGxUeXBl
LCBTY3JvbGxDbGFtcGluZykKQEAgLTc2Nyw3ICs3NjcsOCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnNldFNjcm9sbFRvcChpbnQgbmV3VG9wLCBTY3JvbGxUeXBlLCBTY3JvbGxDbGFtcGluZykKICAg
ICBpbnQgaW5kZXggPSBuZXdUb3AgLyBpdGVtSGVpZ2h0KCk7CiAgICAgaWYgKGluZGV4IDwgMCB8
fCBpbmRleCA+PSBudW1JdGVtcygpIHx8IGluZGV4ID09IG1faW5kZXhPZmZzZXQpCiAgICAgICAg
IHJldHVybjsKLSAgICBzZXR1cFdoZWVsRXZlbnRUZXN0VHJpZ2dlcigqdGhpcyk7CisKKyAgICBz
ZXR1cFdoZWVsRXZlbnRUZXN0TW9uaXRvcigqdGhpcyk7CiAgICAgc2Nyb2xsVG9PZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKFZlcnRpY2FsU2Nyb2xsYmFyLCBpbmRleCk7CiB9CiAKQEAgLTkxNiw4ICs5
MTcsOCBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQog
ICAgIGVsc2UgewogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9s
bGJhcigqdGhpcywgVmVydGljYWxTY3JvbGxiYXIsIHRoZW1lKCkuc2Nyb2xsYmFyQ29udHJvbFNp
emVGb3JQYXJ0KExpc3Rib3hQYXJ0KSk7CiAgICAgICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQu
Z2V0KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKLSAgICAgICAgaWYgKHBhZ2UoKS5leHBlY3RzV2hl
ZWxFdmVudFRyaWdnZXJzKCkpCi0gICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcihwYWdlKCkudGVzdFRyaWdnZXIoKSk7CisgICAgICAgIGlmIChwYWdl
KCkuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKKyAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9y
KCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKHBhZ2UoKS53aGVlbEV2ZW50VGVzdE1vbml0b3Io
KSk7CiAgICAgfQogICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsKICAg
ICByZXR1cm4gd2lkZ2V0LnJlbGVhc2VOb25OdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggZDFkNDM0ZWE5ZmE2OTdjOTcy
NDgxNWFmMjU4MDIyYzc5ZGRiZGRjZi4uOTA1MDExM2M2ZmNjODZkNjM5YWY1NWUyYWNkYTE1OWI4
YzZmZDE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSAiV2hlZWxF
dmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+CkBAIC04NSwzMCArODUsMzAgQEAgdm9pZCBtb25p
dG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+ZW5zdXJlVGVzdFRyaWdnZXIoKTsKKyAgICBwYWdl
LT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIH0KIAogdm9pZCBzZXRUZXN0Q2FsbGJh
Y2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGpzQ2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBQ
YWdlKiBwYWdlID0gZnJhbWUucGFnZSgpOwotICAgIGlmICghcGFnZSB8fCAhcGFnZS0+ZXhwZWN0
c1doZWVsRXZlbnRUcmlnZ2VycygpKQorICAgIGlmICghcGFnZSB8fCAhcGFnZS0+aXNNb25pdG9y
aW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSlNWYWx1ZVByb3RlY3Qo
Y29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICAKLSAgICBwYWdlLT5lbnN1cmVUZXN0
VHJpZ2dlcigpLnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoWz1dKHZv
aWQpIHsKKyAgICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKS5zZXRUZXN0Q2Fs
bGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKFs9XSh2b2lkKSB7CiAgICAgICAgIEpTT2Jq
ZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uLCBudWxscHRyLCAw
LCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0LCBq
c0NhbGxiYWNrRnVuY3Rpb24pOwogICAgIH0pOwogfQogCi12b2lkIGNsZWFyV2hlZWxFdmVudFRl
c3RUcmlnZ2VyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKK3ZvaWQgY2xlYXJXaGVlbEV2ZW50VGVz
dE1vbml0b3IoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQogewogICAgIFBhZ2UqIHBhZ2UgPSBmcmFt
ZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcGFn
ZS0+Y2xlYXJUcmlnZ2VyKCk7CisgICAgcGFnZS0+Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3Io
KTsKIH0KIAogdm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCmlu
ZGV4IDRhYjk1NDZlYzc2NTA1ZmY5ZmRiYjUxNDA0NzI0YTg1NDZlMjczNTMuLmE2Zjk2MDE0YmNj
M2RjMzhkNTRmMGE2YjM5ZTQwNDdjYjlkNDA3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIGluamVj
dEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lk
IHJlc2V0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZikgVEVTVF9TVVBQT1JUX0VYUE9SVDsK
IHZvaWQgbW9uaXRvcldoZWVsRXZlbnRzKFdlYkNvcmU6OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VY
UE9SVDsKIHZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihXZWJD
b3JlOjpGcmFtZSYsIEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpIFRFU1RfU1VQUE9SVF9FWFBP
UlQ7Ci12b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKFdlYkNvcmU6OkZyYW1lJikgVEVT
VF9TVVBQT1JUX0VYUE9SVDsKK3ZvaWQgY2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoV2ViQ29y
ZTo6RnJhbWUmKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogCiB2b2lkIHNldExvZ0NoYW5uZWxUb0Fj
Y3VtdWxhdGUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2
b2lkIGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCkgVEVTVF9TVVBQT1JUX0VYUE9S
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDEwNDU1MmJm
YjE2NzQyN2JkOWFiNzlmMzY5OGM3MzdlYjJiNmE3MTAuLjQxNDFiNmJiN2QwOWE5MGIxMjRhNjQ0
MGJjYTRlN2Y5YjRjZTYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtMjg1OCw5ICsyODU4LDkgQEAgV0tNZWRpYVN0YXRlIFdLUGFnZUdldE1lZGlhU3Rh
dGUoV0tQYWdlUmVmIHBhZ2UpCiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi12b2lkIFdLUGFnZUNs
ZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKFdLUGFnZVJlZiBwYWdlUmVmKQordm9pZCBXS1BhZ2VD
bGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b0lt
cGwocGFnZVJlZiktPmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5jbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpOwogfQogCiB2b2lkIFdLUGFnZUNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNv
bnRleHQsIFdLUGFnZVBvc3RQcmVzZW50YXRpb25VcGRhdGVGdW5jdGlvbiBjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggNmYwOWVjNmYyZGQ0YzcwYzEz
MjM1NDE2YmU4OGNiNjgyYzk3MDVhMS4uYjdiZGY1OTA2MzUzYTI0NDg4MmM0NzNmNWM5ZjNhNmI2
OTYzOTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTE1MSw3
ICsxNTEsNyBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShX
S1BhZ2VSZWYgcGFnZSwgV0tUeXBlUmVmIHNlc3Npb25TdAogCiBXS19FWFBPUlQgZG91YmxlIFdL
UGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2UsIGRvdWJs
ZSBjdXN0b21TY2FsZUZhY3Rvcik7Ci1XS19FWFBPUlQgdm9pZCBXS1BhZ2VDbGVhcldoZWVsRXZl
bnRUZXN0VHJpZ2dlcihXS1BhZ2VSZWYgcGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDbGVh
cldoZWVsRXZlbnRUZXN0TW9uaXRvcihXS1BhZ2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCBib29s
IFdLUGFnZVN1cHBvcnRzVGV4dFpvb20oV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIGRvdWJs
ZSBXS1BhZ2VHZXRUZXh0Wm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4NzgyMGQzM2FjZDIzZTgxZDhjNzMzZTEw
MWZjZTg5YmQ1MjFhOTM3Li5mYjcxMzM2NGVlYmNlY2FiM2JlZDUxMWMxZGFjNDgzODNhYzMzZDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1ODYsMTIg
Kzg1ODYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tncm91bmRDb2xvcigp
CiAgICAgcGFnZUNsaWVudCgpLmRpZENoYW5nZUJhY2tncm91bmRDb2xvcigpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Y2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKQordm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKCkKIHsKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCksIG1fd2ViUGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OmNsZWFyV2hlZWxF
dmVudFRlc3RNb25pdG9yKCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggOGM3NzUwOTZjZDE2YzczYTRkNjM4MzA0MDI3M2IwMDljOGEyNjc5OS4u
NmE5Y2E0NzBmNDZkMGFhOWYzZjZjMmZiNjhlNGU0ZDkwYzcwYTZjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0MTIsNyArMTQxMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZExheW91dEZvckN1c3RvbUNvbnRlbnRQcm92aWRlcigpOwogCiAgICAgLy8gRm9y
IHRlc3RpbmcKLSAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CisgICAgdm9p
ZCBjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpOwogICAgIHZvaWQgY2FsbEFmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKIAogICAgIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBk
MWYxZGUwYmFjODIxZGJkYWFkMGIxMjYwMjViMTYzMjE0Yjc4ODkwLi4yNDRlNWI5NTQ4ZmZlMzlh
YTU4Y2MzZWY4MTllNzZiYmNjNTI5Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApA
QCAtNjUsNyArNjUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1doZWVs
RXZlbnRUZXN0VHJpZ2dlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU3RhcnRNb25pdG9yaW5n
U2Nyb2xsT3BlcmF0aW9ucyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmVuc3VyZVRlc3RUcmlnZ2VyKCk7CisgICAg
cGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQ
YWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVRlc3ROb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFj
aywgdm9pZCogY29udGV4dCkKQEAgLTY1NCwxMCArNjU0LDEwIEBAIGJvb2wgV0tCdW5kbGVQYWdl
UmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSCiAgICAgCiAgICAgV2ViS2l0OjpXZWJQYWdlKiB3ZWJQYWdlID0gV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZik7CiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHdlYlBhZ2UgPyB3ZWJQYWdl
LT5jb3JlUGFnZSgpIDogbnVsbHB0cjsKLSAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmV4cGVjdHNX
aGVlbEV2ZW50VHJpZ2dlcnMoKSkKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmlzTW9uaXRvcmlu
Z1doZWVsRXZlbnRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBwYWdlLT5l
bnN1cmVUZXN0VHJpZ2dlcigpLnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGlt
ZXIoWz1dKCkgeworICAgIHBhZ2UtPmVuc3VyZVdoZWVsRXZlbnRUZXN0TW9uaXRvcigpLnNldFRl
c3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoWz1dKCkgewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGY0Y2I5NmFl
YTZmYzI4YThiN2E0MThiZmZkNTZhYWZiNDA1YzM4OWYuLjBkMGE2NjczY2JmZGM4NTU2Y2M2OTY5
ODMxZjc0MzQ1ZDNkZjkzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtODEsNyArODEsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oPgotI2ltcG9ydCA8
V2ViQ29yZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2hlZWxF
dmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5o
PgpAQCAtNzI0LDggKzcyNCw4IEBAIFJlZjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Ny
b2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIGRpZEFkZFNjcm9s
bGJhcih3aWRnZXQucHRyKCksIG9yaWVudGF0aW9uKTsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
d2ViRnJhbWUoKS0+Y29yZUZyYW1lKCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKSB7Ci0gICAgICAgICAgICBpZiAocGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmln
Z2VycygpKQotICAgICAgICAgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRl
c3RUcmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkpOworICAgICAgICAgICAgaWYgKHBhZ2UtPmlz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3Io
KS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkp
OwogICAgICAgICB9CiAgICAgfQogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5h
ZGRDaGlsZCh3aWRnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMGEyNTQwNWRlODhkOWM3NTQ0MTc2NTEwNWZk
Njc3Mjg4NWVmZjUwZS4uNjgwN2VkNTI5MjUxNzhkNmY5YzIzZTQwODUxZTRhZjQxODZiMWIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3Bh
dGNoZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2lu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBjMzVjMjAyMDU0MjhmOTZiYzk1NzQwYWEzYzE4NWZhNzEzMTI5M2U0Li5iNzkwYzNjNGQ5Y2Vh
MWVlNTU2MDMwYzcwNzcxMzUxMmMxNzNlMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjI5OCwxMiArNjI5OCwxMiBAQCB2b2lkIFdlYlBh
Z2U6OnBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6TwogICAgICAgICByZXR1cm5EYXRhID0gd2ViUHJvY2Vzcy50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHJldHVyblVzZXJEYXRhLm9iamVjdCgpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCit2b2lkIFdlYlBhZ2U6OmNsZWFyV2hl
ZWxFdmVudFRlc3RNb25pdG9yKCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYWdlLT5jbGVhclRyaWdnZXIoKTsKKyAgICBtX3BhZ2UtPmNsZWFyV2hlZWxF
dmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0U2hvdWxkU2NhbGVWaWV3
VG9GaXREb2N1bWVudChib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjE3NjVjMWY0ZjgxMWUw
MDg0ZjBjOTc3OGU1OWExOGU4M2EwYThmMy4uNDVlZmVhN2M5NjRjMjMyMmM1ZTVlMDViMjVkNzc0
MGFlMGM1ODAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTU2OCw3ICsxNTY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90LCBib29sKTsKICNlbmRpZgogCi0gICAgdm9pZCBjbGVh
cldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpOworICAgIHZvaWQgY2xlYXJXaGVlbEV2ZW50VGVzdE1v
bml0b3IoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChib29s
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggMzA5NmUyZTY5NDE0MGM3ZGZlMjI5YjNjYzAyOTUxNjJmMjJkZDNl
OC4uMTUwNjQ4OTc4NGFmM2Q3MjMyOWU1NDU0MDkzMGQ3MTRhMzRhNWIwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC01MTYsNyArNTE2LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBEaWRMb3NlUG9p
bnRlckxvY2soKQogI2VuZGlmCiAKLSAgICBDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCisg
ICAgY2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKQogICAgIFNldFNob3VsZFNjYWxlVmlld1Rv
Rml0RG9jdW1lbnQoYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KQogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ2Y2RlYWE2YTQ4Nzc1MjJiN2M4YzRkMzEzYWQ0NmYz
NGQ3MDMxNTAuLjdkMGEyYTlmNTQxY2M1OWU4MjFkODkyYmE1NTg1MGM5MGVlZDc4NDIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxOS0xMC0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgV2hlZWxFdmVudFRlc3RUcmlnZ2VyIGFuZCBpbXByb3ZlIG5hbWlu
ZyBpbiByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0aGUgInRlc3QgdHJpZ2dlciIgdGVybWlub2xvZ3kgdG8gIm1vbml0
b3Igd2hlZWwgZXZlbnRzIjsgYWZ0ZXIgYWxsLCB0ZXN0cworICAgICAgICBjYWxsIG1vbml0b3JX
aGVlbEV2ZW50cygpIGFuZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKSwgYW5kIHRoaXMg
aXMgbm90IHRyaWdnZXJpbmcKKyAgICAgICAgYSB0ZXN0LgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3Rh
dGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDE5LTEwLTA5ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgQ29tcGFjdFBvaW50ZXJU
dXBsZTwuLi4sIE9wdGlvblNldDwuLi4+PgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM1ZDI2NDEyMWJhOTMxZDY0NzI3Y2MzMmI0MGRkMGJiNTIwNzVm
YTcuLjg0ZDNiYzcxMTgxNjQxOWI0ODRlYmNmYmVjOGU1NDJlOWQ2YWE3NTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5MTIsNyArMTkxMiw3IEBA
IHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9uCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gW3dlYlZpZXcgX21haW5Db3JlRnJhbWVdKQot
ICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCpm
cmFtZSk7CisgICAgICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6Y2xlYXJXaGVlbEV2ZW50VGVzdE1v
bml0b3IoKmZyYW1lKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGVjZDdkOWI4Y2NiMTNj
ZjRmNTNiNDBlZDc3ZjgxMmU2NjJjODBmY2UuLmZjODc1NmJkYjVmN2M0OTRkMzgzODY0NWIzMjI5
OWMxYTkxMDFjYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIC8vIFJl
LXNldCB0byB0aGUgZGVmYXVsdCBiYWNraW5nIHNjYWxlIGZhY3RvciBieSBzZXR0aW5nIHRoZSBj
dXN0b20gc2NhbGUgZmFjdG9yIHRvIDAuCiAgICAgV0tQYWdlU2V0Q3VzdG9tQmFja2luZ1NjYWxl
RmFjdG9yKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgMCk7CiAKLSAgICBXS1BhZ2VDbGVhcldoZWVs
RXZlbnRUZXN0VHJpZ2dlcihtX21haW5XZWJWaWV3LT5wYWdlKCkpOworICAgIFdLUGFnZUNsZWFy
V2hlZWxFdmVudFRlc3RNb25pdG9yKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7CiAKICAgICBXS1Bh
Z2VTZXRNdXRlZChtX21haW5XZWJWaWV3LT5wYWdlKCksIHRydWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380582</attachid>
            <date>2019-10-09 16:00:15 -0700</date>
            <delta_ts>2019-10-09 16:37:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202772-20191009160014.patch</filename>
            <type>text/plain</type>
            <size>98780</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5ZmU2ZDA0OWY2YmE3
MDJjYzE0MDY0ODBkZTJlMzRmYjlhYjUyZi4uZjVhZWQ4YjBiYjExNTg0NGZiZGQxYjc3MmUwY2Yz
YWJlZDM3NjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxOS0xMC0wOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyIGFuZCBpbXByb3ZlIG5hbWluZyBpbiByZWxhdGVkIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjc3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUg
InRlc3QgdHJpZ2dlciIgdGVybWlub2xvZ3kgdG8gIm1vbml0b3Igd2hlZWwgZXZlbnRzIjsgYWZ0
ZXIgYWxsLCB0ZXN0cworICAgICAgICBjYWxsIG1vbml0b3JXaGVlbEV2ZW50cygpIGFuZCBjYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoKSwgYW5kIHRoaXMgaXMgbm90IHRyaWdnZXJpbmcKKyAg
ICAgICAgYSB0ZXN0LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0U2Nyb2xsYmFyc0ZvckxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGlkQWRkU2Nyb2xsYmFyKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZW5zdXJlV2hlZWxFdmVudFRl
c3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVuc3VyZVRlc3RUcmlnZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OndoZWVsRXZlbnRUZXN0TW9uaXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpj
bGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc01v
bml0b3JpbmdXaGVlbEV2ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp0ZXN0
VHJpZ2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjbGVhclRy
aWdnZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZXhwZWN0c1doZWVsRXZl
bnRUcmlnZ2VycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50VGVz
dE1vbml0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmRlZmVy
Rm9yUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6cmVt
b3ZlRGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RN
b25pdG9yOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmguCisgICAgICAg
ICogcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6cGxhdGZvcm1QcmVwYXJlRm9yV2hlZWxFdmVudHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVJc01vbml0b3JpbmdX
aGVlbEV2ZW50c0ZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZGVmZXJXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25Gb3JSZWFzb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJy
YWxGb3JSZWFzb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlRXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcldpdGhGcmFtZVZpZXcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZGVmZXJUZXN0c0ZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyV2l0aEZy
YW1lVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0Fm
dGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXRJc01vbml0b3JpbmdXaGVlbEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0RXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6ZGVmZXJXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZTo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6ZGVmZXJUZXN0c0ZvclJlYXNvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVm
ZXJyYWxGb3JSZWFzb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9y
UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVtb3Zl
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlclRlc3RzRm9yUmVhc29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVtb3ZlVGVzdERl
ZmVycmFsRm9yUmVhc29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6aGFuZGxl
V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjOjpkZWZlclRlc3RzRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnJlbW92ZVRlc3REZWZl
cnJhbEZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2lu
Zy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJl
YXNvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6cmVtb3ZlV2hl
ZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmRlZmVyVGVzdHNGb3JSZWFzb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVRlc3REZWZlcnJh
bEZvclJlYXNvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRv
cjo6c2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcjo6c2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpkZWZlcldoZWVsRXZlbnRUZXN0Q29t
cGxldGlvbkZvclJlYXNvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9s
bGVyQ2xpZW50OjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50OjpkZWZl
clRlc3RzRm9yUmVhc29uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bENvbnRyb2xsZXJDbGllbnQ6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzdG9wU25hcFJ1YmJlcmJh
bmRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjpzY2hlZHVsZVN0
YXRlbGVzc1Njcm9sbFNuYXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6
c3RhcnREZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0b3BEZWZlcnJpbmdXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25hcFRpbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0b3BTY3JvbGxTbmFwVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6c3RhcnREZWZlcnJpbmdUZXN0c0R1ZVRvU2Nyb2xs
U25hcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6
c3RvcERlZmVycmluZ1Rlc3RzRHVlVG9TY3JvbGxTbmFwcGluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEJlZ2luU2Nyb2xsR2VzdHVyZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6ZGlkRW5kU2Nyb2xsR2VzdHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c2VuZENvbnRlbnRBcmVhU2Ny
b2xsZWRTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzZW5kQ29u
dGVudEFyZWFTY3JvbGxlZFRpbWVyRmlyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBXaGVlbEV2ZW50TW9uaXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldFNjcm9sbExlZnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBXaGVl
bEV2ZW50VGVzdFRyaWdnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3JlYXRlU2Nyb2xsYmFy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXR1cFdoZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpzZXRTY3JvbGxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwV2hlZWxFdmVudFRl
c3RUcmlnZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6Om1vbml0b3JXaGVlbEV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0
Tm90aWZpY2F0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjbGVhcldo
ZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmNsZWFy
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5oOgorCiAyMDE5LTEwLTA5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVA
YXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQjogdXBkYXRlIHNpemUgdG8gYWN0dWFsIGRp
c2sgdXNhZ2Ugb25seSB3aGVuIGVzdGltYXRlZCBpbmNyZWFzZSBpcyBiaWdnZXIgdGhhbiBzcGFj
ZSBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTkxNWMyMGFjM2JiNDBiYmVmNmE4ZmRkYWRiY2Y5NjQx
NTkyYzExNS4uMWY3M2M0NTQ5M2FhNTU4Nzk3NGQ5NDg2MmE0YzUwMDcyNDIxY2Y1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0xMC0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2hlZWxFdmVudFRlc3RUcmlnZ2VyIGFu
ZCBpbXByb3ZlIG5hbWluZyBpbiByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgInRlc3QgdHJpZ2dlciIgdGVybWlu
b2xvZ3kgdG8gIm1vbml0b3Igd2hlZWwgZXZlbnRzIjsgYWZ0ZXIgYWxsLCB0ZXN0cworICAgICAg
ICBjYWxsIG1vbml0b3JXaGVlbEV2ZW50cygpIGFuZCBjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoKSwgYW5kIHRoaXMgaXMgbm90IHRyaWdnZXJpbmcKKyAgICAgICAgYSB0ZXN0LgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDbGVhcldo
ZWVsRXZlbnRUZXN0TW9uaXRvcik6CisgICAgICAgIChXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0
VHJpZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcik6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxl
UGFnZVN0YXJ0TW9uaXRvcmluZ1Njcm9sbE9wZXJhdGlvbnMpOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlUmVnaXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhcldoZWVsRXZlbnRUZXN0TW9u
aXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmln
Z2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5
LTEwLTA5ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IElQQzo6ZGVjb2RlIHNob3VsZCBncmFjZWZ1bGx5IGhhbmRsZSBhIG5pbCBhbGxvd2VkIGNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCA1YjJmNTNiNTZkN2NhYjVmNjg5ZTZlMGMzODk1MzYyMmM1
NTU3MDM5Li4xZDcwOWI1MDhmZTRhNjQzNmY4MzQ2OGJmNTA5M2I4N2VmNzBkZWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTg0MSw3ICs4NDEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGFnZS9XZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaAogICAgIHBhZ2Uv
V2ViS2l0TmFtZXNwYWNlLmgKICAgICBwYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oCi0gICAg
cGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaAorICAgIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmgKICAgICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmgKIAogICAgIHBhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmNWVmZjczMmUwMjM4ZjQwOTgwZTU4Y2E4
Mzk2YjRjZjA2NWFjMzNiLi40ZjQ0MDcyNzgyZGFmZTkwMzBjNjkyMjZiY2Q1MTFhMGRhNjRhMDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCiBwYWdlL1Zpc3VhbFZpZXdw
b3J0LmNwcAogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCi1wYWdlL1doZWVsRXZlbnRU
ZXN0VHJpZ2dlci5jcHAKK3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAogcGFnZS9XaW5k
b3dGZWF0dXJlcy5jcHAKIHBhZ2UvV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcAogcGFn
ZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBm
NzVjODQ5NGU0Yy4uMmU2MWRiZDI5ZWZmNzdhYTliZWE2OWUyYTBlYzRkYzA0OWM4MThkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjE0NSw3ICsyMTQ1LDcgQEAKIAkJN0FBQkEyNUExNEJDNjEzMzAwQUE5QTExIC8qIERPTUVk
aXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FB
QkEyNTgxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5oICovOyB9OwogCQk3QUFGRThEMDE5
Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBRkU4Q0UxOUNCODY3MjAwMEY1NkQ4IC8q
IFNjcm9sbExhdGNoaW5nU3RhdGUuaCAqLzsgfTsKIAkJN0FERTcyMjYxMENCQkI5QjAwNkIzQjNB
IC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJN0FFMzM1RjIxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFMzM1RjAxQUNC
MDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0VHJpZ2dlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdBRTMzNUYyMUFDQjA5RTIwMEU0MDFF
RiAvKiBXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRTMzNUYwMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50
VGVzdE1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QUU2QzkzQzFCRTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUU2Qzkz
QTFCRTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi87IH07CiAJCTdB
RjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkMxOENGQjJERjAwQzY0QkVGIC8q
IFZUVFJlZ2lvbi5jcHAgKi87IH07CiAJCTdBRjlCMjAzMThDRkIyREYwMEM2NEJFRiAvKiBWVFRS
ZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCAqLzsgfTsKQEAgLTk1ODUsOCAr
OTU4NSw4IEBACiAJCTdBQUZFOENEMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbExhdGNo
aW5nU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUFGRThDRTE5Q0I4
NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JvbGxMYXRjaGluZ1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdBREU3MjI1MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FFMzM1RUYxQUNCMDlFMjAwRTQwMUVG
IC8qIFdoZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdoZWVsRXZlbnRUZXN0VHJp
Z2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUUzMzVFRjFBQ0IwOUUyMDBF
NDAxRUYgLyogV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdoZWVsRXZlbnRUZXN0TW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdBRTMzNUYwMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVz
dE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2hlZWxFdmVudFRl
c3RNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRTZDOTM3MUJFMEM1
QzgwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRTZDOTM5MUJFMEM2MDEwMEUxOUUwMyAvKiBNYWlu
VGhyZWFkU2hhcmVkVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FFNkM5M0ExQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluVGhyZWFkU2hhcmVkVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTYwLDggKzIwNTYwLDggQEAKIAkJCQk0
OTRCRDc5NDBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaWRsICovLAogCQkJCTJFMTk1
MTZBMUI2NTk4RDIwMERGNkVFRiAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwICovLAogCQkJ
CTJFQkJDM0Q3MUI2NTk4ODMwMEY1MjUzRCAvKiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCAqLywK
LQkJCQk3QUUzMzVFRjFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNw
cCAqLywKLQkJCQk3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmggKi8sCisJCQkJN0FFMzM1RUYxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZlbnRUZXN0
TW9uaXRvci5jcHAgKi8sCisJCQkJN0FFMzM1RjAxQUNCMDlFMjAwRTQwMUVGIC8qIFdoZWVsRXZl
bnRUZXN0TW9uaXRvci5oICovLAogCQkJCTdDNDE4OUFDMUIwN0NCRjIwMDBGQTc1NyAvKiBXaW5k
b3dFdmVudEhhbmRsZXJzLmlkbCAqLywKIAkJCQlCQzgyNDNFNjBEMENGRDc1MDA0NjBDOEYgLyog
V2luZG93RmVhdHVyZXMuY3BwICovLAogCQkJCUJDODI0M0U3MEQwQ0ZENzUwMDQ2MEM4RiAvKiBX
aW5kb3dGZWF0dXJlcy5oICovLApAQCAtMzI0OTQsNyArMzI0OTQsNyBAQAogCQkJCTg1MDMxQjUx
MEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUJC
QzNEODFCNjU5ODgzMDBGNTI1M0QgLyogV2hlZWxFdmVudERlbHRhRmlsdGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRTlCNUQ4RjFCNjZBOTRFMDA4QzZBMjQgLyogV2hlZWxFdmVudERlbHRhRmls
dGVyTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUUzMzVGMjFBQ0IwOUUyMDBFNDAxRUYgLyog
V2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QUUzMzVGMjFBQ0Iw
OUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTk1NkYyNTIzMzFBRDUzMDA1N0U5RDIgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUExOTU2RjI0MjMzMUFEMjEwMDU3RTlEMiAvKiBXSExTTFByb2dy
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUExOTU2RjIzMjMzMUFDRjIwMDU3RTlEMiAvKiBXSExT
TFJlcGxhY2VXaXRoLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCBkNzJiYTdlZjdkMTBhOTQzM2Y2OGQ3MmE3NDVmOGNjNDFhOGQ5ZDFiLi5iMGEzZTU2NDgx
NjUxNGU0ZDAxMjQ3NjZmNmQ1MzY4Y2ZiZTM5YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0xMDIsNyArMTAyLDcgQEAKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIKICNpbmNs
dWRlICJWZWxvY2l0eURhdGEuaCIKICNpbmNsdWRlICJWaXN1YWxWaWV3cG9ydC5oIgotI2luY2x1
ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9u
aXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xMTk2LDggKzExOTYsOCBAQCB2b2lkIEZyYW1lVmll
dzo6YWRqdXN0U2Nyb2xsYmFyc0ZvckxheW91dChib29sIGlzRmlyc3RMYXlvdXQpCiAgICAgICAg
IGlmIChoTW9kZSA9PSBTY3JvbGxiYXJBdXRvKQogICAgICAgICAgICAgc2V0SG9yaXpvbnRhbFNj
cm9sbGJhck1vZGUoU2Nyb2xsYmFyQWx3YXlzT2ZmKTsgLy8gVGhpcyBjYXVzZXMgYSBob3Jpem9u
dGFsIHNjcm9sbGJhciB0byBkaXNhcHBlYXIuCiAgICAgICAgIEFTU0VSVChmcmFtZSgpLnBhZ2Uo
KSk7Ci0gICAgICAgIGlmIChmcmFtZSgpLnBhZ2UoKS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2Vy
cygpKQotICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdn
ZXIoZnJhbWUoKS5wYWdlKCktPnRlc3RUcmlnZ2VyKCkpOworICAgICAgICBpZiAoZnJhbWUoKS5w
YWdlKCktPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgICAgICBzY3JvbGxBbmlt
YXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihmcmFtZSgpLnBhZ2UoKS0+d2hlZWxFdmVu
dFRlc3RNb25pdG9yKCkpOwogICAgICAgICBzZXRTY3JvbGxiYXJNb2RlcyhoTW9kZSwgdk1vZGUp
OwogICAgICAgICBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChmYWxzZSwgdHJ1ZSk7CiAgICAgfSBl
bHNlIGlmIChoTW9kZSAhPSBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpIHx8IHZNb2RlICE9IHZl
cnRpY2FsU2Nyb2xsYmFyTW9kZSgpKQpAQCAtMjIzOCw4ICsyMjM4LDggQEAgdm9pZCBGcmFtZVZp
ZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBzY3JvbGxQb3NpdGlv
bikKICAgICBtX3Nob3VsZFNjcm9sbFRvRm9jdXNlZEVsZW1lbnQgPSBmYWxzZTsKICAgICBtX2Rl
bGF5ZWRTY3JvbGxUb0ZvY3VzZWRFbGVtZW50VGltZXIuc3RvcCgpOwogICAgIFBhZ2UqIHBhZ2Ug
PSBmcmFtZSgpLnBhZ2UoKTsKLSAgICBpZiAocGFnZSAmJiBwYWdlLT5leHBlY3RzV2hlZWxFdmVu
dFRyaWdnZXJzKCkpCi0gICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RU
cmlnZ2VyKHBhZ2UtPnRlc3RUcmlnZ2VyKCkpOworICAgIGlmIChwYWdlICYmIHBhZ2UtPmlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgIHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxF
dmVudFRlc3RNb25pdG9yKHBhZ2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKICAgICBTY3Jv
bGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAKICAgICBzZXRDdXJy
ZW50U2Nyb2xsVHlwZShvbGRTY3JvbGxUeXBlKTsKQEAgLTUwNjEsOCArNTA2MSw4IEBAIHZvaWQg
RnJhbWVWaWV3OjpkaWRBZGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVuCiB7CiAgICAgU2Nyb2xsYWJsZUFyZWE6OmRpZEFkZFNjcm9sbGJh
cihzY3JvbGxiYXIsIG9yaWVudGF0aW9uKTsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdl
KCk7Ci0gICAgaWYgKHBhZ2UgJiYgcGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQot
ICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlLT50
ZXN0VHJpZ2dlcigpKTsKKyAgICBpZiAocGFnZSAmJiBwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2
ZW50cygpKQorICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRv
cihwYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQogICAgICAgICBjYWNoZS0+aGFuZGxlU2Nyb2xsYmFy
VXBkYXRlKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNzQ2OTdjOTliMDc5ZDUxYjE3
MDA5OGQ4NDhlYzc2M2JhMzc1MWUyNC4uYmQ4YzY2MWI5NGVkZDAzMjI2MjYzMjBkY2IxYWNlOTY1
NGM1ODk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTY5LDE4ICsyNTY5LDE4IEBAIHZvaWQg
UGFnZTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QgY2xpZW50SWQsIGJv
b2wgc2hvdWxkUGxheSkKIH0KICNlbmRpZgogCi1XaGVlbEV2ZW50VGVzdFRyaWdnZXImIFBhZ2U6
OmVuc3VyZVRlc3RUcmlnZ2VyKCkKK1doZWVsRXZlbnRUZXN0TW9uaXRvciYgUGFnZTo6ZW5zdXJl
V2hlZWxFdmVudFRlc3RNb25pdG9yKCkKIHsKLSAgICBpZiAoIW1fdGVzdFRyaWdnZXIpIHsKLSAg
ICAgICAgbV90ZXN0VHJpZ2dlciA9IGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50VGVzdFRyaWdnZXIo
KSk7CisgICAgaWYgKCFtX3doZWVsRXZlbnRUZXN0TW9uaXRvcikgeworICAgICAgICBtX3doZWVs
RXZlbnRUZXN0TW9uaXRvciA9IGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3Ig
c28gdGhhdCB0aGUgbWFpbmZyYW1lIHNjcm9sbGluZyBub2RlIGNhbiBleHBlY3Qgd2hlZWwgZXZl
bnQgdGVzdCB0cmlnZ2Vycy4KICAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IG1haW5GcmFt
ZSgpLnZpZXcoKSkgewogICAgICAgICAgICAgaWYgKG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCi0g
ICAgICAgICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlRXhwZWN0c1doZWVs
RXZlbnRUZXN0VHJpZ2dlcldpdGhGcmFtZVZpZXcoKmZyYW1lVmlldyk7CisgICAgICAgICAgICAg
ICAgbV9zY3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlSXNNb25pdG9yaW5nV2hlZWxFdmVudHNG
b3JGcmFtZVZpZXcoKmZyYW1lVmlldyk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
Km1fdGVzdFRyaWdnZXI7CisgICAgcmV0dXJuICptX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKIH0K
IAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMjY5ZTZmZGExOTM0MGFiMjU1
YTk3NGNiNmU1MzhmM2M3NDIxNGNiYi4uM2MxMWM2MDY2MmZiMDMwOGI0N2Y4NWI3YTYzNzdhMmY3
NWY5ZTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJWaXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNsdWRlICJXaGVlbEV2ZW50VGVz
dFRyaWdnZXIuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CkBAIC02NDQsMTAgKzY0NCwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCwgYm9vbCk7CiAj
ZW5kaWYKIAotICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdFRyaWdnZXI+IHRlc3RUcmlnZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXN0VHJpZ2dlcjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlciYgZW5zdXJlVGVzdFRyaWdnZXIoKTsKLSAgICB2b2lkIGNsZWFyVHJp
Z2dlcigpIHsgbV90ZXN0VHJpZ2dlciA9IG51bGxwdHI7IH0KLSAgICBib29sIGV4cGVjdHNXaGVl
bEV2ZW50VHJpZ2dlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fdGVzdFRyaWdnZXI7IH0KKyAgICBS
ZWZQdHI8V2hlZWxFdmVudFRlc3RNb25pdG9yPiB3aGVlbEV2ZW50VGVzdE1vbml0b3IoKSBjb25z
dCB7IHJldHVybiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IFdoZWVsRXZlbnRUZXN0TW9uaXRvciYgZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7Cisg
ICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpIHsgbV93aGVlbEV2ZW50VGVzdE1v
bml0b3IgPSBudWxscHRyOyB9CisgICAgYm9vbCBpc01vbml0b3JpbmdXaGVlbEV2ZW50cygpIGNv
bnN0IHsgcmV0dXJuICEhbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7IH0KIAogICAgIHZvaWQgc2V0
SXNGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpIHsgbV9pc0ZvclNhbml0aXppbmdXZWJDb250ZW50
ID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNGb3JTYW5pdGl6aW5nV2ViQ29udGVudDsgfQpAQCAtOTI2LDcgKzkyNiw3IEBA
IHByaXZhdGU6CiAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gbV9zdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI7CiAgICAgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+IG1fdXNlckNvbnRl
bnRQcm92aWRlcjsKICAgICBSZWY8VmlzaXRlZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3Jl
OwotICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdFRyaWdnZXI+IG1fdGVzdFRyaWdnZXI7CisgICAg
UmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gbV93aGVlbEV2ZW50VGVzdE1vbml0b3I7CiAK
ICAgICBIYXNoU2V0PEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcio+IG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVl
bEV2ZW50VGVzdE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVz
dE1vbml0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MWZmMTFhNTE5ODUyODc0ODcwMWM1ZjE1MGIzZTdj
ZDMzNWM3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZl
bnRUZXN0TW9uaXRvci5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmICFMT0dfRElTQUJMRUQKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpXaGVlbEV2ZW50VGVzdE1vbml0b3IoKQorICAgIDogbV90ZXN0Rm9yQ29tcGxldGlv
blRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
dHJpZ2dlclRlc3RUaW1lckZpcmVkKQoreworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxzKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX3JlYXNvbnNMb2NrKTsKKyAgICBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuY2xlYXIo
KTsKKyAgICBtX2NvbXBsZXRpb25DYWxsYmFjayA9IG51bGxwdHI7CisgICAgbV90ZXN0Rm9yQ29t
cGxldGlvblRpbWVyLnN0b3AoKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RN
b25pdG9yLCBzdHJlYW0gPDwgIiAgICAgICg9KSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNsZWFy
QWxsVGVzdERlZmVycmFsczogY2xlYXJlZCBhbGwgdGVzdCBzdGF0ZS4iKTsKK30KKwordm9pZCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9u
VGltZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb25DYWxsYmFjaykKK3sKKyAgICB7
CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcmVhc29uc0xvY2spOworICAg
ICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoZnVuY3Rpb25DYWxsYmFjayk7Cisg
ICAgfQorICAgIAorICAgIGlmICghbV90ZXN0Rm9yQ29tcGxldGlvblRpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fdGVzdEZvckNvbXBsZXRpb25UaW1lci5zdGFydFJlcGVhdGluZygxX3MgLyA2
MC4pOworfQorCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6ZGVmZXJGb3JSZWFzb24oU2Ny
b2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyUmVhc29uIHJlYXNvbikKK3sK
KyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3JlYXNvbnNMb2NrKTsKKyAgICBtX2Rl
ZmVyQ29tcGxldGlvblJlYXNvbnMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKKyAgICAgICAgcmV0
dXJuIE9wdGlvblNldDxEZWZlclJlYXNvbj4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuYWRk
KHJlYXNvbik7CisgICAgCisgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRv
ciwgc3RyZWFtIDw8ICIgICAgICAoPSkgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpkZWZlckZvclJl
YXNvbjogaWQ9IiA8PCBpZGVudGlmaWVyIDw8ICIsIHJlYXNvbj0iIDw8IHJlYXNvbik7Cit9CisK
K3ZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZW1vdmVEZWZlcnJhbEZvclJlYXNvbihTY3Jv
bGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgRGVmZXJSZWFzb24gcmVhc29uKQorewor
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcmVhc29uc0xvY2spOworICAgIGF1dG8g
aXQgPSBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAo
aXQgPT0gbV9kZWZlckNvbXBsZXRpb25SZWFzb25zLmVuZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAg
ICAgICg9KSBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlbW92ZURlZmVycmFsRm9yUmVhc29uOiBp
ZD0iIDw8IGlkZW50aWZpZXIgPDwgIiwgcmVhc29uPSIgPDwgcmVhc29uKTsKKyAgICBpdC0+dmFs
dWUucmVtb3ZlKHJlYXNvbik7CisgICAgCisgICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCisg
ICAgICAgIG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5yZW1vdmUoaXQpOworfQorICAgIAordm9p
ZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCgpCit7CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uQ2FsbGJhY2s7CisKKyAgICB7CisgICAgICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fcmVhc29uc0xvY2spOworICAgICAgICBpZiAo
IW1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPR19X
SVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCAtIHNjcm9sbGluZyBzdGlsbCBhY3Rp
dmUsIHJlYXNvbnMgIiA8PCBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb25DYWxsYmFjayA9IFdURk1vdmUo
bV9jb21wbGV0aW9uQ2FsbGJhY2spOworICAgIH0KKworICAgIG1fdGVzdEZvckNvbXBsZXRpb25U
aW1lci5zdG9wKCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9y
LCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjp0cmlnZ2VyVGVzdFRpbWVyRmly
ZWQ6IHNjcm9sbGluZyBpcyBpZGxlLCBGSVJJTkcgVEVTVCIpOworICAgIGlmIChmdW5jdGlvbkNh
bGxiYWNrKQorICAgICAgICBmdW5jdGlvbkNhbGxiYWNrKCk7Cit9CisKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFz
b24gcmVhc29uKQoreworICAgIHN3aXRjaCAocmVhc29uKSB7CisgICAgY2FzZSBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzOiB0cyA8PCAicnViYmVyYmFuZGluZyI7
IGJyZWFrOworICAgIGNhc2UgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxTbmFwSW5Qcm9n
cmVzczogdHMgPDwgInNjcm9sbC1zbmFwcGluZyI7IGJyZWFrOworICAgIGNhc2UgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkOiB0cyA8PCAic2Nyb2xsaW5n
IHRocmVhZCBzeW5jIG5lZWRlZCI7IGJyZWFrOworICAgIGNhc2UgV2hlZWxFdmVudFRlc3RNb25p
dG9yOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzczogdHMgPDwgImNvbnRlbnQgc2Nyb2xsaW5nIjsg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxl
QXJlYVJlYXNvbk1hcCYgcmVhc29uTWFwKQoreworICAgIGZvciAoY29uc3QgYXV0byYgcmVnaW9u
UmVhc29uc1BhaXIgOiByZWFzb25NYXApCisgICAgICAgIHRzIDw8ICIgICBzY3JvbGwgcmVnaW9u
OiAiIDw8IHJlZ2lvblJlYXNvbnNQYWlyLmtleSA8PCAiIHJlYXNvbnM6ICIgPDwgcmVnaW9uUmVh
c29uc1BhaXIudmFsdWU7CisKKyAgICByZXR1cm4gdHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjZGNlNWMyMGZmZjE0Nzg1YzBmYzgzODE5MjAwYmE1NmZlMjA4MTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCkBA
IC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0b3IgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8V2hlZWxFdmVudFRlc3RNb25pdG9yPiB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV2hlZWxFdmVudFRlc3RNb25pdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxUZXN0
RGVmZXJyYWxzKCk7CisgICAgCisgICAgZW51bSBEZWZlclJlYXNvbiB7CisgICAgICAgIFJ1YmJl
cmJhbmRJblByb2dyZXNzICAgICAgICA9IDEgPDwgMCwKKyAgICAgICAgU2Nyb2xsU25hcEluUHJv
Z3Jlc3MgICAgICAgID0gMSA8PCAxLAorICAgICAgICBTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVk
ICAgPSAxIDw8IDIsCisgICAgICAgIENvbnRlbnRTY3JvbGxJblByb2dyZXNzICAgICA9IDEgPDwg
MworICAgIH07CisgICAgdHlwZWRlZiBjb25zdCB2b2lkKiBTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXI7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlZmVyRm9yUmVhc29uKFNjcm9sbGFibGVB
cmVhSWRlbnRpZmllciwgRGVmZXJSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlRGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBEZWZlclJlYXNv
bik7CisgICAgCisgICAgdm9pZCB0cmlnZ2VyVGVzdFRpbWVyRmlyZWQoKTsKKworICAgIHVzaW5n
IFNjcm9sbGFibGVBcmVhUmVhc29uTWFwID0gV1RGOjpIYXNoTWFwPFNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgT3B0aW9uU2V0PERlZmVyUmVhc29uPj47CisKK3ByaXZhdGU6CisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+IG1fY29tcGxldGlvbkNhbGxiYWNrOworICAgIFJ1bkxvb3A6OlRpbWVy
PFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4gbV90ZXN0Rm9yQ29tcGxldGlvblRpbWVyOworCisgICAg
bXV0YWJsZSBMb2NrIG1fcmVhc29uc0xvY2s7CisgICAgU2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAg
bV9kZWZlckNvbXBsZXRpb25SZWFzb25zOworfTsKKworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24p
OworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAmKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2
ZW50VGVzdFRyaWdnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRy
aWdnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDcxZDhmY2RjNzlmNDY0
OGMxNzUwYjQ0YjRmMTdkOGZjN2FkOTY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdoZWVsRXZlbnRUZXN0
VHJpZ2dlcjo6V2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkKLSAgICA6IG1fdGVzdFRyaWdnZXJUaW1l
cihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnRyaWdn
ZXJUZXN0VGltZXJGaXJlZCkKLXsKLX0KLQotdm9pZCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OmNs
ZWFyQWxsVGVzdERlZmVycmFscygpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2so
bV90ZXN0VHJpZ2dlck11dGV4KTsKLSAgICBtX2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLmNsZWFy
KCk7Ci0gICAgbV90ZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBudWxscHRyOwotICAgIG1fdGVz
dFRyaWdnZXJUaW1lci5zdG9wKCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcnMsIHN0cmVhbSA8PCAiICAgICAgKD0pIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6Y2xl
YXJBbGxUZXN0RGVmZXJyYWxzOiBjbGVhcmVkIGFsbCB0ZXN0IHN0YXRlLiIpOwotfQotCi12b2lk
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRp
b25UaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxiYWNrKQotewotICAg
IHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90ZXN0VHJpZ2dlck11dGV4
KTsKLSAgICAgICAgbV90ZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9u
Q2FsbGJhY2spOwotICAgIH0KLSAgICAKLSAgICBpZiAoIW1fdGVzdFRyaWdnZXJUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX3Rlc3RUcmlnZ2VyVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8g
NjAuKTsKLX0KLQotdm9pZCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OmRlZmVyVGVzdHNGb3JSZWFz
b24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyVGVzdFRyaWdnZXJS
ZWFzb24gcmVhc29uKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGVzdFRy
aWdnZXJNdXRleCk7Ci0gICAgbV9kZWZlclRlc3RUcmlnZ2VyUmVhc29ucy5lbnN1cmUoaWRlbnRp
ZmllciwgW10gewotICAgICAgICByZXR1cm4gT3B0aW9uU2V0PERlZmVyVGVzdFRyaWdnZXJSZWFz
b24+KCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChyZWFzb24pOwotICAgIAotICAgIExP
R19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCBzdHJlYW0gPDwgIiAgICAgICg9
KSBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OmRlZmVyVGVzdHNGb3JSZWFzb246IGlkPSIgPDwgaWRl
bnRpZmllciA8PCAiLCByZWFzb249IiA8PCByZWFzb24pOwotfQotCi12b2lkIFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyLCBEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNvbikKLXsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rlc3RUcmlnZ2VyTXV0ZXgpOwotICAgIGF1
dG8gaXQgPSBtX2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aWYgKGl0ID09IG1fZGVmZXJUZXN0VHJpZ2dlclJlYXNvbnMuZW5kKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCBzdHJlYW0g
PDwgIiAgICAgICg9KSBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnJlbW92ZVRlc3REZWZlcnJhbEZv
clJlYXNvbjogaWQ9IiA8PCBpZGVudGlmaWVyIDw8ICIsIHJlYXNvbj0iIDw8IHJlYXNvbik7Ci0g
ICAgaXQtPnZhbHVlLnJlbW92ZShyZWFzb24pOwotICAgIAotICAgIGlmIChpdC0+dmFsdWUuaXNF
bXB0eSgpKQotICAgICAgICBtX2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLnJlbW92ZShpdCk7Ci19
Ci0gICAgCi12b2lkIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVk
KCkKLXsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb25DYWxsYmFjazsKLQotICAg
IHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90ZXN0VHJpZ2dlck11dGV4
KTsKLSAgICAgICAgaWYgKCFtX2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVh
bSA8PCAiICBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCAtIHNj
cm9sbGluZyBzdGlsbCBhY3RpdmUsIHJlYXNvbnMgIiA8PCBtX2RlZmVyVGVzdFRyaWdnZXJSZWFz
b25zKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKG1fdGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKLSAgICB9Ci0K
LSAgICBtX3Rlc3RUcmlnZ2VyVGltZXIuc3RvcCgpOwotCi0gICAgTE9HX1dJVEhfU1RSRUFNKFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OnRyaWdnZXJUZXN0VGltZXJGaXJlZDogc2Nyb2xsaW5nIGlzIGlkbGUsIEZJUklORyBURVNUIik7
Ci0gICAgaWYgKGZ1bmN0aW9uQ2FsbGJhY2spCi0gICAgICAgIGZ1bmN0aW9uQ2FsbGJhY2soKTsK
LX0KLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgV2hlZWxFdmVudFRl
c3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNvbikKLXsKLSAgICBzd2l0Y2gg
KHJlYXNvbikgewotICAgIGNhc2UgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpSdWJiZXJiYW5kSW5Q
cm9ncmVzczogdHMgPDwgInJ1YmJlcmJhbmRpbmciOyBicmVhazsKLSAgICBjYXNlIFdoZWVsRXZl
bnRUZXN0VHJpZ2dlcjo6U2Nyb2xsU25hcEluUHJvZ3Jlc3M6IHRzIDw8ICJzY3JvbGwtc25hcHBp
bmciOyBicmVhazsKLSAgICBjYXNlIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhy
ZWFkU3luY05lZWRlZDogdHMgPDwgInNjcm9sbGluZyB0aHJlYWQgc3luYyBuZWVkZWQiOyBicmVh
azsKLSAgICBjYXNlIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6Q29udGVudFNjcm9sbEluUHJvZ3Jl
c3M6IHRzIDw8ICJjb250ZW50IHNjcm9sbGluZyI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
dHM7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAmIHJlYXNvbk1hcCkK
LXsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHJlZ2lvblJlYXNvbnNQYWlyIDogcmVhc29uTWFwKQot
ICAgICAgICB0cyA8PCAiICAgc2Nyb2xsIHJlZ2lvbjogIiA8PCByZWdpb25SZWFzb25zUGFpci5r
ZXkgPDwgIiByZWFzb25zOiAiIDw8IHJlZ2lvblJlYXNvbnNQYWlyLnZhbHVlOwotCi0gICAgcmV0
dXJuIHRzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0VHJpZ2dlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzEzZGI5Nzc1N2Y3NTA0OTZmYzRjZDdjNWQ1YWFkZDMxYjllZjQzYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVs
RXZlbnRUZXN0VHJpZ2dlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgotI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXaGVlbEV2
ZW50VGVzdFRyaWdnZXI+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaGVlbEV2ZW50VGVz
dFRyaWdnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXaGVlbEV2
ZW50VGVzdFRyaWdnZXIoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGVzdENhbGxi
YWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRlc3REZWZlcnJhbHMoKTsKLSAgICAKLSAg
ICBlbnVtIERlZmVyVGVzdFRyaWdnZXJSZWFzb24gewotICAgICAgICBSdWJiZXJiYW5kSW5Qcm9n
cmVzcyAgICAgICAgPSAxIDw8IDAsCi0gICAgICAgIFNjcm9sbFNuYXBJblByb2dyZXNzICAgICAg
ICA9IDEgPDwgMSwKLSAgICAgICAgU2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCAgID0gMSA8PCAy
LAotICAgICAgICBDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyAgICAgPSAxIDw8IDMKLSAgICB9Owot
ICAgIHR5cGVkZWYgY29uc3Qgdm9pZCogU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWZlclRlc3RzRm9yUmVhc29uKFNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgRGVmZXJUZXN0VHJpZ2dlclJlYXNvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBE
ZWZlclRlc3RUcmlnZ2VyUmVhc29uKTsKLSAgICAKLSAgICB2b2lkIHRyaWdnZXJUZXN0VGltZXJG
aXJlZCgpOwotCi0gICAgdXNpbmcgU2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAgPSBXVEY6Okhhc2hN
YXA8U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBPcHRpb25TZXQ8RGVmZXJUZXN0VHJpZ2dlclJl
YXNvbj4+OwotCi1wcml2YXRlOgotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3Rlc3ROb3Rp
ZmljYXRpb25DYWxsYmFjazsKLSAgICBSdW5Mb29wOjpUaW1lcjxXaGVlbEV2ZW50VGVzdFRyaWdn
ZXI+IG1fdGVzdFRyaWdnZXJUaW1lcjsKLSAgICBtdXRhYmxlIExvY2sgbV90ZXN0VHJpZ2dlck11
dGV4OwotICAgIAotICAgIFNjcm9sbGFibGVBcmVhUmVhc29uTWFwIG1fZGVmZXJUZXN0VHJpZ2dl
clJlYXNvbnM7Ci19OwotCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKTsKLVdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBXaGVlbEV2
ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhUmVhc29uTWFwJik7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpp
bmRleCBjMGQ0YzI1MGVjMjI1Y2NkZDJmMTYyNDY3MzA5YTE1MzY0MTU1NDIxLi4zZjk4MWRkMTlj
OTg2YzhjZTgwY2YyOGE5ZGI0MWVhYjVmZjhiNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC02NCw3ICs2NCw3IEBACiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudERlbHRh
RmlsdGVyLmgiCi0jaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSAi
V2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgpAQCAtOTU2LDggKzk1Niw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpwbGF0Zm9y
bVByZXBhcmVGb3JXaGVlbEV2ZW50cyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsCiAg
ICAgfQogICAgIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICBpZiAoc2Ny
b2xsYWJsZUFyZWEgJiYgcGFnZSAmJiBwYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkp
Ci0gICAgICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcihwYWdlLT50ZXN0VHJpZ2dlcigpKTsKKyAgICBpZiAoc2Nyb2xsYWJsZUFyZWEg
JiYgcGFnZSAmJiBwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQorICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+c2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFn
ZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwogCiAgICAgU2Nyb2xsTGF0Y2hpbmdTdGF0ZSog
bGF0Y2hpbmdTdGF0ZSA9IHBhZ2UgPyBwYWdlLT5sYXRjaGluZ1N0YXRlKCkgOiBudWxscHRyOwog
ICAgIGlmICh3aGVlbEV2ZW50LnNob3VsZENvbnNpZGVyTGF0Y2hpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCA1MzFkM2RhMDAxYmE1MDhjNThiZjU3YjQ1ZGFmYTkwYmMyNzY2MzI0
Li41ZjBhOTc2M2U3M2UxNTBkZTA5ZmYwMGQ4MGM4YTQ2YjVjMDI0OTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcApAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSAi
V2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTM3LDE1ICsxMzcsMTUgQEAgdm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1l
VmlldyYgZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJh
bWVWaWV3LmZyYW1lKCkucGFnZSgpOwotICAgIGlmIChwYWdlICYmIHBhZ2UtPmV4cGVjdHNXaGVl
bEV2ZW50VHJpZ2dlcnMoKSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRl
c3RUcmlnZ2Vycywgc3RyZWFtIDw8ICIgICAgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3TGF5b3V0VXBkYXRlZDogRXhwZWN0cyB3aGVlbCBldmVudCB0ZXN0IHRyaWdnZXI6ICIg
PDwgcGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKTsKKyAgICBpZiAocGFnZSAmJiBw
YWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSB7CisgICAgICAgIExPR19XSVRIX1NUUkVB
TShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQ6IEV4cGVjdHMgd2hlZWwgZXZlbnQgdGVz
dCB0cmlnZ2VyOiAiIDw8IHBhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpOwogCiAgICAg
ICAgIGF1dG8qIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJh
bWVWaWV3LnNjcm9sbGluZ05vZGVJRCgpKTsKICAgICAgICAgaWYgKCFpczxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKLSAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldEV4
cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2Vy
cygpKTsKKyAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldElzTW9uaXRvcmluZ1doZWVsRXZl
bnRzKHBhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpOwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lVmlldyk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWaXN1YWxWaWV3cG9ydENoYW5nZWQoRnJhbWVW
aWV3JiBmcmFtZVYKICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0VmlzdWFsVmlld3BvcnRJc1Nt
YWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQodmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0
Vmlld3BvcnQoZnJhbWVWaWV3KSk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlRXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcldpdGhGcmFtZVZpZXcoY29uc3Qg
RnJhbWVWaWV3JiBmcmFtZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVw
ZGF0ZUlzTW9uaXRvcmluZ1doZWVsRXZlbnRzRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYg
ZnJhbWVWaWV3KQogewogICAgIGF1dG8qIHBhZ2UgPSBmcmFtZVZpZXcuZnJhbWUoKS5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlRXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcldpdGhGcmFtZVZp
ZXcoCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBub2RlLT5zZXRFeHBl
Y3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMo
KSk7CisgICAgbm9kZS0+c2V0SXNNb25pdG9yaW5nV2hlZWxFdmVudHMocGFnZS0+aXNNb25pdG9y
aW5nV2hlZWxFdmVudHMoKSk7CiB9CiAKIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3RXZlbnRUcmFja2luZ1JlZ2lvbnNDaGFuZ2VkKEZyYW1lVmlldyYgZnJhbWVWaWV3
KQpAQCAtMzUyLDEwICszNTIsMTAgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1
cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm8KICAgICAgICAg
cmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUoZnJhbWVWaWV3LCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0
Vmlld3BvcnRPcmlnaW4sIHNjcm9sbFR5cGUsIFZpZXdwb3J0UmVjdFN0YWJpbGl0eTo6U3RhYmxl
LCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICAgICBpZiAobV9wYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpIHsKLSAgICAg
ICAgICAgIGZyYW1lVmlldy5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cihtX3BhZ2UtPnRlc3RUcmlnZ2VyKCkpOwotICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHRy
aWdnZXIgPSBtX3BhZ2UtPnRlc3RUcmlnZ2VyKCkpCi0gICAgICAgICAgICAgICAgdHJpZ2dlci0+
cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRl
c3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05vZGVJRCksIFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CisgICAgICAg
IGlmIChtX3BhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpIHsKKyAgICAgICAgICAgIGZy
YW1lVmlldy5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihtX3BhZ2Ut
PndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKKyAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiBt
b25pdG9yID0gbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSkKKyAgICAgICAgICAgICAg
ICBtb25pdG9yLT5yZW1vdmVEZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVs
RXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihzY3JvbGxpbmdOb2Rl
SUQpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOwog
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCkBAIC0zNzMsMTAgKzM3MywxMCBAQCB2b2lkIEFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Nj
cm9sbChTY3JvbGxpbmdObwogICAgICAgICAgICAgbV9wYWdlLT5lZGl0b3JDbGllbnQoKS5vdmVy
Zmxvd1Njcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
ICAgIGlmIChtX3BhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkgewotICAgICAgICAg
ICAgZnJhbWVWaWV3LnNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKG1f
cGFnZS0+dGVzdFRyaWdnZXIoKSk7Ci0gICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dl
ciA9IG1fcGFnZS0+dGVzdFRyaWdnZXIoKSkKLSAgICAgICAgICAgICAgICB0cmlnZ2VyLT5yZW1v
dmVUZXN0RGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRy
aWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4oc2Nyb2xsaW5nTm9kZUlEKSwgV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKKyAgICAgICAgaWYg
KG1fcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkgeworICAgICAgICAgICAgZnJhbWVW
aWV3LnNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKG1fcGFnZS0+d2hl
ZWxFdmVudFRlc3RNb25pdG9yKCkpOworICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIG1vbml0
b3IgPSBtX3BhZ2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKQorICAgICAgICAgICAgICAgIG1v
bml0b3ItPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05vZGVJRCks
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTg1NCwyNyArODU0LDI3IEBAIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9k
ZUlEIHNjcm9sCiAgICAgfQogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmRl
ZmVyVGVzdHNGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmln
Z2VyUmVhc29uIHJlYXNvbikgY29uc3QKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25p
dG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpEZWZlclJlYXNvbiByZWFzb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5leHBlY3RzV2hlZWxFdmVudFRy
aWdnZXJzKCkpCisgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxF
dmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnN0IGF1dG8mIHRyaWdnZXIg
PSBtX3BhZ2UtPnRlc3RUcmlnZ2VyKCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcnMsIHN0cmVhbSA8PCAiICAgICghKSBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpkZWZlclRlc3RzRm9yUmVhc29uOiBEZWZlcnJpbmcgIiA8PCBpZGVudGlmaWVyIDw8
ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNvbik7Ci0gICAgICAgIHRyaWdnZXItPmRlZmVyVGVzdHNG
b3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKKyAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dl
ciA9IG1fcGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpIHsKKyAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgICAgKCEpIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmRlZmVyRm9yUmVhc29uOiBEZWZlcnJpbmcgIiA8PCBpZGVudGlm
aWVyIDw8ICIgZm9yIHJlYXNvbiAiIDw8IHJlYXNvbik7CisgICAgICAgIHRyaWdnZXItPmRlZmVy
Rm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiAgICAgfQogfQogCi12b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50
VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2
ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKSBjb25zdAordm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRp
b25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVh
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29u
IHJlYXNvbikgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICgh
bV9wYWdlIHx8ICFtX3BhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKKyAgICBpZiAo
IW1fcGFnZSB8fCAhbV9wYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dlciA9IG1fcGFnZS0+dGVzdFRyaWdn
ZXIoKSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RUcmlnZ2Vycywg
c3RyZWFtIDw8ICIgICAgKCEpIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlbW92ZVRlc3RE
ZWZlcnJhbEZvclJlYXNvbjogRGVmZXJyaW5nICIgPDwgaWRlbnRpZmllciA8PCAiIGZvciByZWFz
b24gIiA8PCByZWFzb24pOwotICAgICAgICB0cmlnZ2VyLT5yZW1vdmVUZXN0RGVmZXJyYWxGb3JS
ZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKKyAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dlciA9
IG1fcGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RS
RUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgICAgKCEpIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9y
UmVhc29uOiBEZWZlcnJpbmcgIiA8PCBpZGVudGlmaWVyIDw8ICIgZm9yIHJlYXNvbiAiIDw8IHJl
YXNvbik7CisgICAgICAgIHRyaWdnZXItPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKGlkZW50aWZp
ZXIsIHJlYXNvbik7CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggMjg3
NzEyM2MyMWUwZTg1ZDIxOTEwYTc1OTNjMDNjMTNlMjg4N2Q4OC4uOWJlNjlhYWZiMWUyODVmOGE1
NTM5Mjg5NWNkZTYzNGJjYzE2ZjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNTUsMTUgKzU1
LDE1IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25l
ZCBob3Jpem9udGFsSW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5kZXgpOwotICAgIHZvaWQgZGVm
ZXJUZXN0c0ZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKSBj
b25zdDsKLSAgICB2b2lkIHJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
OjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKSBjb25zdDsKKyAgICB2b2lkIGRlZmVyV2hlZWxFdmVu
dFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJs
ZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25z
dDsKKyAgICB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVh
c29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVNjcm9s
bFNuYXBQcm9wZXJ0aWVzV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSBvdmVycmlkZTsK
ICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFeHBlY3RzV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUlzTW9uaXRvcmluZ1doZWVsRXZlbnRzRm9yRnJh
bWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXBvcnRFeHBv
c2VkVW5maWxsZWRBcmVhKE1vbm90b25pY1RpbWUsIHVuc2lnbmVkIHVuZmlsbGVkQXJlYSk7CiAg
ICAgdm9pZCByZXBvcnRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNDaGFuZ2VkKE1vbm90b25p
Y1RpbWUsIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA0YThjZjhj
OGQyYmM1NzAxOTE5N2Y4YTFlYjM1MmY2NjhkNjliYjExLi4wOTVhOTI5NmQyYjI1MWU3YTQzODUx
YjEzNmY0MTFhMTZjNGUwYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0Owog
CiAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgYWJzb2x1dGVFdmVudFRyYWNraW5nUmVnaW9ucygp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmln
Z2VyV2l0aEZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlSXNNb25pdG9yaW5nV2hlZWxFdmVudHNGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3
JikgeyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQ
YWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCAyZDk5YWM1ZWFhMWVjZGVmYWE4
Y2FlYmE2ODYxNTMzMmE0YWQ5MWVkLi43MTdiZmMyYTU1Y2MxOGNiMzhjZGI0NGVkYjBlZjU0MzU4
N2YyYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoY29u
c3QgU2Nyb2xsaW5nU3RhdGVTY3IKICNlbmRpZgogICAgICwgbV9zY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMoc3RhdGVOb2RlLnNjcm9sbGFibGVBcmVhUGFyYW1ldGVycygpKQogICAgICwgbV9yZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoc3RhdGVOb2Rl
LnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKQot
ICAgICwgbV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKHN0YXRlTm9kZS5leHBlY3RzV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyKCkpCisgICAgLCBtX2lzTW9uaXRvcmluZ1doZWVsRXZlbnRzKHN0
YXRlTm9kZS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogewogICAgIGlmIChoYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICBzZXRTY3JvbGxDb250YWlu
ZXJMYXllcihzdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9u
KGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFByb3BlcnR5Q2hh
bmdlZEJpdHNBZnRlclJlYXR0YWNoKCkKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoQ3VycmVu
dEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChD
dXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpOwogI2VuZGlmCi0gICAgc2V0UHJvcGVydHlD
aGFuZ2VkQml0KEV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOworICAgIHNldFByb3BlcnR5
Q2hhbmdlZEJpdChJc01vbml0b3JpbmdXaGVlbEV2ZW50cyk7CiAgICAgc2V0UHJvcGVydHlDaGFu
Z2VkQml0KFNjcm9sbENvbnRhaW5lckxheWVyKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQo
U2Nyb2xsZWRDb250ZW50c0xheWVyKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoSG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyKTsKQEAgLTIyNiwxMyArMjI2LDEzIEBAIHZvaWQgU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9h
dFBvaW50JiByCiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEV4cGVjdHNXaGVl
bEV2ZW50VGVzdFRyaWdnZXIoYm9vbCBleHBlY3RzVGVzdFRyaWdnZXIpCit2b2lkIFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SXNNb25pdG9yaW5nV2hlZWxFdmVudHMoYm9vbCBpc01v
bml0b3JpbmdXaGVlbEV2ZW50cykKIHsKLSAgICBpZiAoZXhwZWN0c1Rlc3RUcmlnZ2VyID09IG1f
ZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikKKyAgICBpZiAoaXNNb25pdG9yaW5nV2hlZWxF
dmVudHMgPT0gbV9pc01vbml0b3JpbmdXaGVlbEV2ZW50cykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyID0gZXhwZWN0c1Rlc3RUcmlnZ2VyOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKTsKKyAg
ICBtX2lzTW9uaXRvcmluZ1doZWVsRXZlbnRzID0gaXNNb25pdG9yaW5nV2hlZWxFdmVudHM7Cisg
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKElzTW9uaXRvcmluZ1doZWVsRXZlbnRzKTsKIH0KIAogdm9p
ZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbENvbnRhaW5lckxheWVyKGNv
bnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCkBAIC0zMzYsOCAr
MzM2LDggQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVQKIAogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
c2Nyb2xsYWJsZSBhcmVhIHBhcmFtZXRlcnMiLCBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyk7
CiAKLSAgICBpZiAobV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKQotICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImV4cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyIiwgbV9leHBlY3Rz
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKTsKKyAgICBpZiAobV9pc01vbml0b3JpbmdXaGVlbEV2ZW50
cykKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJleHBlY3RzIHdoZWVsIGV2ZW50IHRlc3QgdHJp
Z2dlciIsIG1faXNNb25pdG9yaW5nV2hlZWxFdmVudHMpOwogCiAgICAgaWYgKGJlaGF2aW9yICYg
U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJJRHMpIHsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIubGF5ZXJJRCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUuaAppbmRleCAzYzJkZTFkZTgxMDQ0YzcxNmU1NmI3MjU1MWM1NWNiNDI1MzkzM2MxLi40OTY3
YTZjZTgxMmYyYmEzYjJmYmYwZDkxMmEwMzU3MTc4ZThmMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIEN1cnJlbnRIb3Jpem9udGFs
U25hcE9mZnNldEluZGV4LAogICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgs
CiAjZW5kaWYKLSAgICAgICAgRXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciwKKyAgICAgICAg
SXNNb25pdG9yaW5nV2hlZWxFdmVudHMsCiAgICAgICAgIFNjcm9sbENvbnRhaW5lckxheWVyLAog
ICAgICAgICBTY3JvbGxlZENvbnRlbnRzTGF5ZXIsCiAgICAgICAgIEhvcml6b250YWxTY3JvbGxi
YXJMYXllciwKQEAgLTExMyw4ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXF1ZXN0ZWRT
Y3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbDsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYsIGJvb2wgcmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCk7CiAKLSAg
ICBib29sIGV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2V4
cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIoYm9vbCk7CisgICAgYm9vbCBpc01vbml0b3Jp
bmdXaGVlbEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faXNNb25pdG9yaW5nV2hlZWxFdmVudHM7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzTW9uaXRvcmluZ1doZWVsRXZlbnRzKGJv
b2wpOwogCiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgc2Nyb2xsQ29udGFpbmVyTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvbnRhaW5lckxheWVyOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxDb250YWluZXJMYXllcihjb25zdCBMYXllclJlcHJlc2Vu
dGF0aW9uJik7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CiAKICAgICBib29sIG1fcmVx
dWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzTW9uaXRvcmluZ1doZWVsRXZlbnRzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaAppbmRleCBjZWExMzFmMmJkYjk1YjA2NWRjYmNiNmMyNTA2YzA0NzlkYTA5ZjFm
Li5hMTkyYTJhNDIwMDJmZjFlYjdhOWI2M2JhNDcwYTExZDA1NTYxMTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKLSNpbmNsdWRlICJXaGVlbEV2ZW50VGVz
dFRyaWdnZXIuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0xMDYsOCArMTA2LDkgQEAgcHVibGljOgogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZVNjcm9s
bFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgLypob3Jpem9udGFsSW5kZXgq
LywgdW5zaWduZWQgLyp2ZXJ0aWNhbEluZGV4Ki8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWZl
clRlc3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIHsg
fQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJp
Z2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVm
ZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJS
ZWFzb24pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRp
b25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVh
SWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgeyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IGQw
MzVkYWRlZDcxNmFhZWExZGRlYTg1ODhiOTU5ZTkwMzVmYTlhYzkuLmQ2NDdiOTI2MGJiNDZkZWJh
MDdjYzg0ODE0ODk5YzNjODk1MDJiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTk3
LDggKzk3LDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVC
ZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU4KICAgICBpZiAoc3RhdGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQ
YXJhbXMpKQogICAgICAgICBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyA9IHN0YXRlLnNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycygpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdn
ZXIpKQotICAgICAgICBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgPSBzdGF0ZS5leHBl
Y3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OklzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KSkKKyAgICAgICAgbV9pc01vbml0b3JpbmdXaGVlbEV2ZW50cyA9IHN0YXRlLmlzTW9uaXRvcmlu
Z1doZWVsRXZlbnRzKCk7CiAKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICBt
X3Njcm9sbENvbnRhaW5lckxheWVyID0gc3RhdGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oCmluZGV4IDE2ZjhiNmU5ZTMwMWI5MDkxNzI1NWY2ZjZmZWIxZWJmM2Iy
YTY3YzguLmFlODZmMzNkODUwMjk1ZWU5ZmM3OTUwM2I2ZjQzN2MyZjgyMGE2OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhh
c0VuYWJsZWRIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnMuaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXI7IH0KICAgICBib29s
IGhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzLmhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhcjsgfQogCi0gICAgYm9v
bCBleHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3Rz
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOyB9CisgICAgYm9vbCBpc01vbml0b3JpbmdXaGVlbEV2ZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1faXNNb25pdG9yaW5nV2hlZWxFdmVudHM7IH0KIAogICAgIExh
eW91dFBvaW50IHBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgTGF5b3V0UG9pbnQgbG9jYWxUb0NvbnRlbnRzUG9pbnQoTGF5b3V0UG9pbnQpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9j
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgogICAgIFNjcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVyczsKLSAgICBib29sIG1f
ZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzTW9u
aXRvcmluZ1doZWVsRXZlbnRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNGaXJzdENvbW1pdCB7
IHRydWUgfTsKIAogICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9zY3JvbGxDb250YWluZXJMYXll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNj
cm9sbGluZ1RyZWUuY3BwCmluZGV4IDlmYWMzYzQ4ZTU5ZThiZjZlMjM4ODE2YmZiNWZlZjI4OWUy
MjhmYzIuLjE5YTY4MWZmZGVlYWJlNWRmNzA0MGQ5YTNmMTgyMGUwODEzOWE4MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmNwcApAQCAtMTkxLDIzICsxOTEsMjMgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHUKICAg
ICB9KTsKIH0KIAotdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmRlZmVyVGVzdHNGb3JSZWFz
b24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNv
bikKK3ZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNv
bikKIHsKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBt
X3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKLSAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPmRlZmVyVGVzdHNGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29u
KTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlZmVyV2hlZWxFdmVudFRlc3RDb21w
bGV0aW9uRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiAgICAgfSk7CiB9CiAKLXZvaWQg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNvbikKK3ZvaWQg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpyZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZl
cnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNv
bikKIHsKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7Ci0gICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oaWRlbnRp
ZmllciwgcmVhc29uKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJlbW92ZVdoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5kZXggZTMyYWM1YWIxYmM4M2MxOTBhNDEwMTA0MWY5
MzFiMDFkNjI4MzY5Zi4uZDFkYjc5MGI2OTA5N2M3MzMxZTdmMzY5ZTVmZDFjNDA5OTVmMDdiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmgKQEAgLTY1LDggKzY1LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKE1B
QykKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxp
bmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWxJbmRleCwgdW5zaWduZWQgdmVydGljYWxJbmRl
eCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWZlclRlc3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlVGVzdERl
ZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIG92
ZXJyaWRlOworCisgICAgdm9pZCBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNv
bihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVX
aGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpE
ZWZlclJlYXNvbikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggOTdkNDYy
YmFiNzQ3NGEwMzViOWFiZmM5ZmZhYTBlNjMxZGMxOGQxOS4uNjI4MTNhNjFhZmVjMTI2ZjMwNmI4
ODcxYjUyOWQ2MmJkZDg5ZDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0
ZUZyb21TdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJik7CiAgICAg
dm9pZCB1cGRhdGVTY3JvbGxiYXJQYWludGVycygpOwogCi0gICAgdm9pZCBkZWZlclRlc3RzRm9y
UmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBX
aGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVmZXJX
aGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpT
Y3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFz
b24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0
aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJl
YUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNBbHJlYWR5UGlubmVkSW5EaXJlY3Rpb25P
Zkdlc3R1cmUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsRXZlbnRBeGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggNmZi
ZGYzMTUzMGQ4YjI0Mjc2MTc5YmZlZjQwOTVmYzQ1NzA3ZjYyZC4uNzAyMTk0ZmE2YzEzMjhhNTQy
OThmZGU2N2ExNmZhN2UwZjViYTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTkwLDExICs5MCwxMSBAQCBib29sIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbAogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShS
VUJCRVJfQkFORElORykKLSAgICBpZiAoc2Nyb2xsaW5nTm9kZSgpLmV4cGVjdHNXaGVlbEV2ZW50
VGVzdFRyaWdnZXIoKSkgeworICAgIGlmIChzY3JvbGxpbmdOb2RlKCkuaXNNb25pdG9yaW5nV2hl
ZWxFdmVudHMoKSkgewogICAgICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnNob3VsZEhhbmRsZVdo
ZWVsRXZlbnRTeW5jaHJvbm91c2x5KHdoZWVsRXZlbnQpKQotICAgICAgICAgICAgcmVtb3ZlVGVz
dERlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2Vy
OjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05vZGUoKS5zY3JvbGxpbmdOb2Rl
SUQoKSksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7
CisgICAgICAgICAgICByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJl
YXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFy
ZWFJZGVudGlmaWVyPihzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBkZWZlclRlc3RzRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05vZGUo
KS5zY3JvbGxpbmdOb2RlSUQoKSksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhy
ZWFkU3luY05lZWRlZCk7CisgICAgICAgICAgICBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlv
bkZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyPihzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsaW5nTm9kZUlEKCkpLCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0zMDcsMjIgKzMwNywyMiBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dmlld3BvcnRTaXplKCkgY29uc3QKIH0KICNlbmRpZgog
Ci12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyVGVzdHNG
b3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIg
aWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29u
IHJlYXNvbikgY29uc3QKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6ZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpEZWZlclJlYXNvbiByZWFzb24pIGNvbnN0CiB7Ci0gICAgaWYgKCFzY3JvbGxp
bmdOb2RlKCkuZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigpKQorICAgIGlmICghc2Nyb2xs
aW5nTm9kZSgpLmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCBzdHJlYW0gPDwgaXNN
YWluVGhyZWFkKCkgPDwgIiAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
ZGVmZXJUZXN0c0ZvclJlYXNvbjogU1RBUlRJTkcgZGVmZXJyYWwgZm9yICIgPDwgaWRlbnRpZmll
ciA8PCAiIGJlY2F1c2Ugb2YgIiA8PCByZWFzb24pOwotICAgIHNjcm9sbGluZ1RyZWUoKS5kZWZl
clRlc3RzRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CisgICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8IGlzTWFpblRocmVhZCgpIDw8ICIgIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyRm9yUmVhc29uOiBTVEFS
VElORyBkZWZlcnJhbCBmb3IgIiA8PCBpZGVudGlmaWVyIDw8ICIgYmVjYXVzZSBvZiAiIDw8IHJl
YXNvbik7CisgICAgc2Nyb2xsaW5nVHJlZSgpLmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9u
Rm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiB9CiAgICAgCi12b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihX
aGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24gcmVhc29uKSBj
b25zdAordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpyZW1vdmVX
aGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dE1vbml0b3I6OkRlZmVyUmVhc29uIHJlYXNvbikgY29uc3QKIHsKLSAgICBpZiAoIXNjcm9sbGlu
Z05vZGUoKS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkpCisgICAgaWYgKCFzY3JvbGxp
bmdOb2RlKCkuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCBzdHJlYW0gPDwg
aXNNYWluVGhyZWFkKCkgPDwgIiAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yzo6ZGVmZXJUZXN0c0ZvclJlYXNvbjogRU5ESU5HIGRlZmVycmFsIGZvciAiIDw8IGlkZW50aWZp
ZXIgPDwgIiBiZWNhdXNlIG9mICIgPDwgcmVhc29uKTsKLSAgICBzY3JvbGxpbmdUcmVlKCkucmVt
b3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CisgICAgTE9HX1dJ
VEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8IGlzTWFpblRocmVhZCgp
IDw8ICIgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRlZmVyRm9yUmVh
c29uOiBFTkRJTkcgZGVmZXJyYWwgZm9yICIgPDwgaWRlbnRpZmllciA8PCAiIGJlY2F1c2Ugb2Yg
IiA8PCByZWFzb24pOworICAgIHNjcm9sbGluZ1RyZWUoKS5yZW1vdmVXaGVlbEV2ZW50VGVzdENv
bXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOwogfQogCiB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVwZGF0ZVNjcm9sbGJhclBh
aW50ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAxZWY3MjU2OWY4NmVlN2Nj
OGYyZTFkMzU0NzZiMWRiMGM5ZmZlNDAwLi45ZDM5MTIzZDNjODhkY2JhYjIxYTc0MjE0MWUyYWQ5
ZmEwZTJlY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMDksNyArMTA5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oV2ViR1BVKSBcCiAgICAgTShXZWJSVEMpIFwK
ICAgICBNKFdlYlJUQ1N0YXRzKSBcCi0gICAgTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzKSBcCisg
ICAgTShXaGVlbEV2ZW50VGVzdE1vbml0b3IpIFwKIAogI3VuZGVmIERFQ0xBUkVfTE9HX0NIQU5O
RUwKICNkZWZpbmUgREVDTEFSRV9MT0dfQ0hBTk5FTChuYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZjhlZGM4ODJkN2YzNjAwMmUxOTg1MTBk
ODFiOGViMzRhYTUwMDdjOC4uYTYxMTg2ODM3ZGE4NmZkZmVjM2Q4MWNjYzE4YWU0NTE1MzdjNTYy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMjI4
LDIwICsyMjgsMjAgQEAgRmxvYXRTaXplIFNjcm9sbEFuaW1hdG9yOjp2aWV3cG9ydFNpemUoKSBj
b25zdAogI2VuZGlmCiAKICNpZiAoRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKSkgJiYgUExBVEZPUk0oTUFDKQotdm9pZCBTY3JvbGxBbmltYXRvcjo6ZGVm
ZXJUZXN0c0ZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdn
ZXJSZWFzb24gcmVhc29uKSBjb25zdAordm9pZCBTY3JvbGxBbmltYXRvcjo6ZGVmZXJXaGVlbEV2
ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxh
YmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZl
clJlYXNvbiByZWFzb24pIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3doZWVsRXZlbnRUZXN0VHJpZ2dl
cikKKyAgICBpZiAoIW1fd2hlZWxFdmVudFRlc3RNb25pdG9yKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3doZWVsRXZlbnRUZXN0VHJpZ2dlci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihpZGVudGlm
aWVyLCByZWFzb24pOworICAgIG1fd2hlZWxFdmVudFRlc3RNb25pdG9yLT5kZWZlckZvclJlYXNv
bihpZGVudGlmaWVyLCByZWFzb24pOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yOjpyZW1vdmVU
ZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RU
cmlnZ2VyUmVhc29uIHJlYXNvbikgY29uc3QKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdo
ZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdAogewotICAgIGlmICghbV93aGVlbEV2
ZW50VGVzdFRyaWdnZXIpCisgICAgaWYgKCFtX3doZWVsRXZlbnRUZXN0TW9uaXRvcikKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyLT5yZW1vdmVUZXN0
RGVmZXJyYWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKKyAgICBtX3doZWVsRXZlbnRU
ZXN0TW9uaXRvci0+cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAppbmRl
eCA2ZTJhODg0YWJiMmY3MTMwMWVjOWQ1ZjdlOTY1NmYzZDdjOTE5ZjZiLi5hNWM2OWM1M2I3ZTkw
ZGJjZTY4NDY3ZWMyNjE3ZjA0ZjE5N2U0M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMu
aCIKLSNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKKyNpbmNsdWRlICJXaGVlbEV2
ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgU2Ny
b2xsYmFyOwotY2xhc3MgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOworY2xhc3MgV2hlZWxFdmVudFRl
c3RNb25pdG9yOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJF
Ul9CQU5ESU5HKQogY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2YXRlIFNjcm9sbENvbnRyb2xs
ZXJDbGllbnQgewpAQCAtMTIxLDEwICsxMjEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICB2b2lkIHNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihSZWZQdHI8V2hlZWxFdmVu
dFRlc3RUcmlnZ2VyPiYmIHRlc3RUcmlnZ2VyKSB7IG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyID0g
dGVzdFRyaWdnZXI7IH0KKyAgICB2b2lkIHNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8
V2hlZWxFdmVudFRlc3RNb25pdG9yPiYmIHRlc3RNb25pdG9yKSB7IG1fd2hlZWxFdmVudFRlc3RN
b25pdG9yID0gdGVzdE1vbml0b3I7IH0KKwogI2lmIChFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8
fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpKSAmJiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBkZWZl
clRlc3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RN
b25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
RGVmZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRl
c3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3Jv
bGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24p
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKQEAgLTE0NSw3ICsxNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsKIAogICAgIFNjcm9sbGFibGVBcmVhJiBtX3Njcm9s
bGFibGVBcmVhOwotICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdFRyaWdnZXI+IG1fd2hlZWxFdmVu
dFRlc3RUcmlnZ2VyOworICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hlZWxF
dmVudFRlc3RNb25pdG9yOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShS
VUJCRVJfQkFORElORykKICAgICBTY3JvbGxDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5oCmluZGV4IGZlMzVmZmE3YTNkZjViMGVmNDkxOGVhNDAxM2M5ZWJlOGMxYjI0YmIuLmZk
OGZlNGUzMTRmN2ZiNzA4NjMzOTdjZjFmOTRlMWMzMjc3ZGZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsVHlwZXMuaCIKLSNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIK
KyNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC00NSw3ICs0NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExheW91dFNpemU7CiBjbGFzcyBQbGF0Zm9ybVdoZWVs
RXZlbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKLWNsYXNzIFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cjsKK2NsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAogY2xhc3MgU2Nyb2xsQ29udHJvbGxl
ckNsaWVudCB7CiBwcm90ZWN0ZWQ6CkBAIC03OSw4ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkgPSAwOwog
I2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmZXJUZXN0c0ZvclJlYXNvbihXaGVlbEV2ZW50
VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKSBjb25zdCB7IC8qIERvIG5vdGhpbmcgKi8gfQot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRl
c3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgY29uc3QgeyAvKiBEbyBub3RoaW5nICovIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IHsgLyogRG8gbm90aGluZyAqLyB9CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVh
c29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdCB7IC8qIERvIG5vdGhpbmcgKi8g
fQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQg
c2Nyb2xsT2Zmc2V0KCkgY29uc3QgPSAwOwpAQCAtMTY2LDkgKzE2NiwxMCBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBzaG91bGRPdmVycmlkZUluZXJ0aWFsU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAg
dm9pZCBzdGF0ZWxlc3NTbmFwVHJhbnNpdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHN0YXJ0
RGVmZXJyaW5nVGVzdHNEdWVUb1Njcm9sbFNuYXBwaW5nKCk7Ci0gICAgdm9pZCBzdG9wRGVmZXJy
aW5nVGVzdHNEdWVUb1Njcm9sbFNuYXBwaW5nKCk7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRlbGVz
c1Njcm9sbFNuYXAoKTsKKworICAgIHZvaWQgc3RhcnREZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENv
bXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7CisgICAgdm9pZCBzdG9wRGVmZXJyaW5nV2hl
ZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpOwogI2VuZGlmCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xs
ZXIubW0KaW5kZXggOGZlMzhhZDBjY2UyZmQ1NDJkMjk3MDE3ZmRhMmQxY2IzNTViNzcyNi4uMzU2
MGJhYmYyOWFjNzAyMjgwYWU3MWJlYjQ0ZTM2OTk1NTgzNDJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0yOCw3ICsyOCw3
IEBACiAKICNpbXBvcnQgIkxheW91dFNpemUuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgotI2ltcG9ydCAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW1wb3J0ICJXaGVlbEV2
ZW50VGVzdE1vbml0b3IuaCIKICNpbXBvcnQgPHN5cy9zeXNjdGwuaD4KICNpbXBvcnQgPHN5cy90
aW1lLmg+CiAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0
U25hcFJ1YmJlcmJhbmRUaW1lcigpCiAgICAgbV9jbGllbnQuc3RhcnRTbmFwUnViYmVyYmFuZFRp
bWVyKCk7CiAgICAgbV9zbmFwUnViYmVyYmFuZFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIDYw
Lik7CiAKLSAgICBtX2NsaWVudC5kZWZlclRlc3RzRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBX
aGVlbEV2ZW50VGVzdFRyaWdnZXI6OlJ1YmJlcmJhbmRJblByb2dyZXNzKTsKKyAgICBtX2NsaWVu
dC5kZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihyZWludGVycHJldF9jYXN0
PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpSdWJiZXJiYW5kSW5Qcm9ncmVzcyk7CiB9CiAKIHZvaWQg
U2Nyb2xsQ29udHJvbGxlcjo6c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIoKQpAQCAtMzk5LDcgKzM5
OSw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RvcFNuYXBSdWJiZXJiYW5kVGltZXIoKQog
ICAgIG1fc25hcFJ1YmJlcmJhbmRUaW1lci5zdG9wKCk7CiAgICAgbV9zbmFwUnViYmVyYmFuZFRp
bWVySXNBY3RpdmUgPSBmYWxzZTsKICAgICAKLSAgICBtX2NsaWVudC5yZW1vdmVUZXN0RGVmZXJy
YWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6UnViYmVy
YmFuZEluUHJvZ3Jlc3MpOworICAgIG1fY2xpZW50LnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkRlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25p
dG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzKTsKIH0KIAogdm9pZCBTY3JvbGxDb250cm9sbGVyOjpz
bmFwUnViYmVyQmFuZCgpCkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVy
OjpzY2hlZHVsZVN0YXRlbGVzc1Njcm9sbFNuYXAoKQogCiAgICAgc3RhdGljIGNvbnN0IFNlY29u
ZHMgc3RhdGVsZXNzU2Nyb2xsU25hcERlbGF5ID0gNzUwX21zOwogICAgIG1fc3RhdGVsZXNzU25h
cFRyYW5zaXRpb25UaW1lci5zdGFydE9uZVNob3Qoc3RhdGVsZXNzU2Nyb2xsU25hcERlbGF5KTsK
LSAgICBzdGFydERlZmVycmluZ1Rlc3RzRHVlVG9TY3JvbGxTbmFwcGluZygpOworICAgIHN0YXJ0
RGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpOwog
fQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXRlbGVzc1NuYXBUcmFuc2l0aW9uVGltZXJG
aXJlZCgpCkBAIC01MDUsMTQgKzUwNSwxNCBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXRl
bGVzc1NuYXBUcmFuc2l0aW9uVGltZXJGaXJlZCgpCiAgICAgc3RhcnRTY3JvbGxTbmFwVGltZXIo
KTsKIH0KIAotdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzdGFydERlZmVycmluZ1Rlc3RzRHVlVG9T
Y3JvbGxTbmFwcGluZygpCit2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0RGVmZXJyaW5nV2hl
ZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpCiB7Ci0gICAgbV9jbGll
bnQuZGVmZXJUZXN0c0ZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJp
Z2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjpTY3JvbGxTbmFwSW5Qcm9ncmVzcyk7CisgICAgbV9jbGllbnQuZGVmZXJXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25Gb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6U2Nyb2xsU25hcEluUHJvZ3Jlc3MpOwogfQogCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnN0b3BEZWZlcnJpbmdUZXN0c0R1ZVRvU2Nyb2xsU25hcHBpbmcoKQordm9pZCBTY3JvbGxDb250
cm9sbGVyOjpzdG9wRGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxT
bmFwcGluZygpCiB7Ci0gICAgbV9jbGllbnQucmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKHJl
aW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50
aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbFNuYXBJblByb2dyZXNz
KTsKKyAgICBtX2NsaWVudC5yZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZv
clJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJs
ZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxTbmFw
SW5Qcm9ncmVzcyk7CiB9CiAKIGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKQEAg
LTU2Miw3ICs1NjIsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25hcFRp
bWVyKCkKICAgICBpZiAobV9zY3JvbGxTbmFwVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RhcnREZWZlcnJpbmdUZXN0c0R1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKKyAg
ICBzdGFydERlZmVycmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBp
bmcoKTsKICAgICBtX2NsaWVudC5zdGFydFNjcm9sbFNuYXBUaW1lcigpOwogICAgIG1fc2Nyb2xs
U25hcFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIDYwLik7CiB9CkBAIC01NzIsNyArNTcyLDcg
QEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjpzdG9wU2Nyb2xsU25hcFRpbWVyKCkKICAgICBpZiAo
IW1fc2Nyb2xsU25hcFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0
b3BEZWZlcnJpbmdUZXN0c0R1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKKyAgICBzdG9wRGVmZXJyaW5n
V2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpOwogICAgIG1fY2xp
ZW50LnN0b3BTY3JvbGxTbmFwVGltZXIoKTsKICAgICBtX3Njcm9sbFNuYXBUaW1lci5zdG9wKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0KaW5kZXggZjE3ODI4NmM1NjllOTM4YjZiNDUyNjVlYjM5Mjc3YTQzZTM3NjRkZC4uZDEyMzRm
MWU2ZGQ4MGVkNGIzZGFkYTY5YzhmYTFjMGQyNmJmYzlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtOTgyLDggKzk4Miw4IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmRpZEJlZ2luU2Nyb2xsR2VzdHVyZSgpIGNvbnN0CiAg
ICAgW21fc2Nyb2xsZXJJbXBQYWlyIGJlZ2luU2Nyb2xsR2VzdHVyZV07CiAKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAgaWYgKG1fd2hl
ZWxFdmVudFRlc3RUcmlnZ2VyKQotICAgICAgICBtX3doZWVsRXZlbnRUZXN0VHJpZ2dlci0+ZGVm
ZXJUZXN0c0ZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpD
b250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CisgICAgaWYgKG1fd2hlZWxFdmVudFRlc3RNb25pdG9y
KQorICAgICAgICBtX3doZWVsRXZlbnRUZXN0TW9uaXRvci0+ZGVmZXJGb3JSZWFzb24ocmVpbnRl
cnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmll
cj4odGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Q29udGVudFNjcm9sbEluUHJvZ3Jlc3Mp
OwogI2VuZGlmCiB9CiAKQEAgLTk5NSw4ICs5OTUsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFj
OjpkaWRFbmRTY3JvbGxHZXN0dXJlKCkgY29uc3QKICAgICBbbV9zY3JvbGxlckltcFBhaXIgZW5k
U2Nyb2xsR2VzdHVyZV07CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUo
UlVCQkVSX0JBTkRJTkcpCi0gICAgaWYgKG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyKQotICAgICAg
ICBtX3doZWVsRXZlbnRUZXN0VHJpZ2dlci0+cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKHJl
aW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50
aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkNvbnRlbnRTY3JvbGxJblByb2dy
ZXNzKTsKKyAgICBpZiAobV93aGVlbEV2ZW50VGVzdE1vbml0b3IpCisgICAgICAgIG1fd2hlZWxF
dmVudFRlc3RNb25pdG9yLT5yZW1vdmVEZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9jYXN0
PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwg
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CiAjZW5kaWYK
IH0KIApAQCAtMTQ1NSw4ICsxNDU1LDggQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2VuZENv
bnRlbnRBcmVhU2Nyb2xsZWRTb29uKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAgaWYgKCFt
X3NlbmRDb250ZW50QXJlYVNjcm9sbGVkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zZW5k
Q29udGVudEFyZWFTY3JvbGxlZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogCi0gICAgaWYgKG1f
d2hlZWxFdmVudFRlc3RUcmlnZ2VyKQotICAgICAgICBtX3doZWVsRXZlbnRUZXN0VHJpZ2dlci0+
ZGVmZXJUZXN0c0ZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
OjpDb250ZW50U2Nyb2xsSW5Qcm9ncmVzcyk7CisgICAgaWYgKG1fd2hlZWxFdmVudFRlc3RNb25p
dG9yKQorICAgICAgICBtX3doZWVsRXZlbnRUZXN0TW9uaXRvci0+ZGVmZXJGb3JSZWFzb24ocmVp
bnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
Zmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Q29udGVudFNjcm9sbEluUHJvZ3Jl
c3MpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzZW5kQ29udGVudEFyZWFTY3JvbGxl
ZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQpAQCAtMTQ2OSw4ICsxNDY5LDggQEAgdm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6c2VuZENvbnRlbnRBcmVhU2Nyb2xsZWRUaW1lckZpcmVkKCkKICAgICBz
ZW5kQ29udGVudEFyZWFTY3JvbGxlZChtX2NvbnRlbnRBcmVhU2Nyb2xsZWRUaW1lclNjcm9sbERl
bHRhKTsKICAgICBtX2NvbnRlbnRBcmVhU2Nyb2xsZWRUaW1lclNjcm9sbERlbHRhID0gRmxvYXRT
aXplKCk7CiAKLSAgICBpZiAobV93aGVlbEV2ZW50VGVzdFRyaWdnZXIpCi0gICAgICAgIG1fd2hl
ZWxFdmVudFRlc3RUcmlnZ2VyLT5yZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnBy
ZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4o
dGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6Q29udGVudFNjcm9sbEluUHJvZ3Jlc3MpOwor
ICAgIGlmIChtX3doZWVsRXZlbnRUZXN0TW9uaXRvcikKKyAgICAgICAgbV93aGVlbEV2ZW50VGVz
dE1vbml0b3ItPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxF
dmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OkNvbnRlbnRTY3JvbGxJblByb2dyZXNzKTsKIH0KIAogdm9pZCBTY3Jv
bGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3Qm
IHNjcm9sbGVyVGh1bWIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IDk2NzdkYWU5Y2ZlMjhiMWRjMzkwNWMzYTgyYjA2ZWM2ZWNkY2RjNDAuLmE1YTQ1M2VhYzNhYzU5
ZDdhZDYwNGM3MzA4N2Y1NTVlNTM4YTVlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC01NjcsMTkgKzU2NywxOSBAQCBpbnQgUmVuZGVyQm94OjpzY3JvbGxUb3Ao
KSBjb25zdAogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllcigpID8gbGF5ZXIo
KS0+c2Nyb2xsUG9zaXRpb24oKS55KCkgOiAwOwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcihSZW5kZXJMYXllciYgbGF5ZXIpCitzdGF0aWMgdm9pZCBzZXR1cFdo
ZWVsRXZlbnRNb25pdG9yKFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBQYWdlJiBwYWdlID0g
bGF5ZXIucmVuZGVyZXIoKS5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlLmV4cGVjdHNXaGVlbEV2ZW50
VHJpZ2dlcnMoKSkKKyAgICBpZiAoIXBhZ2UuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGxheWVyLnNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRl
c3RUcmlnZ2VyKHBhZ2UudGVzdFRyaWdnZXIoKSk7CisgICAgbGF5ZXIuc2Nyb2xsQW5pbWF0b3Io
KS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7
CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxMZWZ0KGludCBuZXdMZWZ0LCBTY3JvbGxU
eXBlIHNjcm9sbFR5cGUsIFNjcm9sbENsYW1waW5nIGNsYW1waW5nKQogewogICAgIGlmICghaGFz
T3ZlcmZsb3dDbGlwKCkgfHwgIWxheWVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXR1cFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlcigqbGF5ZXIoKSk7CisgICAgc2V0dXBXaGVlbEV2ZW50TW9uaXRv
cigqbGF5ZXIoKSk7CiAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9YUG9zaXRpb24obmV3TGVmdCwgc2Ny
b2xsVHlwZSwgY2xhbXBpbmcpOwogfQogCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OnNldFNjcm9sbFRvcChpbnQgbmV3VG9wLCBTY3JvbGxUeXBlIHNjcm9sbFR5cGUsIFNjcm9s
bENsYW1waW5nIGMKIHsKICAgICBpZiAoIWhhc092ZXJmbG93Q2xpcCgpIHx8ICFsYXllcigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgc2V0dXBXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKmxheWVyKCkp
OworICAgIHNldHVwV2hlZWxFdmVudE1vbml0b3IoKmxheWVyKCkpOwogICAgIGxheWVyKCktPnNj
cm9sbFRvWVBvc2l0aW9uKG5ld1RvcCwgc2Nyb2xsVHlwZSwgY2xhbXBpbmcpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBhYTFhNjc3NTlkZWZjMWI3
ZjgwODQ4NWRiYWM1NDMxZjcwNWZjY2MxLi45YzQ0OTEyNmIyMzBkMjI2NTA4NDdkOWYxMzE3MWNi
ODJjYjc2Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTEyNSw3ICsxMjUsNyBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgotI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2luY2x1ZGUgIldo
ZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3Rm
L01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zMzM2
LDggKzMzMzYsOCBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3JlYXRlU2Nyb2xsYmFy
KFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIGVsc2UgewogICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRp
b24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0Lmdl
dCgpLCBvcmllbnRhdGlvbik7Ci0gICAgICAgIGlmIChwYWdlKCkuZXhwZWN0c1doZWVsRXZlbnRU
cmlnZ2VycygpKQotICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVz
dFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOworICAgICAgICBpZiAocGFnZSgpLmlzTW9u
aXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNldFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlKCkud2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwogICAg
IH0KICAgICByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKS5hZGRDaGlsZCgqd2lkZ2V0KTsK
ICAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2VOb25OdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNmIzYzEyMWMyM2VhYjhhYTI5MTAzZTQ1MjM2
Nzk0YzFiYmQ0NGY2MS4uZGY5YjE0YjIxOWQ3MDUxYjYyOTU0ODU4NzgzNTMwZmRhODdjMTBjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtNjIsNyAr
NjIsNyBAQAogI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgi
CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KQEAgLTc1MywxMiArNzUzLDEyIEBAIGludCBSZW5k
ZXJMaXN0Qm94OjpzY3JvbGxUb3AoKSBjb25zdAogICAgIHJldHVybiBtX2luZGV4T2Zmc2V0ICog
aXRlbUhlaWdodCgpOwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cihSZW5kZXJMaXN0Qm94JiByZW5kZXJlcikKK3N0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudFRl
c3RNb25pdG9yKFJlbmRlckxpc3RCb3gmIHJlbmRlcmVyKQogewotICAgIGlmICghcmVuZGVyZXIu
cGFnZSgpLmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKKyAgICBpZiAoIXJlbmRlcmVyLnBh
Z2UoKS5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZW5kZXJlci5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihyZW5kZXJl
ci5wYWdlKCkudGVzdFRyaWdnZXIoKSk7CisgICAgcmVuZGVyZXIuc2Nyb2xsQW5pbWF0b3IoKS5z
ZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocmVuZGVyZXIucGFnZSgpLndoZWVsRXZlbnRUZXN0TW9u
aXRvcigpKTsKIH0KIAogdm9pZCBSZW5kZXJMaXN0Qm94OjpzZXRTY3JvbGxUb3AoaW50IG5ld1Rv
cCwgU2Nyb2xsVHlwZSwgU2Nyb2xsQ2xhbXBpbmcpCkBAIC03NjcsNyArNzY3LDggQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCwgU2Nyb2xsVHlwZSwgU2Nyb2xs
Q2xhbXBpbmcpCiAgICAgaW50IGluZGV4ID0gbmV3VG9wIC8gaXRlbUhlaWdodCgpOwogICAgIGlm
IChpbmRleCA8IDAgfHwgaW5kZXggPj0gbnVtSXRlbXMoKSB8fCBpbmRleCA9PSBtX2luZGV4T2Zm
c2V0KQogICAgICAgICByZXR1cm47Ci0gICAgc2V0dXBXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKnRo
aXMpOworCisgICAgc2V0dXBXaGVlbEV2ZW50VGVzdE1vbml0b3IoKnRoaXMpOwogICAgIHNjcm9s
bFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihWZXJ0aWNhbFNjcm9sbGJhciwgaW5kZXgpOwogfQog
CkBAIC05MTYsOCArOTE3LDggQEAgUmVmPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRl
U2Nyb2xsYmFyKCkKICAgICBlbHNlIHsKICAgICAgICAgd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVh
dGVOYXRpdmVTY3JvbGxiYXIoKnRoaXMsIFZlcnRpY2FsU2Nyb2xsYmFyLCB0aGVtZSgpLnNjcm9s
bGJhckNvbnRyb2xTaXplRm9yUGFydChMaXN0Ym94UGFydCkpOwogICAgICAgICBkaWRBZGRTY3Jv
bGxiYXIod2lkZ2V0LmdldCgpLCBWZXJ0aWNhbFNjcm9sbGJhcik7Ci0gICAgICAgIGlmIChwYWdl
KCkuZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQotICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3IoKS5zZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIocGFnZSgpLnRlc3RUcmlnZ2VyKCkpOworICAg
ICAgICBpZiAocGFnZSgpLmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCisgICAgICAgICAgICBz
Y3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdlKCkud2hlZWxFdmVu
dFRlc3RNb25pdG9yKCkpOwogICAgIH0KICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQo
KndpZGdldCk7CiAgICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlTm9uTnVsbCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGQxZDQz
NGVhOWZhNjk3Yzk3MjQ4MTVhZjI1ODAyMmM3OWRkYmRkY2YuLjkwNTAxMTNjNmZjYzg2ZDYzOWFm
NTVlMmFjZGExNTliOGM2ZmQxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2lu
Y2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVySW5saW5lcy5oPgpAQCAtODUsMzAgKzg1LDMw
IEBAIHZvaWQgbW9uaXRvcldoZWVsRXZlbnRzKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmVuc3VyZVRlc3RUcmlnZ2Vy
KCk7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQg
c2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihXZWJDb3JlOjpGcmFtZSYg
ZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBqc0NhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UgfHwg
IXBhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkKKyAgICBpZiAoIXBhZ2UgfHwgIXBh
Z2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEpT
VmFsdWVQcm90ZWN0KGNvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlvbik7CiAgICAgCi0gICAgcGFn
ZS0+ZW5zdXJlVGVzdFRyaWdnZXIoKS5zZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlv
blRpbWVyKFs9XSh2b2lkKSB7CisgICAgcGFnZS0+ZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9y
KCkuc2V0VGVzdENhbGxiYWNrQW5kU3RhcnROb3RpZmljYXRpb25UaW1lcihbPV0odm9pZCkgewog
ICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGpzQ2FsbGJhY2tGdW5jdGlv
biwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIEpTVmFsdWVVbnByb3Rl
Y3QoY29udGV4dCwganNDYWxsYmFja0Z1bmN0aW9uKTsKICAgICB9KTsKIH0KIAotdm9pZCBjbGVh
cldoZWVsRXZlbnRUZXN0VHJpZ2dlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCit2b2lkIGNsZWFy
V2hlZWxFdmVudFRlc3RNb25pdG9yKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKIHsKICAgICBQYWdl
KiBwYWdlID0gZnJhbWUucGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIHBhZ2UtPmNsZWFyVHJpZ2dlcigpOworICAgIHBhZ2UtPmNsZWFyV2hlZWxFdmVu
dFRlc3RNb25pdG9yKCk7CiB9CiAKIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25z
dCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuaAppbmRleCA0YWI5NTQ2ZWM3NjUwNWZmOWZkYmI1MTQwNDcyNGE4NTQ2ZTI3MzUz
Li5hNmY5NjAxNGJjYzNkYzM4ZDU0ZjBhNmIzOWU0MDQ3Y2I5ZDQwN2VhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgdm9pZCBpbmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwogdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYpIFRFU1RfU1VQ
UE9SVF9FWFBPUlQ7CiB2b2lkIG1vbml0b3JXaGVlbEV2ZW50cyhXZWJDb3JlOjpGcmFtZSYpIFRF
U1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIHNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0
aW9uVGltZXIoV2ViQ29yZTo6RnJhbWUmLCBKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKSBURVNU
X1NVUFBPUlRfRVhQT1JUOwotdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcihXZWJDb3Jl
OjpGcmFtZSYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7Cit2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RN
b25pdG9yKFdlYkNvcmU6OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAogdm9pZCBzZXRM
b2dDaGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKSBURVNUX1NVUFBP
UlRfRVhQT1JUOwogdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpIFRFU1Rf
U1VQUE9SVF9FWFBPUlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCAxMDQ1NTJiZmIxNjc0MjdiZDlhYjc5ZjM2OThjNzM3ZWIyYjZhNzEwLi40MTQxYjZiYjdk
MDlhOTBiMTI0YTY0NDBiY2E0ZTdmOWI0Y2U2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI4NTgsOSArMjg1OCw5IEBAIFdLTWVkaWFTdGF0ZSBXS1Bh
Z2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBwYWdlKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAot
dm9pZCBXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcihXS1BhZ2VSZWYgcGFnZVJlZikK
K3ZvaWQgV0tQYWdlQ2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoV0tQYWdlUmVmIHBhZ2VSZWYp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5jbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+Y2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIH0KIAog
dm9pZCBXS1BhZ2VDYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdLUGFnZVJlZiBwYWdl
UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VQb3N0UHJlc2VudGF0aW9uVXBkYXRlRnVuY3Rpb24g
Y2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IDZmMDll
YzZmMmRkNGM3MGMxMzIzNTQxNmJlODhjYjY4MmM5NzA1YTEuLmI3YmRmNTkwNjM1M2EyNDQ4ODJj
NDczZjVjOWYzYTZiNjk2Mzk3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVzdG9yZUZyb21T
ZXNzaW9uU3RhdGUoV0tQYWdlUmVmIHBhZ2UsIFdLVHlwZVJlZiBzZXNzaW9uU3QKIAogV0tfRVhQ
T1JUIGRvdWJsZSBXS1BhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2UpOwog
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKFdLUGFnZVJl
ZiBwYWdlLCBkb3VibGUgY3VzdG9tU2NhbGVGYWN0b3IpOwotV0tfRVhQT1JUIHZvaWQgV0tQYWdl
Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIHZv
aWQgV0tQYWdlQ2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoV0tQYWdlUmVmIHBhZ2UpOwogCiBX
S19FWFBPUlQgYm9vbCBXS1BhZ2VTdXBwb3J0c1RleHRab29tKFdLUGFnZVJlZiBwYWdlKTsKIFdL
X0VYUE9SVCBkb3VibGUgV0tQYWdlR2V0VGV4dFpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODc4MjBkMzNhY2Qy
M2U4MWQ4YzczM2UxMDFmY2U4OWJkNTIxYTkzNy4uZmI3MTMzNjRlZWJjZWNhYjNiZWQ1MTFjMWRh
YzQ4MzgzYWMzM2Q5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC04NTg2LDEyICs4NTg2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNr
Z3JvdW5kQ29sb3IoKQogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3Io
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dl
cigpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDhjNzc1MDk2Y2QxNmM3M2E0ZDYzODMwNDAyNzNi
MDA5YzhhMjY3OTkuLjZhOWNhNDcwZjQ2ZDBhYTlmM2Y2YzJmYjY4ZTRlNGQ5MGM3MGE2YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDEyLDcgKzE0MTIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRMYXlvdXRGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoKTsK
IAogICAgIC8vIEZvciB0ZXN0aW5nCi0gICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dl
cigpOworICAgIHZvaWQgY2xlYXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKICAgICB2b2lkIGNh
bGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9w
dGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAKaW5kZXggZDFmMWRlMGJhYzgyMWRiZGFhZDBiMTI2MDI1YjE2MzIxNGI3ODg5MC4uMjQ0
ZTViOTU0OGZmZTM5YWE1OGNjM2VmODE5ZTc2YmJjYzUyOTI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1doZWVs
RXZlbnRUZXN0TW9uaXRvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVN0
YXJ0TW9uaXRvcmluZ1Njcm9sbE9wZXJhdGlvbnMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5lbnN1cmVUZXN0VHJp
Z2dlcigpOworICAgIHBhZ2UtPmVuc3VyZVdoZWVsRXZlbnRUZXN0TW9uaXRvcigpOwogfQogCiBi
b29sIFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNr
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VUZXN0Tm90aWZpY2F0aW9uQ2Fs
bGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCkBAIC02NTQsMTAgKzY1NCwxMCBAQCBib29s
IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUgogICAgIAogICAgIFdlYktpdDo6V2ViUGFnZSogd2ViUGFnZSA9
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSB3ZWJQ
YWdlID8gd2ViUGFnZS0+Y29yZVBhZ2UoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCFwYWdlIHx8ICFw
YWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCisgICAgaWYgKCFwYWdlIHx8ICFwYWdl
LT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgcGFnZS0+ZW5zdXJlVGVzdFRyaWdnZXIoKS5zZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5v
dGlmaWNhdGlvblRpbWVyKFs9XSgpIHsKKyAgICBwYWdlLT5lbnN1cmVXaGVlbEV2ZW50VGVzdE1v
bml0b3IoKS5zZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKFs9XSgpIHsK
ICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCBmNGNiOTZhZWE2ZmMyOGE4YjdhNDE4YmZmZDU2YWFmYjQwNWMzODlmLi4wZDBhNjY3M2Ni
ZmRjODU1NmNjNjk2OTgzMWY3NDM0NWQzZGY5MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTgxLDcgKzgxLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TTWVudVNQSS5oPgogI2ltcG9y
dCA8d3RmL1VVSUQuaD4KQEAgLTcyNCw4ICs3MjQsOCBAQCBSZWY8U2Nyb2xsYmFyPiBQREZQbHVn
aW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAg
ICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LnB0cigpLCBvcmllbnRhdGlvbik7CiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAgICAgaWYgKHBhZ2UtPmV4cGVjdHNX
aGVlbEV2ZW50VHJpZ2dlcnMoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxBbmltYXRvcigpLnNl
dFdoZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlLT50ZXN0VHJpZ2dlcigpKTsKKyAgICAgICAgICAg
IGlmIChwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQorICAgICAgICAgICAgICAgIHNj
cm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKHBhZ2UtPndoZWVsRXZlbnRU
ZXN0TW9uaXRvcigpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwbHVnaW5WaWV3KCktPmZyYW1l
KCktPnZpZXcoKS0+YWRkQ2hpbGQod2lkZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDBhMjU0MDVkZTg4ZDlj
NzU0NDE3NjUxMDVmZDY3NzI4ODVlZmY1MGUuLjY4MDdlZDUyOTI1MTc4ZDZmOWMyM2U0MDg1MWU0
YWY0MTg2YjFiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1N5c3RlbVRyYWNpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYzM1YzIwMjA1NDI4Zjk2YmM5NTc0MGFhM2MxODVmYTcxMzEyOTNlNC4u
Yjc5MGMzYzRkOWNlYTFlZTU1NjAzMGM3MDc3MTM1MTJjMTczZTM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYyOTgsMTIgKzYyOTgsMTIg
QEAgdm9pZCBXZWJQYWdlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAgICAgcmV0dXJuRGF0YSA9IHdlYlByb2Nl
c3MudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhyZXR1cm5Vc2VyRGF0YS5vYmplY3QoKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Y2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKQordm9pZCBXZWJQ
YWdlOjpjbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+Y2xlYXJUcmlnZ2VyKCk7CisgICAgbV9wYWdl
LT5jbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcigpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFNo
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIx
NzY1YzFmNGY4MTFlMDA4NGYwYzk3NzhlNTlhMThlODNhMGE4ZjMuLjQ1ZWZlYTdjOTY0YzIzMjJj
NWU1ZTA1YjI1ZDc3NDBhZTBjNTgwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTE1NjgsNyArMTU2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1aW50NjRfdCwgYm9vbCk7CiAjZW5kaWYKIAot
ICAgIHZvaWQgY2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKTsKKyAgICB2b2lkIGNsZWFyV2hl
ZWxFdmVudFRlc3RNb25pdG9yKCk7CiAKICAgICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0
RG9jdW1lbnQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDMwOTZlMmU2OTQxNDBjN2RmZTIyOWIzY2Mw
Mjk1MTYyZjIyZGQzZTguLjE1MDY0ODk3ODRhZjNkNzIzMjllNTQ1NDA5MzBkNzE0YTM0YTViMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtNTE2LDcgKzUxNiw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAg
ICAgRGlkTG9zZVBvaW50ZXJMb2NrKCkKICNlbmRpZgogCi0gICAgQ2xlYXJXaGVlbEV2ZW50VGVz
dFRyaWdnZXIoKQorICAgIGNsZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKCkKICAgICBTZXRTaG91
bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVu
dCkKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NmNkZWFhNmE0ODc3NTIyYjdj
OGM0ZDMxM2FkNDZmMzRkNzAzMTUwLi43ZDBhMmE5ZjU0MWNjNTllODIxZDg5MmJhNTU4NTBjOTBl
ZWQ3ODQyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMTAtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFdoZWVsRXZlbnRUZXN0VHJpZ2dlciBhbmQg
aW1wcm92ZSBuYW1pbmcgaW4gcmVsYXRlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhlICJ0ZXN0IHRyaWdnZXIiIHRlcm1pbm9s
b2d5IHRvICJtb25pdG9yIHdoZWVsIGV2ZW50cyI7IGFmdGVyIGFsbCwgdGVzdHMKKyAgICAgICAg
Y2FsbCBtb25pdG9yV2hlZWxFdmVudHMoKSBhbmQgY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KCksIGFuZCB0aGlzIGlzIG5vdCB0cmlnZ2VyaW5nCisgICAgICAgIGEgdGVzdC4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKwogMjAxOS0xMC0wOSAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIENv
bXBhY3RQb2ludGVyVHVwbGU8Li4uLCBPcHRpb25TZXQ8Li4uPj4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzNWQyNjQxMjFiYTkzMWQ2NDcyN2NjMzJi
NDBkZDBiYjUyMDc1ZmE3Li44NGQzYmM3MTE4MTY0MTliNDg0ZWJjZmJlYzhlNTQyZTlkNmFhNzUx
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xOTEy
LDcgKzE5MTIsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJl
Zm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbgogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IFt3ZWJWaWV3IF9tYWlu
Q29yZUZyYW1lXSkKLSAgICAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpjbGVhcldoZWVsRXZlbnRU
ZXN0VHJpZ2dlcigqZnJhbWUpOworICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNsZWFyV2hl
ZWxFdmVudFRlc3RNb25pdG9yKCpmcmFtZSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBl
Y2Q3ZDliOGNjYjEzY2Y0ZjUzYjQwZWQ3N2Y4MTJlNjYyYzgwZmNlLi5mYzg3NTZiZGI1ZjdjNDk0
ZDM4Mzg2NDViMzIyOTljMWE5MTAxY2IyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtMTAwMSw3ICsxMDAxLDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmUKICAgICAvLyBSZS1zZXQgdG8gdGhlIGRlZmF1bHQgYmFja2luZyBzY2FsZSBmYWN0b3IgYnkg
c2V0dGluZyB0aGUgY3VzdG9tIHNjYWxlIGZhY3RvciB0byAwLgogICAgIFdLUGFnZVNldEN1c3Rv
bUJhY2tpbmdTY2FsZUZhY3RvcihtX21haW5XZWJWaWV3LT5wYWdlKCksIDApOwogCi0gICAgV0tQ
YWdlQ2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIobV9tYWluV2ViVmlldy0+cGFnZSgpKTsKKyAg
ICBXS1BhZ2VDbGVhcldoZWVsRXZlbnRUZXN0TW9uaXRvcihtX21haW5XZWJWaWV3LT5wYWdlKCkp
OwogCiAgICAgV0tQYWdlU2V0TXV0ZWQobV9tYWluV2ViVmlldy0+cGFnZSgpLCB0cnVlKTsKIAo=
</data>
<flag name="review"
          id="396334"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>