<?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>34073</bug_id>
          
          <creation_ts>2010-01-25 00:37:57 -0800</creation_ts>
          <short_desc>Cleanup: Fix misspelled words in comments.</short_desc>
          <delta_ts>2010-01-25 11:20:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184191</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-25 00:37:57 -0800</bug_when>
    <thetext>We should fix misspelled words within comments so that comments read well (or at least better than they did).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184192</commentid>
    <comment_count>1</comment_count>
      <attachid>47322</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-25 00:39:36 -0800</bug_when>
    <thetext>Created attachment 47322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184193</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-25 00:41:19 -0800</bug_when>
    <thetext>Attachment 47322 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/notifications/NotificationPresenter.h:51:  One space before end of line comments  [whitespace/comments] [5]
WebCore/platform/graphics/mac/GraphicsLayerCA.h:321:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184195</commentid>
    <comment_count>3</comment_count>
      <attachid>47323</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-25 00:47:47 -0800</bug_when>
    <thetext>Created attachment 47323
Patch

Fix style errors found by style bot as well as some that it missed but were around the same area as the ones it found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184228</commentid>
    <comment_count>4</comment_count>
      <attachid>47323</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-25 03:14:22 -0800</bug_when>
    <thetext>Comment on attachment 47323
Patch

dbates = teh awesome</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184381</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-25 11:20:29 -0800</bug_when>
    <thetext>Committed r53809: &lt;http://trac.webkit.org/changeset/53809&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47322</attachid>
            <date>2010-01-25 00:39:36 -0800</date>
            <delta_ts>2010-01-25 00:47:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug34073.patch</filename>
            <type>text/plain</type>
            <size>66525</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQ3IEBACisyMDEwLTAxLTI1ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQwNzMKKworICAgICAgICBG
aXhlcyBtaXNzcGVsbGVkIHdvcmRzIGluIGNvbW1lbnRzLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmRvQWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBkZXRhY2hdKToKKyAgICAgICAgKEFYQXR0cmlidXRlU3Ry
aW5nU2V0RWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXBsZXRlVVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoK
KyAgICAgICAgKF9OUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9K
YXZhSW5zdGFuY2VKU0MuY3BwOgorICAgICAgICAoSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2Qp
OgorICAgICAgICAoSk9iamVjdFdyYXBwZXI6OkpPYmplY3RXcmFwcGVyKToKKyAgICAgICAgKiBi
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNlOjpzZXRW
YWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUpOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6c29ydE1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAqIGRv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRF
dmVudDo6cmVjZWl2ZWRUYXJnZXQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmlzRm9jdXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNo
YWRvd0FuY2VzdG9yTm9kZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVwc3RyZWFtKToKKyAg
ICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50cyk6CisgICAgICAgICogZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkQ1NTQ29s
b3IpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OnJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6cHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdCk6CisgICAgICAgICog
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
RGVsZXRhYmxlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRp
YWxpemVTdGFydEVuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpsZWFyblNwZWxsaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLnByb3RvdHlwZS5fZm9ybWF0KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUu
aDoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6Om1ha2VQdXJnZWFibGUpOgorICAgICAgICAqIGxvYWRlci9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GVFBE
aXJlY3RvcnlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Blbik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwpOgor
ICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzcGFjZU5lZWRlZCk6CisgICAgICAgICogbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlcjo6KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6
OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL0xpbmtIYXNoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNsZWFuUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJh
d2luZ01vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkb1NlZWspOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNv
ZGluZ05hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9y
SUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVjdFRleHRFbmNvZGluZyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRv
VGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRv
VGFibGVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250YWxWYWx1
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVWZXJ0aWNhbFZh
bHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250
YWxSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZVZl
cnRpY2FsUmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sOjpzZXRJbm5lclRleHRWYWx1ZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpz
dGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6Om1hcExvY2FsVG9Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jvb3RJbmxpbmVCb3g6OmJ1aWxkVGV4dENodW5rcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6c3VnZ2VzdGVkVmFsdWUpOgor
CiAyMDEwLTAxLTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysg
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRDaGls
ZHJlbigpCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGlzdEl0ZW1zLnNpemUoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgLy8gVGhlIGNhc3Qg
dG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNhdXNlIHRoZSBvbmx5IG90aGVyIHBvc3Np
YmxlIGxpc3RJdGVtIHR5cGUKLSAgICAgICAgLy8gd291bGQgYmUgYSBXTUxFbGVtZW50LCBidXQg
V01MIGJ1aWxkcyBkb24ndCB1c2UgYWNjZXNzYmlsaXR5IGZlYXR1cmVzIGF0IGFsbC4KKyAgICAg
ICAgLy8gd291bGQgYmUgYSBXTUxFbGVtZW50LCBidXQgV01MIGJ1aWxkcyBkb24ndCB1c2UgYWNj
ZXNzaWJpbGl0eSBmZWF0dXJlcyBhdCBhbGwuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGxpc3RPcHRpb24gPSBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KGxpc3RJdGVtc1tpXSkpOwogICAgICAgICBpZiAobGlzdE9wdGlvbikK
ICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGxpc3RPcHRpb24pOwpAQCAtMTcwLDcgKzE3
MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm8KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgSW50UmVjdCByZWN0
ID0gdG9SZW5kZXJMaXN0Qm94KG1fcmVuZGVyZXIpLT5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVu
dFJlY3QueCgpLCBwYXJlbnRSZWN0LnkoKSwgaSk7CiAgICAgICAgIC8vIFRoZSBjYXN0IHRvIEhU
TUxFbGVtZW50IGJlbG93IGlzIHNhZmUgYmVjYXVzZSB0aGUgb25seSBvdGhlciBwb3NzaWJsZSBs
aXN0SXRlbSB0eXBlCi0gICAgICAgIC8vIHdvdWxkIGJlIGEgV01MRWxlbWVudCwgYnV0IFdNTCBi
dWlsZHMgZG9uJ3QgdXNlIGFjY2Vzc2JpbGl0eSBmZWF0dXJlcyBhdCBhbGwuCisgICAgICAgIC8v
IHdvdWxkIGJlIGEgV01MRWxlbWVudCwgYnV0IFdNTCBidWlsZHMgZG9uJ3QgdXNlIGFjY2Vzc2li
aWxpdHkgZmVhdHVyZXMgYXQgYWxsLgogICAgICAgICBpZiAocmVjdC5jb250YWlucyhwb2ludCkp
CiAgICAgICAgICAgICByZXR1cm4gbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3Qoc3Rh
dGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihsaXN0SXRlbXNbaV0pKTsKICAgICB9CkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5
Miw3IEBAIHR5cGVkZWYgdW5zaWduZWQgTlNVSW50ZWdlcjsKIC0gKHZvaWQpZGV0YWNoCiB7CiAg
ICAgLy8gU2VuZCB1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQgdW5jb25kaXRpb25hbGx5
IGJlY2F1c2UgaWYgaXQgaXMKLSAgICAvLyBldmVyIGFjY2lkZW50bHkgbm90IGRvbmUgKHZpYSBv
dGhlciBidWdzIGluIG91ciBBWCBpbXBsZW1lbnRhdGlvbikgeW91CisgICAgLy8gZXZlciBhY2Np
ZGVudGFsbHkgbm90IGRvbmUgKHZpYSBvdGhlciBidWdzIGluIG91ciBBWCBpbXBsZW1lbnRhdGlv
bikgeW91CiAgICAgLy8gZW5kIHVwIHdpdGggYSBjcmFzaCBsaWtlIDxyZGFyOi8vcHJvYmxlbS80
MjczMTQ5Pi4gIEl0IGlzIHNhZmUgYW5kIG5vdAogICAgIC8vIGV4cGVuc2l2ZSB0byBzZW5kIGV2
ZW4gaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZC4KICAgICBbc2VsZiB1bnJlZ2lzdGVy
VW5pcXVlSWRGb3JVSUVsZW1lbnRdOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0wKIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5n
U2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOU1N0cmlu
ZyogYXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIE5TUmFuZ2UgcmFuZ2Up
CiB7CiAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCgpKSB7Ci0gICAgICAgIC8vIG1ha2UgYSBzZXJpYWxpYXphYmxlIEFYIG9iamVjdAorICAgICAg
ICAvLyBtYWtlIGEgc2VyaWFsaXphYmxlIEFYIG9iamVjdAogICAgICAgICAKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QqPihvYmplY3QpLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJlbmRlcmVyKQpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MSw3
ICs3ODEsNyBAQCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZShFeGVjU3RhdGUqIGV4CiAKIEtV
UkwgY29tcGxldGVVUkwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJM
KQogewotICAgIC8vIEZvciBoaXN0b2ljYWwgcmVhc29ucywgd2UgbmVlZCB0byBjb21wbGV0ZSB0
aGUgVVJMIHVzaW5nIHRoZSBkeW5hbWljIGZyYW1lLgorICAgIC8vIEZvciBoaXN0b3JpY2FsIHJl
YXNvbnMsIHdlIG5lZWQgdG8gY29tcGxldGUgdGhlIFVSTCB1c2luZyB0aGUgZHluYW1pYyBmcmFt
ZS4KICAgICBGcmFtZSogZnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gS1VSTCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2
b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveUpTRE9NV2luZG93CiAgICAgZGVsZXRlIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZURhdGEqPihqc0RPTVdpbmRvd0Jhc2VEYXRhKTsKIH0KIAot
Ly8gSlNET01HbG9iYWxPYmplY3QqIGlzIGlnbm9yZWQsIGFjY2VzaW5nIGEgd2luZG93IGluIGFu
eSBjb250ZXh0IHdpbGwKKy8vIEpTRE9NR2xvYmFsT2JqZWN0KiBpcyBpZ25vcmVkLCBhY2Nlc3Np
bmcgYSB3aW5kb3cgaW4gYW55IGNvbnRleHQgd2lsbAogLy8gdXNlIHRoYXQgRE9NV2luZG93J3Mg
cHJvdG90eXBlIGNoYWluLgogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqLCBET01XaW5kb3cqIGRvbVdpbmRvdykKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpTRE9NV2luZG93
IG9yIGpzTnVsbCgpCi0gICAgLy8gSlNET01HbG9iYWxPYmplY3QqIGlzIGlnbm9yZWQsIGFjY2Vz
aW5nIGEgd2luZG93IGluIGFueSBjb250ZXh0IHdpbGwKKyAgICAvLyBKU0RPTUdsb2JhbE9iamVj
dCogaXMgaWdub3JlZCwgYWNjZXNzaW5nIGEgd2luZG93IGluIGFueSBjb250ZXh0IHdpbGwKICAg
ICAvLyB1c2UgdGhhdCBET01XaW5kb3cncyBwcm90b3R5cGUgY2hhaW4uCiAgICAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIERPTVdpbmRvdyop
OwogICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgRE9NV2luZG93Kik7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24g
NTM3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdChFeGUKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTZWFyY2gg
dGhlIHdob2xlIGZyYW1lIGhpZXJhY2h5IHNvbWV3aGVyZSBhcm91bmQgaGVyZS4KKyAgICAvLyBG
SVhNRTogU2VhcmNoIHRoZSB3aG9sZSBmcmFtZSBoaWVyYXJjaHkgc29tZXdoZXJlIGFyb3VuZCBo
ZXJlLgogICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4K
IAogICAgIC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHJldmlzaW9uIDUz
NzkzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogLy8gaW4gV2ViQ29yZS9zdmcgKGFr
YS4gJ1BPRCB0eXBlcycpLiBGb3IgaW5zdGFuY2UgU1ZHTWF0cml4IGlzIG1hcHBlZCB0byBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCwgYW5kCiAvLyBwYXNzZWQgYXJvdW5kIGFzIGNvbnN0IHJlZmVyZW5j
ZS4gU1ZHIERPTSBkZW1hbmRzIHRoZXNlIG9iamVjdHMgdG8gYmUgImxpdmUiLCBjaGFuZ2VzIHRv
IGFueQogLy8gb2YgdGhlIHdyaXRhYmxlIGF0dHJpYnV0ZXMgb2YgU1ZHTWF0cml4IG5lZWQgdG8g
YmUgcmVmbGVjdGVkIGluIHRoZSBvYmplY3Qgd2hpY2ggZXhwb3NlZCB0aGUKLS8vIFNWR01hdHJp
eCBvYmplY3QgKGllLiAnc29tZUVsZW1lbnQudHJhbnNmb3JtLm1hdHJpeC5hID0gNTAuMCcsIGlu
IHRoYXQgY2FzZSAnU1ZHVHJhbnNmb3JtJykuCisvLyBTVkdNYXRyaXggb2JqZWN0IChpLmUuICdz
b21lRWxlbWVudC50cmFuc2Zvcm0ubWF0cml4LmEgPSA1MC4wJywgaW4gdGhhdCBjYXNlICdTVkdU
cmFuc2Zvcm0nKS4KIC8vIFRoZSBTVkdUcmFuc2Zvcm0gY2xhc3Mgc3RvcmVzIGl0cyAiVHJhbnNm
b3JtYXRpb25NYXRyaXggbV9tYXRyaXgiIG9iamVjdCBvbiB0aGUgc3RhY2suIElmIGl0IHdvdWxk
CiAvLyBiZSBzdG9yZWQgYXMgcG9pbnRlciB3ZSBjb3VsZCBqdXN0IGJ1aWxkIGFuIGF1dG8tZ2Vu
ZXJhdGVkIEpTU1ZHKiB3cmFwcGVyIG9iamVjdCBhcm91bmQgaXQKIC8vIGFuZCBhbGwgY2hhbmdl
cyB0byB0aGF0IG9iamVjdCB3b3VsZCBhdXRvbWF0aWNhbGx5IGFmZmVjdCB0aGUgVHJhbnNmb3Jt
YXRpb25NYXRyaXgqIG9iamVjdCBzdG9yZWQKQEAgLTExNCw5ICsxMTQsOSBAQCBwcml2YXRlOgog
ICAgIFNldHRlck1ldGhvZCBtX3NldHRlcjsKIH07CiAKLS8vIFJlcHJlc2VudHMgYSBKUyB3cmFw
cGVyIG9iamVjdCBmb3IgU1ZHIFBPRCB0eXBlcyAobm90IGZvciBTVkdBbmltYXRlZCogY2xhc2Vz
KS4gQW55IG1vZGlmaWNhdGlvbiB0byB0aGUgU1ZHIFBPRAorLy8gUmVwcmVzZW50cyBhIEpTIHdy
YXBwZXIgb2JqZWN0IGZvciBTVkcgUE9EIHR5cGVzIChub3QgZm9yIFNWR0FuaW1hdGVkKiBjbGFz
c2VzKS4gQW55IG1vZGlmaWNhdGlvbiB0byB0aGUgU1ZHIFBPRAogLy8gdHlwZXMgZG9uJ3QgY2F1
c2UgYW55IHVwZGF0ZXMgdW5saWtlIEpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyLiBUaGlzIGNs
YXNzIGlzIHVzZWQgZm9yIHJldHVybiB2YWx1ZXMgKGllLiBnZXRCQm94KCkpCi0vLyBhbmQgZm9y
IHByb3BlcnRpZXMgd2hlcmUgU1ZHIHNwZWNpZmljYXRpb24gZXhwbGljaXRlbHkgc3RhdGVzLCB0
aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgUE9EIHR5cGUgYXJlIGltbXV0YWJsZS4KKy8vIGFuZCBm
b3IgcHJvcGVydGllcyB3aGVyZSBTVkcgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcywg
dGhhdCB0aGUgY29udGVudHMgb2YgdGhlIFBPRCB0eXBlIGFyZSBpbW11dGFibGUuCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFBPRFR5cGU+CiBjbGFzcyBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyIDog
cHVibGljIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4gewpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3
ICsxMDIsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluCiAgICAg
fQogCiAgICAgLy8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0aGUgSlMgcmV0dXJuIHZhbHVlIG9y
IDAKLSAgICAvLyBpZiB0aGVyZSB3YXMgbm9uZSwgYW4gZXJyb3Igb2NjdXJlZCBvciB0aGUgdHlw
ZSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQuCisgICAgLy8gaWYgdGhlcmUgd2FzIG5vbmUsIGFuIGVy
cm9yIG9jY3VycmVkIG9yIHRoZSB0eXBlIGNvdWxkbid0IGJlIGNvbnZlcnRlZC4KIAogICAgIC8v
IGlubGluZUNvZGUgaXMgdHJ1ZSBmb3IgPGEgaHJlZj0iamF2YXNjcmlwdDpkb1NvbWV0aGluZygp
Ij4KICAgICAvLyBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+ZG9Tb21ldGhpbmcoKTwvc2NyaXB0Pi4g
Q2hlY2sgaWYgaXQgaGFzIHRoZQpJbmRleDogV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24g
NTM3OTMpCisrKyBXZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3OSw3ICszNzksNyBAQCBib29sIF9OUE5fSGFzTWV0aG9kKE5QUCwgTlBPYmplY3QqIG8s
IE5QCiAKIHZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqLCBjb25zdCBOUFVURjgqIG1l
c3NhZ2UpCiB7Ci0gICAgLy8gSWdub3JuaW5nIHRoZSBOUE9iamVjdCBwYXJhbSBpcyBjb25zaXN0
ZW50IHdpdGggdGhlIE1vemlsbGEgaW1wbGVtZW50YXRpb24uCisgICAgLy8gSWdub3JpbmcgdGhl
IE5QT2JqZWN0IHBhcmFtIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgTW96aWxsYSBpbXBsZW1lbnRh
dGlvbi4KICAgICBVU3RyaW5nIGV4Y2VwdGlvbihtZXNzYWdlKTsKICAgICBDSW5zdGFuY2U6OnNl
dEdsb2JhbEV4Y2VwdGlvbihleGNlcHRpb24pOwogfQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3
ICsxNTIsNyBAQCBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTCiAgICAg
anZhbHVlIHJlc3VsdDsKIAogICAgIC8vIFRyeSB0byB1c2UgdGhlIEpOSSBhYnN0cmFjdGlvbiBm
aXJzdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotICAgIC8vIG5vcm5tYWwgSk5JLiAgVGhlIEpO
SSBkaXNwYXRjaCBhYnN0cmFjdGlvbiBhbGxvd3MgdGhlIEphdmEgcGx1Z2luCisgICAgLy8gbm9y
bWFsIEpOSS4gIFRoZSBKTkkgZGlzcGF0Y2ggYWJzdHJhY3Rpb24gYWxsb3dzIHRoZSBKYXZhIHBs
dWdpbgogICAgIC8vIHRvIGRpc3BhdGNoIHRoZSBjYWxsIG9uIHRoZSBhcHByb3ByaWF0ZSBpbnRl
cm5hbCBWTSB0aHJlYWQuCiAgICAgUm9vdE9iamVjdCogcm9vdE9iamVjdCA9IHRoaXMtPnJvb3RP
YmplY3QoKTsKICAgICBpZiAoIXJvb3RPYmplY3QpCkBAIC0zMjAsNyArMzIwLDcgQEAgSk9iamVj
dFdyYXBwZXI6OkpPYmplY3RXcmFwcGVyKGpvYmplY3QgaQogewogICAgIGFzc2VydChpbnN0YW5j
ZSk7CiAKLSAgICAvLyBDYWNoZSB0aGUgSk5JRW52IHVzZWQgdG8gZ2V0IHRoZSBnbG9iYWwgcmVm
IGZvciB0aGlzIGphdmEgaW5zdGFuYWNlLgorICAgIC8vIENhY2hlIHRoZSBKTklFbnYgdXNlZCB0
byBnZXQgdGhlIGdsb2JhbCByZWYgZm9yIHRoaXMgamF2YSBpbnN0YW5jZS4KICAgICAvLyBJdCds
bCBiZSB1c2VkIHRvIGRlbGV0ZSB0aGUgcmVmZXJlbmNlLgogICAgIG1fZW52ID0gZ2V0Sk5JRW52
KCk7CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDUz
NzkzKQorKysgV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRl
ZmluZWRGaQogICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOyAvLyBDYW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUgYmVj
YXVzZSBpdCB1bndpbmRzIGluY29ycmVjdGx5LgogCiAgICAgLy8gVGhpcyBjaGVjayBpcyBub3Qg
cmVhbGx5IG5lY2Vzc2FyeSBiZWNhdXNlIE5TT2JqZWN0IGltcGxlbWVudHMKLSAgICAvLyBzZXRW
YWx1ZTpmb3JVbmRlZmluZWRLZXk6LCBhbmQgdW5mb3J0bmF0ZWx5IHRoZSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uCisgICAgLy8gc2V0VmFsdWU6Zm9yVW5kZWZpbmVkS2V5OiwgYW5kIHVuZm9ydHVu
YXRlbHkgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KICAgICAvLyB0aHJvd3MgYW4gZXhjZXB0
aW9uLgogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0VmFsdWU6Zm9yVW5kZWZpbmVkS2V5OildKXsKICAgICAgICAgc2V0R2xvYmFsRXhjZXB0aW9u
KG5pbCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVl
T2ZVbmRlZmluZQogICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOyAvLyBDYW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUg
YmVjYXVzZSBpdCB1bndpbmRzIGluY29ycmVjdGx5LgogCiAgICAgLy8gVGhpcyBjaGVjayBpcyBu
b3QgcmVhbGx5IG5lY2Vzc2FyeSBiZWNhdXNlIE5TT2JqZWN0IGltcGxlbWVudHMKLSAgICAvLyB2
YWx1ZUZvclVuZGVmaW5lZEtleTosIGFuZCB1bmZvcnRuYXRlbHkgdGhlIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24KKyAgICAvLyB2YWx1ZUZvclVuZGVmaW5lZEtleTosIGFuZCB1bmZvcnR1bmF0ZWx5
IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAgICAgLy8gdGhyb3dzIGFuIGV4Y2VwdGlvbi4K
ICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHZhbHVl
Rm9yVW5kZWZpbmVkS2V5OildKXsKICAgICAgICAgc2V0R2xvYmFsRXhjZXB0aW9uKG5pbCk7Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3
IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICAgICAgbV9t
ZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CiAKICAgICBpZiAocm9vdCkK
LSAgICAgICAgbV9yb290RGVmYXVsdFN0eWxlID0gc3R5bGVGb3JFbGVtZW50KHJvb3QsIDAsIGZh
bHNlLCB0cnVlKTsgLy8gZG9udCByZWYsIGJlY2F1c2UgdGhlIFJlbmRlclN0eWxlIGlzIGFsbG9j
YXRlZCBmcm9tIGdsb2JhbCBoZWFwCisgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxl
Rm9yRWxlbWVudChyb290LCAwLCBmYWxzZSwgdHJ1ZSk7IC8vIGRvbid0IHJlZiwgYmVjYXVzZSB0
aGUgUmVuZGVyU3R5bGUgaXMgYWxsb2NhdGVkIGZyb20gZ2xvYmFsIGhlYXAKIAogICAgIGlmICht
X3Jvb3REZWZhdWx0U3R5bGUgJiYgdmlldykgewogICAgICAgICBkZWxldGUgbV9tZWRpdW07CkBA
IC00NjMsNyArNDYzLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1
bQogICAgIC8vIGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50CiAgICAgbV9hdXRob3JTdHls
ZSA9IG5ldyBDU1NSdWxlU2V0KCk7CiAgICAgCi0gICAgLy8gQWRkIHJ1bGVzIGZyb20gZWxtZW50
cyBsaWtlIFNWRydzIDxmb250LWZhY2U+CisgICAgLy8gQWRkIHJ1bGVzIGZyb20gZWxlbWVudHMg
bGlrZSBTVkcncyA8Zm9udC1mYWNlPgogICAgIGlmIChtYXBwZWRFbGVtZW50U2hlZXQpCiAgICAg
ICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1hcHBlZEVsZW1lbnRTaGVldCwg
Km1fbWVkaXVtLCB0aGlzKTsKIApAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6c29ydE1hdGNoZWRSdWxlcygKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IFBlZm9ybSBhIG1lcmdlIHNvcnQgZm9yIGxhcmdlciBsaXN0cy4KKyAgICAvLyBQZXJmb3JtIGEg
bWVyZ2Ugc29ydCBmb3IgbGFyZ2VyIGxpc3RzLgogICAgIHVuc2lnbmVkIG1pZCA9IChzdGFydCAr
IGVuZCkgLyAyOwogICAgIHNvcnRNYXRjaGVkUnVsZXMoc3RhcnQsIG1pZCk7CiAgICAgc29ydE1h
dGNoZWRSdWxlcyhtaWQsIGVuZCk7CkBAIC0yODc0LDcgKzI4NzQsNyBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250VmFyaWFudDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVpvb206CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVzZSBoYXZlIHRvIGJlIGFwcGxp
ZWQgZmlyc3QsIGJlY2F1c2Ugb3RoZXIgcHJvcGVydGllcyB1c2UgdGhlIGNvbXB1dGVkCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgb2YgdGhlc2UgcG9ycGVydGllcy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyBvZiB0aGVzZSBwcm9wZXJ0aWVzLgogICAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDM5LDcgKzMwMzksNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAjaWYgRU5BQkxFKFdD
U1MpCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewogICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2FwTWFycXVlZSkgewotICAgICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgV2FwIE1hcnF1ZWUgc3R5bGUKKyAgICAgICAgICAgICAgICAv
LyBJbml0aWFsaXplIFdBUCBNYXJxdWVlIHN0eWxlCiAgICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0T3ZlcmZsb3dYKE9NQVJRVUVFKTsKICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVy
Zmxvd1koT01BUlFVRUUpOwogICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFdoaXRlU3BhY2Uo
Tk9XUkFQKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nCiAgICAgICAgIH0gZWxzZSBpZiAobV9o
YXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKQogICAgICAgICAgICAgLy8gSWYgbmV3IG5vZGVz
IGhhdmUgYmVlbiBhZGRlZCBvciBzdHlsZSByZWNhbGMgaGFzIGJlZW4gZG9uZSB3aXRoIHN0eWxl
IHNoZWV0cyBzdGlsbCBwZW5kaW5nLCBzb21lIG5vZGVzIAogICAgICAgICAgICAgLy8gbWF5IG5v
dCBoYXZlIGhhZCB0aGVpciByZWFsIHN0eWxlIGNhbGN1bGF0ZWQgeWV0LiBOb3JtYWxseSB0aGlz
IGdldHMgY2xlYW5lZCB3aGVuIHN0eWxlIHNoZWV0cyBhcnJpdmUgCi0gICAgICAgICAgICAvLyBi
dXQgaGVyZSB3ZSBuZWVkIHVwLXRvLWRhdGUgc3R5bGUgaW1tZWRpYXRseS4KKyAgICAgICAgICAg
IC8vIGJ1dCBoZXJlIHdlIG5lZWQgdXAtdG8tZGF0ZSBzdHlsZSBpbW1lZGlhdGVseS4KICAgICAg
ICAgICAgIHJlY2FsY1N0eWxlKEZvcmNlKTsKICAgICB9CiAKQEAgLTE1NTQsNyArMTU1NCw3IEBA
IHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAgICAgICgqaSktPmRvY3VtZW50RGV0YWNoZWQo
dGhpcyk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCwgYXMgb3VyIEZyYW1lIG1pZ2h0
IGRlbGV0ZSBpdHNlbGYgYXMgc29vbiBhcyBpdCBkZXRhY2hlcwotICAgIC8vIHVzLiBIb3dldmVy
LCB0aGlzIHZpb2xhdGVzIE5vZGU6OmRldGFjaCgpIHN5bWFudGljcywgYXMgaXQncyBuZXZlcgor
ICAgIC8vIHVzLiBIb3dldmVyLCB0aGlzIHZpb2xhdGVzIE5vZGU6OmRldGFjaCgpIHNlbWFudGlj
cywgYXMgaXQncyBuZXZlcgogICAgIC8vIHBvc3NpYmxlIHRvIHJlLWF0dGFjaC4gRXZlbnR1YWxs
eSBEb2N1bWVudDo6ZGV0YWNoKCkgc2hvdWxkIGJlIHJlbmFtZWQsCiAgICAgLy8gb3IgdGhpcyBz
ZXR0aW5nIG9mIHRoZSBmcmFtZSB0byAwIGNvdWxkIGJlIG1hZGUgZXhwbGljaXQgaW4gZWFjaCBv
ZiB0aGUKICAgICAvLyBjYWxsZXJzIG9mIERvY3VtZW50OjpkZXRhY2goKS4KQEAgLTQ1NDYsNyAr
NDU0Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmV4ZWN1dGVTY3JpcHRTb29uKFNjcmlwdEUKICAgICAg
ICAgbV9leGVjdXRlU2NyaXB0U29vblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotLy8gRkYg
bWV0aG9kIGZvciBhY2Nlc3NpbmcgdGhlIHNlbGVjdGlvbiBhZGRlZCBmb3IgY29tcGF0YWJpbGl0
eS4KKy8vIEZGIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBzZWxlY3Rpb24gYWRkZWQgZm9yIGNv
bXBhdGliaWxpdHkuCiBET01TZWxlY3Rpb24qIERvY3VtZW50OjpnZXRTZWxlY3Rpb24oKSBjb25z
dAogewogICAgIHJldHVybiBmcmFtZSgpID8gZnJhbWUoKS0+ZG9tV2luZG93KCktPmdldFNlbGVj
dGlvbigpIDogMDsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjMsNyArODIzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlU29vbigpOwogICAgIHZvaWQgY2FuY2VsRm9jdXNB
cHBlYXJhbmNlVXBkYXRlKCk7CiAgICAgICAgIAotICAgIC8vIEZGIG1ldGhvZCBmb3IgYWNjZXNz
aW5nIHRoZSBzZWxlY3Rpb24gYWRkZWQgZm9yIGNvbXBhdGFiaWxpdHkuCisgICAgLy8gRkYgbWV0
aG9kIGZvciBhY2Nlc3NpbmcgdGhlIHNlbGVjdGlvbiBhZGRlZCBmb3IgY29tcGF0aWJpbGl0eS4K
ICAgICBET01TZWxlY3Rpb24qIGdldFNlbGVjdGlvbigpIGNvbnN0OwogICAgIAogICAgIC8vIEV4
dGVuc2lvbiBmb3IgbWFuaXB1bGF0aW5nIGNhbnZhcyBkcmF3aW5nIGNvbnRleHRzIGZvciB1c2Ug
aW4gQ1NTCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBFbGVtZW50
Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbAogICAgICAgICB9CiAgICAgfQogICAgIC8vIEZJ
WE1FOiBJJ20gbm90IHN1cmUgYWxsIGRldmljZXMgd2lsbCB3YW50IHRoaXMgb2ZmLCBidXQgdGhp
cyBpcwotICAgIC8vIGN1cnJlbnRseSB0dXJuZWQgb2ZmIGZvciBBbmRyaW9kLgorICAgIC8vIGN1
cnJlbnRseSB0dXJuZWQgb2ZmIGZvciBBbmRyb2lkLgogI2lmICFFTkFCTEUoRElSRUNUSU9OQUxf
UEFEX05BVklHQVRJT04pCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+
aXNXaWRnZXQoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKS0+c2Nyb2xs
UmVjdFRvVmlzaWJsZShnZXRSZWN0KCkpOwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNTM3OTMpCisrKyBX
ZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2VsZWN0KTsKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN1Ym1pdCk7CiAKLSAgICAvLyBUaGVzZSA0
IGF0dHJpYnV0ZSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMgYXJlIG92ZXJyaWRlZCBieSBIVE1M
Qm9keUVsZW1lbnQKKyAgICAvLyBUaGVzZSBmb3VyIGF0dHJpYnV0ZSBldmVudCBoYW5kbGVyIGF0
dHJpYnV0ZXMgYXJlIG92ZXJyaWRkZW4gYnkgSFRNTEJvZHlFbGVtZW50CiAgICAgLy8gYW5kIEhU
TUxGcmFtZVNldEVsZW1lbnQgdG8gZm9yd2FyZCB0byB0aGUgRE9NV2luZG93LgogICAgIERFRklO
RV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibHVyKTsKICAgICBERUZJTkVfVklS
VFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwpJbmRleDogV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnRDaGFubmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnRDaGFubmVsLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRD
aGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBDcmVhdGVzIGEgbmV3IHdyYXBwZXIgZm9yIHRoZSBwYXNzZWQgY2hh
bm5lbC4KICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjcmVh
dGUoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogCi0gICAgICAgIC8v
IEVudGFuZ2xlcyB0aGUgY2hhbm5lbCB3aXRoIGEgcG9ydCAoY2FsbGVkIHdoZW4gYSBwb3J0IGhh
cyBiZWVuIGNsb25lZCwgYWZ0ZXIgdGhlIGNsb25lIGhhcyBiZWVuIG1hcnNoYWxsZWQgdG8gaXRz
IG5ldyBvd25pbmcgdGhyZWFkIGFuZCBpcyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzKS4KKyAg
ICAgICAgLy8gRW50YW5nbGVzIHRoZSBjaGFubmVsIHdpdGggYSBwb3J0IChjYWxsZWQgd2hlbiBh
IHBvcnQgaGFzIGJlZW4gY2xvbmVkLCBhZnRlciB0aGUgY2xvbmUgaGFzIGJlZW4gbWFyc2hhbGVk
IHRvIGl0cyBuZXcgb3duaW5nIHRocmVhZCBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdl
cykuCiAgICAgICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIGVudGFuZ2xlbWVudCBmYWlsZWQg
YmVjYXVzZSB0aGUgcG9ydCB3YXMgY2xvc2VkLgogICAgICAgICBib29sIGVudGFuZ2xlSWZPcGVu
KE1lc3NhZ2VQb3J0Kik7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2
ZWRUYXJnZXQoKQogICAgIH0KIAogICAgIC8vIEFkanVzdCBsYXllclgvWSB0byBiZSByZWxhdGl2
ZSB0byB0aGUgbGF5ZXIuCi0gICAgLy8gRklYTUU6IFdlJ3JlIHByZXR0eSBzdXJlIHRoaXMgaXMg
dGhlIHdyb25nIGRlZmludGlvbiBvZiAibGF5ZXIuIgorICAgIC8vIEZJWE1FOiBXZSdyZSBwcmV0
dHkgc3VyZSB0aGlzIGlzIHRoZSB3cm9uZyBkZWZpbml0aW9uIG9mICJsYXllci4iCiAgICAgLy8g
T3VyIFJlbmRlckxheWVyIGlzIGEgbW9yZSBtb2Rlcm4gY29uY2VwdCwgYW5kIGxheWVyWC9ZIGlz
IHNvbWUKICAgICAvLyBvdGhlciBub3Rpb24gYWJvdXQgZ3JvdXBzIG9mIGVsZW1lbnRzIChsZWZ0
IG92ZXIgZnJvbSB0aGUgTmV0c2NhcGUgNCBkYXlzPyk7CiAgICAgLy8gd2Ugc2hvdWxkIHRlc3Qg
YW5kIGZpeCB0aGlzLgpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0OSw3ICs4NDksNyBAQCBib29sIE5vZGU6OmlzRm9j
dXNhYmxlKCkgY29uc3QKICAgICAgICAgQVNTRVJUKCFyZW5kZXJlcigpLT5uZWVkc0xheW91dCgp
KTsKICAgICBlbHNlCiAgICAgICAgIC8vIElmIHRoZSBub2RlIGlzIGluIGEgZGlzcGxheTpub25l
IHRyZWUgaXQgbWlnaHQgc2F5IGl0IG5lZWRzIHN0eWxlIHJlY2FsYyBidXQKLSAgICAgICAgLy8g
dGhlIHdob2xlIGRvY3VtZW50IGlzIGF0dWFsbHkgdXAgdG8gZGF0ZS4KKyAgICAgICAgLy8gdGhl
IHdob2xlIGRvY3VtZW50IGlzIGFjdHVhbGx5IHVwIHRvIGRhdGUuCiAgICAgICAgIEFTU0VSVCgh
ZG9jdW1lbnQoKS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpOwogICAgIAogICAgIC8vIEZJWE1F
OiBFdmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQgaGF2ZSBhIGNoaWxkIHRoYXQg
aXMgdmlzaWJsZS4KQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIGJvb2wgTm9kZTo6Y2FuU3RhcnRTZWxl
Y3Rpb24oKSBjb25zdAogTm9kZSogTm9kZTo6c2hhZG93QW5jZXN0b3JOb2RlKCkKIHsKICNpZiBF
TkFCTEUoU1ZHKQotICAgIC8vIFNWRyBlbGVtZW50cyBsaXZpbmcgaW4gYSBzaGFkb3cgdHJlZSBv
bmx5IG9jY291ciB3aGVuIDx1c2U+IGNyZWF0ZWQgdGhlbS4KKyAgICAvLyBTVkcgZWxlbWVudHMg
bGl2aW5nIGluIGEgc2hhZG93IHRyZWUgb25seSBvY2N1ciB3aGVuIDx1c2U+IGNyZWF0ZWQgdGhl
bS4KICAgICAvLyBGb3IgdGhlc2UgY2FzZXMgd2UgZG8gTk9UIHdhbnQgdG8gcmV0dXJuIHRoZSBz
aGFkb3dQYXJlbnROb2RlKCkgaGVyZQogICAgIC8vIGJ1dCB0aGUgYWN0dWFsIHNoYWRvdyB0cmVl
IGVsZW1lbnQgLSBhcyBtYWluIGRpZmZlcmVuY2UgdG8gdGhlIEhUTUwgZm9ybXMKICAgICAvLyBz
aGFkb3cgdHJlZSBjb25jZXB0LiAoVGhpcyBmdW5jdGlvbiBfY291bGRfIGJlIG1hZGUgdmlydHVh
bCAtIG9waW5pb25zPykKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Q29udGFpbmVyTm9kZSogYWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7CiAKICAgICAvLyBDYWxs
ZWQgYnkgdGhlIHBhcnNlciB3aGVuIHRoaXMgZWxlbWVudCdzIGNsb3NlIHRhZyBpcyByZWFjaGVk
LAotICAgIC8vIHNpZ25hbGxpbmcgdGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJlZW4gcGFyc2Vk
IGFuZCBhZGRlZC4KKyAgICAvLyBzaWduYWxpbmcgdGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJl
ZW4gcGFyc2VkIGFuZCBhZGRlZC4KICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgPGFwcGxldD4g
YW5kIDxvYmplY3Q+IGVsZW1lbnRzLCB3aGljaCBjYW4ndCBsYXkgdGhlbXNlbHZlcyBvdXQKICAg
ICAvLyB1bnRpbCB0aGV5IGtub3cgYWxsIG9mIHRoZWlyIG5lc3RlZCA8cGFyYW0+cy4gW1JhZGFy
IDM2MDMxOTEsIDQwNDA4NDhdLgogICAgIC8vIEFsc28gdXNlZCBmb3Igc2NyaXB0IGVsZW1lbnRz
IGFuZCBzb21lIFNWRyBlbGVtZW50cyBmb3Igc2ltaWxhciBwdXJwb3NlcywKSW5kZXg6IFdlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVk
aXRpbmdCb3VuZAogICAgICAgICAgICAgbGFzdE5vZGUgPSBjdXJyZW50Tm9kZTsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIElmIHdlJ3ZlIG1vdmVkIHRvIGEgcG9zaXRpb24gdGhhdCBpcyB2aXN1
YWxseSBkaXNpbmN0LCByZXR1cm4gdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24uIFRoZXJlIAorICAg
ICAgICAvLyBJZiB3ZSd2ZSBtb3ZlZCB0byBhIHBvc2l0aW9uIHRoYXQgaXMgdmlzdWFsbHkgZGlz
dGluY3QsIHJldHVybiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbi4gVGhlcmUgCiAgICAgICAgIC8v
IGlzIGNvZGUgYmVsb3cgdGhhdCB0ZXJtaW5hdGVzIGVhcmx5IGlmIHdlJ3JlICphYm91dCogdG8g
bW92ZSB0byBhIHZpc3VhbGx5IGRpc3RpbmN0IHBvc2l0aW9uLgogICAgICAgICBpZiAoZW5kc09m
Tm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlvbnMoY3VycmVudE5vZGUpICYmIGN1cnJlbnRO
b2RlICE9IGJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOwpJbmRleDog
V2ViQ29yZS9kb20vUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlv
bi5oCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhdEZpcnN0RWRpdGlu
Z1Bvc2l0aW9uRm9yTm9kZSgpIGNvbnN0OwogICAgIGJvb2wgYXRMYXN0RWRpdGluZ1Bvc2l0aW9u
Rm9yTm9kZSgpIGNvbnN0OwogCi0gICAgLy8gUmV0dW5zIHRydWUgaWYgdGhlIHZpc3VhbGx5IGVx
dWl2YWxlbnQgcG9zaXRpb25zIGFyb3VuZCBoYXZlIGRpZmZlcmVudCBlZGl0YWJpbGl0eQorICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbnMgYXJv
dW5kIGhhdmUgZGlmZmVyZW50IGVkaXRhYmlsaXR5CiAgICAgYm9vbCBhdEVkaXRpbmdCb3VuZGFy
eSgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgYXRTdGFydE9mVHJlZSgpIGNvbnN0OwpJbmRleDog
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1JhbmdlLmNw
cAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2RvbS9SYW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2Niw3ICs2NjYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFJhbmdl
Ojpwcm9jCiAgICAgfQogCiAgICAgLy8gQ29tcGxleCBjYXNlOiBTdGFydCBhbmQgZW5kIGNvbnRh
aW5lcnMgYXJlIGRpZmZlcmVudC4KLSAgICAvLyBUaGVyZSBhcmUgdGhyZWUgcG9zc2libGl0aWVz
IGhlcmU6CisgICAgLy8gVGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXMgaGVyZToKICAgICAv
LyAxLiBTdGFydCBjb250YWluZXIgPT0gY29tbW9uUm9vdCAoRW5kIGNvbnRhaW5lciBtdXN0IGJl
IGEgZGVzY2VuZGFudCkKICAgICAvLyAyLiBFbmQgY29udGFpbmVyID09IGNvbW1vblJvb3QgKFN0
YXJ0IGNvbnRhaW5lciBtdXN0IGJlIGEgZGVzY2VuZGFudCkKICAgICAvLyAzLiBOZWl0aGVyIGlz
IGNvbW1vblJvb3QsIHRoZXkgYXJlIGJvdGggZGVzY2VuZGFudHMKSW5kZXg6IFdlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojph
ZGRDU1NDb2xvcihNYXBwZWRBdAogICAgIC8vIG5vdCBzb21ldGhpbmcgdGhhdCBmaXRzIHRoZSBz
cGVjcy4KICAgICAKICAgICAvLyB3ZSdyZSBlbXVsYXRpbmcgSUVzIGNvbG9yIHBhcnNlciBoZXJl
LiBJdCBtYXBzIHRyYW5zcGFyZW50IHRvIGJsYWNrLCBvdGhlcndpc2UgaXQgdHJpZXMgdG8gYnVp
bGQgYSByZ2IgdmFsdWUKLSAgICAvLyBvdXQgb2YgZXZlcnlodGluZyB5b3UgcHV0IGluLiBUaGUg
YWxnb3JpdGhtIGlzIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQsIGJ1dCBzZWVtcyB0byB3b3Jr
IGZvciBhbGwgdGVzdCBjYXNlcyBJIGhhdmUuCisgICAgLy8gb3V0IG9mIGV2ZXJ5dGhpbmcgeW91
IHB1dCBpbi4gVGhlIGFsZ29yaXRobSBpcyBleHBlcmltZW50YWxseSBkZXRlcm1pbmVkLCBidXQg
c2VlbXMgdG8gd29yayBmb3IgYWxsIHRlc3QgY2FzZXMgSSBoYXZlLgogICAgIAogICAgIC8vIHRo
ZSBsZW5ndGggb2YgdGhlIGNvbG9yIHZhbHVlIGlzIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQKICAg
ICAvLyBtdWx0aXBsZSBvZiAzLiBlYWNoIHBhcnQgb2YgdGhlIHJnYiB0cmlwbGUgdGhlbiBnZXRz
IG9uZSB0aGlyZApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZp
c2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFN0eWxlQ2hhbmdlOjpyZWNvbmNp
bGVUZXh0RGVjb3JhdGlvCiAgICAgICAgIHRleHREZWNvcmF0aW9uID0gdGV4dERlY29yYXRpb25z
SW5FZmZlY3Q7CiAgICAgfQogCi0gICAgLy8gSWYgdGV4dC1kZWNyYXRpb24gaXMgc2V0IHRvICJu
b25lIiwgcmVtb3ZlIHRoZSBwcm9wZXJ0eSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWRkIHJl
ZHVuZGFudCAidGV4dC1kZWNvcmF0aW9uOiBub25lIi4KKyAgICAvLyBJZiB0ZXh0LWRlY29yYXRp
b24gaXMgc2V0IHRvICJub25lIiwgcmVtb3ZlIHRoZSBwcm9wZXJ0eSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gYWRkIHJlZHVuZGFudCAidGV4dC1kZWNvcmF0aW9uOiBub25lIi4KICAgICBpZiAo
dGV4dERlY29yYXRpb24gJiYgIXRleHREZWNvcmF0aW9uLT5pc1ZhbHVlTGlzdCgpKQogICAgICAg
ICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiB9CkBA
IC0yNTAsNyArMjUwLDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMoQ1NT
TQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9hcHBseUZvbnRT
aXplID0gIjciOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gSHVnZSBxdWlyayBpbiBN
aWNyb3NmdCBFbnRvdXJhZ2UgaXMgdGhhdCB0aGV5IHVuZGVyc3RhbmQgQ1NTIGZvbnQtc2l6ZSwg
YnV0IGFsc28gd3JpdGUgCisgICAgICAgICAgICAvLyBIdWdlIHF1aXJrIGluIE1pY3Jvc29mdCBF
bnRvdXJhZ2UgaXMgdGhhdCB0aGV5IHVuZGVyc3RhbmQgQ1NTIGZvbnQtc2l6ZSwgYnV0IGFsc28g
d3JpdGUgCiAgICAgICAgICAgICAvLyBvdXQgbGVnYWN5IDEtNyB2YWx1ZXMgaW4gZm9udCB0YWdz
IChJIGd1ZXNzIGZvciBtYWlsZXJzIHRoYXQgYXJlIG5vdCBDU1Mtc2F2dnkgYXQgYWxsLCAKICAg
ICAgICAgICAgIC8vIGxpa2UgRXVkb3JhKS4gWWVzLCB0aGV5IHdyaXRlIG91dCAqYm90aCouIFdl
IG5lZWQgdG8gd3JpdGUgb3V0IGJvdGggYXMgd2VsbC4KICAgICAgICAgfQpAQCAtNDUxLDggKzQ1
MSw4IEBAIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGUKIAogdm9pZCBw
cmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBl
ZGl0aW5nU3R5bGUsIFBvc2l0aW9uIHBvcykKIHsKLSAgICAvLyBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6aGFuZGxlU3R5bGVTcGFucygpIHJlcXVpZXJzIHRoYXQgdGhpcyBmdW5jdGlvbiBvbmx5
IHJlbW92ZXMgdGhlIGVkaXRpbmcgc3R5bGUuCi0gICAgLy8gSWYgdGhpcyBmdW5jdGlvbiB3YXMg
bW9kaWZpZWQgaW4gdGhlIGZ1dHVyZXRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMs
IHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQorICAgIC8vIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0
aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KKyAgICAvLyBJZiB0aGlzIGZ1bmN0
aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHBy
b3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdo
aWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2Fs
bGVkLgogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBlZGl0
aW5nU3R5bGVBdFBvc2l0aW9uKHBvcyk7CiAgICAgc3R5bGUtPmRpZmYoZWRpdGluZ1N0eWxlKTsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBib29sIGlzRGVsZXRhYmxl
RWxlbWVudChjb25zdCBOb2QKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQo
KSB8fCAhbm9kZS0+aW5Eb2N1bWVudCgpIHx8ICFub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBJbiBnZW5lcmFsIHdlIHdhbnQgdG8gb25s
eSBkcmF3IHRoZSBVSSBhcnJvdW5kIG9iamVjdCBvZiBhIGNlcnRhaW4gYXJlYSwgYnV0IHdlIHN0
aWxsIGtlZXAgdGhlIG1pbiB3aWR0aC9oZWlnaHQgdG8KKyAgICAvLyBJbiBnZW5lcmFsIHdlIHdh
bnQgdG8gb25seSBkcmF3IHRoZSBVSSBhcm91bmQgb2JqZWN0IG9mIGEgY2VydGFpbiBhcmVhLCBi
dXQgd2Ugc3RpbGwga2VlcCB0aGUgbWluIHdpZHRoL2hlaWdodCB0bwogICAgIC8vIG1ha2Ugc3Vy
ZSB3ZSBkb24ndCBlbmQgdXAgd2l0aCB2ZXJ5IHRoaW4gb3IgdmVyeSBzaG9ydCBlbGVtZW50cyBn
ZXR0aW5nIHRoZSBVSS4KICAgICBjb25zdCBpbnQgbWluaW11bUFyZWEgPSAyNTAwOwogICAgIGNv
bnN0IGludCBtaW5pbXVtV2lkdGggPSA0ODsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIx
LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUwogICAgIGVsc2Ug
aWYgKGVuZC5ub2RlKCktPmhhc1RhZ05hbWUoaHJUYWcpKQogICAgICAgICBlbmQgPSBQb3NpdGlv
bihlbmQubm9kZSgpLCAxKTsKICAgICAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHVzZWQg
c28gdGhhdCBtb3ZlUGFyYWdyYXBocyBjYW4gYXZvaWQgdGhlIGJ1Z3MgaW4gc3BlY2lhbCBlbGVt
ZW50IGV4cGFuaW9uLgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgdXNlZCBzbyB0aGF0IG1v
dmVQYXJhZ3JhcGhzIGNhbiBhdm9pZCB0aGUgYnVncyBpbiBzcGVjaWFsIGVsZW1lbnQgZXhwYW5z
aW9uLgogICAgIGlmICghbV9leHBhbmRGb3JTcGVjaWFsRWxlbWVudHMpCiAgICAgICAgIHJldHVy
bjsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAyLDcgKzE1MDIsNyBAQCB2
b2lkIEVkaXRvcjo6bGVhcm5TcGVsbGluZygpCiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCB0aGlzIG9uIHRo
ZSBNYWMsIGFuZCBpdCBzaG91bGQgcmVtb3ZlIG1pc3BwZWxsaW5nIG1hcmtlcnMgYXJvdW5kIHRo
ZSAKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCB0aGlzIG9uIHRoZSBNYWMsIGFuZCBpdCBz
aG91bGQgcmVtb3ZlIG1pc3NwZWxsaW5nIG1hcmtlcnMgYXJvdW5kIHRoZSAKICAgICAvLyBsZWFy
bmVkIHdvcmQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTM5NjA3Mj4uCiAKICAgICBTdHJpbmcgdGV4
dCA9IGZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcwkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3ICs2
MzYsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gCiAKICAgICBf
Zm9ybWF0OiBmdW5jdGlvbihwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBub2Rl
IGlzIHVzZWQgbGlrZSBhIEJ1aWxkZXIuIFZhbHVlcyBhcmUgY29udGludHVhbGx5IGFwcGVuZGVk
IG9udG8gaXQuCisgICAgICAgIC8vIFRoaXMgbm9kZSBpcyB1c2VkIGxpa2UgYSBCdWlsZGVyLiBW
YWx1ZXMgYXJlIGNvbnRpbnVhbGx5IGFwcGVuZGVkIG9udG8gaXQuCiAgICAgICAgIHZhciBmb3Jt
YXR0ZWRSZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIGlm
ICghcGFyYW1ldGVycy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkUmVzdWx0
OwpAQCAtNjg5LDcgKzY4OSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5
cGUgPSAKICAgICAgICAgZm9ybWF0dGVycy5vID0gY29uc29sZUZvcm1hdFdyYXBwZXIoKTsKICAg
ICAgICAgLy8gRmlyZWJ1ZyBhbGxvd3MgYm90aCAlaSBhbmQgJWQgZm9yIGZvcm1hdHRpbmcgaW50
ZWdlcnMuCiAgICAgICAgIGZvcm1hdHRlcnMuaSA9IGZvcm1hdHRlcnMuZDsKLSAgICAgICAgLy8g
U3VwcG9ydCAlTyB0byBmb3JjZSBvYmplY3QgZm9ybWF0aW5nLCBpbnN0ZWFkIG9mIHRoZSB0eXBl
LWJhc2VkICVvIGZvcm1hdHRpbmcuCisgICAgICAgIC8vIFN1cHBvcnQgJU8gdG8gZm9yY2Ugb2Jq
ZWN0IGZvcm1hdHRpbmcsIGluc3RlYWQgb2YgdGhlIHR5cGUtYmFzZWQgJW8gZm9ybWF0dGluZy4K
ICAgICAgICAgZm9ybWF0dGVycy5PID0gY29uc29sZUZvcm1hdFdyYXBwZXIodHJ1ZSk7CiAKICAg
ICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiA1Mzc5
MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDcg
KzI5NSw3IEBAIHZvaWQgQ2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcygpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBEZXN0cm95IG91ciBkZWNvZGVkIGRhdGEuIFRo
aXMgd2lsbCByZW1vdmUgdXMgZnJvbSAKLSAgICAgICAgICAgIC8vIG1fbGl2ZURlY29kZWRSZXNv
dXJjZXMsIGFuZCBwb3NzaWJseSBtb3ZlIHVzIHRvIGEgZGlmZmVybnQgTFJVIAorICAgICAgICAg
ICAgLy8gbV9saXZlRGVjb2RlZFJlc291cmNlcywgYW5kIHBvc3NpYmx5IG1vdmUgdXMgdG8gYSBk
aWZmZXJlbnQgTFJVIAogICAgICAgICAgICAgLy8gbGlzdCBpbiBtX2FsbFJlc291cmNlcy4KICAg
ICAgICAgICAgIGN1cnJlbnQtPmRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogCkBAIC0zNDcsNyArMzQ3
LDcgQEAgdm9pZCBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKCkKICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0OwogICAg
ICAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNDbGllbnRzKCkgJiYgIWN1cnJlbnQtPmlzUHJlbG9h
ZGVkKCkgJiYgY3VycmVudC0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAgICAgIC8vIERlc3Ry
b3kgb3VyIGRlY29kZWQgZGF0YS4gVGhpcyB3aWxsIHJlbW92ZSB1cyBmcm9tIAotICAgICAgICAg
ICAgICAgIC8vIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMsIGFuZCBwb3NzaWJseSBtb3ZlIHVzIHRv
IGEgZGlmZmVybnQgCisgICAgICAgICAgICAgICAgLy8gbV9saXZlRGVjb2RlZFJlc291cmNlcywg
YW5kIHBvc3NpYmx5IG1vdmUgdXMgdG8gYSBkaWZmZXJlbnQgCiAgICAgICAgICAgICAgICAgLy8g
TFJVIGxpc3QgaW4gbV9hbGxSZXNvdXJjZXMuCiAgICAgICAgICAgICAgICAgY3VycmVudC0+ZGVz
dHJveURlY29kZWREYXRhKCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmgJKHJldmlzaW9u
IDUzNzkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkw
LDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9kZWFkU2l6ZTsgLy8gVGhlIG51
bWJlciBvZiBieXRlcyBjdXJyZW50bHkgY29uc3VtZWQgYnkgImRlYWQiIHJlc291cmNlcyBpbiB0
aGUgY2FjaGUuCiAKICAgICAvLyBTaXplLWFkanVzdGVkIGFuZCBwb3B1bGFyaXR5LWF3YXJlIExS
VSBsaXN0IGNvbGxlY3Rpb24gZm9yIGNhY2hlIG9iamVjdHMuICBUaGlzIGNvbGxlY3Rpb24gY2Fu
IGhvbGQKLSAgICAvLyBtb3JlIHJlc291cmNlcyB0aGFuIHRoZSBjYWNoZWQgcmVzb3VyY2UgbWFw
LCBzaW5jZSBpdCBjYW4gYWxzbyBob2xkICJzdGFsZSIgbXVpbHRpcGxlIHZlcnNpb25zIG9mIG9i
amVjdHMgdGhhdCBhcmUKKyAgICAvLyBtb3JlIHJlc291cmNlcyB0aGFuIHRoZSBjYWNoZWQgcmVz
b3VyY2UgbWFwLCBzaW5jZSBpdCBjYW4gYWxzbyBob2xkICJzdGFsZSIgbXVsdGlwbGUgdmVyc2lv
bnMgb2Ygb2JqZWN0cyB0aGF0IGFyZQogICAgIC8vIHdhaXRpbmcgdG8gZGllIHdoZW4gdGhlIGNs
aWVudHMgcmVmZXJlbmNpbmcgdGhlbSBnbyBhd2F5LgogICAgIFZlY3RvcjxMUlVMaXN0LCAzMj4g
bV9hbGxSZXNvdXJjZXM7CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6Om1ha2VQ
dXJnZWFibGUoYm9vbCAKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICAvLyBTaG91bGQgbm90IG1ha2UgYnVmZmVyIHB1cmdl
YWJsZSBpZiBpdCBoYXMgcmVmcyBvdGhlbiB0aGFuIHRoaXMgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0
d28gY29waWVzLgorICAgICAgICAvLyBTaG91bGQgbm90IG1ha2UgYnVmZmVyIHB1cmdlYWJsZSBp
ZiBpdCBoYXMgcmVmcyBvdGhlciB0aGFuIHRoaXMgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0d28gY29w
aWVzLgogICAgICAgICBpZiAoIW1fZGF0YS0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lv
biA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgLy8gTGlzdCBvZiBhY2NlcHRhYmxl
IE1JTUUgdHlwZXMgc2VwZXJhdGVkIGJ5ICIsIi4KKyAgICAvLyBMaXN0IG9mIGFjY2VwdGFibGUg
TUlNRSB0eXBlcyBzZXBhcmF0ZWQgYnkgIiwiLgogICAgIC8vIEEgTUlNRSB0eXBlIG1heSBjb250
YWluIGEgd2lsZGNhcmQsIGUuZy4gInRleHQvKiIuCiAgICAgU3RyaW5nIGFjY2VwdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZXB0OyB9CiAgICAgdm9pZCBzZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBh
Y2NlcHQpIHsgbV9hY2NlcHQgPSBhY2NlcHQ7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZFJlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhY2hlZFJlc291cmNl
SGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4gZ2V0KCkgIT0gby5nZXQoKTsgfQogICAgIH07
CiAKLSAgICAvLyBEb24ndCBpbmxpbmUgZm9yIHdpbnNjdyBjb21waWxlciB0byBwcmV2ZW50IHRo
ZSBjb21waWxlciBhZ3Jlc3NpdmVseSByZXNvbHZpbmcKKyAgICAvLyBEb24ndCBpbmxpbmUgZm9y
IHdpbnNjdyBjb21waWxlciB0byBwcmV2ZW50IHRoZSBjb21waWxlciBhZ2dyZXNzaXZlbHkgcmVz
b2x2aW5nCiAgICAgLy8gdGhlIGJhc2UgY2xhc3Mgb2YgUiogd2hlbiBDYWNoZWRSZXNvdXJjZUhh
bmRsZXI8VD4oUiopIGlzIGlubGluZWQuICBUaGUgYnVnIGlzCiAgICAgLy8gcmVwb3J0ZWQgYXQ6
IGh0dHBzOi8veGRhYnVnMDAxLmV4dC5ub2tpYS5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lk
PTk4MTIuCiAgICAgdGVtcGxhdGUgPGNsYXNzIFI+CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdXJsRm9ySGlz
dG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwogCi0gICAgICAgIC8vIFRoZXNlIGFjY2Vzc29y
cyBhY2NvbW9kYXRlIFdlYkNvcmUncyBzb21ld2hhdCBmaWNrbGUgY3VzdG9tIG9mIGNyZWF0aW5n
IGhpc3RvcnkKKyAgICAgICAgLy8gVGhlc2UgYWNjZXNzb3JzIGFjY29tbW9kYXRlIFdlYkNvcmUn
cyBzb21ld2hhdCBmaWNrbGUgY3VzdG9tIG9mIGNyZWF0aW5nIGhpc3RvcnkKICAgICAgICAgLy8g
aXRlbXMgZm9yIHJlZGlyZWN0cywgYnV0IG9ubHkgc29tZXRpbWVzLiBGb3IgInNvdXJjZSIgYW5k
ICJkZXN0aW5hdGlvbiIsCiAgICAgICAgIC8vIHRoZXNlIGFjY2Vzc29ycyByZXR1cm4gdGhlIFVS
TCB0aGF0IHdvdWxkIGhhdmUgYmVlbiB1c2VkIGlmIGEgaGlzdG9yeQogICAgICAgICAvLyBpdGVt
IHdlcmUgY3JlYXRlZC4gVGhpcyBhbGxvd3MgV2ViS2l0IHRvIGxpbmsgaGlzdG9yeSBpdGVtcyBy
ZWZsZWN0aW5nCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE4NSw3ICsxMTg1LDcgQEAgRlRQRW50cnlUeXBlIHBhcnNlT25lRlRQ
TGluZShjb25zdCBjaGFyKgogICAgICAgIAogICAgICAgICB9IC8qIHRpbWUveWVhciAqLwogICAg
ICAgICAKLSAgICAgICAgLy8gdGhlcmUgaXMgZXhhY2x5IDEgc3BhY2UgYmV0d2VlbiBmaWxlbmFt
ZSBhbmQgcHJldmlvdXMgdG9rZW4gaW4gYWxsCisgICAgICAgIC8vIHRoZXJlIGlzIGV4YWN0bHkg
MSBzcGFjZSBiZXR3ZWVuIGZpbGVuYW1lIGFuZCBwcmV2aW91cyB0b2tlbiBpbiBhbGwKICAgICAg
ICAgLy8gb3V0cHV0cyBleGNlcHQgb2xkIEhlbGxzb2Z0CiAgICAgICAgIGlmICghaXNPbGRIZWxs
c29mdCkKICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbdG9rbWFya2VyKzNdICsg
dG9rbGVuW3Rva21hcmtlciszXSArIDE7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Bl
bigpCiAgICAgCiAgICAgLy8gUHJldmVudCB3aW5kb3cub3Blbih1cmwpIC0tIGVnIHdpbmRvdy5v
cGVuKCJhYm91dDpibGFuayIpIC0tIGZyb20gYmxvd2luZyBhd2F5IHJlc3VsdHMKICAgICAvLyBm
cm9tIGEgc3Vic2VxdWVudCB3aW5kb3cuZG9jdW1lbnQub3BlbiAvIHdpbmRvdy5kb2N1bWVudC53
cml0ZSBjYWxsLiAKLSAgICAvLyBDYW5jZWxsaW5nIHJlZGlyZWN0aW9uIGhlcmUgd29ya3MgZm9y
IGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCisgICAgLy8gQ2FuY2VsaW5nIHJlZGly
ZWN0aW9uIGhlcmUgd29ya3MgZm9yIGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCiAg
ICAgLy8gaW1wbGljaXRseSBwcmVjZWRlcyBkb2N1bWVudC53cml0ZS4KICAgICBtX2ZyYW1lLT5y
ZWRpcmVjdFNjaGVkdWxlcigpLT5jYW5jZWwoKTsgCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpICE9IGJsYW5rVVJMKCkpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZENhbmNlbChjb25zdCBSZXMKICAgICAvLyBsb2FkIGl0c2VsZiB0byBiZSBjYW5jZWxsZWQgKHdo
aWNoIGNvdWxkIGhhcHBlbiB3aXRoIGEgamF2YXNjcmlwdCB0aGF0IAogICAgIC8vIGNoYW5nZXMg
dGhlIHdpbmRvdyBsb2NhdGlvbikuIFRoaXMgaXMgdXNlZCB0byBwcmV2ZW50IGJvdGggdGhlIGJv
ZHkKICAgICAvLyBvZiB0aGlzIG1ldGhvZCBhbmQgdGhlIGJvZHkgb2YgY29ubmVjdGlvbkRpZEZp
bmlzaExvYWRpbmc6IHJ1bm5pbmcKLSAgICAvLyBmb3IgYSBzaW5nbGUgZGVsZWdhdGUuIENhbmNl
bGxpbmcgd2lucy4KKyAgICAvLyBmb3IgYSBzaW5nbGUgZGVsZWdhdGUuIENhbmNlbGluZyB3aW5z
LgogICAgIG1fY2FuY2VsbGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAobV9oYW5kbGUpCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA1Mzc5MykK
KysrIFdlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIGFsbCBjYXNlcy4gQWxsIHRhc2tzIHBvc3RlZCBmcm9tIHRoZSB3b3JrZXIgY29udGV4
dCdzIHRocmVhZCBhcmUgb2sgYmVjYXVzZQogICAgICAgICAvLyAgICB0aGUgbGFzdCB0YXNrIHBv
c3RlZCBhbHdheXMgaXMgIm1haW5UaHJlYWREZXN0cm95Iiwgc28gTWFpblRocmVhZEJyaWRnZSBp
cwotICAgICAgICAvLyAgICBhcm91bmQgZm9yIGFsbCB0YXNrcyB0aGF0IHVzZSBpdCBvbiB0aGUg
bWlhbiB0aHJlYWQuCisgICAgICAgIC8vICAgIGFyb3VuZCBmb3IgYWxsIHRhc2tzIHRoYXQgdXNl
IGl0IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgLy8KICAgICAgICAgLy8gY2FzZSAxLiB3
b3JrZXIudGVybWluYXRlIGlzIGNhbGxlZC4KICAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCBu
byBtb3JlIHRhc2tzIGFyZSBwb3N0ZWQgZnJvbSB0aGUgd29ya2VyIG9iamVjdCdzIHRocmVhZCB0
byB0aGUgd29ya2VyCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDA1LDcgKzQwNSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNl
TmUKICAgICAgICAgdG90YWxBdmFpbGFibGVTaXplID0gKG1fbWF4aW11bVNpemUgLSBjdXJyZW50
U2l6ZSkgKyBtX2RhdGFiYXNlLmZyZWVTcGFjZVNpemUoKTsKICAgICB9CiAKLSAgICAvLyBUaGUg
c3BhY2UgbmVlZGVkIHRvIGJlIGZyZWVkIGluIG9yZGVyIHRvIGFjY29tb2RhdGUgdGhlIGZhaWxl
ZCBjYWNoZSBpcworICAgIC8vIFRoZSBzcGFjZSBuZWVkZWQgdG8gYmUgZnJlZWQgaW4gb3JkZXIg
dG8gYWNjb21tb2RhdGUgdGhlIGZhaWxlZCBjYWNoZSBpcwogICAgIC8vIHRoZSBzaXplIG9mIHRo
ZSBmYWlsZWQgY2FjaGUgbWludXMgYW55IGFscmVhZHkgYXZhaWxhYmxlIGZyZWUgc3BhY2UuCiAg
ICAgc3BhY2VOZWVkZWQgPSBjYWNoZVRvU2F2ZSAtIHRvdGFsQXZhaWxhYmxlU2l6ZTsKICAgICAv
LyBUaGUgc3BhY2UgbmVlZGVkIHZhbHVlIG11c3QgYmUgcG9zaXRpdmUgKG9yIGVsc2UgdGhlIHRv
dGFsIGFscmVhZHkKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVz
ZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblByZXNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZW51bSBQZXJtaXNzaW9uIHsgCiAgICAgICAgICAg
ICBQZXJtaXNzaW9uQWxsb3dlZCwgICAgIC8vIFVzZXIgaGFzIGFsbG93ZWQgbm90aWZpY2F0aW9u
cwogICAgICAgICAgICAgUGVybWlzc2lvbk5vdEFsbG93ZWQsICAvLyBVc2VyIGhhcyBub3QgeWV0
IGFsbG93ZWQKLSAgICAgICAgICAgIFBlcm1pc3Npb25EZW5pZWQgICAgICAgLy8gVXNlciBoYXMg
ZXhwbGljdGx5IGRlbmllZCBwZXJtaXNzaW9uCisgICAgICAgICAgICBQZXJtaXNzaW9uRGVuaWVk
ICAgICAgIC8vIFVzZXIgaGFzIGV4cGxpY2l0bHkgZGVuaWVkIHBlcm1pc3Npb24KICAgICAgICAg
fTsKIAogICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QcmVzZW50ZXIoKSB7fQpJbmRleDog
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw3ICs0ODQsNyBAQCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBBbmltYXRpb25Db250cm9sCiAgICAgbV9kYXRhLT51cGRhdGVBbmltYXRpb25UaW1l
cigpOwogCiAgICAgaWYgKGJsZW5kZWRTdHlsZSAhPSBuZXdTdHlsZSkgewotICAgICAgICAvLyBJ
ZiB0aGUgYW5pbWF0aW9ucy90cmFuc2l0aW9ucyBjaGFuZ2Ugb3BhY2l0eSBvciB0cmFuc2Zvcm0s
IHdlIG5lZWVkIHRvIHVwZGF0ZQorICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9ucy90cmFuc2l0
aW9ucyBjaGFuZ2Ugb3BhY2l0eSBvciB0cmFuc2Zvcm0sIHdlIG5lZWQgdG8gdXBkYXRlCiAgICAg
ICAgIC8vIHRoZSBzdHlsZSB0byBpbXBvc2UgdGhlIHN0YWNraW5nIHJ1bGVzLiBOb3RlIHRoYXQg
dGhpcyBpcyBhbHNvCiAgICAgICAgIC8vIGRvbmUgaW4gQ1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0
UmVuZGVyU3R5bGUoKS4KICAgICAgICAgaWYgKGJsZW5kZWRTdHlsZS0+aGFzQXV0b1pJbmRleCgp
ICYmIChibGVuZGVkU3R5bGUtPm9wYWNpdHkoKSA8IDEuMGYgfHwgYmxlbmRlZFN0eWxlLT5oYXNU
cmFuc2Zvcm0oKSkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAkocmV2aXNpb24gNTM3OTMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNDb2xvblNsYXNoU2xhCiAKIHN0YXRp
YyBpbmxpbmUgdm9pZCBjbGVhblBhdGgoVmVjdG9yPFVDaGFyLCA1MTI+JiBwYXRoKQogewotICAg
IC8vIEZJWE1FOiBTaG9sZCBub3QgZG8gdGhpcyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9yIHBhcnQu
CisgICAgLy8gRklYTUU6IFNob3VsZCBub3QgZG8gdGhpcyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9y
IHBhcnQuCiAgICAgaW50IHBvczsKICAgICB3aGlsZSAoKHBvcyA9IGZpbmRTbGFzaERvdERvdFNs
YXNoKHBhdGguZGF0YSgpLCBwYXRoLnNpemUoKSkpICE9IC0xKSB7CiAgICAgICAgIGludCBwcmV2
ID0gcmV2ZXJzZUZpbmQocGF0aC5kYXRhKCksIHBhdGguc2l6ZSgpLCAnLycsIHBvcyAtIDEpOwpA
QCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW5QYXRoKFZlY3RvcjxVQ2hh
CiAgICAgICAgICAgICBwYXRoLnJlbW92ZShwcmV2LCBwb3MgLSBwcmV2ICsgMyk7CiAgICAgfQog
Ci0gICAgLy8gRklYTUU6IFNob2xkIG5vdCBkbyB0aGlzIGluIHRoZSBxdWVyeSBwYXJ0LgorICAg
IC8vIEZJWE1FOiBTaG91bGQgbm90IGRvIHRoaXMgaW4gdGhlIHF1ZXJ5IHBhcnQuCiAgICAgLy8g
U2V0IHJlZlBvcyB0byAtMiB0byBtZWFuICJJIGhhdmVuJ3QgbG9va2VkIGZvciB0aGUgYW5jaG9y
IHlldCIuCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB3YXN0ZSBhIGZ1bmN0aW9uIGNhbGwgb24g
dGhlIHNlYXJjaCBmb3IgdGhlIHRoZSBhbmNob3IKICAgICAvLyBpbiB0aGUgdmFzdCBtYWpvcml0
eSBvZiBjYXNlcyB3aGVyZSB0aGVyZSBpcyBubyAiLy8iIGluIHRoZSBwYXRoLgpAQCAtMTEwLDcg
KzExMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhblBhdGgoVmVjdG9yPFVDaGEKICAgICAg
ICAgICAgIHBvcyArPSAyOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTaG9sZCBub3QgZG8gdGhp
cyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9yIHBhcnQuCisgICAgLy8gRklYTUU6IFNob3VsZCBub3Qg
ZG8gdGhpcyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9yIHBhcnQuCiAgICAgd2hpbGUgKChwb3MgPSBm
aW5kU2xhc2hEb3RTbGFzaChwYXRoLmRhdGEoKSwgcGF0aC5zaXplKCkpKSAhPSAtMSkKICAgICAg
ICAgcGF0aC5yZW1vdmUocG9zLCAyKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbGN1bGF0
ZURyYXdpbmdNb2RlKAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gU2V0dGlu
ZyBtb2RlIHRvIGtDR1BhdGhTdHJva2UgZXZlbiBpZiBzaG91bGRTdHJva2UgaXMgZmFsc2UuIElu
IHRoYXQgY2FzZSwgd2UgcmV0dXJuIGZhbHNlIGFuZCBtb2RlIHdpbGwgbm90IGJlIHVzZWQsCi0g
ICAgICAgIC8vIGJ1dCB0aGUgY29tcGlsZXIgd2lsbCBub3QgY29tcGFpbiBhYm91dCBhbiB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLgorICAgICAgICAvLyBidXQgdGhlIGNvbXBpbGVyIHdpbGwgbm90
IGNvbXBsYWluIGFib3V0IGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCiAgICAgICAgIG1vZGUg
PSBrQ0dQYXRoU3Ryb2tlOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcg
QEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dAogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgotICAgIC8vIElOVF9NQVggaXMgYWxtb3N0IGNv
cnJlY3QsIGJ1dCB0aGVyZSBzZWVtcyB0byBiZSBzb21lIG51bWJlciB3cmFwcGluZyBvY2N1cmlu
ZyBtYWtpbmcgdGhlIGZpbGwKKyAgICAvLyBJTlRfTUFYIGlzIGFsbW9zdCBjb3JyZWN0LCBidXQg
dGhlcmUgc2VlbXMgdG8gYmUgc29tZSBudW1iZXIgd3JhcHBpbmcgb2NjdXJyaW5nIG1ha2luZyB0
aGUgZmlsbAogICAgIC8vIHBhdHRlcm4gaXMgbm90IGZpbGxlZCBjb3JyZWN0bHkuCiAgICAgLy8g
VG8gbWFrZSBlcnJvciBvZiBmbG9hdGluZyBwb2ludCBsZXNzIHRoYW4gMC41LCB3ZSB1c2UgdGhl
IGhhbGYgb2YgdGhlIG51bWJlciBvZiBtYW50aXNzYSBvZiBmbG9hdCAoMSA8PCAyMikuCiAgICAg
Q0dGbG9hdCB4U3RlcCA9IG1fcmVwZWF0WCA/IHRpbGVSZWN0LndpZHRoKCkgOiAoMSA8PCAyMik7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDcgKzExMyw3IEBAIGludCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBv
c2kKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGhpdEdseXBoRW5k
ID0gbWF4PENGSW5kZXg+KGhpdEdseXBoU3RhcnQsIGogPiAwID8gY29tcGxleFRleHRSdW4uaW5k
ZXhBdChqIC0gMSkgOiBjb21wbGV4VGV4dFJ1bi5zdHJpbmdMZW5ndGgoKSk7CiAKLSAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBkaXZpZGluZyB0aGUgZ2x5cGgncyBhZHZhbmNl
IGVxdWlhbGx5IGJldHdlZW4gdGhlIGNoYXJhY3RlcnMsIHRoaXMKKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogSW5zdGVhZCBvZiBkaXZpZGluZyB0aGUgZ2x5cGgncyBhZHZhbmNlIGVxdWFsbHkg
YmV0d2VlbiB0aGUgY2hhcmFjdGVycywgdGhpcwogICAgICAgICAgICAgICAgIC8vIGNvdWxkIHVz
ZSB0aGUgZ2x5cGgncyAibGlnYXR1cmUgY2FyZXRzIi4gSG93ZXZlciwgdGhlcmUgaXMgbm8gQ29y
ZSBUZXh0IEFQSSB0byBnZXQgdGhlCiAgICAgICAgICAgICAgICAgLy8gbGlnYXR1cmUgY2FyZXRz
LgogICAgICAgICAgICAgICAgIENGSW5kZXggaGl0SW5kZXggPSBoaXRHbHlwaFN0YXJ0ICsgKGhp
dEdseXBoRW5kIC0gaGl0R2x5cGhTdGFydCkgKiAobV9ydW4ubHRyKCkgPyB4IC8gYWRqdXN0ZWRB
ZHZhbmNlIDogMSAtIHggLyBhZGp1c3RlZEFkdmFuY2UpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDUzNzkzKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwYWludExh
eWVyRGlydHlSZWN0cygpOwogCiAgICAgUmV0YWluUHRyPFdlYkxheWVyPiBtX2xheWVyOyAgICAg
ICAgICAgIC8vIFRoZSBtYWluIGxheWVyCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3RydWN0
dXJhbExheWVyOyAgIC8vIEEgbGF5ZXIgdXNlZCBmb3Igc3RydWN0dWFsIHJlYXNvbnMsIGxpa2Ug
cHJlc2VydmVzLTNkIG9yIHJlcGxpY2EtZmxhdHRlbmluZy4gSXMgdGhlIHBhcmVudCBvZiBtX2xh
eWVyLgorICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N0cnVjdHVyYWxMYXllcjsgICAvLyBBIGxh
eWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVw
bGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCiAgICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgICAgIC8vIEEgbGF5ZXIgdXNlZCBmb3IgaW5uZXIg
Y29udGVudCwgbGlrZSBpbWFnZSBhbmQgdmlkZW8KIAogICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xv
bmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0JKHJldmlzaW9u
IDUzNzkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNB
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6ZW5zdXJlU3RydWN0dXJhbExhCiB7CiAgICAgaWYgKHB1cnBvc2UgPT0gTm9TdHJ1Y3R1
cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAg
ICAvLyBSZWxhY2UgdGhlIHRyYW5zZm9ybUxheWVyIGluIHRoZSBwYXJlbnQgd2l0aCB0aGlzIGxh
eWVyLgorICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBh
cmVudCB3aXRoIHRoaXMgbGF5ZXIuCiAgICAgICAgICAgICBbbV9sYXllci5nZXQoKSByZW1vdmVG
cm9tU3VwZXJsYXllcl07CiAgICAgICAgICAgICBbW21fc3RydWN0dXJhbExheWVyLmdldCgpIHN1
cGVybGF5ZXJdIHJlcGxhY2VTdWJsYXllcjptX3N0cnVjdHVyYWxMYXllci5nZXQoKSB3aXRoOm1f
bGF5ZXIuZ2V0KCldOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkocmV2aXNpb24gNTM3OTMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpkb1NlZWsoKSAKICAgICAgICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRSYXRlOjBdOwogICAg
IFttX3F0TW92aWUuZ2V0KCkgc2V0Q3VycmVudFRpbWU6cXR0aW1lXTsKIAotICAgIC8vIHJlc3Rv
cmUgcGxheWJhY2sgb25seSBpZiBub3QgYXQgZW5kLCBvdGhld2lzZSBRVE1vdmllIHdpbGwgbG9v
cAorICAgIC8vIHJlc3RvcmUgcGxheWJhY2sgb25seSBpZiBub3QgYXQgZW5kLCBvdGhlcndpc2Ug
UVRNb3ZpZSB3aWxsIGxvb3AKICAgICBmbG9hdCB0aW1lQWZ0ZXJTZWVrID0gY3VycmVudFRpbWUo
KTsKICAgICBpZiAob2xkUmF0ZSAmJiB0aW1lQWZ0ZXJTZWVrIDwgZHVyYXRpb24oKSkKICAgICAg
ICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRSYXRlOm9sZFJhdGVdOwpAQCAtNzY2LDcgKzc2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRDbG9zZWRDYXB0aW8KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykgJiYgKCFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSkKICAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNp
YmxlICYmIG1fcXRWaWRlb0xheWVyKSB7Ci0gICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVu
ZGVyZWQgdXBzaWRlZCBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChh
Z2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgorICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJl
IHJlbmRlcmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVk
IChhZ2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgogICAgICAgICBbbV9xdFZpZGVvTGF5ZXIu
Z2V0KCkgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAgICAgfQogI2VuZGlmCkBAIC0xMDgxLDcg
KzEwODEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aGFzQXZhaWxhYmxlVmlkCiB7CiAg
ICAgLy8gV2hlbiB1c2luZyBhIFFUTW92aWVMYXllciByZXR1cm4gdHJ1ZSBhcyBzb29uIGFzIHRo
ZSBtb3ZpZSByZWFjaGVzIFFUTW92aWVMb2FkU3RhdGVQbGF5YWJsZSAKICAgICAvLyBiZWNhdXNl
IGFsdGhvdWdoIHdlIGRvbid0ICprbm93KiB3aGVuIHRoZSBmaXJzdCBmcmFtZSBoYXMgZGVjb2Rl
ZCwgYnkgdGhlIHRpbWUgd2UgZ2V0IGFuZCAKLSAgICAvLyBwcm9jZXNzIHRoZSBub3RpZmljYWl0
b24gYSBmcmFtZSBzaG91bGQgaGF2ZSBwcm9wYWdhdGVkIHRoZSBWaXN1YWxDb250ZXh0IGFuZCBi
ZWVuIHNldCBvbgorICAgIC8vIHByb2Nlc3MgdGhlIG5vdGlmaWNhdGlvbiBhIGZyYW1lIHNob3Vs
ZCBoYXZlIHByb3BhZ2F0ZWQgdGhlIFZpc3VhbENvbnRleHQgYW5kIGJlZW4gc2V0IG9uCiAgICAg
Ly8gdGhlIGxheWVyLgogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVu
ZGVyaW5nTW92aWVMYXllcikKICAgICAgICAgcmV0dXJuIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBs
YXllcjo6SGF2ZUN1cnJlbnREYXRhOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpcEF0dGFjaG1lCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0
aW9uKE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCwgUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wg
Y2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIVdlYkFyY2hp
dmVQYm9hcmRUeXBlKQotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpOyAv
LyBJbml0aWFsaXNlcyBwYXN0ZWJvYXJkIHR5cGVzCisgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVy
YWxQYXN0ZWJvYXJkKCk7IC8vIEluaXRpYWxpemVzIHBhc3RlYm9hcmQgdHlwZXMuCiAgICAgQVNT
RVJUKHNlbGVjdGVkUmFuZ2UpOwogICAgIAogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFN0cmluZyA9IFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gX2luaXRXaXRoRE9NUmFu
Z2U6a2l0KHNlbGVjdGVkUmFuZ2UpXSBhdXRvcmVsZWFzZV07CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogcwogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKCFXZWJBcmNo
aXZlUGJvYXJkVHlwZSkKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKTsg
Ly8gSW5pdGlhbGlzZXMgcGFzdGVib2FyZCB0eXBlcworICAgICAgICBQYXN0ZWJvYXJkOjpnZW5l
cmFsUGFzdGVib2FyZCgpOyAvLyBJbml0aWFsaXplcyBwYXN0ZWJvYXJkIHR5cGVzLgogCiAgICAg
TlNBcnJheSAqdHlwZXMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNTdHJpbmdQYm9hcmRU
eXBlXTsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBtX3Bhc3RlYm9hcmQuZ2V0KCk7
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25z
dCBTdAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChOU1Bhc3RlYm9hcmQqIHBhc3RlYm9hcmQs
IE5TQXJyYXkqIHR5cGVzLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIs
IEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIVdlYkFyY2hpdmVQYm9hcmRUeXBlKQotICAgICAg
ICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpOyAvLyBJbml0aWFsaXNlcyBwYXN0ZWJv
YXJkIHR5cGVzCisgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCk7IC8vIElu
aXRpYWxpemVzIHBhc3RlYm9hcmQgdHlwZXMuCiAgICAKICAgICBpZiAoIXR5cGVzKSB7CiAgICAg
ICAgIHR5cGVzID0gd3JpdGFibGVUeXBlc0ZvclVSTCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAg
dm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNvZAogICAgICAgICBjb25zdCBj
aGFyKiBuYW1lID0gdWNudl9nZXRBdmFpbGFibGVOYW1lKGkpOwogICAgICAgICBVRXJyb3JDb2Rl
IGVycm9yID0gVV9aRVJPX0VSUk9SOwogICAgICAgICAvLyBUcnkgTUlNRSBiZWZvcmUgdHJ5aW5n
IElBTkEgdG8gcGljayB1cCBjb21tb25seSB1c2VkIG5hbWVzIGxpa2UKLSAgICAgICAgLy8gJ0VV
Qy1KUCcgaW5zdGVhZCBvZiBob3JyZW5kZW91c2x5IGxvbmcgbmFtZXMgbGlrZSAKKyAgICAgICAg
Ly8gJ0VVQy1KUCcgaW5zdGVhZCBvZiBob3JyZW5kb3VzbHkgbG9uZyBuYW1lcyBsaWtlIAogICAg
ICAgICAvLyAnRXh0ZW5kZWRfVU5JWF9Db2RlX1BhY2tlZF9Gb3JtYXRfZm9yX0phcGFuZXNlJy4g
CiAgICAgICAgIGNvbnN0IGNoYXIqIHN0YW5kYXJkTmFtZSA9IHVjbnZfZ2V0U3RhbmRhcmROYW1l
KG5hbWUsICJNSU1FIiwgJmVycm9yKTsKICAgICAgICAgaWYgKCFVX1NVQ0NFU1MoZXJyb3IpIHx8
ICFzdGFuZGFyZE5hbWUpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdEZXRlY3RvcklDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw3ICs2OSw3IEBAIGJvb2wgZGV0ZWN0VGV4dEVuY29kaW5nKGNvbnN0IGNoYXIqIGRhdGEK
ICAgICAvLyAidGhlIGNvbnRleHQiIChwYXJlbnQtZW5jb2RpbmcsIHJlZmVycmVyIGVuY29kaW5n
LCBldGMpLgogICAgIC8vIDIuICdFbXVsYXRlJyBGaXJlZm94L0lFJ3Mgbm9uLVVuaXZlcnNhbCBk
ZXRlY3RvcnMgKGUuZy4KICAgICAvLyBDaGluZXNlLCBKYXBhbmVzZSwgUnVzc2lhbiwgS29yZWFu
IGFuZCBIZWJyZXcpIGJ5IHBpY2tpbmcgdGhlIAotICAgIC8vIGVuY29kaW5nIHdpdGggYSBoaWdo
ZXN0IGNvbmZpZGVuY2UgYW1vbmcgdGhlIGRldGV0Y3Rvci1zcGVjaWZpYworICAgIC8vIGVuY29k
aW5nIHdpdGggYSBoaWdoZXN0IGNvbmZpZGVuY2UgYW1vbmcgdGhlIGRldGVjdG9yLXNwZWNpZmlj
CiAgICAgLy8gbGltaXRlZCBzZXQgb2YgY2FuZGlkYXRlIGVuY29kaW5ncy4KICAgICAvLyBCZWxv
dyBpcyBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZpcnN0IHBhcnQgb2Ygd2hhdCdz
IG91dGxpbmVkCiAgICAgLy8gYWJvdmUuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxh
eW91dC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDcgKzM4Miw3IEBAIGludCBBdXRvVGFi
bGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVXaWR0aCgKICAgICAgICAgICAgICAgICBmbG9hdCBzcGFu
TWF4ID0gbWF4KG1heFdpZHRoLCBjTWF4V2lkdGgpOwogICAgICAgICAgICAgICAgIHRNYXhXaWR0
aCA9IG1heCh0TWF4V2lkdGgsIHNwYW5NYXggKiAxMDAgKiBwZXJjZW50U2NhbGVGYWN0b3IgLyB3
LnJhd1ZhbHVlKCkpOwogCi0gICAgICAgICAgICAgICAgLy8gYWxsIG5vbiBwZXJjZW50IGNvbHVt
bnMgaW4gdGhlIHNwYW4gZ2V0IHBlcmNlbnQgdmxhdWVzIHRvIHN1bSB1cCBjb3JyZWN0bHkuCisg
ICAgICAgICAgICAgICAgLy8gYWxsIG5vbiBwZXJjZW50IGNvbHVtbnMgaW4gdGhlIHNwYW4gZ2V0
IHBlcmNlbnQgdmFsdWVzIHRvIHN1bSB1cCBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgaW50
IHBlcmNlbnRNaXNzaW5nID0gdy5yYXdWYWx1ZSgpIC0gdG90YWxQZXJjZW50OwogICAgICAgICAg
ICAgICAgIGZsb2F0IHRvdGFsV2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IHBvcyA9IGNvbDsgcG9zIDwgbGFzdENvbDsgcG9zKyspIHsKQEAgLTY2NCw4ICs2NjQs
OCBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIC8vIGlmIHdlIGhhdmUgb3ZlcmFsbG9jYXRlZCwgcmVkdWNlIGV2ZXJ5IGNlbGwgYWNjb3Jk
aW5nIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZGVzaXJlZCB3aWR0aCBhbmQgbWlud2lkdGgK
LSAgICAvLyB0aGlzIHNlZW1zIHRvIHByb2R1Y2UgdG8gdGhlIHBpeGVsIGV4YXh0IHJlc3VsdHMg
d2l0aCBJRS4gV29uZGVyIGlzIHNvbWUgb2YgdGhpcyBhbHNvIGhvbGRzIGZvciB3aWR0aCBkaXN0
cmlidXRpbmcuCisgICAgLy8gSWYgd2UgaGF2ZSBvdmVyYWxsb2NhdGVkLCByZWR1Y2UgZXZlcnkg
Y2VsbCBhY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBkZXNpcmVkIHdpZHRoIGFu
ZCBtaW53aWR0aAorICAgIC8vIHRoaXMgc2VlbXMgdG8gcHJvZHVjZSB0byB0aGUgcGl4ZWwgZXhh
Y3QgcmVzdWx0cyB3aXRoIElFLiBXb25kZXIgaXMgc29tZSBvZiB0aGlzIGFsc28gaG9sZHMgZm9y
IHdpZHRoIGRpc3RyaWJ1dGluZy4KICAgICBpZiAoYXZhaWxhYmxlIDwgMCkgewogICAgICAgICAv
LyBOZWVkIHRvIHJlZHVjZSBjZWxscyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJpb3JpdGl6YXRpb246
CiAgICAgICAgIC8vICgxKSBBdXRvCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhv
cml6b250YWxWYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiB3aWR0aFZhbHVlLCBpbnQmIG1hcmdpbkxlZnRWYWx1ZSwgaW50JiBtYXJnaW5SaWdodFZh
bHVlLCBpbnQmIHhQb3MpCiB7CiAgICAgLy8gJ2xlZnQnIGFuZCAncmlnaHQnIGNhbm5vdCBib3Ro
IGJlICdhdXRvJyBiZWNhdXNlIG9uZSB3b3VsZCBvZiBiZWVuCi0gICAgLy8gY29udmVydGVkIHRv
IHRoZSBzdGF0aWMgcG9zdGlvbiBhbHJlYWR5CisgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0
aWMgcG9zaXRpb24gYWxyZWFkeQogICAgIEFTU0VSVCghKGxlZnQuaXNBdXRvKCkgJiYgcmlnaHQu
aXNBdXRvKCkpKTsKIAogICAgIGludCBsZWZ0VmFsdWUgPSAwOwpAQCAtMTk3NCw3ICsxOTc0LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250YWxWYQogICAgICAgICBpZiAo
bWFyZ2luTGVmdC5pc0F1dG8oKSAmJiBtYXJnaW5SaWdodC5pc0F1dG8oKSkgewogICAgICAgICAg
ICAgLy8gQm90aCBtYXJnaW5zIGF1dG8sIHNvbHZlIGZvciBlcXVhbGl0eQogICAgICAgICAgICAg
aWYgKGF2YWlsYWJsZVNwYWNlID49IDApIHsKLSAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0VmFs
dWUgPSBhdmFpbGFibGVTcGFjZSAvIDI7IC8vIHNwbGl0IHRoZSBkaWZlcmVuY2UKKyAgICAgICAg
ICAgICAgICBtYXJnaW5MZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAvIDI7IC8vIHNwbGl0IHRo
ZSBkaWZmZXJlbmNlCiAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHRWYWx1ZSA9IGF2YWlsYWJs
ZVNwYWNlIC0gbWFyZ2luTGVmdFZhbHVlOyAgLy8gYWNjb3VudCBmb3Igb2RkIHZhbHVlZCBkaWZm
ZXJlbmNlcwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBzZWUgRklY
TUUgMQpAQCAtMjI1OSw3ICsyMjU5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZVZl
cnRpY2FsVmFsdQogICAgICAgICBpZiAobWFyZ2luVG9wLmlzQXV0bygpICYmIG1hcmdpbkJvdHRv
bS5pc0F1dG8oKSkgewogICAgICAgICAgICAgLy8gQm90aCBtYXJnaW5zIGF1dG8sIHNvbHZlIGZv
ciBlcXVhbGl0eQogICAgICAgICAgICAgLy8gTk9URTogVGhpcyBtYXkgcmVzdWx0IGluIG5lZ2F0
aXZlIHZhbHVlcy4KLSAgICAgICAgICAgIG1hcmdpblRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2Ug
LyAyOyAvLyBzcGxpdCB0aGUgZGlmZXJlbmNlCisgICAgICAgICAgICBtYXJnaW5Ub3BWYWx1ZSA9
IGF2YWlsYWJsZVNwYWNlIC8gMjsgLy8gc3BsaXQgdGhlIGRpZmZlcmVuY2UKICAgICAgICAgICAg
IG1hcmdpbkJvdHRvbVZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJnaW5Ub3BWYWx1ZTsgLy8g
YWNjb3VudCBmb3Igb2RkIHZhbHVlZCBkaWZmZXJlbmNlcwogICAgICAgICB9IGVsc2UgaWYgKG1h
cmdpblRvcC5pc0F1dG8oKSkgewogICAgICAgICAgICAgLy8gU29sdmUgZm9yIHRvcCBtYXJnaW4K
QEAgLTIzMzcsNyArMjMzNyw3IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxjQWJzb2x1dGVWZXJ0aWNh
bFZhbHUKIHZvaWQgUmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsUmVwbGFjZWQoKQog
ewogICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYmFzZWQgb2ZmIG9mIHRoZSBXM0MgV29ya2luZyBE
cmFmdCBmcm9tIEFwcmlsIDExLCAyMDA2IG9mCi0gICAgLy8gQ1NTIDIuMTogU2VjdGlvbiAxMC4z
LjggIkFic29sdXRseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cyIKKyAgICAvLyBDU1Mg
Mi4xOiBTZWN0aW9uIDEwLjMuOCAiQWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVt
ZW50cyIKICAgICAvLyA8aHR0cDovL3d3dy53My5vcmcvVFIvMjAwNS9XRC1DU1MyMS0yMDA1MDYx
My92aXN1ZGV0Lmh0bWwjYWJzLXJlcGxhY2VkLXdpZHRoPgogICAgIC8vIChibG9jay1zdHlsZS1j
b21tZW50cyBpbiB0aGlzIGZ1bmN0aW9uIGNvcnJlc3BvbmQgdG8gdGV4dCBmcm9tIHRoZSBzcGVj
IGFuZAogICAgIC8vIHRoZSBudW1iZXJzIGNvcnJlc3BvbmQgdG8gbnVtYmVycyBpbiBzcGVjKQpA
QCAtMjQyOCw3ICsyNDI4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250
YWxSZQogCiAgICAgICAgIGludCBkaWZmZXJlbmNlID0gYXZhaWxhYmxlU3BhY2UgLSAobGVmdFZh
bHVlICsgcmlnaHRWYWx1ZSk7CiAgICAgICAgIGlmIChkaWZmZXJlbmNlID4gMCkgewotICAgICAg
ICAgICAgbV9tYXJnaW5MZWZ0ID0gZGlmZmVyZW5jZSAvIDI7IC8vIHNwbGl0IHRoZSBkaWZlcmVu
Y2UKKyAgICAgICAgICAgIG1fbWFyZ2luTGVmdCA9IGRpZmZlcmVuY2UgLyAyOyAvLyBzcGxpdCB0
aGUgZGlmZmVyZW5jZQogICAgICAgICAgICAgbV9tYXJnaW5SaWdodCA9IGRpZmZlcmVuY2UgLSBt
X21hcmdpbkxlZnQ7IC8vIGFjY291bnQgZm9yIG9kZCB2YWx1ZWQgZGlmZmVyZW5jZXMKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIHNlZSBGSVhNRSAxCkBAIC0yNTE1LDcgKzI1MTUs
NyBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY0Fic29sdXRlSG9yaXpvbnRhbFJlCiB2b2lkIFJlbmRl
ckJveDo6Y2FsY0Fic29sdXRlVmVydGljYWxSZXBsYWNlZCgpCiB7CiAgICAgLy8gVGhlIGZvbGxv
d2luZyBpcyBiYXNlZCBvZmYgb2YgdGhlIFczQyBXb3JraW5nIERyYWZ0IGZyb20gQXByaWwgMTEs
IDIwMDYgb2YKLSAgICAvLyBDU1MgMi4xOiBTZWN0aW9uIDEwLjYuNSAiQWJzb2x1dGx5IHBvc2l0
aW9uZWQsIHJlcGxhY2VkIGVsZW1lbnRzIgorICAgIC8vIENTUyAyLjE6IFNlY3Rpb24gMTAuNi41
ICJBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxhY2VkIGVsZW1lbnRzIgogICAgIC8vIDxodHRw
Oi8vd3d3LnczLm9yZy9UUi8yMDA1L1dELUNTUzIxLTIwMDUwNjEzL3Zpc3VkZXQuaHRtbCNhYnMt
cmVwbGFjZWQtaGVpZ2h0PgogICAgIC8vIChibG9jay1zdHlsZS1jb21tZW50cyBpbiB0aGlzIGZ1
bmN0aW9uIGNvcnJlc3BvbmQgdG8gdGV4dCBmcm9tIHRoZSBzcGVjIGFuZAogICAgIC8vIHRoZSBu
dW1iZXJzIGNvcnJlc3BvbmQgdG8gbnVtYmVycyBpbiBzcGVjKQpAQCAtMjU3OSw3ICsyNTc5LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZVZlcnRpY2FsUmVwbAogICAgIGludCBib3R0
b21WYWx1ZSA9IDA7CiAKICAgICBpZiAobWFyZ2luVG9wLmlzQXV0bygpICYmIG1hcmdpbkJvdHRv
bS5pc0F1dG8oKSkgewotICAgICAgICAvLyAndG9wJyBhbmQgJ2JvdHRvbScgY2Fubm90IGJlICdh
dXRvJyBkdWUgdG8gc3RlcCAyIGFuZCAzIGNvbWJpbmRlZC4KKyAgICAgICAgLy8gJ3RvcCcgYW5k
ICdib3R0b20nIGNhbm5vdCBiZSAnYXV0bycgZHVlIHRvIHN0ZXAgMiBhbmQgMyBjb21iaW5lZC4K
ICAgICAgICAgQVNTRVJUKCEodG9wLmlzQXV0bygpIHx8IGJvdHRvbS5pc0F1dG8oKSkpOwogCiAg
ICAgICAgIHRvcFZhbHVlID0gdG9wLmNhbGNWYWx1ZShjb250YWluZXJIZWlnaHQpOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTUsNyArMTE1NSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoaW4KICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChyZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygp
KSB7Ci0gICAgICAgIC8vIElmIHdlIGFyZSBoZXJlLCB3ZSB3ZXJlIGNhbGxlZCBvbiBhIHJlbmRl
cmVyIHRoYXQgY2FuIGJlIHByb2dyYW1hdGljYWxseSBzY3JvbGxlZCwgYnV0IGRvZXNuJ3QKKyAg
ICAgICAgLy8gSWYgd2UgYXJlIGhlcmUsIHdlIHdlcmUgY2FsbGVkIG9uIGEgcmVuZGVyZXIgdGhh
dCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBzY3JvbGxlZCwgYnV0IGRvZXNuJ3QKICAgICAgICAg
Ly8gaGF2ZSBhbiBvdmVyZmxvdyBjbGlwLiBXaGljaCBtZWFucyB0aGF0IGl0IGlzIGEgZG9jdW1l
bnQgbm9kZSB0aGF0IGNhbiBiZSBzY3JvbGxlZC4KICAgICAgICAgcmVuZGVyZXIoKS0+dmlldygp
LT5mcmFtZVZpZXcoKS0+c2Nyb2xsQnkoSW50U2l6ZSh4RGVsdGEsIHlEZWx0YSkpOwogICAgICAg
ICAvLyBGSVhNRTogSWYgd2UgZGlkbid0IHNjcm9sbCB0aGUgd2hvbGUgd2F5LCBkbyB3ZSB3YW50
IHRvIHRyeSBsb29raW5nIGF0IHRoZSBmcmFtZXMgb3duZXJFbGVtZW50PyAKQEAgLTIyNzUsNyAr
MjI3NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIKICAgICAv
LyBJZiB0aGlzIGxheWVyJ3MgcmVuZGVyZXIgaXMgYSBjaGlsZCBvZiB0aGUgcGFpbnRpbmdSb290
LCB3ZSByZW5kZXIgdW5jb25kaXRpb25hbGx5LCB3aGljaAogICAgIC8vIGlzIGRvbmUgYnkgcGFz
c2luZyBhIG5pbCBwYWludGluZ1Jvb3QgZG93biB0byBvdXIgcmVuZGVyZXIgKGFzIGlmIG5vIHBh
aW50aW5nUm9vdCB3YXMgZXZlciBzZXQpLgogICAgIC8vIEVsc2UsIG91ciByZW5kZXJlciB0cmVl
IG1heSBvciBtYXkgbm90IGNvbnRhaW4gdGhlIHBhaW50aW5nIHJvb3QsIHNvIHdlIHBhc3MgdGhh
dCByb290IGFsb25nCi0gICAgLy8gc28gaXQgd2lsbCBiZSB0ZXN0ZWQgYWdhaW5zdCBhcyB3ZSBk
ZWNlbmQgdGhyb3VnaCB0aGUgcmVuZGVyZXJzLgorICAgIC8vIHNvIGl0IHdpbGwgYmUgdGVzdGVk
IGFnYWluc3QgYXMgd2UgZGVzY2VuZCB0aHJvdWdoIHRoZSByZW5kZXJlcnMuCiAgICAgUmVuZGVy
T2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciA9IDA7CiAgICAgaWYgKHBhaW50aW5nUm9v
dCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YocGFpbnRpbmdSb290KSkKICAgICAgICAg
cGFpbnRpbmdSb290Rm9yUmVuZGVyZXIgPSBwYWludGluZ1Jvb3Q7CkBAIC0yNjQ1LDcgKzI2NDUs
NyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSCiAKICAgICAvLyBO
ZXh0IHdlIHdhbnQgdG8gc2VlIGlmIHRoZSBtb3VzZSBwb3MgaXMgaW5zaWRlIHRoZSBjaGlsZCBS
ZW5kZXJPYmplY3RzIG9mIHRoZSBsYXllci4KICAgICBpZiAoZmdSZWN0LmNvbnRhaW5zKGhpdFRl
c3RQb2ludCkgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKSB7Ci0gICAgICAgIC8vIEhpdCB0ZXN0
IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3VsdCwgYmVjYXVzZSB3ZSBvbmx5bCB3YW50IHRv
IGNvbW1pdCB0byAncmVzdWx0JyBpZiB3ZSBrbm93IHdlJ3JlIGZyb250bW9zdC4KKyAgICAgICAg
Ly8gSGl0IHRlc3Qgd2l0aCBhIHRlbXBvcmFyeSBIaXRUZXN0UmVzdWx0LCBiZWNhdXNlIHdlIG9u
bHkgd2FudCB0byBjb21taXQgdG8gJ3Jlc3VsdCcgaWYgd2Uga25vdyB3ZSdyZSBmcm9udG1vc3Qu
CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSk7CiAgICAg
ICAgIGlmIChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgdGVtcFJlc3VsdCwgbGF5ZXJCb3VuZHMs
IGhpdFRlc3RQb2ludCwgSGl0VGVzdERlc2NlbmRhbnRzKSAmJgogICAgICAgICAgICAgaXNIaXRD
YW5kaWRhdGUodGhpcywgZmFsc2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVuZWRU
cmFuc2Zvcm1TdGF0ZS5nZXQoKSkpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM4LDcgKzE5MzgsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
ZGVzdHJveSgpCiAKICAgICAvLyBJZiB0aGlzIHJlbmRlcmVyIGlzIGJlaW5nIGF1dG9zY3JvbGxl
ZCwgc3RvcCB0aGUgYXV0b3Njcm9sbCB0aW1lcgogICAgIAotICAgIC8vIEZJWE1FOiBSZW5kZXJP
YmplY3Q6OmRlc3Ryb3kgc2hvdWxkIG5vdCBnZXQgY2FsbGVkIHdpdGggYSByZW5kZXJhciB3aG9z
ZSBkb2N1bWVudAorICAgIC8vIEZJWE1FOiBSZW5kZXJPYmplY3Q6OmRlc3Ryb3kgc2hvdWxkIG5v
dCBnZXQgY2FsbGVkIHdpdGggYSByZW5kZXJlciB3aG9zZSBkb2N1bWVudAogICAgIC8vIGhhcyBh
IG51bGwgZnJhbWUsIHNvIHdlIGFzc2VydCB0aGlzLiBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHJl
bGVhc2UgYnVpbGRzIHRvIGNyYXNoIHdoaWNoIGlzIHdoeSB3ZQogICAgIC8vIGNoZWNrIHRoYXQg
dGhlIGZyYW1lIGlzIG5vdCBudWxsLgogICAgIEFTU0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDUz
NzkzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5u
ZXJUZXh0VmFsdQogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBXZSBzZXQgbV9sYXN0Q2hhbmdlV2FzVXNlckVkaXQgdG8gZmFsc2Ugc2luY2UgdGhpcyBj
aGFuZ2Ugd2FzIG5vdCBleHBsaWN0eSBtYWRlIGJ5IHRoZSB1c2VyIChzYXksIHZpYSB0eXBpbmcg
b24gdGhlIGtleWJvYXJkKSwgc2VlIDxyZGFyOi8vcHJvYmxlbS81MzU5OTIxPi4KKyAgICAgICAg
Ly8gV2Ugc2V0IG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0IHRvIGZhbHNlIHNpbmNlIHRoaXMgY2hh
bmdlIHdhcyBub3QgZXhwbGljaXRseSBtYWRlIGJ5IHRoZSB1c2VyIChzYXksIHZpYSB0eXBpbmcg
b24gdGhlIGtleWJvYXJkKSwgc2VlIDxyZGFyOi8vcHJvYmxlbS81MzU5OTIxPi4KICAgICAgICAg
bV9sYXN0Q2hhbmdlV2FzVXNlckVkaXQgPSBmYWxzZTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZTo6c3VwcG9ydHNGb2N1c1JpbmcoY29ucwogCiBib29sIFJlbmRlclRoZW1lOjpz
dGF0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvLCBDb250cm9sU3RhdGUgc3RhdGUpIGNvbnN0CiB7
Ci0gICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBjb250cm9scyBkb250
IHJlc3BvbmQgdG8gY2hhbmdlcyBpbiA6aG92ZXIgc3RhdGUKKyAgICAvLyBEZWZhdWx0IGltcGxl
bWVudGF0aW9uIGFzc3VtZXMgdGhlIGNvbnRyb2xzIGRvbid0IHJlc3BvbmQgdG8gY2hhbmdlcyBp
biA6aG92ZXIgc3RhdGUKICAgICBpZiAoc3RhdGUgPT0gSG92ZXJTdGF0ZSAmJiAhc3VwcG9ydHNI
b3ZlcihvLT5zdHlsZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyAr
NjksNyBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OmNvbXB1dGVSZWN0Rm9yUmVwYWluCiB2b2lkIFNW
R1JlbmRlckJhc2U6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkICwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpCiB7CiAg
ICAgQVNTRVJUKCFmaXhlZCk7IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQgaW4g
dGhlIFNWRyByZW5kZXJpbmcgdHJlZS4KLSAgICBBU1NFUlQodXNlVHJhbnNmb3Jtcyk7IC8vIG1h
cHBpbmcgYSBwb2ludCB0aHJvdWdoIFNWRyB3L28gcmVzcGVjdGluZyB0cmFzbmZvcm1zIGlzIHVz
ZWxlc3MuCisgICAgQVNTRVJUKHVzZVRyYW5zZm9ybXMpOyAvLyBNYXBwaW5nIGEgcG9pbnQgdGhy
b3VnaCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJhbnNmb3JtcyBpcyB1c2VsZXNzLgogICAgIHRyYW5z
Zm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKG9iamVjdC0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
KTsKICAgICBvYmplY3QtPnBhcmVudCgpLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiB9CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyMiw3ICsxNDIyLDcgQEAgdm9pZCBTVkdSb290SW5saW5lQm94OjpidWlsZFRleHRDaHVua3Mo
VgogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFpbmZvLmNodW5r
LmJveGVzLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgICAgIC8vIFdhbGsgc3RyaW5nIHRvIGZpbmQg
b3V0IG5ldyBjaHVuayBwb3NpdGlvbnMsIGlmIGV4aXN0YW50CisgICAgICAgICAgICAvLyBXYWxr
IHN0cmluZyB0byBmaW5kIG91dCBuZXcgY2h1bmsgcG9zaXRpb25zLCBpZiBleGlzdGVudAogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGluZm8uaXQgIT0gc3ZnQ2hhcnMuZW5kKCkpOwogCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9UcmFuc2Zvcm1TdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvVHJhbnNmb3JtU3RhdGUuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1RyYW5zZm9ybVN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzEx
NSw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3IKICAgICB9CiAK
ICAgICAvLyBXZSBjb3VsZCB0aHJvdyBhd2F5IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gaWYgd2Ug
d2FudGVkIHRvIGhlcmUsIGJ1dCB0aGF0Ci0gICAgLy8gd291bGQgY2F1c2UgdGhyYXNoIHdoZW4g
dHJhdmVyc2luZyBoaWVyYXJhY2hpZXMgd2l0aCBhbHRlcm5hdGluZworICAgIC8vIHdvdWxkIGNh
dXNlIHRocmFzaCB3aGVuIHRyYXZlcnNpbmcgaGllcmFyY2hpZXMgd2l0aCBhbHRlcm5hdGluZwog
ICAgIC8vIHByZXNlcnZlLTNkIGFuZCBmbGF0IGVsZW1lbnRzLgogICAgIGlmIChtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtKQogICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYWtlSWRlbnRp
dHkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47323</attachid>
            <date>2010-01-25 00:47:47 -0800</date>
            <delta_ts>2010-01-25 03:14:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug34073_1.patch</filename>
            <type>text/plain</type>
            <size>66849</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQ3IEBACisyMDEwLTAxLTI1ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQwNzMKKworICAgICAgICBG
aXhlcyBtaXNzcGVsbGVkIHdvcmRzIGluIGNvbW1lbnRzLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmRvQWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBkZXRhY2hdKToKKyAgICAgICAgKEFYQXR0cmlidXRlU3Ry
aW5nU2V0RWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXBsZXRlVVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoK
KyAgICAgICAgKF9OUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9K
YXZhSW5zdGFuY2VKU0MuY3BwOgorICAgICAgICAoSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2Qp
OgorICAgICAgICAoSk9iamVjdFdyYXBwZXI6OkpPYmplY3RXcmFwcGVyKToKKyAgICAgICAgKiBi
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNlOjpzZXRW
YWx1ZU9mVW5kZWZpbmVkRmllbGQpOgorICAgICAgICAoT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUpOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6c29ydE1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAqIGRv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRF
dmVudDo6cmVjZWl2ZWRUYXJnZXQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmlzRm9jdXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNo
YWRvd0FuY2VzdG9yTm9kZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVwc3RyZWFtKToKKyAg
ICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50cyk6CisgICAgICAgICogZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkQ1NTQ29s
b3IpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OnJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6cHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdCk6CisgICAgICAgICog
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
RGVsZXRhYmxlRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRp
YWxpemVTdGFydEVuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpsZWFyblNwZWxsaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLnByb3RvdHlwZS5fZm9ybWF0KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUu
aDoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6Om1ha2VQdXJnZWFibGUpOgorICAgICAgICAqIGxvYWRlci9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GVFBE
aXJlY3RvcnlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VPbmVGVFBMaW5lKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Blbik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwpOgor
ICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzcGFjZU5lZWRlZCk6CisgICAgICAgICogbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlcjo6KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6
OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL0xpbmtIYXNoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNsZWFuUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJh
d2luZ01vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkb1NlZWspOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNv
ZGluZ05hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9y
SUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVjdFRleHRFbmNvZGluZyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRv
VGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRv
VGFibGVMYXlvdXQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250YWxWYWx1
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVWZXJ0aWNhbFZh
bHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250
YWxSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZVZl
cnRpY2FsUmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZGVzdHJveSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sOjpzZXRJbm5lclRleHRWYWx1ZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpz
dGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6Om1hcExvY2FsVG9Db250YWluZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jvb3RJbmxpbmVCb3g6OmJ1aWxkVGV4dENodW5rcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6c3VnZ2VzdGVkVmFsdWUpOgor
CiAyMDEwLTAxLTI0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysg
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjphZGRDaGls
ZHJlbigpCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGlzdEl0ZW1zLnNpemUoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgLy8gVGhlIGNhc3Qg
dG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNhdXNlIHRoZSBvbmx5IG90aGVyIHBvc3Np
YmxlIGxpc3RJdGVtIHR5cGUKLSAgICAgICAgLy8gd291bGQgYmUgYSBXTUxFbGVtZW50LCBidXQg
V01MIGJ1aWxkcyBkb24ndCB1c2UgYWNjZXNzYmlsaXR5IGZlYXR1cmVzIGF0IGFsbC4KKyAgICAg
ICAgLy8gd291bGQgYmUgYSBXTUxFbGVtZW50LCBidXQgV01MIGJ1aWxkcyBkb24ndCB1c2UgYWNj
ZXNzaWJpbGl0eSBmZWF0dXJlcyBhdCBhbGwuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGxpc3RPcHRpb24gPSBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KGxpc3RJdGVtc1tpXSkpOwogICAgICAgICBpZiAobGlzdE9wdGlvbikK
ICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGxpc3RPcHRpb24pOwpAQCAtMTcwLDcgKzE3
MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm8KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgSW50UmVjdCByZWN0
ID0gdG9SZW5kZXJMaXN0Qm94KG1fcmVuZGVyZXIpLT5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVu
dFJlY3QueCgpLCBwYXJlbnRSZWN0LnkoKSwgaSk7CiAgICAgICAgIC8vIFRoZSBjYXN0IHRvIEhU
TUxFbGVtZW50IGJlbG93IGlzIHNhZmUgYmVjYXVzZSB0aGUgb25seSBvdGhlciBwb3NzaWJsZSBs
aXN0SXRlbSB0eXBlCi0gICAgICAgIC8vIHdvdWxkIGJlIGEgV01MRWxlbWVudCwgYnV0IFdNTCBi
dWlsZHMgZG9uJ3QgdXNlIGFjY2Vzc2JpbGl0eSBmZWF0dXJlcyBhdCBhbGwuCisgICAgICAgIC8v
IHdvdWxkIGJlIGEgV01MRWxlbWVudCwgYnV0IFdNTCBidWlsZHMgZG9uJ3QgdXNlIGFjY2Vzc2li
aWxpdHkgZmVhdHVyZXMgYXQgYWxsLgogICAgICAgICBpZiAocmVjdC5jb250YWlucyhwb2ludCkp
CiAgICAgICAgICAgICByZXR1cm4gbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3Qoc3Rh
dGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihsaXN0SXRlbXNbaV0pKTsKICAgICB9CkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5
Miw3IEBAIHR5cGVkZWYgdW5zaWduZWQgTlNVSW50ZWdlcjsKIC0gKHZvaWQpZGV0YWNoCiB7CiAg
ICAgLy8gU2VuZCB1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQgdW5jb25kaXRpb25hbGx5
IGJlY2F1c2UgaWYgaXQgaXMKLSAgICAvLyBldmVyIGFjY2lkZW50bHkgbm90IGRvbmUgKHZpYSBv
dGhlciBidWdzIGluIG91ciBBWCBpbXBsZW1lbnRhdGlvbikgeW91CisgICAgLy8gZXZlciBhY2Np
ZGVudGFsbHkgbm90IGRvbmUgKHZpYSBvdGhlciBidWdzIGluIG91ciBBWCBpbXBsZW1lbnRhdGlv
bikgeW91CiAgICAgLy8gZW5kIHVwIHdpdGggYSBjcmFzaCBsaWtlIDxyZGFyOi8vcHJvYmxlbS80
MjczMTQ5Pi4gIEl0IGlzIHNhZmUgYW5kIG5vdAogICAgIC8vIGV4cGVuc2l2ZSB0byBzZW5kIGV2
ZW4gaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZC4KICAgICBbc2VsZiB1bnJlZ2lzdGVy
VW5pcXVlSWRGb3JVSUVsZW1lbnRdOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0wKIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5n
U2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOU1N0cmlu
ZyogYXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIE5TUmFuZ2UgcmFuZ2Up
CiB7CiAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCgpKSB7Ci0gICAgICAgIC8vIG1ha2UgYSBzZXJpYWxpYXphYmxlIEFYIG9iamVjdAorICAgICAg
ICAvLyBtYWtlIGEgc2VyaWFsaXphYmxlIEFYIG9iamVjdAogICAgICAgICAKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QqPihvYmplY3QpLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJlbmRlcmVyKQpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MSw3
ICs3ODEsNyBAQCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZShFeGVjU3RhdGUqIGV4CiAKIEtV
UkwgY29tcGxldGVVUkwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJM
KQogewotICAgIC8vIEZvciBoaXN0b2ljYWwgcmVhc29ucywgd2UgbmVlZCB0byBjb21wbGV0ZSB0
aGUgVVJMIHVzaW5nIHRoZSBkeW5hbWljIGZyYW1lLgorICAgIC8vIEZvciBoaXN0b3JpY2FsIHJl
YXNvbnMsIHdlIG5lZWQgdG8gY29tcGxldGUgdGhlIFVSTCB1c2luZyB0aGUgZHluYW1pYyBmcmFt
ZS4KICAgICBGcmFtZSogZnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gS1VSTCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2
b2lkIEpTRE9NV2luZG93QmFzZTo6ZGVzdHJveUpTRE9NV2luZG93CiAgICAgZGVsZXRlIHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93QmFzZURhdGEqPihqc0RPTVdpbmRvd0Jhc2VEYXRhKTsKIH0KIAot
Ly8gSlNET01HbG9iYWxPYmplY3QqIGlzIGlnbm9yZWQsIGFjY2VzaW5nIGEgd2luZG93IGluIGFu
eSBjb250ZXh0IHdpbGwKKy8vIEpTRE9NR2xvYmFsT2JqZWN0KiBpcyBpZ25vcmVkLCBhY2Nlc3Np
bmcgYSB3aW5kb3cgaW4gYW55IGNvbnRleHQgd2lsbAogLy8gdXNlIHRoYXQgRE9NV2luZG93J3Mg
cHJvdG90eXBlIGNoYWluLgogSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqLCBET01XaW5kb3cqIGRvbVdpbmRvdykKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpTRE9NV2luZG93
IG9yIGpzTnVsbCgpCi0gICAgLy8gSlNET01HbG9iYWxPYmplY3QqIGlzIGlnbm9yZWQsIGFjY2Vz
aW5nIGEgd2luZG93IGluIGFueSBjb250ZXh0IHdpbGwKKyAgICAvLyBKU0RPTUdsb2JhbE9iamVj
dCogaXMgaWdub3JlZCwgYWNjZXNzaW5nIGEgd2luZG93IGluIGFueSBjb250ZXh0IHdpbGwKICAg
ICAvLyB1c2UgdGhhdCBET01XaW5kb3cncyBwcm90b3R5cGUgY2hhaW4uCiAgICAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIERPTVdpbmRvdyop
OwogICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgRE9NV2luZG93Kik7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24g
NTM3OTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdChFeGUKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTZWFyY2gg
dGhlIHdob2xlIGZyYW1lIGhpZXJhY2h5IHNvbWV3aGVyZSBhcm91bmQgaGVyZS4KKyAgICAvLyBG
SVhNRTogU2VhcmNoIHRoZSB3aG9sZSBmcmFtZSBoaWVyYXJjaHkgc29tZXdoZXJlIGFyb3VuZCBo
ZXJlLgogICAgIC8vIFdlIG5lZWQgdG8gdGVzdCB0aGUgY29ycmVjdCBwcmlvcml0eSBvcmRlci4K
IAogICAgIC8vIGFsbG93IHdpbmRvd1sxXSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHJldmlzaW9uIDUz
NzkzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogLy8gaW4gV2ViQ29yZS9zdmcgKGFr
YS4gJ1BPRCB0eXBlcycpLiBGb3IgaW5zdGFuY2UgU1ZHTWF0cml4IGlzIG1hcHBlZCB0byBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCwgYW5kCiAvLyBwYXNzZWQgYXJvdW5kIGFzIGNvbnN0IHJlZmVyZW5j
ZS4gU1ZHIERPTSBkZW1hbmRzIHRoZXNlIG9iamVjdHMgdG8gYmUgImxpdmUiLCBjaGFuZ2VzIHRv
IGFueQogLy8gb2YgdGhlIHdyaXRhYmxlIGF0dHJpYnV0ZXMgb2YgU1ZHTWF0cml4IG5lZWQgdG8g
YmUgcmVmbGVjdGVkIGluIHRoZSBvYmplY3Qgd2hpY2ggZXhwb3NlZCB0aGUKLS8vIFNWR01hdHJp
eCBvYmplY3QgKGllLiAnc29tZUVsZW1lbnQudHJhbnNmb3JtLm1hdHJpeC5hID0gNTAuMCcsIGlu
IHRoYXQgY2FzZSAnU1ZHVHJhbnNmb3JtJykuCisvLyBTVkdNYXRyaXggb2JqZWN0IChpLmUuICdz
b21lRWxlbWVudC50cmFuc2Zvcm0ubWF0cml4LmEgPSA1MC4wJywgaW4gdGhhdCBjYXNlICdTVkdU
cmFuc2Zvcm0nKS4KIC8vIFRoZSBTVkdUcmFuc2Zvcm0gY2xhc3Mgc3RvcmVzIGl0cyAiVHJhbnNm
b3JtYXRpb25NYXRyaXggbV9tYXRyaXgiIG9iamVjdCBvbiB0aGUgc3RhY2suIElmIGl0IHdvdWxk
CiAvLyBiZSBzdG9yZWQgYXMgcG9pbnRlciB3ZSBjb3VsZCBqdXN0IGJ1aWxkIGFuIGF1dG8tZ2Vu
ZXJhdGVkIEpTU1ZHKiB3cmFwcGVyIG9iamVjdCBhcm91bmQgaXQKIC8vIGFuZCBhbGwgY2hhbmdl
cyB0byB0aGF0IG9iamVjdCB3b3VsZCBhdXRvbWF0aWNhbGx5IGFmZmVjdCB0aGUgVHJhbnNmb3Jt
YXRpb25NYXRyaXgqIG9iamVjdCBzdG9yZWQKQEAgLTExNCw5ICsxMTQsOSBAQCBwcml2YXRlOgog
ICAgIFNldHRlck1ldGhvZCBtX3NldHRlcjsKIH07CiAKLS8vIFJlcHJlc2VudHMgYSBKUyB3cmFw
cGVyIG9iamVjdCBmb3IgU1ZHIFBPRCB0eXBlcyAobm90IGZvciBTVkdBbmltYXRlZCogY2xhc2Vz
KS4gQW55IG1vZGlmaWNhdGlvbiB0byB0aGUgU1ZHIFBPRAorLy8gUmVwcmVzZW50cyBhIEpTIHdy
YXBwZXIgb2JqZWN0IGZvciBTVkcgUE9EIHR5cGVzIChub3QgZm9yIFNWR0FuaW1hdGVkKiBjbGFz
c2VzKS4gQW55IG1vZGlmaWNhdGlvbiB0byB0aGUgU1ZHIFBPRAogLy8gdHlwZXMgZG9uJ3QgY2F1
c2UgYW55IHVwZGF0ZXMgdW5saWtlIEpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyLiBUaGlzIGNs
YXNzIGlzIHVzZWQgZm9yIHJldHVybiB2YWx1ZXMgKGllLiBnZXRCQm94KCkpCi0vLyBhbmQgZm9y
IHByb3BlcnRpZXMgd2hlcmUgU1ZHIHNwZWNpZmljYXRpb24gZXhwbGljaXRlbHkgc3RhdGVzLCB0
aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgUE9EIHR5cGUgYXJlIGltbXV0YWJsZS4KKy8vIGFuZCBm
b3IgcHJvcGVydGllcyB3aGVyZSBTVkcgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcywg
dGhhdCB0aGUgY29udGVudHMgb2YgdGhlIFBPRCB0eXBlIGFyZSBpbW11dGFibGUuCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFBPRFR5cGU+CiBjbGFzcyBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyIDog
cHVibGljIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4gewpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3
ICsxMDIsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluCiAgICAg
fQogCiAgICAgLy8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0aGUgSlMgcmV0dXJuIHZhbHVlIG9y
IDAKLSAgICAvLyBpZiB0aGVyZSB3YXMgbm9uZSwgYW4gZXJyb3Igb2NjdXJlZCBvciB0aGUgdHlw
ZSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQuCisgICAgLy8gaWYgdGhlcmUgd2FzIG5vbmUsIGFuIGVy
cm9yIG9jY3VycmVkIG9yIHRoZSB0eXBlIGNvdWxkbid0IGJlIGNvbnZlcnRlZC4KIAogICAgIC8v
IGlubGluZUNvZGUgaXMgdHJ1ZSBmb3IgPGEgaHJlZj0iamF2YXNjcmlwdDpkb1NvbWV0aGluZygp
Ij4KICAgICAvLyBhbmQgZmFsc2UgZm9yIDxzY3JpcHQ+ZG9Tb21ldGhpbmcoKTwvc2NyaXB0Pi4g
Q2hlY2sgaWYgaXQgaGFzIHRoZQpJbmRleDogV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2aXNpb24g
NTM3OTMpCisrKyBXZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3OSw3ICszNzksNyBAQCBib29sIF9OUE5fSGFzTWV0aG9kKE5QUCwgTlBPYmplY3QqIG8s
IE5QCiAKIHZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqLCBjb25zdCBOUFVURjgqIG1l
c3NhZ2UpCiB7Ci0gICAgLy8gSWdub3JuaW5nIHRoZSBOUE9iamVjdCBwYXJhbSBpcyBjb25zaXN0
ZW50IHdpdGggdGhlIE1vemlsbGEgaW1wbGVtZW50YXRpb24uCisgICAgLy8gSWdub3JpbmcgdGhl
IE5QT2JqZWN0IHBhcmFtIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgTW96aWxsYSBpbXBsZW1lbnRh
dGlvbi4KICAgICBVU3RyaW5nIGV4Y2VwdGlvbihtZXNzYWdlKTsKICAgICBDSW5zdGFuY2U6OnNl
dEdsb2JhbEV4Y2VwdGlvbihleGNlcHRpb24pOwogfQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3
ICsxNTIsNyBAQCBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTCiAgICAg
anZhbHVlIHJlc3VsdDsKIAogICAgIC8vIFRyeSB0byB1c2UgdGhlIEpOSSBhYnN0cmFjdGlvbiBm
aXJzdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotICAgIC8vIG5vcm5tYWwgSk5JLiAgVGhlIEpO
SSBkaXNwYXRjaCBhYnN0cmFjdGlvbiBhbGxvd3MgdGhlIEphdmEgcGx1Z2luCisgICAgLy8gbm9y
bWFsIEpOSS4gIFRoZSBKTkkgZGlzcGF0Y2ggYWJzdHJhY3Rpb24gYWxsb3dzIHRoZSBKYXZhIHBs
dWdpbgogICAgIC8vIHRvIGRpc3BhdGNoIHRoZSBjYWxsIG9uIHRoZSBhcHByb3ByaWF0ZSBpbnRl
cm5hbCBWTSB0aHJlYWQuCiAgICAgUm9vdE9iamVjdCogcm9vdE9iamVjdCA9IHRoaXMtPnJvb3RP
YmplY3QoKTsKICAgICBpZiAoIXJvb3RPYmplY3QpCkBAIC0zMjAsNyArMzIwLDcgQEAgSk9iamVj
dFdyYXBwZXI6OkpPYmplY3RXcmFwcGVyKGpvYmplY3QgaQogewogICAgIGFzc2VydChpbnN0YW5j
ZSk7CiAKLSAgICAvLyBDYWNoZSB0aGUgSk5JRW52IHVzZWQgdG8gZ2V0IHRoZSBnbG9iYWwgcmVm
IGZvciB0aGlzIGphdmEgaW5zdGFuYWNlLgorICAgIC8vIENhY2hlIHRoZSBKTklFbnYgdXNlZCB0
byBnZXQgdGhlIGdsb2JhbCByZWYgZm9yIHRoaXMgamF2YSBpbnN0YW5jZS4KICAgICAvLyBJdCds
bCBiZSB1c2VkIHRvIGRlbGV0ZSB0aGUgcmVmZXJlbmNlLgogICAgIG1fZW52ID0gZ2V0Sk5JRW52
KCk7CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDUz
NzkzKQorKysgV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBPYmpjSW5zdGFuY2U6OnNldFZhbHVlT2ZVbmRl
ZmluZWRGaQogICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOyAvLyBDYW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUgYmVj
YXVzZSBpdCB1bndpbmRzIGluY29ycmVjdGx5LgogCiAgICAgLy8gVGhpcyBjaGVjayBpcyBub3Qg
cmVhbGx5IG5lY2Vzc2FyeSBiZWNhdXNlIE5TT2JqZWN0IGltcGxlbWVudHMKLSAgICAvLyBzZXRW
YWx1ZTpmb3JVbmRlZmluZWRLZXk6LCBhbmQgdW5mb3J0bmF0ZWx5IHRoZSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uCisgICAgLy8gc2V0VmFsdWU6Zm9yVW5kZWZpbmVkS2V5OiwgYW5kIHVuZm9ydHVu
YXRlbHkgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KICAgICAvLyB0aHJvd3MgYW4gZXhjZXB0
aW9uLgogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0VmFsdWU6Zm9yVW5kZWZpbmVkS2V5OildKXsKICAgICAgICAgc2V0R2xvYmFsRXhjZXB0aW9u
KG5pbCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldFZhbHVl
T2ZVbmRlZmluZQogICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOyAvLyBDYW4ndCBwdXQgdGhpcyBpbnNpZGUgdGhlIEB0cnkgc2NvcGUg
YmVjYXVzZSBpdCB1bndpbmRzIGluY29ycmVjdGx5LgogCiAgICAgLy8gVGhpcyBjaGVjayBpcyBu
b3QgcmVhbGx5IG5lY2Vzc2FyeSBiZWNhdXNlIE5TT2JqZWN0IGltcGxlbWVudHMKLSAgICAvLyB2
YWx1ZUZvclVuZGVmaW5lZEtleTosIGFuZCB1bmZvcnRuYXRlbHkgdGhlIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24KKyAgICAvLyB2YWx1ZUZvclVuZGVmaW5lZEtleTosIGFuZCB1bmZvcnR1bmF0ZWx5
IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAgICAgLy8gdGhyb3dzIGFuIGV4Y2VwdGlvbi4K
ICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHZhbHVl
Rm9yVW5kZWZpbmVkS2V5OildKXsKICAgICAgICAgc2V0R2xvYmFsRXhjZXB0aW9uKG5pbCk7Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3
IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICAgICAgbV9t
ZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CiAKICAgICBpZiAocm9vdCkK
LSAgICAgICAgbV9yb290RGVmYXVsdFN0eWxlID0gc3R5bGVGb3JFbGVtZW50KHJvb3QsIDAsIGZh
bHNlLCB0cnVlKTsgLy8gZG9udCByZWYsIGJlY2F1c2UgdGhlIFJlbmRlclN0eWxlIGlzIGFsbG9j
YXRlZCBmcm9tIGdsb2JhbCBoZWFwCisgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxl
Rm9yRWxlbWVudChyb290LCAwLCBmYWxzZSwgdHJ1ZSk7IC8vIGRvbid0IHJlZiwgYmVjYXVzZSB0
aGUgUmVuZGVyU3R5bGUgaXMgYWxsb2NhdGVkIGZyb20gZ2xvYmFsIGhlYXAKIAogICAgIGlmICht
X3Jvb3REZWZhdWx0U3R5bGUgJiYgdmlldykgewogICAgICAgICBkZWxldGUgbV9tZWRpdW07CkBA
IC00NjMsNyArNDYzLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1
bQogICAgIC8vIGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50CiAgICAgbV9hdXRob3JTdHls
ZSA9IG5ldyBDU1NSdWxlU2V0KCk7CiAgICAgCi0gICAgLy8gQWRkIHJ1bGVzIGZyb20gZWxtZW50
cyBsaWtlIFNWRydzIDxmb250LWZhY2U+CisgICAgLy8gQWRkIHJ1bGVzIGZyb20gZWxlbWVudHMg
bGlrZSBTVkcncyA8Zm9udC1mYWNlPgogICAgIGlmIChtYXBwZWRFbGVtZW50U2hlZXQpCiAgICAg
ICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1hcHBlZEVsZW1lbnRTaGVldCwg
Km1fbWVkaXVtLCB0aGlzKTsKIApAQCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6c29ydE1hdGNoZWRSdWxlcygKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IFBlZm9ybSBhIG1lcmdlIHNvcnQgZm9yIGxhcmdlciBsaXN0cy4KKyAgICAvLyBQZXJmb3JtIGEg
bWVyZ2Ugc29ydCBmb3IgbGFyZ2VyIGxpc3RzLgogICAgIHVuc2lnbmVkIG1pZCA9IChzdGFydCAr
IGVuZCkgLyAyOwogICAgIHNvcnRNYXRjaGVkUnVsZXMoc3RhcnQsIG1pZCk7CiAgICAgc29ydE1h
dGNoZWRSdWxlcyhtaWQsIGVuZCk7CkBAIC0yODc0LDcgKzI4NzQsNyBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250VmFyaWFudDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVpvb206CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVzZSBoYXZlIHRvIGJlIGFwcGxp
ZWQgZmlyc3QsIGJlY2F1c2Ugb3RoZXIgcHJvcGVydGllcyB1c2UgdGhlIGNvbXB1dGVkCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgb2YgdGhlc2UgcG9ycGVydGllcy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyBvZiB0aGVzZSBwcm9wZXJ0aWVzLgogICAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDM5LDcgKzMwMzksNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAjaWYgRU5BQkxFKFdD
U1MpCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewogICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2FwTWFycXVlZSkgewotICAgICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgV2FwIE1hcnF1ZWUgc3R5bGUKKyAgICAgICAgICAgICAgICAv
LyBJbml0aWFsaXplIFdBUCBNYXJxdWVlIHN0eWxlCiAgICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0T3ZlcmZsb3dYKE9NQVJRVUVFKTsKICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVy
Zmxvd1koT01BUlFVRUUpOwogICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFdoaXRlU3BhY2Uo
Tk9XUkFQKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nCiAgICAgICAgIH0gZWxzZSBpZiAobV9o
YXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKQogICAgICAgICAgICAgLy8gSWYgbmV3IG5vZGVz
IGhhdmUgYmVlbiBhZGRlZCBvciBzdHlsZSByZWNhbGMgaGFzIGJlZW4gZG9uZSB3aXRoIHN0eWxl
IHNoZWV0cyBzdGlsbCBwZW5kaW5nLCBzb21lIG5vZGVzIAogICAgICAgICAgICAgLy8gbWF5IG5v
dCBoYXZlIGhhZCB0aGVpciByZWFsIHN0eWxlIGNhbGN1bGF0ZWQgeWV0LiBOb3JtYWxseSB0aGlz
IGdldHMgY2xlYW5lZCB3aGVuIHN0eWxlIHNoZWV0cyBhcnJpdmUgCi0gICAgICAgICAgICAvLyBi
dXQgaGVyZSB3ZSBuZWVkIHVwLXRvLWRhdGUgc3R5bGUgaW1tZWRpYXRseS4KKyAgICAgICAgICAg
IC8vIGJ1dCBoZXJlIHdlIG5lZWQgdXAtdG8tZGF0ZSBzdHlsZSBpbW1lZGlhdGVseS4KICAgICAg
ICAgICAgIHJlY2FsY1N0eWxlKEZvcmNlKTsKICAgICB9CiAKQEAgLTE1NTQsNyArMTU1NCw3IEBA
IHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAgICAgICgqaSktPmRvY3VtZW50RGV0YWNoZWQo
dGhpcyk7CiAgICAgCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCwgYXMgb3VyIEZyYW1lIG1pZ2h0
IGRlbGV0ZSBpdHNlbGYgYXMgc29vbiBhcyBpdCBkZXRhY2hlcwotICAgIC8vIHVzLiBIb3dldmVy
LCB0aGlzIHZpb2xhdGVzIE5vZGU6OmRldGFjaCgpIHN5bWFudGljcywgYXMgaXQncyBuZXZlcgor
ICAgIC8vIHVzLiBIb3dldmVyLCB0aGlzIHZpb2xhdGVzIE5vZGU6OmRldGFjaCgpIHNlbWFudGlj
cywgYXMgaXQncyBuZXZlcgogICAgIC8vIHBvc3NpYmxlIHRvIHJlLWF0dGFjaC4gRXZlbnR1YWxs
eSBEb2N1bWVudDo6ZGV0YWNoKCkgc2hvdWxkIGJlIHJlbmFtZWQsCiAgICAgLy8gb3IgdGhpcyBz
ZXR0aW5nIG9mIHRoZSBmcmFtZSB0byAwIGNvdWxkIGJlIG1hZGUgZXhwbGljaXQgaW4gZWFjaCBv
ZiB0aGUKICAgICAvLyBjYWxsZXJzIG9mIERvY3VtZW50OjpkZXRhY2goKS4KQEAgLTQ1NDYsNyAr
NDU0Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmV4ZWN1dGVTY3JpcHRTb29uKFNjcmlwdEUKICAgICAg
ICAgbV9leGVjdXRlU2NyaXB0U29vblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotLy8gRkYg
bWV0aG9kIGZvciBhY2Nlc3NpbmcgdGhlIHNlbGVjdGlvbiBhZGRlZCBmb3IgY29tcGF0YWJpbGl0
eS4KKy8vIEZGIG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBzZWxlY3Rpb24gYWRkZWQgZm9yIGNv
bXBhdGliaWxpdHkuCiBET01TZWxlY3Rpb24qIERvY3VtZW50OjpnZXRTZWxlY3Rpb24oKSBjb25z
dAogewogICAgIHJldHVybiBmcmFtZSgpID8gZnJhbWUoKS0+ZG9tV2luZG93KCktPmdldFNlbGVj
dGlvbigpIDogMDsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjMsNyArODIzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlU29vbigpOwogICAgIHZvaWQgY2FuY2VsRm9jdXNB
cHBlYXJhbmNlVXBkYXRlKCk7CiAgICAgICAgIAotICAgIC8vIEZGIG1ldGhvZCBmb3IgYWNjZXNz
aW5nIHRoZSBzZWxlY3Rpb24gYWRkZWQgZm9yIGNvbXBhdGFiaWxpdHkuCisgICAgLy8gRkYgbWV0
aG9kIGZvciBhY2Nlc3NpbmcgdGhlIHNlbGVjdGlvbiBhZGRlZCBmb3IgY29tcGF0aWJpbGl0eS4K
ICAgICBET01TZWxlY3Rpb24qIGdldFNlbGVjdGlvbigpIGNvbnN0OwogICAgIAogICAgIC8vIEV4
dGVuc2lvbiBmb3IgbWFuaXB1bGF0aW5nIGNhbnZhcyBkcmF3aW5nIGNvbnRleHRzIGZvciB1c2Ug
aW4gQ1NTCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBFbGVtZW50
Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbAogICAgICAgICB9CiAgICAgfQogICAgIC8vIEZJ
WE1FOiBJJ20gbm90IHN1cmUgYWxsIGRldmljZXMgd2lsbCB3YW50IHRoaXMgb2ZmLCBidXQgdGhp
cyBpcwotICAgIC8vIGN1cnJlbnRseSB0dXJuZWQgb2ZmIGZvciBBbmRyaW9kLgorICAgIC8vIGN1
cnJlbnRseSB0dXJuZWQgb2ZmIGZvciBBbmRyb2lkLgogI2lmICFFTkFCTEUoRElSRUNUSU9OQUxf
UEFEX05BVklHQVRJT04pCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKSAmJiAhcmVuZGVyZXIoKS0+
aXNXaWRnZXQoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKS0+c2Nyb2xs
UmVjdFRvVmlzaWJsZShnZXRSZWN0KCkpOwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNTM3OTMpCisrKyBX
ZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2VsZWN0KTsKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN1Ym1pdCk7CiAKLSAgICAvLyBUaGVzZSA0
IGF0dHJpYnV0ZSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMgYXJlIG92ZXJyaWRlZCBieSBIVE1M
Qm9keUVsZW1lbnQKKyAgICAvLyBUaGVzZSBmb3VyIGF0dHJpYnV0ZSBldmVudCBoYW5kbGVyIGF0
dHJpYnV0ZXMgYXJlIG92ZXJyaWRkZW4gYnkgSFRNTEJvZHlFbGVtZW50CiAgICAgLy8gYW5kIEhU
TUxGcmFtZVNldEVsZW1lbnQgdG8gZm9yd2FyZCB0byB0aGUgRE9NV2luZG93LgogICAgIERFRklO
RV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibHVyKTsKICAgICBERUZJTkVfVklS
VFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwpJbmRleDogV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnRDaGFubmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnRDaGFubmVsLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRD
aGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBDcmVhdGVzIGEgbmV3IHdyYXBwZXIgZm9yIHRoZSBwYXNzZWQgY2hh
bm5lbC4KICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjcmVh
dGUoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogCi0gICAgICAgIC8v
IEVudGFuZ2xlcyB0aGUgY2hhbm5lbCB3aXRoIGEgcG9ydCAoY2FsbGVkIHdoZW4gYSBwb3J0IGhh
cyBiZWVuIGNsb25lZCwgYWZ0ZXIgdGhlIGNsb25lIGhhcyBiZWVuIG1hcnNoYWxsZWQgdG8gaXRz
IG5ldyBvd25pbmcgdGhyZWFkIGFuZCBpcyByZWFkeSB0byByZWNlaXZlIG1lc3NhZ2VzKS4KKyAg
ICAgICAgLy8gRW50YW5nbGVzIHRoZSBjaGFubmVsIHdpdGggYSBwb3J0IChjYWxsZWQgd2hlbiBh
IHBvcnQgaGFzIGJlZW4gY2xvbmVkLCBhZnRlciB0aGUgY2xvbmUgaGFzIGJlZW4gbWFyc2hhbGVk
IHRvIGl0cyBuZXcgb3duaW5nIHRocmVhZCBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBtZXNzYWdl
cykuCiAgICAgICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIGVudGFuZ2xlbWVudCBmYWlsZWQg
YmVjYXVzZSB0aGUgcG9ydCB3YXMgY2xvc2VkLgogICAgICAgICBib29sIGVudGFuZ2xlSWZPcGVu
KE1lc3NhZ2VQb3J0Kik7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2
ZWRUYXJnZXQoKQogICAgIH0KIAogICAgIC8vIEFkanVzdCBsYXllclgvWSB0byBiZSByZWxhdGl2
ZSB0byB0aGUgbGF5ZXIuCi0gICAgLy8gRklYTUU6IFdlJ3JlIHByZXR0eSBzdXJlIHRoaXMgaXMg
dGhlIHdyb25nIGRlZmludGlvbiBvZiAibGF5ZXIuIgorICAgIC8vIEZJWE1FOiBXZSdyZSBwcmV0
dHkgc3VyZSB0aGlzIGlzIHRoZSB3cm9uZyBkZWZpbml0aW9uIG9mICJsYXllci4iCiAgICAgLy8g
T3VyIFJlbmRlckxheWVyIGlzIGEgbW9yZSBtb2Rlcm4gY29uY2VwdCwgYW5kIGxheWVyWC9ZIGlz
IHNvbWUKICAgICAvLyBvdGhlciBub3Rpb24gYWJvdXQgZ3JvdXBzIG9mIGVsZW1lbnRzIChsZWZ0
IG92ZXIgZnJvbSB0aGUgTmV0c2NhcGUgNCBkYXlzPyk7CiAgICAgLy8gd2Ugc2hvdWxkIHRlc3Qg
YW5kIGZpeCB0aGlzLgpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0OSw3ICs4NDksNyBAQCBib29sIE5vZGU6OmlzRm9j
dXNhYmxlKCkgY29uc3QKICAgICAgICAgQVNTRVJUKCFyZW5kZXJlcigpLT5uZWVkc0xheW91dCgp
KTsKICAgICBlbHNlCiAgICAgICAgIC8vIElmIHRoZSBub2RlIGlzIGluIGEgZGlzcGxheTpub25l
IHRyZWUgaXQgbWlnaHQgc2F5IGl0IG5lZWRzIHN0eWxlIHJlY2FsYyBidXQKLSAgICAgICAgLy8g
dGhlIHdob2xlIGRvY3VtZW50IGlzIGF0dWFsbHkgdXAgdG8gZGF0ZS4KKyAgICAgICAgLy8gdGhl
IHdob2xlIGRvY3VtZW50IGlzIGFjdHVhbGx5IHVwIHRvIGRhdGUuCiAgICAgICAgIEFTU0VSVCgh
ZG9jdW1lbnQoKS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpOwogICAgIAogICAgIC8vIEZJWE1F
OiBFdmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQgaGF2ZSBhIGNoaWxkIHRoYXQg
aXMgdmlzaWJsZS4KQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIGJvb2wgTm9kZTo6Y2FuU3RhcnRTZWxl
Y3Rpb24oKSBjb25zdAogTm9kZSogTm9kZTo6c2hhZG93QW5jZXN0b3JOb2RlKCkKIHsKICNpZiBF
TkFCTEUoU1ZHKQotICAgIC8vIFNWRyBlbGVtZW50cyBsaXZpbmcgaW4gYSBzaGFkb3cgdHJlZSBv
bmx5IG9jY291ciB3aGVuIDx1c2U+IGNyZWF0ZWQgdGhlbS4KKyAgICAvLyBTVkcgZWxlbWVudHMg
bGl2aW5nIGluIGEgc2hhZG93IHRyZWUgb25seSBvY2N1ciB3aGVuIDx1c2U+IGNyZWF0ZWQgdGhl
bS4KICAgICAvLyBGb3IgdGhlc2UgY2FzZXMgd2UgZG8gTk9UIHdhbnQgdG8gcmV0dXJuIHRoZSBz
aGFkb3dQYXJlbnROb2RlKCkgaGVyZQogICAgIC8vIGJ1dCB0aGUgYWN0dWFsIHNoYWRvdyB0cmVl
IGVsZW1lbnQgLSBhcyBtYWluIGRpZmZlcmVuY2UgdG8gdGhlIEhUTUwgZm9ybXMKICAgICAvLyBz
aGFkb3cgdHJlZSBjb25jZXB0LiAoVGhpcyBmdW5jdGlvbiBfY291bGRfIGJlIG1hZGUgdmlydHVh
bCAtIG9waW5pb25zPykKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Q29udGFpbmVyTm9kZSogYWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7CiAKICAgICAvLyBDYWxs
ZWQgYnkgdGhlIHBhcnNlciB3aGVuIHRoaXMgZWxlbWVudCdzIGNsb3NlIHRhZyBpcyByZWFjaGVk
LAotICAgIC8vIHNpZ25hbGxpbmcgdGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJlZW4gcGFyc2Vk
IGFuZCBhZGRlZC4KKyAgICAvLyBzaWduYWxpbmcgdGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJl
ZW4gcGFyc2VkIGFuZCBhZGRlZC4KICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgPGFwcGxldD4g
YW5kIDxvYmplY3Q+IGVsZW1lbnRzLCB3aGljaCBjYW4ndCBsYXkgdGhlbXNlbHZlcyBvdXQKICAg
ICAvLyB1bnRpbCB0aGV5IGtub3cgYWxsIG9mIHRoZWlyIG5lc3RlZCA8cGFyYW0+cy4gW1JhZGFy
IDM2MDMxOTEsIDQwNDA4NDhdLgogICAgIC8vIEFsc28gdXNlZCBmb3Igc2NyaXB0IGVsZW1lbnRz
IGFuZCBzb21lIFNWRyBlbGVtZW50cyBmb3Igc2ltaWxhciBwdXJwb3NlcywKSW5kZXg6IFdlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVk
aXRpbmdCb3VuZAogICAgICAgICAgICAgbGFzdE5vZGUgPSBjdXJyZW50Tm9kZTsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIElmIHdlJ3ZlIG1vdmVkIHRvIGEgcG9zaXRpb24gdGhhdCBpcyB2aXN1
YWxseSBkaXNpbmN0LCByZXR1cm4gdGhlIGxhc3Qgc2F2ZWQgcG9zaXRpb24uIFRoZXJlIAorICAg
ICAgICAvLyBJZiB3ZSd2ZSBtb3ZlZCB0byBhIHBvc2l0aW9uIHRoYXQgaXMgdmlzdWFsbHkgZGlz
dGluY3QsIHJldHVybiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbi4gVGhlcmUgCiAgICAgICAgIC8v
IGlzIGNvZGUgYmVsb3cgdGhhdCB0ZXJtaW5hdGVzIGVhcmx5IGlmIHdlJ3JlICphYm91dCogdG8g
bW92ZSB0byBhIHZpc3VhbGx5IGRpc3RpbmN0IHBvc2l0aW9uLgogICAgICAgICBpZiAoZW5kc09m
Tm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlvbnMoY3VycmVudE5vZGUpICYmIGN1cnJlbnRO
b2RlICE9IGJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOwpJbmRleDog
V2ViQ29yZS9kb20vUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlv
bi5oCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhdEZpcnN0RWRpdGlu
Z1Bvc2l0aW9uRm9yTm9kZSgpIGNvbnN0OwogICAgIGJvb2wgYXRMYXN0RWRpdGluZ1Bvc2l0aW9u
Rm9yTm9kZSgpIGNvbnN0OwogCi0gICAgLy8gUmV0dW5zIHRydWUgaWYgdGhlIHZpc3VhbGx5IGVx
dWl2YWxlbnQgcG9zaXRpb25zIGFyb3VuZCBoYXZlIGRpZmZlcmVudCBlZGl0YWJpbGl0eQorICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbnMgYXJv
dW5kIGhhdmUgZGlmZmVyZW50IGVkaXRhYmlsaXR5CiAgICAgYm9vbCBhdEVkaXRpbmdCb3VuZGFy
eSgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgYXRTdGFydE9mVHJlZSgpIGNvbnN0OwpJbmRleDog
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1JhbmdlLmNw
cAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2RvbS9SYW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2Niw3ICs2NjYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFJhbmdl
Ojpwcm9jCiAgICAgfQogCiAgICAgLy8gQ29tcGxleCBjYXNlOiBTdGFydCBhbmQgZW5kIGNvbnRh
aW5lcnMgYXJlIGRpZmZlcmVudC4KLSAgICAvLyBUaGVyZSBhcmUgdGhyZWUgcG9zc2libGl0aWVz
IGhlcmU6CisgICAgLy8gVGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXMgaGVyZToKICAgICAv
LyAxLiBTdGFydCBjb250YWluZXIgPT0gY29tbW9uUm9vdCAoRW5kIGNvbnRhaW5lciBtdXN0IGJl
IGEgZGVzY2VuZGFudCkKICAgICAvLyAyLiBFbmQgY29udGFpbmVyID09IGNvbW1vblJvb3QgKFN0
YXJ0IGNvbnRhaW5lciBtdXN0IGJlIGEgZGVzY2VuZGFudCkKICAgICAvLyAzLiBOZWl0aGVyIGlz
IGNvbW1vblJvb3QsIHRoZXkgYXJlIGJvdGggZGVzY2VuZGFudHMKSW5kZXg6IFdlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojph
ZGRDU1NDb2xvcihNYXBwZWRBdAogICAgIC8vIG5vdCBzb21ldGhpbmcgdGhhdCBmaXRzIHRoZSBz
cGVjcy4KICAgICAKICAgICAvLyB3ZSdyZSBlbXVsYXRpbmcgSUVzIGNvbG9yIHBhcnNlciBoZXJl
LiBJdCBtYXBzIHRyYW5zcGFyZW50IHRvIGJsYWNrLCBvdGhlcndpc2UgaXQgdHJpZXMgdG8gYnVp
bGQgYSByZ2IgdmFsdWUKLSAgICAvLyBvdXQgb2YgZXZlcnlodGluZyB5b3UgcHV0IGluLiBUaGUg
YWxnb3JpdGhtIGlzIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQsIGJ1dCBzZWVtcyB0byB3b3Jr
IGZvciBhbGwgdGVzdCBjYXNlcyBJIGhhdmUuCisgICAgLy8gb3V0IG9mIGV2ZXJ5dGhpbmcgeW91
IHB1dCBpbi4gVGhlIGFsZ29yaXRobSBpcyBleHBlcmltZW50YWxseSBkZXRlcm1pbmVkLCBidXQg
c2VlbXMgdG8gd29yayBmb3IgYWxsIHRlc3QgY2FzZXMgSSBoYXZlLgogICAgIAogICAgIC8vIHRo
ZSBsZW5ndGggb2YgdGhlIGNvbG9yIHZhbHVlIGlzIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQKICAg
ICAvLyBtdWx0aXBsZSBvZiAzLiBlYWNoIHBhcnQgb2YgdGhlIHJnYiB0cmlwbGUgdGhlbiBnZXRz
IG9uZSB0aGlyZApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZp
c2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFN0eWxlQ2hhbmdlOjpyZWNvbmNp
bGVUZXh0RGVjb3JhdGlvCiAgICAgICAgIHRleHREZWNvcmF0aW9uID0gdGV4dERlY29yYXRpb25z
SW5FZmZlY3Q7CiAgICAgfQogCi0gICAgLy8gSWYgdGV4dC1kZWNyYXRpb24gaXMgc2V0IHRvICJu
b25lIiwgcmVtb3ZlIHRoZSBwcm9wZXJ0eSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWRkIHJl
ZHVuZGFudCAidGV4dC1kZWNvcmF0aW9uOiBub25lIi4KKyAgICAvLyBJZiB0ZXh0LWRlY29yYXRp
b24gaXMgc2V0IHRvICJub25lIiwgcmVtb3ZlIHRoZSBwcm9wZXJ0eSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gYWRkIHJlZHVuZGFudCAidGV4dC1kZWNvcmF0aW9uOiBub25lIi4KICAgICBpZiAo
dGV4dERlY29yYXRpb24gJiYgIXRleHREZWNvcmF0aW9uLT5pc1ZhbHVlTGlzdCgpKQogICAgICAg
ICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiB9CkBA
IC0yNTAsNyArMjUwLDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMoQ1NT
TQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9hcHBseUZvbnRT
aXplID0gIjciOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gSHVnZSBxdWlyayBpbiBN
aWNyb3NmdCBFbnRvdXJhZ2UgaXMgdGhhdCB0aGV5IHVuZGVyc3RhbmQgQ1NTIGZvbnQtc2l6ZSwg
YnV0IGFsc28gd3JpdGUgCisgICAgICAgICAgICAvLyBIdWdlIHF1aXJrIGluIE1pY3Jvc29mdCBF
bnRvdXJhZ2UgaXMgdGhhdCB0aGV5IHVuZGVyc3RhbmQgQ1NTIGZvbnQtc2l6ZSwgYnV0IGFsc28g
d3JpdGUgCiAgICAgICAgICAgICAvLyBvdXQgbGVnYWN5IDEtNyB2YWx1ZXMgaW4gZm9udCB0YWdz
IChJIGd1ZXNzIGZvciBtYWlsZXJzIHRoYXQgYXJlIG5vdCBDU1Mtc2F2dnkgYXQgYWxsLCAKICAg
ICAgICAgICAgIC8vIGxpa2UgRXVkb3JhKS4gWWVzLCB0aGV5IHdyaXRlIG91dCAqYm90aCouIFdl
IG5lZWQgdG8gd3JpdGUgb3V0IGJvdGggYXMgd2VsbC4KICAgICAgICAgfQpAQCAtNDUxLDggKzQ1
MSw4IEBAIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGUKIAogdm9pZCBw
cmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBl
ZGl0aW5nU3R5bGUsIFBvc2l0aW9uIHBvcykKIHsKLSAgICAvLyBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6aGFuZGxlU3R5bGVTcGFucygpIHJlcXVpZXJzIHRoYXQgdGhpcyBmdW5jdGlvbiBvbmx5
IHJlbW92ZXMgdGhlIGVkaXRpbmcgc3R5bGUuCi0gICAgLy8gSWYgdGhpcyBmdW5jdGlvbiB3YXMg
bW9kaWZpZWQgaW4gdGhlIGZ1dHVyZXRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMs
IHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQorICAgIC8vIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0
aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KKyAgICAvLyBJZiB0aGlzIGZ1bmN0
aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHBy
b3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdo
aWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2Fs
bGVkLgogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBlZGl0
aW5nU3R5bGVBdFBvc2l0aW9uKHBvcyk7CiAgICAgc3R5bGUtPmRpZmYoZWRpdGluZ1N0eWxlKTsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBib29sIGlzRGVsZXRhYmxl
RWxlbWVudChjb25zdCBOb2QKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQo
KSB8fCAhbm9kZS0+aW5Eb2N1bWVudCgpIHx8ICFub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBJbiBnZW5lcmFsIHdlIHdhbnQgdG8gb25s
eSBkcmF3IHRoZSBVSSBhcnJvdW5kIG9iamVjdCBvZiBhIGNlcnRhaW4gYXJlYSwgYnV0IHdlIHN0
aWxsIGtlZXAgdGhlIG1pbiB3aWR0aC9oZWlnaHQgdG8KKyAgICAvLyBJbiBnZW5lcmFsIHdlIHdh
bnQgdG8gb25seSBkcmF3IHRoZSBVSSBhcm91bmQgb2JqZWN0IG9mIGEgY2VydGFpbiBhcmVhLCBi
dXQgd2Ugc3RpbGwga2VlcCB0aGUgbWluIHdpZHRoL2hlaWdodCB0bwogICAgIC8vIG1ha2Ugc3Vy
ZSB3ZSBkb24ndCBlbmQgdXAgd2l0aCB2ZXJ5IHRoaW4gb3IgdmVyeSBzaG9ydCBlbGVtZW50cyBn
ZXR0aW5nIHRoZSBVSS4KICAgICBjb25zdCBpbnQgbWluaW11bUFyZWEgPSAyNTAwOwogICAgIGNv
bnN0IGludCBtaW5pbXVtV2lkdGggPSA0ODsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIx
LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplUwogICAgIGVsc2Ug
aWYgKGVuZC5ub2RlKCktPmhhc1RhZ05hbWUoaHJUYWcpKQogICAgICAgICBlbmQgPSBQb3NpdGlv
bihlbmQubm9kZSgpLCAxKTsKICAgICAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHVzZWQg
c28gdGhhdCBtb3ZlUGFyYWdyYXBocyBjYW4gYXZvaWQgdGhlIGJ1Z3MgaW4gc3BlY2lhbCBlbGVt
ZW50IGV4cGFuaW9uLgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgdXNlZCBzbyB0aGF0IG1v
dmVQYXJhZ3JhcGhzIGNhbiBhdm9pZCB0aGUgYnVncyBpbiBzcGVjaWFsIGVsZW1lbnQgZXhwYW5z
aW9uLgogICAgIGlmICghbV9leHBhbmRGb3JTcGVjaWFsRWxlbWVudHMpCiAgICAgICAgIHJldHVy
bjsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAyLDcgKzE1MDIsNyBAQCB2
b2lkIEVkaXRvcjo6bGVhcm5TcGVsbGluZygpCiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCB0aGlzIG9uIHRo
ZSBNYWMsIGFuZCBpdCBzaG91bGQgcmVtb3ZlIG1pc3BwZWxsaW5nIG1hcmtlcnMgYXJvdW5kIHRo
ZSAKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCB0aGlzIG9uIHRoZSBNYWMsIGFuZCBpdCBz
aG91bGQgcmVtb3ZlIG1pc3NwZWxsaW5nIG1hcmtlcnMgYXJvdW5kIHRoZSAKICAgICAvLyBsZWFy
bmVkIHdvcmQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTM5NjA3Mj4uCiAKICAgICBTdHJpbmcgdGV4
dCA9IGZyYW1lKCktPnNlbGVjdGVkVGV4dCgpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcwkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3ICs2
MzYsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gCiAKICAgICBf
Zm9ybWF0OiBmdW5jdGlvbihwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBub2Rl
IGlzIHVzZWQgbGlrZSBhIEJ1aWxkZXIuIFZhbHVlcyBhcmUgY29udGludHVhbGx5IGFwcGVuZGVk
IG9udG8gaXQuCisgICAgICAgIC8vIFRoaXMgbm9kZSBpcyB1c2VkIGxpa2UgYSBCdWlsZGVyLiBW
YWx1ZXMgYXJlIGNvbnRpbnVhbGx5IGFwcGVuZGVkIG9udG8gaXQuCiAgICAgICAgIHZhciBmb3Jt
YXR0ZWRSZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIGlm
ICghcGFyYW1ldGVycy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkUmVzdWx0
OwpAQCAtNjg5LDcgKzY4OSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5
cGUgPSAKICAgICAgICAgZm9ybWF0dGVycy5vID0gY29uc29sZUZvcm1hdFdyYXBwZXIoKTsKICAg
ICAgICAgLy8gRmlyZWJ1ZyBhbGxvd3MgYm90aCAlaSBhbmQgJWQgZm9yIGZvcm1hdHRpbmcgaW50
ZWdlcnMuCiAgICAgICAgIGZvcm1hdHRlcnMuaSA9IGZvcm1hdHRlcnMuZDsKLSAgICAgICAgLy8g
U3VwcG9ydCAlTyB0byBmb3JjZSBvYmplY3QgZm9ybWF0aW5nLCBpbnN0ZWFkIG9mIHRoZSB0eXBl
LWJhc2VkICVvIGZvcm1hdHRpbmcuCisgICAgICAgIC8vIFN1cHBvcnQgJU8gdG8gZm9yY2Ugb2Jq
ZWN0IGZvcm1hdHRpbmcsIGluc3RlYWQgb2YgdGhlIHR5cGUtYmFzZWQgJW8gZm9ybWF0dGluZy4K
ICAgICAgICAgZm9ybWF0dGVycy5PID0gY29uc29sZUZvcm1hdFdyYXBwZXIodHJ1ZSk7CiAKICAg
ICAgICAgZnVuY3Rpb24gYXBwZW5kKGEsIGIpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiA1Mzc5
MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDcg
KzI5NSw3IEBAIHZvaWQgQ2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcygpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBEZXN0cm95IG91ciBkZWNvZGVkIGRhdGEuIFRo
aXMgd2lsbCByZW1vdmUgdXMgZnJvbSAKLSAgICAgICAgICAgIC8vIG1fbGl2ZURlY29kZWRSZXNv
dXJjZXMsIGFuZCBwb3NzaWJseSBtb3ZlIHVzIHRvIGEgZGlmZmVybnQgTFJVIAorICAgICAgICAg
ICAgLy8gbV9saXZlRGVjb2RlZFJlc291cmNlcywgYW5kIHBvc3NpYmx5IG1vdmUgdXMgdG8gYSBk
aWZmZXJlbnQgTFJVIAogICAgICAgICAgICAgLy8gbGlzdCBpbiBtX2FsbFJlc291cmNlcy4KICAg
ICAgICAgICAgIGN1cnJlbnQtPmRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogCkBAIC0zNDcsNyArMzQ3
LDcgQEAgdm9pZCBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzKCkKICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlKiBwcmV2ID0gY3VycmVudC0+bV9wcmV2SW5BbGxSZXNvdXJjZXNMaXN0OwogICAg
ICAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNDbGllbnRzKCkgJiYgIWN1cnJlbnQtPmlzUHJlbG9h
ZGVkKCkgJiYgY3VycmVudC0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAgICAgIC8vIERlc3Ry
b3kgb3VyIGRlY29kZWQgZGF0YS4gVGhpcyB3aWxsIHJlbW92ZSB1cyBmcm9tIAotICAgICAgICAg
ICAgICAgIC8vIG1fbGl2ZURlY29kZWRSZXNvdXJjZXMsIGFuZCBwb3NzaWJseSBtb3ZlIHVzIHRv
IGEgZGlmZmVybnQgCisgICAgICAgICAgICAgICAgLy8gbV9saXZlRGVjb2RlZFJlc291cmNlcywg
YW5kIHBvc3NpYmx5IG1vdmUgdXMgdG8gYSBkaWZmZXJlbnQgCiAgICAgICAgICAgICAgICAgLy8g
TFJVIGxpc3QgaW4gbV9hbGxSZXNvdXJjZXMuCiAgICAgICAgICAgICAgICAgY3VycmVudC0+ZGVz
dHJveURlY29kZWREYXRhKCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmgJKHJldmlzaW9u
IDUzNzkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkw
LDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9kZWFkU2l6ZTsgLy8gVGhlIG51
bWJlciBvZiBieXRlcyBjdXJyZW50bHkgY29uc3VtZWQgYnkgImRlYWQiIHJlc291cmNlcyBpbiB0
aGUgY2FjaGUuCiAKICAgICAvLyBTaXplLWFkanVzdGVkIGFuZCBwb3B1bGFyaXR5LWF3YXJlIExS
VSBsaXN0IGNvbGxlY3Rpb24gZm9yIGNhY2hlIG9iamVjdHMuICBUaGlzIGNvbGxlY3Rpb24gY2Fu
IGhvbGQKLSAgICAvLyBtb3JlIHJlc291cmNlcyB0aGFuIHRoZSBjYWNoZWQgcmVzb3VyY2UgbWFw
LCBzaW5jZSBpdCBjYW4gYWxzbyBob2xkICJzdGFsZSIgbXVpbHRpcGxlIHZlcnNpb25zIG9mIG9i
amVjdHMgdGhhdCBhcmUKKyAgICAvLyBtb3JlIHJlc291cmNlcyB0aGFuIHRoZSBjYWNoZWQgcmVz
b3VyY2UgbWFwLCBzaW5jZSBpdCBjYW4gYWxzbyBob2xkICJzdGFsZSIgbXVsdGlwbGUgdmVyc2lv
bnMgb2Ygb2JqZWN0cyB0aGF0IGFyZQogICAgIC8vIHdhaXRpbmcgdG8gZGllIHdoZW4gdGhlIGNs
aWVudHMgcmVmZXJlbmNpbmcgdGhlbSBnbyBhd2F5LgogICAgIFZlY3RvcjxMUlVMaXN0LCAzMj4g
bV9hbGxSZXNvdXJjZXM7CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6Om1ha2VQ
dXJnZWFibGUoYm9vbCAKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICAvLyBTaG91bGQgbm90IG1ha2UgYnVmZmVyIHB1cmdl
YWJsZSBpZiBpdCBoYXMgcmVmcyBvdGhlbiB0aGFuIHRoaXMgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0
d28gY29waWVzLgorICAgICAgICAvLyBTaG91bGQgbm90IG1ha2UgYnVmZmVyIHB1cmdlYWJsZSBp
ZiBpdCBoYXMgcmVmcyBvdGhlciB0aGFuIHRoaXMgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0d28gY29w
aWVzLgogICAgICAgICBpZiAoIW1fZGF0YS0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lv
biA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgLy8gTGlzdCBvZiBhY2NlcHRhYmxl
IE1JTUUgdHlwZXMgc2VwZXJhdGVkIGJ5ICIsIi4KKyAgICAvLyBMaXN0IG9mIGFjY2VwdGFibGUg
TUlNRSB0eXBlcyBzZXBhcmF0ZWQgYnkgIiwiLgogICAgIC8vIEEgTUlNRSB0eXBlIG1heSBjb250
YWluIGEgd2lsZGNhcmQsIGUuZy4gInRleHQvKiIuCiAgICAgU3RyaW5nIGFjY2VwdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZXB0OyB9CiAgICAgdm9pZCBzZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBh
Y2NlcHQpIHsgbV9hY2NlcHQgPSBhY2NlcHQ7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZFJlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhY2hlZFJlc291cmNl
SGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4gZ2V0KCkgIT0gby5nZXQoKTsgfQogICAgIH07
CiAKLSAgICAvLyBEb24ndCBpbmxpbmUgZm9yIHdpbnNjdyBjb21waWxlciB0byBwcmV2ZW50IHRo
ZSBjb21waWxlciBhZ3Jlc3NpdmVseSByZXNvbHZpbmcKKyAgICAvLyBEb24ndCBpbmxpbmUgZm9y
IHdpbnNjdyBjb21waWxlciB0byBwcmV2ZW50IHRoZSBjb21waWxlciBhZ2dyZXNzaXZlbHkgcmVz
b2x2aW5nCiAgICAgLy8gdGhlIGJhc2UgY2xhc3Mgb2YgUiogd2hlbiBDYWNoZWRSZXNvdXJjZUhh
bmRsZXI8VD4oUiopIGlzIGlubGluZWQuICBUaGUgYnVnIGlzCiAgICAgLy8gcmVwb3J0ZWQgYXQ6
IGh0dHBzOi8veGRhYnVnMDAxLmV4dC5ub2tpYS5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lk
PTk4MTIuCiAgICAgdGVtcGxhdGUgPGNsYXNzIFI+CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdXJsRm9ySGlz
dG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwogCi0gICAgICAgIC8vIFRoZXNlIGFjY2Vzc29y
cyBhY2NvbW9kYXRlIFdlYkNvcmUncyBzb21ld2hhdCBmaWNrbGUgY3VzdG9tIG9mIGNyZWF0aW5n
IGhpc3RvcnkKKyAgICAgICAgLy8gVGhlc2UgYWNjZXNzb3JzIGFjY29tbW9kYXRlIFdlYkNvcmUn
cyBzb21ld2hhdCBmaWNrbGUgY3VzdG9tIG9mIGNyZWF0aW5nIGhpc3RvcnkKICAgICAgICAgLy8g
aXRlbXMgZm9yIHJlZGlyZWN0cywgYnV0IG9ubHkgc29tZXRpbWVzLiBGb3IgInNvdXJjZSIgYW5k
ICJkZXN0aW5hdGlvbiIsCiAgICAgICAgIC8vIHRoZXNlIGFjY2Vzc29ycyByZXR1cm4gdGhlIFVS
TCB0aGF0IHdvdWxkIGhhdmUgYmVlbiB1c2VkIGlmIGEgaGlzdG9yeQogICAgICAgICAvLyBpdGVt
IHdlcmUgY3JlYXRlZC4gVGhpcyBhbGxvd3MgV2ViS2l0IHRvIGxpbmsgaGlzdG9yeSBpdGVtcyBy
ZWZsZWN0aW5nCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAJKHJldmlz
aW9uIDUzNzkzKQorKysgV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE4NSw3ICsxMTg1LDcgQEAgRlRQRW50cnlUeXBlIHBhcnNlT25lRlRQ
TGluZShjb25zdCBjaGFyKgogICAgICAgIAogICAgICAgICB9IC8qIHRpbWUveWVhciAqLwogICAg
ICAgICAKLSAgICAgICAgLy8gdGhlcmUgaXMgZXhhY2x5IDEgc3BhY2UgYmV0d2VlbiBmaWxlbmFt
ZSBhbmQgcHJldmlvdXMgdG9rZW4gaW4gYWxsCisgICAgICAgIC8vIHRoZXJlIGlzIGV4YWN0bHkg
MSBzcGFjZSBiZXR3ZWVuIGZpbGVuYW1lIGFuZCBwcmV2aW91cyB0b2tlbiBpbiBhbGwKICAgICAg
ICAgLy8gb3V0cHV0cyBleGNlcHQgb2xkIEhlbGxzb2Z0CiAgICAgICAgIGlmICghaXNPbGRIZWxs
c29mdCkKICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbdG9rbWFya2VyKzNdICsg
dG9rbGVuW3Rva21hcmtlciszXSArIDE7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Bl
bigpCiAgICAgCiAgICAgLy8gUHJldmVudCB3aW5kb3cub3Blbih1cmwpIC0tIGVnIHdpbmRvdy5v
cGVuKCJhYm91dDpibGFuayIpIC0tIGZyb20gYmxvd2luZyBhd2F5IHJlc3VsdHMKICAgICAvLyBm
cm9tIGEgc3Vic2VxdWVudCB3aW5kb3cuZG9jdW1lbnQub3BlbiAvIHdpbmRvdy5kb2N1bWVudC53
cml0ZSBjYWxsLiAKLSAgICAvLyBDYW5jZWxsaW5nIHJlZGlyZWN0aW9uIGhlcmUgd29ya3MgZm9y
IGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCisgICAgLy8gQ2FuY2VsaW5nIHJlZGly
ZWN0aW9uIGhlcmUgd29ya3MgZm9yIGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCiAg
ICAgLy8gaW1wbGljaXRseSBwcmVjZWRlcyBkb2N1bWVudC53cml0ZS4KICAgICBtX2ZyYW1lLT5y
ZWRpcmVjdFNjaGVkdWxlcigpLT5jYW5jZWwoKTsgCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpICE9IGJsYW5rVVJMKCkpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZENhbmNlbChjb25zdCBSZXMKICAgICAvLyBsb2FkIGl0c2VsZiB0byBiZSBjYW5jZWxsZWQgKHdo
aWNoIGNvdWxkIGhhcHBlbiB3aXRoIGEgamF2YXNjcmlwdCB0aGF0IAogICAgIC8vIGNoYW5nZXMg
dGhlIHdpbmRvdyBsb2NhdGlvbikuIFRoaXMgaXMgdXNlZCB0byBwcmV2ZW50IGJvdGggdGhlIGJv
ZHkKICAgICAvLyBvZiB0aGlzIG1ldGhvZCBhbmQgdGhlIGJvZHkgb2YgY29ubmVjdGlvbkRpZEZp
bmlzaExvYWRpbmc6IHJ1bm5pbmcKLSAgICAvLyBmb3IgYSBzaW5nbGUgZGVsZWdhdGUuIENhbmNl
bGxpbmcgd2lucy4KKyAgICAvLyBmb3IgYSBzaW5nbGUgZGVsZWdhdGUuIENhbmNlbGluZyB3aW5z
LgogICAgIG1fY2FuY2VsbGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAobV9oYW5kbGUpCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA1Mzc5MykK
KysrIFdlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIGFsbCBjYXNlcy4gQWxsIHRhc2tzIHBvc3RlZCBmcm9tIHRoZSB3b3JrZXIgY29udGV4
dCdzIHRocmVhZCBhcmUgb2sgYmVjYXVzZQogICAgICAgICAvLyAgICB0aGUgbGFzdCB0YXNrIHBv
c3RlZCBhbHdheXMgaXMgIm1haW5UaHJlYWREZXN0cm95Iiwgc28gTWFpblRocmVhZEJyaWRnZSBp
cwotICAgICAgICAvLyAgICBhcm91bmQgZm9yIGFsbCB0YXNrcyB0aGF0IHVzZSBpdCBvbiB0aGUg
bWlhbiB0aHJlYWQuCisgICAgICAgIC8vICAgIGFyb3VuZCBmb3IgYWxsIHRhc2tzIHRoYXQgdXNl
IGl0IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgLy8KICAgICAgICAgLy8gY2FzZSAxLiB3
b3JrZXIudGVybWluYXRlIGlzIGNhbGxlZC4KICAgICAgICAgLy8gICAgSW4gdGhpcyBjYXNlLCBu
byBtb3JlIHRhc2tzIGFyZSBwb3N0ZWQgZnJvbSB0aGUgd29ya2VyIG9iamVjdCdzIHRocmVhZCB0
byB0aGUgd29ya2VyCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDA1LDcgKzQwNSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNl
TmUKICAgICAgICAgdG90YWxBdmFpbGFibGVTaXplID0gKG1fbWF4aW11bVNpemUgLSBjdXJyZW50
U2l6ZSkgKyBtX2RhdGFiYXNlLmZyZWVTcGFjZVNpemUoKTsKICAgICB9CiAKLSAgICAvLyBUaGUg
c3BhY2UgbmVlZGVkIHRvIGJlIGZyZWVkIGluIG9yZGVyIHRvIGFjY29tb2RhdGUgdGhlIGZhaWxl
ZCBjYWNoZSBpcworICAgIC8vIFRoZSBzcGFjZSBuZWVkZWQgdG8gYmUgZnJlZWQgaW4gb3JkZXIg
dG8gYWNjb21tb2RhdGUgdGhlIGZhaWxlZCBjYWNoZSBpcwogICAgIC8vIHRoZSBzaXplIG9mIHRo
ZSBmYWlsZWQgY2FjaGUgbWludXMgYW55IGFscmVhZHkgYXZhaWxhYmxlIGZyZWUgc3BhY2UuCiAg
ICAgc3BhY2VOZWVkZWQgPSBjYWNoZVRvU2F2ZSAtIHRvdGFsQXZhaWxhYmxlU2l6ZTsKICAgICAv
LyBUaGUgc3BhY2UgbmVlZGVkIHZhbHVlIG11c3QgYmUgcG9zaXRpdmUgKG9yIGVsc2UgdGhlIHRv
dGFsIGFscmVhZHkKSW5kZXg6IFdlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVz
ZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblByZXNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBQZXJtaXNzaW9u
IHsgCi0gICAgICAgICAgICBQZXJtaXNzaW9uQWxsb3dlZCwgICAgIC8vIFVzZXIgaGFzIGFsbG93
ZWQgbm90aWZpY2F0aW9ucwotICAgICAgICAgICAgUGVybWlzc2lvbk5vdEFsbG93ZWQsICAvLyBV
c2VyIGhhcyBub3QgeWV0IGFsbG93ZWQKLSAgICAgICAgICAgIFBlcm1pc3Npb25EZW5pZWQgICAg
ICAgLy8gVXNlciBoYXMgZXhwbGljdGx5IGRlbmllZCBwZXJtaXNzaW9uCisgICAgICAgICAgICBQ
ZXJtaXNzaW9uQWxsb3dlZCwgLy8gVXNlciBoYXMgYWxsb3dlZCBub3RpZmljYXRpb25zCisgICAg
ICAgICAgICBQZXJtaXNzaW9uTm90QWxsb3dlZCwgLy8gVXNlciBoYXMgbm90IHlldCBhbGxvd2Vk
CisgICAgICAgICAgICBQZXJtaXNzaW9uRGVuaWVkIC8vIFVzZXIgaGFzIGV4cGxpY2l0bHkgZGVu
aWVkIHBlcm1pc3Npb24KICAgICAgICAgfTsKIAogICAgICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRp
b25QcmVzZW50ZXIoKSB7fQpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25D
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw3ICs0
ODQsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sCiAgICAgbV9k
YXRhLT51cGRhdGVBbmltYXRpb25UaW1lcigpOwogCiAgICAgaWYgKGJsZW5kZWRTdHlsZSAhPSBu
ZXdTdHlsZSkgewotICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9ucy90cmFuc2l0aW9ucyBjaGFu
Z2Ugb3BhY2l0eSBvciB0cmFuc2Zvcm0sIHdlIG5lZWVkIHRvIHVwZGF0ZQorICAgICAgICAvLyBJ
ZiB0aGUgYW5pbWF0aW9ucy90cmFuc2l0aW9ucyBjaGFuZ2Ugb3BhY2l0eSBvciB0cmFuc2Zvcm0s
IHdlIG5lZWQgdG8gdXBkYXRlCiAgICAgICAgIC8vIHRoZSBzdHlsZSB0byBpbXBvc2UgdGhlIHN0
YWNraW5nIHJ1bGVzLiBOb3RlIHRoYXQgdGhpcyBpcyBhbHNvCiAgICAgICAgIC8vIGRvbmUgaW4g
Q1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUoKS4KICAgICAgICAgaWYgKGJsZW5k
ZWRTdHlsZS0+aGFzQXV0b1pJbmRleCgpICYmIChibGVuZGVkU3R5bGUtPm9wYWNpdHkoKSA8IDEu
MGYgfHwgYmxlbmRlZFN0eWxlLT5oYXNUcmFuc2Zvcm0oKSkpCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL0xpbmtIYXNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNo
LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29udGFp
bnNDb2xvblNsYXNoU2xhCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhblBhdGgoVmVjdG9yPFVD
aGFyLCA1MTI+JiBwYXRoKQogewotICAgIC8vIEZJWE1FOiBTaG9sZCBub3QgZG8gdGhpcyBpbiB0
aGUgcXVlcnkgb3IgYW5jaG9yIHBhcnQuCisgICAgLy8gRklYTUU6IFNob3VsZCBub3QgZG8gdGhp
cyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9yIHBhcnQuCiAgICAgaW50IHBvczsKICAgICB3aGlsZSAo
KHBvcyA9IGZpbmRTbGFzaERvdERvdFNsYXNoKHBhdGguZGF0YSgpLCBwYXRoLnNpemUoKSkpICE9
IC0xKSB7CiAgICAgICAgIGludCBwcmV2ID0gcmV2ZXJzZUZpbmQocGF0aC5kYXRhKCksIHBhdGgu
c2l6ZSgpLCAnLycsIHBvcyAtIDEpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY2xlYW5QYXRoKFZlY3RvcjxVQ2hhCiAgICAgICAgICAgICBwYXRoLnJlbW92ZShwcmV2LCBw
b3MgLSBwcmV2ICsgMyk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFNob2xkIG5vdCBkbyB0aGlz
IGluIHRoZSBxdWVyeSBwYXJ0LgorICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IGRvIHRoaXMgaW4g
dGhlIHF1ZXJ5IHBhcnQuCiAgICAgLy8gU2V0IHJlZlBvcyB0byAtMiB0byBtZWFuICJJIGhhdmVu
J3QgbG9va2VkIGZvciB0aGUgYW5jaG9yIHlldCIuCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB3
YXN0ZSBhIGZ1bmN0aW9uIGNhbGwgb24gdGhlIHNlYXJjaCBmb3IgdGhlIHRoZSBhbmNob3IKICAg
ICAvLyBpbiB0aGUgdmFzdCBtYWpvcml0eSBvZiBjYXNlcyB3aGVyZSB0aGVyZSBpcyBubyAiLy8i
IGluIHRoZSBwYXRoLgpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVh
blBhdGgoVmVjdG9yPFVDaGEKICAgICAgICAgICAgIHBvcyArPSAyOwogICAgIH0KIAotICAgIC8v
IEZJWE1FOiBTaG9sZCBub3QgZG8gdGhpcyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9yIHBhcnQuCisg
ICAgLy8gRklYTUU6IFNob3VsZCBub3QgZG8gdGhpcyBpbiB0aGUgcXVlcnkgb3IgYW5jaG9yIHBh
cnQuCiAgICAgd2hpbGUgKChwb3MgPSBmaW5kU2xhc2hEb3RTbGFzaChwYXRoLmRhdGEoKSwgcGF0
aC5zaXplKCkpKSAhPSAtMSkKICAgICAgICAgcGF0aC5yZW1vdmUocG9zLCAyKTsKIH0KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGNhbGN1bGF0ZURyYXdpbmdNb2RlKAogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gU2V0dGluZyBtb2RlIHRvIGtDR1BhdGhTdHJva2UgZXZlbiBpZiBz
aG91bGRTdHJva2UgaXMgZmFsc2UuIEluIHRoYXQgY2FzZSwgd2UgcmV0dXJuIGZhbHNlIGFuZCBt
b2RlIHdpbGwgbm90IGJlIHVzZWQsCi0gICAgICAgIC8vIGJ1dCB0aGUgY29tcGlsZXIgd2lsbCBu
b3QgY29tcGFpbiBhYm91dCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgorICAgICAgICAvLyBi
dXQgdGhlIGNvbXBpbGVyIHdpbGwgbm90IGNvbXBsYWluIGFib3V0IGFuIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGUuCiAgICAgICAgIG1vZGUgPSBrQ0dQYXRoU3Ryb2tlOwogICAgIH0KIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAkocmV2aXNpb24gNTM3
OTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dAogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4
U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZM
VF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgotICAg
IC8vIElOVF9NQVggaXMgYWxtb3N0IGNvcnJlY3QsIGJ1dCB0aGVyZSBzZWVtcyB0byBiZSBzb21l
IG51bWJlciB3cmFwcGluZyBvY2N1cmluZyBtYWtpbmcgdGhlIGZpbGwKKyAgICAvLyBJTlRfTUFY
IGlzIGFsbW9zdCBjb3JyZWN0LCBidXQgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSBudW1iZXIgd3Jh
cHBpbmcgb2NjdXJyaW5nIG1ha2luZyB0aGUgZmlsbAogICAgIC8vIHBhdHRlcm4gaXMgbm90IGZp
bGxlZCBjb3JyZWN0bHkuCiAgICAgLy8gVG8gbWFrZSBlcnJvciBvZiBmbG9hdGluZyBwb2ludCBs
ZXNzIHRoYW4gMC41LCB3ZSB1c2UgdGhlIGhhbGYgb2YgdGhlIG51bWJlciBvZiBtYW50aXNzYSBv
ZiBmbG9hdCAoMSA8PCAyMikuCiAgICAgQ0dGbG9hdCB4U3RlcCA9IG1fcmVwZWF0WCA/IHRpbGVS
ZWN0LndpZHRoKCkgOiAoMSA8PCAyMik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDUz
NzkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIGludCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2kKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGhpdEdseXBoRW5kID0gbWF4PENGSW5kZXg+KGhpdEdseXBoU3RhcnQsIGog
PiAwID8gY29tcGxleFRleHRSdW4uaW5kZXhBdChqIC0gMSkgOiBjb21wbGV4VGV4dFJ1bi5zdHJp
bmdMZW5ndGgoKSk7CiAKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBkaXZp
ZGluZyB0aGUgZ2x5cGgncyBhZHZhbmNlIGVxdWlhbGx5IGJldHdlZW4gdGhlIGNoYXJhY3RlcnMs
IHRoaXMKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBkaXZpZGluZyB0aGUg
Z2x5cGgncyBhZHZhbmNlIGVxdWFsbHkgYmV0d2VlbiB0aGUgY2hhcmFjdGVycywgdGhpcwogICAg
ICAgICAgICAgICAgIC8vIGNvdWxkIHVzZSB0aGUgZ2x5cGgncyAibGlnYXR1cmUgY2FyZXRzIi4g
SG93ZXZlciwgdGhlcmUgaXMgbm8gQ29yZSBUZXh0IEFQSSB0byBnZXQgdGhlCiAgICAgICAgICAg
ICAgICAgLy8gbGlnYXR1cmUgY2FyZXRzLgogICAgICAgICAgICAgICAgIENGSW5kZXggaGl0SW5k
ZXggPSBoaXRHbHlwaFN0YXJ0ICsgKGhpdEdseXBoRW5kIC0gaGl0R2x5cGhTdGFydCkgKiAobV9y
dW4ubHRyKCkgPyB4IC8gYWRqdXN0ZWRBZHZhbmNlIDogMSAtIHggLyBhZGp1c3RlZEFkdmFuY2Up
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXll
ckNBLmgJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NMYXllckNBLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw5ICszMTcsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7CiAKLSAgICBSZXRhaW5Q
dHI8V2ViTGF5ZXI+IG1fbGF5ZXI7ICAgICAgICAgICAgLy8gVGhlIG1haW4gbGF5ZXIKLSAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9zdHJ1Y3R1cmFsTGF5ZXI7ICAgLy8gQSBsYXllciB1c2VkIGZv
ciBzdHJ1Y3R1YWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVu
aW5nLiBJcyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
Y29udGVudHNMYXllcjsgICAgIC8vIEEgbGF5ZXIgdXNlZCBmb3IgaW5uZXIgY29udGVudCwgbGlr
ZSBpbWFnZSBhbmQgdmlkZW8KKyAgICBSZXRhaW5QdHI8V2ViTGF5ZXI+IG1fbGF5ZXI7IC8vIFRo
ZSBtYWluIGxheWVyCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3RydWN0dXJhbExheWVyOyAv
LyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qg
b3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCisgICAgUmV0
YWluUHRyPENBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBpbm5l
ciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2aWRlbwogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBj
bG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgogICAgIE93blB0cjxM
YXllck1hcD4gbV9sYXllckNsb25lczsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0JKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlU3RydWN0
dXJhbExhCiB7CiAgICAgaWYgKHB1cnBvc2UgPT0gTm9TdHJ1Y3R1cmFsTGF5ZXIpIHsKICAgICAg
ICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAgICAvLyBSZWxhY2UgdGhlIHRy
YW5zZm9ybUxheWVyIGluIHRoZSBwYXJlbnQgd2l0aCB0aGlzIGxheWVyLgorICAgICAgICAgICAg
Ly8gUmVwbGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVudCB3aXRoIHRoaXMgbGF5
ZXIuCiAgICAgICAgICAgICBbbV9sYXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAg
ICAgICAgICAgICBbW21fc3RydWN0dXJhbExheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxhY2VT
dWJsYXllcjptX3N0cnVjdHVyYWxMYXllci5nZXQoKSB3aXRoOm1fbGF5ZXIuZ2V0KCldOwogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpkb1NlZWsoKSAKICAg
ICAgICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRSYXRlOjBdOwogICAgIFttX3F0TW92aWUuZ2V0KCkg
c2V0Q3VycmVudFRpbWU6cXR0aW1lXTsKIAotICAgIC8vIHJlc3RvcmUgcGxheWJhY2sgb25seSBp
ZiBub3QgYXQgZW5kLCBvdGhld2lzZSBRVE1vdmllIHdpbGwgbG9vcAorICAgIC8vIHJlc3RvcmUg
cGxheWJhY2sgb25seSBpZiBub3QgYXQgZW5kLCBvdGhlcndpc2UgUVRNb3ZpZSB3aWxsIGxvb3AK
ICAgICBmbG9hdCB0aW1lQWZ0ZXJTZWVrID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAob2xkUmF0
ZSAmJiB0aW1lQWZ0ZXJTZWVrIDwgZHVyYXRpb24oKSkKICAgICAgICAgW21fcXRNb3ZpZS5nZXQo
KSBzZXRSYXRlOm9sZFJhdGVdOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpzZXRDbG9zZWRDYXB0aW8KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykgJiYgKCFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKSkKICAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRlb0xh
eWVyKSB7Ci0gICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlZCBkb3du
IHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNlZSA8cmRhcjov
Lzc0MDg0NDA+LgorICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRlcmVkIHVwc2lkZSBk
b3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNlZSA8cmRh
cjovLzc0MDg0NDA+LgogICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkgc2V0R2VvbWV0cnlG
bGlwcGVkOllFU107CiAgICAgfQogI2VuZGlmCkBAIC0xMDgxLDcgKzEwODEsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6aGFzQXZhaWxhYmxlVmlkCiB7CiAgICAgLy8gV2hlbiB1c2luZyBh
IFFUTW92aWVMYXllciByZXR1cm4gdHJ1ZSBhcyBzb29uIGFzIHRoZSBtb3ZpZSByZWFjaGVzIFFU
TW92aWVMb2FkU3RhdGVQbGF5YWJsZSAKICAgICAvLyBiZWNhdXNlIGFsdGhvdWdoIHdlIGRvbid0
ICprbm93KiB3aGVuIHRoZSBmaXJzdCBmcmFtZSBoYXMgZGVjb2RlZCwgYnkgdGhlIHRpbWUgd2Ug
Z2V0IGFuZCAKLSAgICAvLyBwcm9jZXNzIHRoZSBub3RpZmljYWl0b24gYSBmcmFtZSBzaG91bGQg
aGF2ZSBwcm9wYWdhdGVkIHRoZSBWaXN1YWxDb250ZXh0IGFuZCBiZWVuIHNldCBvbgorICAgIC8v
IHByb2Nlc3MgdGhlIG5vdGlmaWNhdGlvbiBhIGZyYW1lIHNob3VsZCBoYXZlIHByb3BhZ2F0ZWQg
dGhlIFZpc3VhbENvbnRleHQgYW5kIGJlZW4gc2V0IG9uCiAgICAgLy8gdGhlIGxheWVyLgogICAg
IGlmIChjdXJyZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllcikK
ICAgICAgICAgcmV0dXJuIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnRE
YXRhOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCShyZXZpc2lvbiA1
Mzc5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
cEF0dGFjaG1lCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKE5TUGFzdGVib2FyZCog
cGFzdGVib2FyZCwgUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxl
dGUsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIVdlYkFyY2hpdmVQYm9hcmRUeXBlKQotICAg
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpOyAvLyBJbml0aWFsaXNlcyBwYXN0
ZWJvYXJkIHR5cGVzCisgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCk7IC8v
IEluaXRpYWxpemVzIHBhc3RlYm9hcmQgdHlwZXMuCiAgICAgQVNTRVJUKHNlbGVjdGVkUmFuZ2Up
OwogICAgIAogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gX2luaXRXaXRoRE9NUmFuZ2U6a2l0KHNlbGVjdGVkUmFu
Z2UpXSBhdXRvcmVsZWFzZV07CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbihSYW5nZSogcwogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKCFXZWJBcmNoaXZlUGJvYXJkVHlwZSkKLSAg
ICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKTsgLy8gSW5pdGlhbGlzZXMgcGFz
dGVib2FyZCB0eXBlcworICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpOyAv
LyBJbml0aWFsaXplcyBwYXN0ZWJvYXJkIHR5cGVzLgogCiAgICAgTlNBcnJheSAqdHlwZXMgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNTdHJpbmdQYm9hcmRUeXBlXTsKICAgICBOU1Bhc3Rl
Ym9hcmQgKnBhc3RlYm9hcmQgPSBtX3Bhc3RlYm9hcmQuZ2V0KCk7CkBAIC0yMTgsNyArMjE4LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdAogdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVVSTChOU1Bhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIE5TQXJyYXkqIHR5cGVzLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIsIEZyYW1lKiBmcmFtZSkKIHsK
ICAgICBpZiAoIVdlYkFyY2hpdmVQYm9hcmRUeXBlKQotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5l
cmFsUGFzdGVib2FyZCgpOyAvLyBJbml0aWFsaXNlcyBwYXN0ZWJvYXJkIHR5cGVzCisgICAgICAg
IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCk7IC8vIEluaXRpYWxpemVzIHBhc3RlYm9h
cmQgdHlwZXMuCiAgICAKICAgICBpZiAoIXR5cGVzKSB7CiAgICAgICAgIHR5cGVzID0gd3JpdGFi
bGVUeXBlc0ZvclVSTCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lD
VS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5j
cHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lD
VS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6
OnJlZ2lzdGVyRXh0ZW5kZWRFbmNvZAogICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gdWNudl9n
ZXRBdmFpbGFibGVOYW1lKGkpOwogICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VS
Uk9SOwogICAgICAgICAvLyBUcnkgTUlNRSBiZWZvcmUgdHJ5aW5nIElBTkEgdG8gcGljayB1cCBj
b21tb25seSB1c2VkIG5hbWVzIGxpa2UKLSAgICAgICAgLy8gJ0VVQy1KUCcgaW5zdGVhZCBvZiBo
b3JyZW5kZW91c2x5IGxvbmcgbmFtZXMgbGlrZSAKKyAgICAgICAgLy8gJ0VVQy1KUCcgaW5zdGVh
ZCBvZiBob3JyZW5kb3VzbHkgbG9uZyBuYW1lcyBsaWtlIAogICAgICAgICAvLyAnRXh0ZW5kZWRf
VU5JWF9Db2RlX1BhY2tlZF9Gb3JtYXRfZm9yX0phcGFuZXNlJy4gCiAgICAgICAgIGNvbnN0IGNo
YXIqIHN0YW5kYXJkTmFtZSA9IHVjbnZfZ2V0U3RhbmRhcmROYW1lKG5hbWUsICJNSU1FIiwgJmVy
cm9yKTsKICAgICAgICAgaWYgKCFVX1NVQ0NFU1MoZXJyb3IpIHx8ICFzdGFuZGFyZE5hbWUpIHsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9y
SUNVLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nRGV0ZWN0b3JJQ1UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJv
b2wgZGV0ZWN0VGV4dEVuY29kaW5nKGNvbnN0IGNoYXIqIGRhdGEKICAgICAvLyAidGhlIGNvbnRl
eHQiIChwYXJlbnQtZW5jb2RpbmcsIHJlZmVycmVyIGVuY29kaW5nLCBldGMpLgogICAgIC8vIDIu
ICdFbXVsYXRlJyBGaXJlZm94L0lFJ3Mgbm9uLVVuaXZlcnNhbCBkZXRlY3RvcnMgKGUuZy4KICAg
ICAvLyBDaGluZXNlLCBKYXBhbmVzZSwgUnVzc2lhbiwgS29yZWFuIGFuZCBIZWJyZXcpIGJ5IHBp
Y2tpbmcgdGhlIAotICAgIC8vIGVuY29kaW5nIHdpdGggYSBoaWdoZXN0IGNvbmZpZGVuY2UgYW1v
bmcgdGhlIGRldGV0Y3Rvci1zcGVjaWZpYworICAgIC8vIGVuY29kaW5nIHdpdGggYSBoaWdoZXN0
IGNvbmZpZGVuY2UgYW1vbmcgdGhlIGRldGVjdG9yLXNwZWNpZmljCiAgICAgLy8gbGltaXRlZCBz
ZXQgb2YgY2FuZGlkYXRlIGVuY29kaW5ncy4KICAgICAvLyBCZWxvdyBpcyBhIHBhcnRpYWwgaW1w
bGVtZW50YXRpb24gb2YgdGhlIGZpcnN0IHBhcnQgb2Ygd2hhdCdzIG91dGxpbmVkCiAgICAgLy8g
YWJvdmUuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAJKHJldmlzaW9u
IDUzNzkzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgyLDcgKzM4Miw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZl
Y3RpdmVXaWR0aCgKICAgICAgICAgICAgICAgICBmbG9hdCBzcGFuTWF4ID0gbWF4KG1heFdpZHRo
LCBjTWF4V2lkdGgpOwogICAgICAgICAgICAgICAgIHRNYXhXaWR0aCA9IG1heCh0TWF4V2lkdGgs
IHNwYW5NYXggKiAxMDAgKiBwZXJjZW50U2NhbGVGYWN0b3IgLyB3LnJhd1ZhbHVlKCkpOwogCi0g
ICAgICAgICAgICAgICAgLy8gYWxsIG5vbiBwZXJjZW50IGNvbHVtbnMgaW4gdGhlIHNwYW4gZ2V0
IHBlcmNlbnQgdmxhdWVzIHRvIHN1bSB1cCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgLy8g
YWxsIG5vbiBwZXJjZW50IGNvbHVtbnMgaW4gdGhlIHNwYW4gZ2V0IHBlcmNlbnQgdmFsdWVzIHRv
IHN1bSB1cCBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgaW50IHBlcmNlbnRNaXNzaW5nID0g
dy5yYXdWYWx1ZSgpIC0gdG90YWxQZXJjZW50OwogICAgICAgICAgICAgICAgIGZsb2F0IHRvdGFs
V2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHBvcyA9IGNvbDsg
cG9zIDwgbGFzdENvbDsgcG9zKyspIHsKQEAgLTY2NCw4ICs2NjQsOCBAQCB2b2lkIEF1dG9UYWJs
ZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIGlmIHdlIGhhdmUg
b3ZlcmFsbG9jYXRlZCwgcmVkdWNlIGV2ZXJ5IGNlbGwgYWNjb3JkaW5nIHRvIHRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gZGVzaXJlZCB3aWR0aCBhbmQgbWlud2lkdGgKLSAgICAvLyB0aGlzIHNlZW1z
IHRvIHByb2R1Y2UgdG8gdGhlIHBpeGVsIGV4YXh0IHJlc3VsdHMgd2l0aCBJRS4gV29uZGVyIGlz
IHNvbWUgb2YgdGhpcyBhbHNvIGhvbGRzIGZvciB3aWR0aCBkaXN0cmlidXRpbmcuCisgICAgLy8g
SWYgd2UgaGF2ZSBvdmVyYWxsb2NhdGVkLCByZWR1Y2UgZXZlcnkgY2VsbCBhY2NvcmRpbmcgdG8g
dGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBkZXNpcmVkIHdpZHRoIGFuZCBtaW53aWR0aAorICAgIC8v
IHRoaXMgc2VlbXMgdG8gcHJvZHVjZSB0byB0aGUgcGl4ZWwgZXhhY3QgcmVzdWx0cyB3aXRoIElF
LiBXb25kZXIgaXMgc29tZSBvZiB0aGlzIGFsc28gaG9sZHMgZm9yIHdpZHRoIGRpc3RyaWJ1dGlu
Zy4KICAgICBpZiAoYXZhaWxhYmxlIDwgMCkgewogICAgICAgICAvLyBOZWVkIHRvIHJlZHVjZSBj
ZWxscyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJpb3JpdGl6YXRpb246CiAgICAgICAgIC8vICgxKSBB
dXRvCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0MCw3ICsx
OTQwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250YWxWYQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiB3aWR0aFZhbHVlLCBp
bnQmIG1hcmdpbkxlZnRWYWx1ZSwgaW50JiBtYXJnaW5SaWdodFZhbHVlLCBpbnQmIHhQb3MpCiB7
CiAgICAgLy8gJ2xlZnQnIGFuZCAncmlnaHQnIGNhbm5vdCBib3RoIGJlICdhdXRvJyBiZWNhdXNl
IG9uZSB3b3VsZCBvZiBiZWVuCi0gICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9zdGlv
biBhbHJlYWR5CisgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYWxyZWFk
eQogICAgIEFTU0VSVCghKGxlZnQuaXNBdXRvKCkgJiYgcmlnaHQuaXNBdXRvKCkpKTsKIAogICAg
IGludCBsZWZ0VmFsdWUgPSAwOwpAQCAtMTk3NCw3ICsxOTc0LDcgQEAgdm9pZCBSZW5kZXJCb3g6
OmNhbGNBYnNvbHV0ZUhvcml6b250YWxWYQogICAgICAgICBpZiAobWFyZ2luTGVmdC5pc0F1dG8o
KSAmJiBtYXJnaW5SaWdodC5pc0F1dG8oKSkgewogICAgICAgICAgICAgLy8gQm90aCBtYXJnaW5z
IGF1dG8sIHNvbHZlIGZvciBlcXVhbGl0eQogICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVNwYWNl
ID49IDApIHsKLSAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFj
ZSAvIDI7IC8vIHNwbGl0IHRoZSBkaWZlcmVuY2UKKyAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0
VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAvIDI7IC8vIHNwbGl0IHRoZSBkaWZmZXJlbmNlCiAgICAg
ICAgICAgICAgICAgbWFyZ2luUmlnaHRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2luTGVm
dFZhbHVlOyAgLy8gYWNjb3VudCBmb3Igb2RkIHZhbHVlZCBkaWZmZXJlbmNlcwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBzZWUgRklYTUUgMQpAQCAtMjI1OSw3ICsy
MjU5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZVZlcnRpY2FsVmFsdQogICAgICAg
ICBpZiAobWFyZ2luVG9wLmlzQXV0bygpICYmIG1hcmdpbkJvdHRvbS5pc0F1dG8oKSkgewogICAg
ICAgICAgICAgLy8gQm90aCBtYXJnaW5zIGF1dG8sIHNvbHZlIGZvciBlcXVhbGl0eQogICAgICAg
ICAgICAgLy8gTk9URTogVGhpcyBtYXkgcmVzdWx0IGluIG5lZ2F0aXZlIHZhbHVlcy4KLSAgICAg
ICAgICAgIG1hcmdpblRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLyAyOyAvLyBzcGxpdCB0aGUg
ZGlmZXJlbmNlCisgICAgICAgICAgICBtYXJnaW5Ub3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC8g
MjsgLy8gc3BsaXQgdGhlIGRpZmZlcmVuY2UKICAgICAgICAgICAgIG1hcmdpbkJvdHRvbVZhbHVl
ID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJnaW5Ub3BWYWx1ZTsgLy8gYWNjb3VudCBmb3Igb2RkIHZh
bHVlZCBkaWZmZXJlbmNlcwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpblRvcC5pc0F1dG8oKSkg
ewogICAgICAgICAgICAgLy8gU29sdmUgZm9yIHRvcCBtYXJnaW4KQEAgLTIzMzcsNyArMjMzNyw3
IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxjQWJzb2x1dGVWZXJ0aWNhbFZhbHUKIHZvaWQgUmVuZGVy
Qm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsUmVwbGFjZWQoKQogewogICAgIC8vIFRoZSBmb2xs
b3dpbmcgaXMgYmFzZWQgb2ZmIG9mIHRoZSBXM0MgV29ya2luZyBEcmFmdCBmcm9tIEFwcmlsIDEx
LCAyMDA2IG9mCi0gICAgLy8gQ1NTIDIuMTogU2VjdGlvbiAxMC4zLjggIkFic29sdXRseSBwb3Np
dGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cyIKKyAgICAvLyBDU1MgMi4xOiBTZWN0aW9uIDEwLjMu
OCAiQWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cyIKICAgICAvLyA8aHR0
cDovL3d3dy53My5vcmcvVFIvMjAwNS9XRC1DU1MyMS0yMDA1MDYxMy92aXN1ZGV0Lmh0bWwjYWJz
LXJlcGxhY2VkLXdpZHRoPgogICAgIC8vIChibG9jay1zdHlsZS1jb21tZW50cyBpbiB0aGlzIGZ1
bmN0aW9uIGNvcnJlc3BvbmQgdG8gdGV4dCBmcm9tIHRoZSBzcGVjIGFuZAogICAgIC8vIHRoZSBu
dW1iZXJzIGNvcnJlc3BvbmQgdG8gbnVtYmVycyBpbiBzcGVjKQpAQCAtMjQyOCw3ICsyNDI4LDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNBYnNvbHV0ZUhvcml6b250YWxSZQogCiAgICAgICAgIGlu
dCBkaWZmZXJlbmNlID0gYXZhaWxhYmxlU3BhY2UgLSAobGVmdFZhbHVlICsgcmlnaHRWYWx1ZSk7
CiAgICAgICAgIGlmIChkaWZmZXJlbmNlID4gMCkgewotICAgICAgICAgICAgbV9tYXJnaW5MZWZ0
ID0gZGlmZmVyZW5jZSAvIDI7IC8vIHNwbGl0IHRoZSBkaWZlcmVuY2UKKyAgICAgICAgICAgIG1f
bWFyZ2luTGVmdCA9IGRpZmZlcmVuY2UgLyAyOyAvLyBzcGxpdCB0aGUgZGlmZmVyZW5jZQogICAg
ICAgICAgICAgbV9tYXJnaW5SaWdodCA9IGRpZmZlcmVuY2UgLSBtX21hcmdpbkxlZnQ7IC8vIGFj
Y291bnQgZm9yIG9kZCB2YWx1ZWQgZGlmZmVyZW5jZXMKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIHNlZSBGSVhNRSAxCkBAIC0yNTE1LDcgKzI1MTUsNyBAQCB2b2lkIFJlbmRlckJv
eDo6Y2FsY0Fic29sdXRlSG9yaXpvbnRhbFJlCiB2b2lkIFJlbmRlckJveDo6Y2FsY0Fic29sdXRl
VmVydGljYWxSZXBsYWNlZCgpCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBiYXNlZCBvZmYg
b2YgdGhlIFczQyBXb3JraW5nIERyYWZ0IGZyb20gQXByaWwgMTEsIDIwMDYgb2YKLSAgICAvLyBD
U1MgMi4xOiBTZWN0aW9uIDEwLjYuNSAiQWJzb2x1dGx5IHBvc2l0aW9uZWQsIHJlcGxhY2VkIGVs
ZW1lbnRzIgorICAgIC8vIENTUyAyLjE6IFNlY3Rpb24gMTAuNi41ICJBYnNvbHV0ZWx5IHBvc2l0
aW9uZWQsIHJlcGxhY2VkIGVsZW1lbnRzIgogICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDA1L1dELUNTUzIxLTIwMDUwNjEzL3Zpc3VkZXQuaHRtbCNhYnMtcmVwbGFjZWQtaGVpZ2h0Pgog
ICAgIC8vIChibG9jay1zdHlsZS1jb21tZW50cyBpbiB0aGlzIGZ1bmN0aW9uIGNvcnJlc3BvbmQg
dG8gdGV4dCBmcm9tIHRoZSBzcGVjIGFuZAogICAgIC8vIHRoZSBudW1iZXJzIGNvcnJlc3BvbmQg
dG8gbnVtYmVycyBpbiBzcGVjKQpAQCAtMjU3OSw3ICsyNTc5LDcgQEAgdm9pZCBSZW5kZXJCb3g6
OmNhbGNBYnNvbHV0ZVZlcnRpY2FsUmVwbAogICAgIGludCBib3R0b21WYWx1ZSA9IDA7CiAKICAg
ICBpZiAobWFyZ2luVG9wLmlzQXV0bygpICYmIG1hcmdpbkJvdHRvbS5pc0F1dG8oKSkgewotICAg
ICAgICAvLyAndG9wJyBhbmQgJ2JvdHRvbScgY2Fubm90IGJlICdhdXRvJyBkdWUgdG8gc3RlcCAy
IGFuZCAzIGNvbWJpbmRlZC4KKyAgICAgICAgLy8gJ3RvcCcgYW5kICdib3R0b20nIGNhbm5vdCBi
ZSAnYXV0bycgZHVlIHRvIHN0ZXAgMiBhbmQgMyBjb21iaW5lZC4KICAgICAgICAgQVNTRVJUKCEo
dG9wLmlzQXV0bygpIHx8IGJvdHRvbS5pc0F1dG8oKSkpOwogCiAgICAgICAgIHRvcFZhbHVlID0g
dG9wLmNhbGNWYWx1ZShjb250YWluZXJIZWlnaHQpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoaW4KICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChyZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIC8vIElm
IHdlIGFyZSBoZXJlLCB3ZSB3ZXJlIGNhbGxlZCBvbiBhIHJlbmRlcmVyIHRoYXQgY2FuIGJlIHBy
b2dyYW1hdGljYWxseSBzY3JvbGxlZCwgYnV0IGRvZXNuJ3QKKyAgICAgICAgLy8gSWYgd2UgYXJl
IGhlcmUsIHdlIHdlcmUgY2FsbGVkIG9uIGEgcmVuZGVyZXIgdGhhdCBjYW4gYmUgcHJvZ3JhbW1h
dGljYWxseSBzY3JvbGxlZCwgYnV0IGRvZXNuJ3QKICAgICAgICAgLy8gaGF2ZSBhbiBvdmVyZmxv
dyBjbGlwLiBXaGljaCBtZWFucyB0aGF0IGl0IGlzIGEgZG9jdW1lbnQgbm9kZSB0aGF0IGNhbiBi
ZSBzY3JvbGxlZC4KICAgICAgICAgcmVuZGVyZXIoKS0+dmlldygpLT5mcmFtZVZpZXcoKS0+c2Ny
b2xsQnkoSW50U2l6ZSh4RGVsdGEsIHlEZWx0YSkpOwogICAgICAgICAvLyBGSVhNRTogSWYgd2Ug
ZGlkbid0IHNjcm9sbCB0aGUgd2hvbGUgd2F5LCBkbyB3ZSB3YW50IHRvIHRyeSBsb29raW5nIGF0
IHRoZSBmcmFtZXMgb3duZXJFbGVtZW50PyAKQEAgLTIyNzUsNyArMjI3NSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIKICAgICAvLyBJZiB0aGlzIGxheWVyJ3Mg
cmVuZGVyZXIgaXMgYSBjaGlsZCBvZiB0aGUgcGFpbnRpbmdSb290LCB3ZSByZW5kZXIgdW5jb25k
aXRpb25hbGx5LCB3aGljaAogICAgIC8vIGlzIGRvbmUgYnkgcGFzc2luZyBhIG5pbCBwYWludGlu
Z1Jvb3QgZG93biB0byBvdXIgcmVuZGVyZXIgKGFzIGlmIG5vIHBhaW50aW5nUm9vdCB3YXMgZXZl
ciBzZXQpLgogICAgIC8vIEVsc2UsIG91ciByZW5kZXJlciB0cmVlIG1heSBvciBtYXkgbm90IGNv
bnRhaW4gdGhlIHBhaW50aW5nIHJvb3QsIHNvIHdlIHBhc3MgdGhhdCByb290IGFsb25nCi0gICAg
Ly8gc28gaXQgd2lsbCBiZSB0ZXN0ZWQgYWdhaW5zdCBhcyB3ZSBkZWNlbmQgdGhyb3VnaCB0aGUg
cmVuZGVyZXJzLgorICAgIC8vIHNvIGl0IHdpbGwgYmUgdGVzdGVkIGFnYWluc3QgYXMgd2UgZGVz
Y2VuZCB0aHJvdWdoIHRoZSByZW5kZXJlcnMuCiAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jv
b3RGb3JSZW5kZXJlciA9IDA7CiAgICAgaWYgKHBhaW50aW5nUm9vdCAmJiAhcmVuZGVyZXIoKS0+
aXNEZXNjZW5kYW50T2YocGFpbnRpbmdSb290KSkKICAgICAgICAgcGFpbnRpbmdSb290Rm9yUmVu
ZGVyZXIgPSBwYWludGluZ1Jvb3Q7CkBAIC0yNjQ1LDcgKzI2NDUsNyBAQCBSZW5kZXJMYXllciog
UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSCiAKICAgICAvLyBOZXh0IHdlIHdhbnQgdG8gc2Vl
IGlmIHRoZSBtb3VzZSBwb3MgaXMgaW5zaWRlIHRoZSBjaGlsZCBSZW5kZXJPYmplY3RzIG9mIHRo
ZSBsYXllci4KICAgICBpZiAoZmdSZWN0LmNvbnRhaW5zKGhpdFRlc3RQb2ludCkgJiYgaXNTZWxm
UGFpbnRpbmdMYXllcigpKSB7Ci0gICAgICAgIC8vIEhpdCB0ZXN0IHdpdGggYSB0ZW1wb3Jhcnkg
SGl0VGVzdFJlc3VsdCwgYmVjYXVzZSB3ZSBvbmx5bCB3YW50IHRvIGNvbW1pdCB0byAncmVzdWx0
JyBpZiB3ZSBrbm93IHdlJ3JlIGZyb250bW9zdC4KKyAgICAgICAgLy8gSGl0IHRlc3Qgd2l0aCBh
IHRlbXBvcmFyeSBIaXRUZXN0UmVzdWx0LCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBjb21taXQg
dG8gJ3Jlc3VsdCcgaWYgd2Uga25vdyB3ZSdyZSBmcm9udG1vc3QuCiAgICAgICAgIEhpdFRlc3RS
ZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSk7CiAgICAgICAgIGlmIChoaXRUZXN0Q29u
dGVudHMocmVxdWVzdCwgdGVtcFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhpdFRlc3RQb2ludCwgSGl0
VGVzdERlc2NlbmRhbnRzKSAmJgogICAgICAgICAgICAgaXNIaXRDYW5kaWRhdGUodGhpcywgZmFs
c2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5nZXQo
KSkpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNTM3OTMp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTM4LDcgKzE5MzgsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAKICAgICAv
LyBJZiB0aGlzIHJlbmRlcmVyIGlzIGJlaW5nIGF1dG9zY3JvbGxlZCwgc3RvcCB0aGUgYXV0b3Nj
cm9sbCB0aW1lcgogICAgIAotICAgIC8vIEZJWE1FOiBSZW5kZXJPYmplY3Q6OmRlc3Ryb3kgc2hv
dWxkIG5vdCBnZXQgY2FsbGVkIHdpdGggYSByZW5kZXJhciB3aG9zZSBkb2N1bWVudAorICAgIC8v
IEZJWE1FOiBSZW5kZXJPYmplY3Q6OmRlc3Ryb3kgc2hvdWxkIG5vdCBnZXQgY2FsbGVkIHdpdGgg
YSByZW5kZXJlciB3aG9zZSBkb2N1bWVudAogICAgIC8vIGhhcyBhIG51bGwgZnJhbWUsIHNvIHdl
IGFzc2VydCB0aGlzLiBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHJlbGVhc2UgYnVpbGRzIHRvIGNy
YXNoIHdoaWNoIGlzIHdoeSB3ZQogICAgIC8vIGNoZWNrIHRoYXQgdGhlIGZyYW1lIGlzIG5vdCBu
dWxsLgogICAgIEFTU0VSVChkb2N1bWVudCgpLT5mcmFtZSgpKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyAr
MTk1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0VmFsdQogICAgICAg
ICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBzZXQgbV9sYXN0
Q2hhbmdlV2FzVXNlckVkaXQgdG8gZmFsc2Ugc2luY2UgdGhpcyBjaGFuZ2Ugd2FzIG5vdCBleHBs
aWN0eSBtYWRlIGJ5IHRoZSB1c2VyIChzYXksIHZpYSB0eXBpbmcgb24gdGhlIGtleWJvYXJkKSwg
c2VlIDxyZGFyOi8vcHJvYmxlbS81MzU5OTIxPi4KKyAgICAgICAgLy8gV2Ugc2V0IG1fbGFzdENo
YW5nZVdhc1VzZXJFZGl0IHRvIGZhbHNlIHNpbmNlIHRoaXMgY2hhbmdlIHdhcyBub3QgZXhwbGlj
aXRseSBtYWRlIGJ5IHRoZSB1c2VyIChzYXksIHZpYSB0eXBpbmcgb24gdGhlIGtleWJvYXJkKSwg
c2VlIDxyZGFyOi8vcHJvYmxlbS81MzU5OTIxPi4KICAgICAgICAgbV9sYXN0Q2hhbmdlV2FzVXNl
ckVkaXQgPSBmYWxzZTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJ
KHJldmlzaW9uIDUzNzkzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6c3VwcG9y
dHNGb2N1c1JpbmcoY29ucwogCiBib29sIFJlbmRlclRoZW1lOjpzdGF0ZUNoYW5nZWQoUmVuZGVy
T2JqZWN0KiBvLCBDb250cm9sU3RhdGUgc3RhdGUpIGNvbnN0CiB7Ci0gICAgLy8gRGVmYXVsdCBp
bXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZSBjb250cm9scyBkb250IHJlc3BvbmQgdG8gY2hhbmdl
cyBpbiA6aG92ZXIgc3RhdGUKKyAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGFzc3VtZXMg
dGhlIGNvbnRyb2xzIGRvbid0IHJlc3BvbmQgdG8gY2hhbmdlcyBpbiA6aG92ZXIgc3RhdGUKICAg
ICBpZiAoc3RhdGUgPT0gSG92ZXJTdGF0ZSAmJiAhc3VwcG9ydHNIb3ZlcihvLT5zdHlsZSgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJT
dXBwb3J0LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFNWR1Jl
bmRlckJhc2U6OmNvbXB1dGVSZWN0Rm9yUmVwYWluCiB2b2lkIFNWR1JlbmRlckJhc2U6Om1hcExv
Y2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkICwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpCiB7CiAgICAgQVNTRVJUKCFmaXhlZCk7
IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQgaW4gdGhlIFNWRyByZW5kZXJpbmcg
dHJlZS4KLSAgICBBU1NFUlQodXNlVHJhbnNmb3Jtcyk7IC8vIG1hcHBpbmcgYSBwb2ludCB0aHJv
dWdoIFNWRyB3L28gcmVzcGVjdGluZyB0cmFzbmZvcm1zIGlzIHVzZWxlc3MuCisgICAgQVNTRVJU
KHVzZVRyYW5zZm9ybXMpOyAvLyBNYXBwaW5nIGEgcG9pbnQgdGhyb3VnaCBTVkcgdy9vIHJlc3Bl
Y3RpbmcgdHJhbnNmb3JtcyBpcyB1c2VsZXNzLgogICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJh
bnNmb3JtKG9iamVjdC0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKICAgICBvYmplY3QtPnBh
cmVudCgpLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VU
cmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdS
b290SW5saW5lQm94LmNwcAkocmV2aXNpb24gNTM3OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSb290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyMiw3ICsxNDIyLDcgQEAg
dm9pZCBTVkdSb290SW5saW5lQm94OjpidWlsZFRleHRDaHVua3MoVgogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFpbmZvLmNodW5rLmJveGVzLmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgICAgIC8vIFdhbGsgc3RyaW5nIHRvIGZpbmQgb3V0IG5ldyBjaHVuayBwb3Np
dGlvbnMsIGlmIGV4aXN0YW50CisgICAgICAgICAgICAvLyBXYWxrIHN0cmluZyB0byBmaW5kIG91
dCBuZXcgY2h1bmsgcG9zaXRpb25zLCBpZiBleGlzdGVudAogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlu
Zm8uaXQgIT0gc3ZnQ2hhcnMuZW5kKCkpOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9UcmFu
c2Zvcm1TdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvVHJhbnNmb3Jt
U3RhdGUuY3BwCShyZXZpc2lvbiA1Mzc5MykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1RyYW5zZm9y
bVN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgVHJhbnNm
b3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3IKICAgICB9CiAKICAgICAvLyBXZSBjb3VsZCB0
aHJvdyBhd2F5IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gaWYgd2Ugd2FudGVkIHRvIGhlcmUsIGJ1
dCB0aGF0Ci0gICAgLy8gd291bGQgY2F1c2UgdGhyYXNoIHdoZW4gdHJhdmVyc2luZyBoaWVyYXJh
Y2hpZXMgd2l0aCBhbHRlcm5hdGluZworICAgIC8vIHdvdWxkIGNhdXNlIHRocmFzaCB3aGVuIHRy
YXZlcnNpbmcgaGllcmFyY2hpZXMgd2l0aCBhbHRlcm5hdGluZwogICAgIC8vIHByZXNlcnZlLTNk
IGFuZCBmbGF0IGVsZW1lbnRzLgogICAgIGlmIChtX2FjY3VtdWxhdGVkVHJhbnNmb3JtKQogICAg
ICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsK
</data>
<flag name="review"
          id="29737"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>