<?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>89836</bug_id>
          
          <creation_ts>2012-06-24 16:57:50 -0700</creation_ts>
          <short_desc>Rename isPositioned to isOutOfFlowPositioned for clarity</short_desc>
          <delta_ts>2012-06-24 17:12:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>656262</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-24 16:57:50 -0700</bug_when>
    <thetext>Rename isPositioned to isOutOfFlowPositioned for clarity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656264</commentid>
    <comment_count>1</comment_count>
      <attachid>149207</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-24 16:59:31 -0700</bug_when>
    <thetext>Created attachment 149207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656267</commentid>
    <comment_count>2</comment_count>
      <attachid>149207</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-06-24 17:04:03 -0700</bug_when>
    <thetext>Comment on attachment 149207
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656269</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-24 17:05:57 -0700</bug_when>
    <thetext>Attachment 149207 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:288:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656272</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-24 17:12:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/121123</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149207</attachid>
            <date>2012-06-24 16:59:31 -0700</date>
            <delta_ts>2012-06-24 17:04:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89836-20120624165928.patch</filename>
            <type>text/plain</type>
            <size>109703</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBkOWY2MTMwM2VjNTg4
Y2FmNTcyZDU2MThiMTI1MWFkNjhkNDFmNC4uN2MwOTA2MWI2ZmY2NjJlNTM4ZjdhYTU2ODg4ZDQx
YjE5NzBiYWQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxMi0wNi0yNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgaXNQ
b3NpdGlvbmVkIHRvIGlzT3V0T2ZGbG93UG9zaXRpb25lZCBmb3IgY2xhcml0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4MzYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlbmRlck9iamVj
dCBhbmQgUmVuZGVyU3R5bGUgaGFkIGFuIGlzUG9zaXRpb25lZCgpIG1ldGhvZCB0aGF0IHdhcwor
ICAgICAgICBjb25mdXNpbmcsIGJlY2F1c2UgaXQgZXhjbHVkZWQgcmVsYXRpdmUgcG9zaXRpb25p
bmcuIFJlbmFtZSB0byAKKyAgICAgICAgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCksIHdoaWNoIG1h
a2VzIGl0IGNsZWFyZXIgdGhhdCBpdCBvbmx5IGFwcGxpZXMKKyAgICAgICAgdG8gYWJzb2x1dGUg
YW5kIGZpeGVkIHBvc2l0aW9uaW5nLgorCisgICAgICAgIFNpbXBsZSByZW5hbWU7IG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UG9zaXRpb25PZmZzZXRWYWx1ZSk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBl
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNE
ZWxldGFibGVFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkU2NhbGVDb2x1bW5zKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNC
YXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGp1c3RNYXhBc2Nl
bnRBbmREZXNjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVM
b2dpY2FsQm94SGVpZ2h0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFj
ZUJveGVzSW5CbG9ja0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjpmbGlwTGluZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OmNvbXB1dGVPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSXRlcmF0
b3JUYXJnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TWFyZ2lu
SW5mbzo6TWFyZ2luSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c3R5bGVX
aWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkQ2hpbGRUb0NvbnRpbnVhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkQ2hpbGRUb0Fub255bW91c0Nv
bHVtbkJsb2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29udGFpbmluZ0Nv
bHVtbnNCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29sdW1uc0Jsb2Nr
Rm9yU3Bhbm5pbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRD
aGlsZElnbm9yaW5nQW5vbnltb3VzQ29sdW1uQmxvY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dElubGluZVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aXNTZWxmQ29sbGFw
c2luZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tQmxvY2tDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZXhwYW5kc1RvRW5jbG9zZU92
ZXJoYW5naW5nRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYW5kbGVQ
b3NpdGlvbmVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1vdmVSdW5J
blVuZGVyU2libGluZ0Jsb2NrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmNvbGxhcHNlTWFyZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xl
YXJGbG9hdHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2ltcGxp
ZmllZE5vcm1hbEZsb3dMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omlz
U2VsZWN0aW9uUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmxvY2tTZWxl
Y3Rpb25HYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjbGVhckZsb2F0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bWFya0FsbERlc2NlbmRhbnRzV2l0aEZs
b2F0c0ZvckxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bWFya1NpYmxp
bmdzV2l0aEZsb2F0c0ZvckxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjppc0NoaWxkSGl0VGVz
dENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVNaW5NYXhJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVk
TG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5l
Qm94QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omxhc3RMaW5lQm94
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENoZWNrTGluZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0SGVpZ2h0Rm9yTGluZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZGp1c3RGb3JCb3JkZXJGaXQpOgorICAgICAgICAoV2ViQ29yZTo6aW5Ob3JtYWxGbG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RMaW5lUG9zaXRpb25Gb3JQ
YWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RCbG9ja0No
aWxkRm9yUGFnaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVuZGVy
TmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6c2hvdWxkU2tpcENyZWF0aW5nUnVuc0Zvck9iamVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6c2V0TWFyZ2luc0ZvclJ1YnlSdW4pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpza2lwVHJhaWxpbmdXaGl0ZXNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6c2tpcExl
YWRpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpMaW5lQnJl
YWtlcjo6bmV4dExpbmVCcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVk
Q2hpbGRGcm9tQmxvY2tMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxl
V2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVz
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdo
dFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNv
bHZhYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OnN0cmV0Y2hlc1RvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojppc0RlcHJlY2F0ZWRGbGV4SXRlbSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlcXVpcmVzTGF5ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRW
ZXJ0aWNhbEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OnJlbmRlck5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVsZHNldDo6ZmluZExlZ2VuZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YXV0b01hcmdpbk9mZnNldEluTWFpbkF4aXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmF2YWlsYWJsZUFsaWdubWVu
dFNwYWNlRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNv
bXB1dGVNYWluQXhpc1ByZWZlcnJlZFNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlTmV4dEZsZXhMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjpyZXNvbHZlRmxleGlibGVMZW5ndGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94OjpwcmVwYXJlQ2hpbGRGb3JQb3NpdGlvbmVkTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRDb2x1bW5SZXZl
cnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RBbGlnbm1l
bnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6ZmxpcEZv
clJpZ2h0VG9MZWZ0Q29sdW1uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZW5kZXJOYW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWRkQ2hp
bGRJZ25vcmluZ0NvbnRpbnVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmFkZENoaWxkVG9Db250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpnZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lTGFzdExpbmVCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6ZGlydHlMaW5l
Qm94ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjaGVja0NvbnRhaW5pbmdCbG9ja0NoYWluRm9yUGFnaW5hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjppc1Bvc2l0aW9uZWRDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6c2hvdWxkQmVOb3JtYWxGbG93T25seSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpbmVCb3hMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hM
aXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBhcmVudE9mRmlyc3RMaW5l
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjpyZW5kZXJOYW1lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbnZhbGlkYXRlQ29udGFpbmVyUHJlZmVycmVk
TG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2ls
bENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0Ojppc091dE9mRmxvd1Bvc2l0aW9uZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0Ojppc0luRmxvd1Bvc2l0aW9uZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpoYXNDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNG
bG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGls
ZExpc3Q6OnJlbW92ZUNoaWxkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc0F1dG9IZWlnaHRPckNvbnRhaW5pbmdCbG9j
a1dpdGhBdXRvSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpydWJ5VGV4dCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
OjphZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29tcHV0ZUxvZ2lj
YWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAxMi0wNi0yNCAgSm9zaHVh
IEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNp
bXBsaWZ5IEluc3BlY3RvckluZGV4ZWREQkFnZW50IHRvIHVzZSBJREIgbWV0YWRhdGEgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDE0ZDZkYjFlMWQ2ZTBlMjM1MDYyNTJiZmYwYjhmMzA0MDAyYTI2ZDQuLjg3MGRlZTRh
MjM5MzdiZTEwNjg4MTlhODUwMmM2N2Q1ODkxYWQ3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC01OTcsMTEgKzU5Nywx
MiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShS
ZW5kZXJTdHlsZSogc3R5bGUsIENTU1Byb3BlcgogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUobCk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLT5wb3NpdGlvbigpID09
IFJlbGF0aXZlUG9zaXRpb24pCisgICAgaWYgKHN0eWxlLT5wb3NpdGlvbigpID09IFJlbGF0aXZl
UG9zaXRpb24pIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGVub3VnaCB0byBzaW1wbHkg
cmV0dXJuICJhdXRvIiB2YWx1ZXMgZm9yIG9uZSBvZmZzZXQgaWYgdGhlIG90aGVyIHNpZGUgaXMg
ZGVmaW5lZC4KICAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMgaWYgbGVmdCBpcyBhdXRvIGFuZCBy
aWdodCBpcyBub3QgYXV0bywgdGhlbiBsZWZ0J3MgY29tcHV0ZWQgdmFsdWUgaXMgbmVnYXRpdmUg
cmlnaHQoKS4KICAgICAgICAgLy8gU28gd2Ugc2hvdWxkIGdldCB0aGUgb3Bwb3NpdGUgbGVuZ3Ro
IHVuaXQgYW5kIHNlZSBpZiBpdCBpcyBhdXRvLgogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUobCk7CisgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCmluZGV4IGExNTRhODU4ODM5ZDMxZDIzYWViNWNiYzJkMGVmY2UyYWRhYzU2
ZmMuLjcxMDY4ODQyNTY1N2U4YTBkOGY4ZDdkMjQyYzdjODU5NjMxOTFjOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIwNzYsNyArMjA3Niw3IEBAIHN0YXRpYyBib29s
IGRvZXNOb3RJbmhlcml0VGV4dERlY29yYXRpb24oUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KiBlKQogewogICAgIHJldHVybiBzdHlsZS0+ZGlzcGxheSgpID09IFRBQkxFIHx8IHN0eWxlLT5k
aXNwbGF5KCkgPT0gSU5MSU5FX1RBQkxFIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gUlVOX0lOCiAg
ICAgICAgIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLIHx8IHN0eWxlLT5kaXNw
bGF5KCkgPT0gSU5MSU5FX0JPWCB8fCBpc0F0U2hhZG93Qm91bmRhcnkoZSkKLSAgICAgICAgfHwg
c3R5bGUtPmlzRmxvYXRpbmcoKSB8fCBzdHlsZS0+aXNQb3NpdGlvbmVkKCk7CisgICAgICAgIHx8
IHN0eWxlLT5pc0Zsb2F0aW5nKCkgfHwgc3R5bGUtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpOwog
fQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFbGVtZW50ICplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
CmluZGV4IDllYzdkMGJiZDEzMWZjMzFhZmE3MGRiYzlhMDM2ZjcxMjFkYTkzNDAuLmEwMGFhZWI1
MzllYTZjNTcxOWMxMjg5ODUzN2ViNmU2Y2RhODk3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTIx
OCw3ICsyMTgsNyBAQCBib29sIFRleHQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IAogICAgICAgICBSZW5kZXJPYmplY3QqIGZpcnN0ID0gcGFyZW50LT5maXJzdENoaWxkKCk7Ci0g
ICAgICAgIHdoaWxlIChmaXJzdCAmJiBmaXJzdC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQor
ICAgICAgICB3aGlsZSAoZmlyc3QgJiYgZmlyc3QtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0
aW9uZWQoKSkKICAgICAgICAgICAgIGZpcnN0ID0gZmlyc3QtPm5leHRTaWJsaW5nKCk7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogbmV4dCA9IGNvbnRleHQubmV4dFJlbmRlcmVyKCk7CiAgICAgICAg
IGlmICghZmlyc3QgfHwgbmV4dCA9PSBmaXJzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDViYjA1ZTZhMDE3MTU4YmI2MzZj
MTdlZDVhYmY1MzZjMWIzOTVjZGYuLmMwZGEyNDY5MjJlMjRmNTBiOTIyMDY1YjFkYWFkNzg2MGE5
ZjNjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBib29sIGlzRGVsZXRhYmxlRWxl
bWVudChjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8
fCBub2RlLT5oYXNUYWdOYW1lKG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5pc1Bvc2l0aW9uZWQo
KSkKKyAgICBpZiAocmVuZGVyZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpICYmICFyZW5k
ZXJlci0+aXNUYWJsZUNlbGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCmluZGV4IGIxN2FlNmI2MWE5ZjRlYmJkMDI2YThiYjYzNjJiNGViNTEwMDUyM2MuLjdjYTNk
YmVlYWI3NGM2NTM1NjA1MTM5NTgzZjZkOWM2NzBkZjlmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgYm9vbCBzaG91
bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gIXItPmlzSW5saW5lKCkgJiYg
ci0+aXNSZW5kZXJCbG9jaygpICYmICFyLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkgJiYgIXIt
PmlzQm9keSgpOworICAgIHJldHVybiAhci0+aXNJbmxpbmUoKSAmJiByLT5pc1JlbmRlckJsb2Nr
KCkgJiYgIXItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhci0+aXNCb2R5
KCk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZEVtaXROZXdsaW5lQWZ0ZXJOb2RlKE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCmluZGV4
IDBhZjFmNzhiZmJmMmJiMmM4YzEzYWIwNWRjOWU2MWYwZmQzMWVkZmQuLjdhNjRlN2ExMDI2ZGI3
MmRkNzcxYTMwMGQyZWMxNGIwNjUzMjg4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9BdXRvVGFibGVMYXlvdXQuY3BwCkBAIC0xODYsMTAgKzE4NiwxMCBAQCBzdGF0aWMgYm9vbCBz
aG91bGRTY2FsZUNvbHVtbnMoUmVuZGVyVGFibGUqIHRhYmxlKQogICAgIGJvb2wgc2NhbGUgPSB0
cnVlOwogICAgIHdoaWxlICh0YWJsZSkgewogICAgICAgICBMZW5ndGggdHcgPSB0YWJsZS0+c3R5
bGUoKS0+d2lkdGgoKTsKLSAgICAgICAgaWYgKCh0dy5pc0F1dG8oKSB8fCB0dy5pc1BlcmNlbnQo
KSkgJiYgIXRhYmxlLT5pc1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBpZiAoKHR3LmlzQXV0bygp
IHx8IHR3LmlzUGVyY2VudCgpKSAmJiAhdGFibGUtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7
CiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSB0YWJsZS0+Y29udGFpbmluZ0Jsb2NrKCk7
CiAgICAgICAgICAgICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSAmJiAhY2ItPmlz
VGFibGVDZWxsKCkgJiYKLSAgICAgICAgICAgICAgICBjYi0+c3R5bGUoKS0+d2lkdGgoKS5pc0F1
dG8oKSAmJiAhY2ItPmlzUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgIGNiLT5zdHlsZSgp
LT53aWR0aCgpLmlzQXV0bygpICYmICFjYi0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICAgICAgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCk7CiAKICAgICAgICAgICAgIHRh
YmxlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRl
eCA3MjdlNGVhZDg0MmExNWFlODg3MTFjYTllMDczMTI1Mzk2OWM5ZWMxLi5kYzQ1MDAxYWZhZTI4
M2JjN2Q3NTA4ZGE5N2IwN2JlZTJjYmVmOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94
OjphZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgICAgIHNldEhhc1RleHREZXNj
ZW5kYW50c09uQW5jZXN0b3JzKHRoaXMpOwogICAgIH0KIAotICAgIGlmIChkZXNjZW5kYW50c0hh
dmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCkgJiYgIWNoaWxkLT5yZW5kZXJlcigpLT5pc1Bv
c2l0aW9uZWQoKSkgeworICAgIGlmIChkZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkgJiYgIWNoaWxkLT5yZW5kZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkg
ewogICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZShp
c0ZpcnN0TGluZVN0eWxlKCkpOwogICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNo
aWxkLT5yZW5kZXJlcigpLT5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpOwogICAgICAgICBib29s
IHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IGZh
bHNlOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKElu
bGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICBjbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5l
SGVpZ2h0QW5kQmFzZWxpbmUoKTsKICAgICB9CiAKLSAgICBpZiAoIWNoaWxkLT5yZW5kZXJlcigp
LT5pc1Bvc2l0aW9uZWQoKSkgeworICAgIGlmICghY2hpbGQtPnJlbmRlcmVyKCktPmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNUZXh0KCkpIHsKICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY2hpbGQtPnJlbmRlcmVyKCktPnN0eWxl
KGlzRmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS0+bGV0dGVy
U3BhY2luZygpIDwgMCB8fCBjaGlsZFN0eWxlLT50ZXh0U2hhZG93KCkgfHwgY2hpbGRTdHlsZS0+
dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lIHx8IGNoaWxkU3R5bGUt
PnRleHRTdHJva2VXaWR0aCgpKQpAQCAtMzkxLDcgKzM5MSw3IEBAIGZsb2F0IElubGluZUZsb3dC
b3g6OnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYg
bmVlZHNXCiAgICAgICAgICAgICBpZiAoa25vd25Ub0hhdmVOb092ZXJmbG93KCkpCiAgICAgICAg
ICAgICAgICAgbWF4TG9naWNhbFJpZ2h0ID0gbWF4KGxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmln
aHQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkt
PmlzUG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY3Vyci0+cmVuZGVy
ZXIoKS0+cGFyZW50KCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAg
ICAgICAgICAgICAgICAgY3Vyci0+c2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOwogICAgICAg
ICAgICAgICAgIGVsc2UKQEAgLTQ0NSw3ICs0NDUsNyBAQCBib29sIElubGluZUZsb3dCb3g6OnJl
cXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
bwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmly
c3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7Ci0gICAgICAgIGlm
IChjdXJyLT5yZW5kZXJlcigpLT5pc1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPnJl
bmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7
IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAg
ICAgICAgIAogICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKQEAgLTQ3OCw3
ICs0NzgsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkanVzdE1heEFzY2VudEFuZERlc2NlbnQo
TGF5b3V0VW5pdCYgbWF4QXNjZW50LCBMYXlvdXRVbml0JgogICAgIGZvciAoSW5saW5lQm94KiBj
dXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7CiAg
ICAgICAgIC8vIFRoZSBjb21wdXRlZCBsaW5laGVpZ2h0IG5lZWRzIHRvIGJlIGV4dGVuZGVkIGZv
ciB0aGUKICAgICAgICAgLy8gcG9zaXRpb25lZCBlbGVtZW50cwotICAgICAgICBpZiAoY3Vyci0+
cmVuZGVyZXIoKS0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigp
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3Np
dGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogICAgICAgICBp
ZiAoY3Vyci0+dmVydGljYWxBbGlnbigpID09IFRPUCB8fCBjdXJyLT52ZXJ0aWNhbEFsaWduKCkg
PT0gQk9UVE9NKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQgPSBjdXJyLT5s
aW5lSGVpZ2h0KCk7CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb21w
dXRlTG9naWNhbEJveEhlaWdodHMoUm9vdElubGluZUJveCogcm9vdEJveCwgTGF5b3V0VW5pdCYK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKLSAgICAgICAgaWYgKGN1cnIt
PnJlbmRlcmVyKCktPmlzUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIo
KS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9z
aXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KICAgICAgICAg
CiAgICAgICAgIElubGluZUZsb3dCb3gqIGlubGluZUZsb3dCb3ggPSBjdXJyLT5pc0lubGluZUZs
b3dCb3goKSA/IHRvSW5saW5lRmxvd0JveChjdXJyKSA6IDA7CkBAIC02MTYsNyArNjE2LDcgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0
IHRvcCwgTGF5b3V0VW5pdCBtYXhIZWkKICAgICB9CiAKICAgICBmb3IgKElubGluZUJveCogY3Vy
ciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewotICAg
ICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgIGlmIChj
dXJyLT5yZW5kZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRp
b25zLgogCiAgICAgICAgIGlmIChkZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2Vs
aW5lKCkpIHsKQEAgLTczNiw3ICs3MzYsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmZsaXBMaW5l
c0luQmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbgogICAg
IHNldExvZ2ljYWxUb3AobGluZUJvdHRvbSAtIChsb2dpY2FsVG9wKCkgLSBsaW5lVG9wKSAtIGxv
Z2ljYWxIZWlnaHQoKSk7CiAgICAgCiAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENo
aWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKLSAgICAgICAgaWYgKGN1
cnItPnJlbmRlcmVyKCktPmlzUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+cmVuZGVy
ZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8g
UG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgYXJlbid0IGFmZmVjdGVkIGhlcmUuCiAgICAgICAgIAog
ICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpCkBAIC05MTIsNyArOTEyLDcgQEAg
dm9pZCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20sIEcKICAgICBhZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVyZmxv
dyhsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwogCiAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBm
aXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKLSAgICAgICAg
aWYgKGN1cnItPnJlbmRlcmVyKCktPmlzUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+
cmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4K
ICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgewpAQCAt
MTQyOSw3ICsxNDI5LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFu
bm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBvc2kKIHsKICAgICBMYXlvdXRV
bml0IHJlc3VsdCA9IDA7CiAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxkKCk7
IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKLSAgICAgICAgaWYgKGN1cnItPnJl
bmRlcmVyKCktPmlzUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRp
b25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KICAgICAgICAgCiAg
ICAgICAgIGlmIChjdXJyLT5pc0lubGluZUZsb3dCb3goKSkKQEAgLTE0NzcsNyArMTQ3Nyw3IEBA
IExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1l
bnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zCiB7CiAgICAgTGF5b3V0VW5pdCByZXN1bHQgPSAwOwog
ICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+bmV4dE9uTGluZSgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1Bvc2l0
aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJz
IGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAKICAgICAgICAgaWYgKGN1cnItPmlzSW5saW5l
Rmxvd0JveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRl
eCA4NTgzMWI2NzMwZDZkNGIxNDRkOGYyZWM5Mzg3ZTU0NGFhNjI2ZDA4Li5kYTI0ZWY0NDk3OTE3
NGE5NmFiODU2OGMxYzU3ZGNhYmJkOTgyNzUzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBu
b3RpZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KE9ic2VydmVyKiBvYnNlcnZlciwgUmVuZGVyT2Jq
ZWN0CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJdGVyYXRvclRhcmdldChSZW5kZXJPYmplY3QqIG9i
amVjdCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsgLy8gVGhlIGl0ZXJhdG9yIHdpbGwgb2YgY291
cnNlIHJldHVybiAwLCBidXQgaXRzIG5vdCBhbiBleHBlY3RlZCBhcmd1bWVudCB0byB0aGlzIGZ1
bmN0aW9uLgotICAgIHJldHVybiBvYmplY3QtPmlzVGV4dCgpIHx8IG9iamVjdC0+aXNGbG9hdGlu
ZygpIHx8IG9iamVjdC0+aXNQb3NpdGlvbmVkKCkgfHwgb2JqZWN0LT5pc1JlcGxhY2VkKCk7Cisg
ICAgcmV0dXJuIG9iamVjdC0+aXNUZXh0KCkgfHwgb2JqZWN0LT5pc0Zsb2F0aW5nKCkgfHwgb2Jq
ZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBvYmplY3QtPmlzUmVwbGFjZWQoKTsKIH0K
IAogLy8gVGhpcyBlbnVtIGlzIG9ubHkgdXNlZCBmb3IgYmlkaU5leHRTaGFyZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggNWY3ODBkY2EwZDA3M2E2ODcz
OTM0Yjc1MzlmNjdjOWNiMTdmNzFhNS4uZjc1MGNiMTU5OGRlZDA1Zjk0OWUwNWE0MGJlYzQ3NjVj
ZDYyNzM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHJldiwg
UmVuZGVyQm94KiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6CiB7CiAgICAgQVNTRVJUKG1fbmV4
dCk7CiAKLSAgICBib29sIGZpeGVkID0gcmVuZGVyZXItPmlzUG9zaXRpb25lZCgpICYmIHJlbmRl
cmVyLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247CisgICAgYm9vbCBmaXhl
ZCA9IHJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiByZW5kZXJlci0+c3R5bGUo
KS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uOwogICAgIGlmIChmaXhlZCkgewogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jtcy4K
ICAgICAgICAgRmxvYXRQb2ludCBmaXhlZE9mZnNldCA9IHJlbmRlcmVyLT52aWV3KCktPmxvY2Fs
VG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIHRydWUpOwpAQCAtNTMsNyArNTMsNyBAQCBMYXlvdXRT
dGF0ZTo6TGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqIHByZXYsIFJlbmRlckJveCogcmVuZGVyZXIs
IGNvbnN0IExheW91dFNpegogICAgIH0gZWxzZQogICAgICAgICBtX3BhaW50T2Zmc2V0ID0gcHJl
di0+bV9wYWludE9mZnNldCArIG9mZnNldDsKIAotICAgIGlmIChyZW5kZXJlci0+aXNQb3NpdGlv
bmVkKCkgJiYgIWZpeGVkKSB7CisgICAgaWYgKHJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSAmJiAhZml4ZWQpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY29udGFpbmVyID0g
cmVuZGVyZXItPmNvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICBpZiAoY29udGFpbmVyLT5pc1Jl
bFBvc2l0aW9uZWQoKSAmJiBjb250YWluZXItPmlzUmVuZGVySW5saW5lKCkpCiAgICAgICAgICAg
ICAgICAgbV9wYWludE9mZnNldCArPSB0b1JlbmRlcklubGluZShjb250YWluZXIpLT5yZWxhdGl2
ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMTk0N2EzY2VlOTA3NzMwYjI4ODMzNWY4NDE1NzliOTFi
NDE4NWRkOS4uZmRiMWMwMzg0N2VjNDc5Yzk2Y2JlMzQzNDdmMmQwZGYwY2ZkN2M4ZCAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAg
UmVuZGVyQmxvY2s6Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8oUmVuZGVyQmxvY2sqIGJsb2NrLCBM
YXlvdXRVbml0IGJlZm9yZUJvcmRlclAKICAgICAvLyBpZiB3ZSBoYWQgYW55IGJvcmRlci9wYWRk
aW5nIChvYnZpb3VzbHkpLCBpZiB3ZSdyZSB0aGUgcm9vdCBvciBIVE1MIGVsZW1lbnRzLCBvciBp
ZgogICAgIC8vIHdlJ3JlIHBvc2l0aW9uZWQsIGZsb2F0aW5nLCBhIHRhYmxlIGNlbGwuCiAgICAg
UmVuZGVyU3R5bGUqIGJsb2NrU3R5bGUgPSBibG9jay0+c3R5bGUoKTsKLSAgICBtX2NhbkNvbGxh
cHNlV2l0aENoaWxkcmVuID0gIWJsb2NrLT5pc1JlbmRlclZpZXcoKSAmJiAhYmxvY2stPmlzUm9v
dCgpICYmICFibG9jay0+aXNQb3NpdGlvbmVkKCkKKyAgICBtX2NhbkNvbGxhcHNlV2l0aENoaWxk
cmVuID0gIWJsb2NrLT5pc1JlbmRlclZpZXcoKSAmJiAhYmxvY2stPmlzUm9vdCgpICYmICFibG9j
ay0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkKICAgICAgICAgJiYgIWJsb2NrLT5pc0Zsb2F0aW5n
KCkgJiYgIWJsb2NrLT5pc1RhYmxlQ2VsbCgpICYmICFibG9jay0+aGFzT3ZlcmZsb3dDbGlwKCkg
JiYgIWJsb2NrLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpCiAgICAgICAgICYmICFibG9j
ay0+aXNXcml0aW5nTW9kZVJvb3QoKSAmJiBibG9ja1N0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQo
KSAmJiBibG9ja1N0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKQogICAgICAgICAmJiAhYmxvY2tT
dHlsZS0+Y29sdW1uU3BhbigpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OndpbGxCZURlc3Ryb3llZCgpCiB2b2lkIFJlbmRlckJsb2NrOjpzdHlsZVdpbGxDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKIHsKICAgICBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUgPSBzdHlsZSgpOwotICAgIHNfY2FuUHJvcGFnYXRlRmxvYXRJ
bnRvU2libGluZyA9IG9sZFN0eWxlID8gIWlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSAmJiAhYXZv
aWRzRmxvYXRzKCkgOiBmYWxzZTsKKyAgICBzX2NhblByb3BhZ2F0ZUZsb2F0SW50b1NpYmxpbmcg
PSBvbGRTdHlsZSA/ICFpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWF2b2lk
c0Zsb2F0cygpIDogZmFsc2U7CiAKICAgICBzZXRSZXBsYWNlZChuZXdTdHlsZS0+aXNEaXNwbGF5
SW5saW5lVHlwZSgpKTsKICAgICAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdAogICAgICAgICAgICAgICAgIHRvUmVuZGVyQmxvY2soY2IpLT5yZW1vdmVQb3NpdGlv
bmVkT2JqZWN0cyh0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250YWluc0Zsb2F0
cygpICYmICFpc0Zsb2F0aW5nKCkgJiYgIWlzUG9zaXRpb25lZCgpICYmIChuZXdTdHlsZS0+cG9z
aXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uIHx8IG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZp
eGVkUG9zaXRpb24pKQorICAgICAgICBpZiAoY29udGFpbnNGbG9hdHMoKSAmJiAhaXNGbG9hdGlu
ZygpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkg
PT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uKSkKICAgICAgICAgICAgIG1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQo
KTsKICAgICB9CiAKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eQog
ICAgIC8vIGJsb2NrcywgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgdGhlIHRvcCBtb3N0IHBhcmVudCBj
b250YWluaW5nIHRoYXQgb3ZlcmhhbmdpbmcgZmxvYXQgYW5kCiAgICAgLy8gdGhlbiBtYXJrIGl0
cyBkZXNjZW5kYW50cyB3aXRoIGZsb2F0cyBmb3IgbGF5b3V0IGFuZCBjbGVhciBhbGwgZmxvYXRz
IGZyb20gaXRzIG5leHQKICAgICAvLyBzaWJsaW5nIGJsb2NrcyB0aGF0IGV4aXN0IGluIG91ciBm
bG9hdGluZyBvYmplY3RzIGxpc3QuIFNlZSBidWcgNTYyOTkgYW5kIDYyODc1LgotICAgIGJvb2wg
Y2FuUHJvcGFnYXRlRmxvYXRJbnRvU2libGluZyA9ICFpc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkg
JiYgIWF2b2lkc0Zsb2F0cygpOworICAgIGJvb2wgY2FuUHJvcGFnYXRlRmxvYXRJbnRvU2libGlu
ZyA9ICFpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWF2b2lkc0Zsb2F0cygp
OwogICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCAmJiBzX2NhblByb3BhZ2F0
ZUZsb2F0SW50b1NpYmxpbmcgJiYgIWNhblByb3BhZ2F0ZUZsb2F0SW50b1NpYmxpbmcgJiYgaGFz
T3ZlcmhhbmdpbmdGbG9hdHMoKSkgewogICAgICAgICBSZW5kZXJCbG9jayogcGFyZW50QmxvY2sg
PSB0aGlzOwogICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RT
ZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6YWRkQ2hpbGRUb0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGIKICAgICAgICAgICAgIGJlZm9yZUNoaWxkUGFyZW50ID0gZmxvdzsK
ICAgICB9CiAKLSAgICBpZiAobmV3Q2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkgewor
ICAgIGlmIChuZXdDaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAg
ICAgICAgIGJlZm9yZUNoaWxkUGFyZW50LT5hZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKG5l
d0NoaWxkLCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00NTksNyAr
NDU5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkQ2hpbGRUb0Fub255bW91c0NvbHVtbkJsb2Nr
cyhSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXIKICAgICAgICAgYmVmb3JlQ2hpbGRQYXJl
bnQgPSB0b1JlbmRlckJsb2NrKGxhc3RDaGlsZCgpKTsKIAogICAgIC8vIElmIHRoZSBuZXcgY2hp
bGQgaXMgZmxvYXRpbmcgb3IgcG9zaXRpb25lZCBpdCBjYW4ganVzdCBnbyBpbiB0aGF0IGJsb2Nr
LgotICAgIGlmIChuZXdDaGlsZC0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKSB7CisgICAgaWYg
KG5ld0NoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAg
YmVmb3JlQ2hpbGRQYXJlbnQtPmFkZENoaWxkSWdub3JpbmdBbm9ueW1vdXNDb2x1bW5CbG9ja3Mo
bmV3Q2hpbGQsIGJlZm9yZUNoaWxkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUwOCw3
ICs1MDgsNyBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNvbnRhaW5pbmdDb2x1bW5zQmxv
Y2soYm9vbCBhbGxvd0Fub255bW91c0NvbHVtbkJsb2NrKQogewogICAgIFJlbmRlckJsb2NrKiBm
aXJzdENoaWxkSWdub3JpbmdBbm9ueW1vdXNXcmFwcGVycyA9IDA7CiAgICAgZm9yIChSZW5kZXJP
YmplY3QqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKLSAgICAg
ICAgaWYgKCFjdXJyLT5pc1JlbmRlckJsb2NrKCkgfHwgY3Vyci0+aXNGbG9hdGluZ09yUG9zaXRp
b25lZCgpIHx8IGN1cnItPmlzVGFibGVDZWxsKCkgfHwgY3Vyci0+aXNSb290KCkgfHwgY3Vyci0+
aXNSZW5kZXJWaWV3KCkgfHwgY3Vyci0+aGFzT3ZlcmZsb3dDbGlwKCkKKyAgICAgICAgaWYgKCFj
dXJyLT5pc1JlbmRlckJsb2NrKCkgfHwgY3Vyci0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRp
b25lZCgpIHx8IGN1cnItPmlzVGFibGVDZWxsKCkgfHwgY3Vyci0+aXNSb290KCkgfHwgY3Vyci0+
aXNSZW5kZXJWaWV3KCkgfHwgY3Vyci0+aGFzT3ZlcmZsb3dDbGlwKCkKICAgICAgICAgICAgIHx8
IGN1cnItPmlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKIApAQCAtNzU4LDcgKzc1OCw3IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y29sdW1u
c0Jsb2NrRm9yU3Bhbm5pbmdFbGVtZW50KFJlbmRlck9iamVjdCogbmV3Q2hpbGQpCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBjdXJyZW50bHkgc3VwcG9ydHMgKDEpIGFuZCAoMikuCiAgICAgUmVuZGVy
QmxvY2sqIGNvbHVtbnNCbG9ja0FuY2VzdG9yID0gMDsKICAgICBpZiAoIW5ld0NoaWxkLT5pc1Rl
eHQoKSAmJiBuZXdDaGlsZC0+c3R5bGUoKS0+Y29sdW1uU3BhbigpICYmICFuZXdDaGlsZC0+aXNC
ZWZvcmVPckFmdGVyQ29udGVudCgpCi0gICAgICAgICYmICFuZXdDaGlsZC0+aXNGbG9hdGluZ09y
UG9zaXRpb25lZCgpICYmICFuZXdDaGlsZC0+aXNJbmxpbmUoKSAmJiAhaXNBbm9ueW1vdXNDb2x1
bW5TcGFuQmxvY2soKSkgeworICAgICAgICAmJiAhbmV3Q2hpbGQtPmlzRmxvYXRpbmdPck91dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAhbmV3Q2hpbGQtPmlzSW5saW5lKCkgJiYgIWlzQW5vbnltb3Vz
Q29sdW1uU3BhbkJsb2NrKCkpIHsKICAgICAgICAgY29sdW1uc0Jsb2NrQW5jZXN0b3IgPSBjb250
YWluaW5nQ29sdW1uc0Jsb2NrKGZhbHNlKTsKICAgICAgICAgaWYgKGNvbHVtbnNCbG9ja0FuY2Vz
dG9yKSB7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBub25lIG9mIHRoZSBwYXJlbnQg
YW5jZXN0b3JzIGhhdmUgYSBjb250aW51YXRpb24uCkBAIC04ODUsNyArODg1LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6YWRkQ2hpbGRJZ25vcmluZ0Fub255bW91c0NvbHVtbkJsb2NrcyhSZW5kZXJP
YmplY3QqIG5ld0NoaWxkLAogICAgIC8vIEEgYmxvY2sgaGFzIHRvIGVpdGhlciBoYXZlIGFsbCBv
ZiBpdHMgY2hpbGRyZW4gaW5saW5lLCBvciBhbGwgb2YgaXRzIGNoaWxkcmVuIGFzIGJsb2Nrcy4K
ICAgICAvLyBTbywgaWYgb3VyIGNoaWxkcmVuIGFyZSBjdXJyZW50bHkgaW5saW5lIGFuZCBhIGJs
b2NrIGNoaWxkIGhhcyB0byBiZSBpbnNlcnRlZCwgd2UgbW92ZSBhbGwgb3VyCiAgICAgLy8gaW5s
aW5lIGNoaWxkcmVuIGludG8gYW5vbnltb3VzIGJsb2NrIGJveGVzLgotICAgIGlmIChjaGlsZHJl
bklubGluZSgpICYmICFuZXdDaGlsZC0+aXNJbmxpbmUoKSAmJiAhbmV3Q2hpbGQtPmlzRmxvYXRp
bmdPclBvc2l0aW9uZWQoKSkgeworICAgIGlmIChjaGlsZHJlbklubGluZSgpICYmICFuZXdDaGls
ZC0+aXNJbmxpbmUoKSAmJiAhbmV3Q2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgYmxvY2sgd2l0aCBpbmxpbmUgY29udGVudC4g
V3JhcCB0aGUgaW5saW5lIGNvbnRlbnQgaW4gYW5vbnltb3VzIGJsb2Nrcy4KICAgICAgICAgbWFr
ZUNoaWxkcmVuTm9uSW5saW5lKGJlZm9yZUNoaWxkKTsKICAgICAgICAgbWFkZUJveGVzTm9uSW5s
aW5lID0gdHJ1ZTsKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRDaGls
ZElnbm9yaW5nQW5vbnltb3VzQ29sdW1uQmxvY2tzKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsCiAg
ICAgICAgICAgICBBU1NFUlQoYmVmb3JlQ2hpbGQtPmlzQW5vbnltb3VzQmxvY2soKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoYmVmb3JlQ2hpbGQtPnBhcmVudCgpID09IHRoaXMpOwogICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmICghY2hpbGRyZW5JbmxpbmUoKSAmJiAobmV3Q2hpbGQtPmlzRmxvYXRp
bmdPclBvc2l0aW9uZWQoKSB8fCBuZXdDaGlsZC0+aXNJbmxpbmUoKSkpIHsKKyAgICB9IGVsc2Ug
aWYgKCFjaGlsZHJlbklubGluZSgpICYmIChuZXdDaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93
UG9zaXRpb25lZCgpIHx8IG5ld0NoaWxkLT5pc0lubGluZSgpKSkgewogICAgICAgICAvLyBJZiB3
ZSdyZSBpbnNlcnRpbmcgYW4gaW5saW5lIGNoaWxkIGJ1dCBhbGwgb2Ygb3VyIGNoaWxkcmVuIGFy
ZSBibG9ja3MsIHRoZW4gd2UgaGF2ZSB0byBtYWtlIHN1cmUKICAgICAgICAgLy8gaXQgaXMgcHV0
IGludG8gYW4gYW5vbXlvdXMgYmxvY2sgYm94LiBXZSB0cnkgdG8gdXNlIGFuIGV4aXN0aW5nIGFu
b255bW91cyBib3ggaWYgcG9zc2libGUsIG90aGVyd2lzZQogICAgICAgICAvLyBhIG5ldyBvbmUg
aXMgY3JlYXRlZCBhbmQgaW5zZXJ0ZWQgaW50byBvdXIgbGlzdCBvZiBjaGlsZHJlbiBpbiB0aGUg
YXBwcm9wcmlhdGUgcG9zaXRpb24uCkBAIC05NjEsNyArOTYxLDcgQEAgc3RhdGljIHZvaWQgZ2V0
SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksCiAg
ICAgUmVuZGVyT2JqZWN0ICogY3VyciA9IHN0YXJ0OwogICAgIGJvb2wgc2F3SW5saW5lOwogICAg
IGRvIHsKLSAgICAgICAgd2hpbGUgKGN1cnIgJiYgIShjdXJyLT5pc0lubGluZSgpIHx8IGN1cnIt
PmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkpCisgICAgICAgIHdoaWxlIChjdXJyICYmICEoY3Vy
ci0+aXNJbmxpbmUoKSB8fCBjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
KQogICAgICAgICAgICAgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIAogICAg
ICAgICBpbmxpbmVSdW5TdGFydCA9IGlubGluZVJ1bkVuZCA9IGN1cnI7CkBAIC05NzIsNyArOTcy
LDcgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRl
ck9iamVjdCogYm91bmRhcnksCiAgICAgICAgIHNhd0lubGluZSA9IGN1cnItPmlzSW5saW5lKCk7
CiAgICAgICAgIAogICAgICAgICBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAg
d2hpbGUgKGN1cnIgJiYgKGN1cnItPmlzSW5saW5lKCkgfHwgY3Vyci0+aXNGbG9hdGluZ09yUG9z
aXRpb25lZCgpKSAmJiAoY3VyciAhPSBib3VuZGFyeSkpIHsKKyAgICAgICAgd2hpbGUgKGN1cnIg
JiYgKGN1cnItPmlzSW5saW5lKCkgfHwgY3Vyci0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSAmJiAoY3VyciAhPSBib3VuZGFyeSkpIHsKICAgICAgICAgICAgIGlubGluZVJ1bkVu
ZCA9IGN1cnI7CiAgICAgICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmUoKSkKICAgICAgICAgICAg
ICAgICBzYXdJbmxpbmUgPSB0cnVlOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgYm9vbCBSZW5kZXJC
bG9jazo6aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKCkgY29uc3QKICAgICAgICAgLy8gV2hldGhlciBv
ciBub3Qgd2UgY29sbGFwc2UgaXMgZGVwZW5kZW50IG9uIHdoZXRoZXIgYWxsIG91ciBub3JtYWwg
ZmxvdyBjaGlsZHJlbgogICAgICAgICAvLyBhcmUgYWxzbyBzZWxmLWNvbGxhcHNpbmcuCiAgICAg
ICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aXNG
bG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0Zsb2F0aW5n
T3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBpZiAoIWNoaWxkLT5pc1NlbGZDb2xsYXBzaW5nQmxvY2soKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTA3LDcgKzE1MDcsNyBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaAogICAgICAgICBpZiAob2xkSGVpZ2h0ID4gbmV3SGVpZ2h0ICYmIG1heEZsb2F0TG9n
aWNhbEJvdHRvbSA+IG5ld0hlaWdodCAmJiAhY2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAgICAg
ICAgLy8gT25lIG9mIG91ciBjaGlsZHJlbidzIGZsb2F0cyBtYXkgaGF2ZSBiZWNvbWUgYW4gb3Zl
cmhhbmdpbmcgZmxvYXQgZm9yIHVzLiBXZSBuZWVkIHRvIGxvb2sgZm9yIGl0LgogICAgICAgICAg
ICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNC
bG9ja0Zsb3coKSAmJiAhY2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChjaGlsZC0+aXNCbG9ja0Zsb3coKSAmJiAhY2hpbGQtPmlzRmxvYXRpbmdP
ck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJCbG9j
ayogYmxvY2sgPSB0b1JlbmRlckJsb2NrKGNoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGJsb2NrLT5sb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKSArIGJsb2NrLT5sb2dpY2FsVG9wKCkg
PiBuZXdIZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdmVyaGFuZ2luZ0Zsb2F0
cyhibG9jaywgZmFsc2UpOwpAQCAtMTYzOCw3ICsxNjM4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
Y29tcHV0ZU92ZXJmbG93KExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdlLCBib29sIHJlY29t
cHV0ZUYKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUJsb2NrQ2hpbGRyZW4oKQog
ewogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgaWYgKCFjaGlsZC0+aXNG
bG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoIWNoaWxkLT5pc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChj
aGlsZCk7CiAgICAgfQogfQpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
YWRkVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoKQogCiBib29sIFJlbmRlckJsb2NrOjpleHBhbmRz
VG9FbmNsb3NlT3ZlcmhhbmdpbmdGbG9hdHMoKSBjb25zdAogewotICAgIHJldHVybiBpc0lubGlu
ZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IGlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSB8fCBoYXNP
dmVyZmxvd0NsaXAoKSB8fCAocGFyZW50KCkgJiYgcGFyZW50KCktPmlzRGVwcmVjYXRlZEZsZXhp
YmxlQm94KCkpCisgICAgcmV0dXJuIGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgfHwgaXNG
bG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGhhc092ZXJmbG93Q2xpcCgpIHx8IChw
YXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNEZXByZWNhdGVkRmxleGlibGVCb3goKSkKICAgICAgICAg
ICAgfHwgaGFzQ29sdW1ucygpIHx8IGlzVGFibGVDZWxsKCkgfHwgaXNUYWJsZUNhcHRpb24oKSB8
fCBpc0ZpZWxkc2V0KCkgfHwgaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBpc1Jvb3QoKTsKIH0KIApA
QCAtMTc1Niw3ICsxNzU2LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFuZGxlU3BlY2lhbENoaWxk
KFJlbmRlckJveCogY2hpbGQsIGNvbnN0IE1hcmdpbkluZm8mIG1hcmdpbkkKIAogYm9vbCBSZW5k
ZXJCbG9jazo6aGFuZGxlUG9zaXRpb25lZENoaWxkKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IE1h
cmdpbkluZm8mIG1hcmdpbkluZm8pCiB7Ci0gICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkg
eworICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgY2hp
bGQtPmNvbnRhaW5pbmdCbG9jaygpLT5pbnNlcnRQb3NpdGlvbmVkT2JqZWN0KGNoaWxkKTsKICAg
ICAgICAgYWRqdXN0UG9zaXRpb25lZEJsb2NrKGNoaWxkLCBtYXJnaW5JbmZvKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xODY5LDcgKzE4NjksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjptb3Zl
UnVuSW5VbmRlclNpYmxpbmdCbG9ja0lmTmVlZGVkKFJlbmRlck9iamVjdCogcnVuSW4pCiAgICAg
aWYgKGN1cnItPmlzUnVuSW4oKSB8fCAoY3Vyci0+Zmlyc3RDaGlsZCgpICYmIGN1cnItPmZpcnN0
Q2hpbGQoKS0+aXNSdW5JbigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGN1cnItPmlz
QW5vbnltb3VzKCkgfHwgY3Vyci0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgIGlmIChj
dXJyLT5pc0Fub255bW91cygpIHx8IGN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9sZFJ1
bkluID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChydW5Jbik7CkBAIC0yMDMxLDcgKzIwMzEsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb2xsYXBzZU1hcmdpbnMoUmVuZGVyQm94KiBjaGls
ZCwgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbwogICAgIC8vIG92ZXJoYW5nIGZyb20gdGhlIHByZXZp
b3VzIHNpYmxpbmcgYXJlIGFkZGVkIHRvIG91ciBwYXJlbnQuIElmIHRoZSBjaGlsZCdzIHByZXZp
b3VzIHNpYmxpbmcgaXRzZWxmIGlzIGEgZmxvYXQgdGhlIGNoaWxkIHdpbGwgYXZvaWQKICAgICAv
LyBvciBjbGVhciBpdCBhbnl3YXksIHNvIGRvbid0IHdvcnJ5IGFib3V0IGFueSBmbG9hdGluZyBj
aGlsZHJlbiBpdCBtYXkgY29udGFpbi4KICAgICBSZW5kZXJPYmplY3QqIHByZXYgPSBjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgaWYgKHByZXYgJiYgcHJldi0+aXNCbG9ja0Zsb3coKSAm
JiAhcHJldi0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKSB7CisgICAgaWYgKHByZXYgJiYgcHJl
di0+aXNCbG9ja0Zsb3coKSAmJiAhcHJldi0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IHRvUmVuZGVyQmxvY2socHJldik7
CiAgICAgICAgIGlmIChibG9jay0+Y29udGFpbnNGbG9hdHMoKSAmJiBibG9jay0+bG93ZXN0Rmxv
YXRMb2dpY2FsQm90dG9tKCkgPiBsb2dpY2FsVG9wKSAKICAgICAgICAgICAgIGFkZE92ZXJoYW5n
aW5nRmxvYXRzKGJsb2NrLCBmYWxzZSk7CkBAIC0yMDU2LDcgKzIwNTYsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJsb2NrOjpjbGVhckZsb2F0c0lmTmVlZGVkKFJlbmRlckJveCogY2hpbGQsIE1hcmdp
bkluZm8mIG1hcmdpbgogICAgICAgICAvLyBzZWxmLWNvbGxhcHNpbmcgYmxvY2sncyBib3R0b20g
bWFyZ2luLgogICAgICAgICBib29sIGF0Qm90dG9tT2ZCbG9jayA9IHRydWU7CiAgICAgICAgIGZv
ciAoUmVuZGVyQm94KiBjdXJyID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCk7IGN1cnIgJiYgYXRC
b3R0b21PZkJsb2NrOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICAg
ICAgaWYgKCFjdXJyLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBpZiAo
IWN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgICAg
ICBhdEJvdHRvbU9mQmxvY2sgPSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI0NTEs
NyArMjQ1MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0
KCkKICAgICAgICAgTGlzdEhhc2hTZXQ8Um9vdElubGluZUJveCo+IGxpbmVCb3hlczsKICAgICAg
ICAgZm9yIChJbmxpbmVXYWxrZXIgd2Fsa2VyKHRoaXMpOyAhd2Fsa2VyLmF0RW5kKCk7IHdhbGtl
ci5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbyA9IHdhbGtlci5jdXJy
ZW50KCk7Ci0gICAgICAgICAgICBpZiAoIW8tPmlzUG9zaXRpb25lZCgpICYmIChvLT5pc1JlcGxh
Y2VkKCkgfHwgby0+aXNGbG9hdGluZygpKSkgeworICAgICAgICAgICAgaWYgKCFvLT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAoby0+aXNSZXBsYWNlZCgpIHx8IG8tPmlzRmxvYXRpbmcoKSkp
IHsKICAgICAgICAgICAgICAgICBvLT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICAgICAgICAg
IGlmICh0b1JlbmRlckJveChvKS0+aW5saW5lQm94V3JhcHBlcigpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJvb3RJbmxpbmVCb3gqIGJveCA9IHRvUmVuZGVyQm94KG8pLT5pbmxpbmVCb3hXcmFw
cGVyKCktPnJvb3QoKTsKQEAgLTI0NjksNyArMjQ2OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNp
bXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGZvciAoUmVuZGVyQm94KiBib3ggPSBmaXJzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94
LT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWJveC0+aXNQb3NpdGlvbmVk
KCkpCisgICAgICAgICAgICBpZiAoIWJveC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICAgICAgYm94LT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MzEzMyw5ICszMTMzLDkgQEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkgY29u
c3QKICAgICBpZiAoaXNUYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgIGlmIChpc0JvZHkoKSB8fCBpc1Jvb3QoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKSB8fCBpc1Jl
bFBvc2l0aW9uZWQoKSB8fAotICAgICAgICBpc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkgfHwgaXNU
YWJsZUNlbGwoKSB8fCBpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IGhhc1RyYW5zZm9y
bSgpIHx8Ci0gICAgICAgIGhhc1JlZmxlY3Rpb24oKSB8fCBoYXNNYXNrKCkgfHwgaXNXcml0aW5n
TW9kZVJvb3QoKSkKKyAgICBpZiAoaXNCb2R5KCkgfHwgaXNSb290KCkgfHwgaGFzT3ZlcmZsb3dD
bGlwKCkgfHwgaXNSZWxQb3NpdGlvbmVkKCkKKyAgICAgICAgfHwgaXNGbG9hdGluZ09yT3V0T2ZG
bG93UG9zaXRpb25lZCgpIHx8IGlzVGFibGVDZWxsKCkgfHwgaXNJbmxpbmVCbG9ja09ySW5saW5l
VGFibGUoKSB8fCBoYXNUcmFuc2Zvcm0oKQorICAgICAgICB8fCBoYXNSZWZsZWN0aW9uKCkgfHwg
aGFzTWFzaygpIHx8IGlzV3JpdGluZ01vZGVSb290KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIGlmICh2aWV3KCkgJiYgdmlldygpLT5zZWxlY3Rpb25TdGFydCgpKSB7CkBAIC0z
MzUyLDcgKzMzNTIsNyBAQCBHYXBSZWN0cyBSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXBz
KFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQogICAgICAgICBpZiAoY2hp
bGRTdGF0ZSA9PSBTZWxlY3Rpb25Cb3RoIHx8IGNoaWxkU3RhdGUgPT0gU2VsZWN0aW9uRW5kKQog
ICAgICAgICAgICAgc2F3U2VsZWN0aW9uRW5kID0gdHJ1ZTsKIAotICAgICAgICBpZiAoY3Vyci0+
aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vyci0+aXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFdlIG11c3Qg
YmUgYSBub3JtYWwgZmxvdyBvYmplY3QgaW4gb3JkZXIgdG8gZXZlbiBiZSBjb25zaWRlcmVkLgog
CiAgICAgICAgIGlmIChjdXJyLT5pc1JlbFBvc2l0aW9uZWQoKSAmJiBjdXJyLT5oYXNMYXllcigp
KSB7CkBAIC00MTc5LDcgKzQxNzksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjbGVhckZsb2F0cygp
CiAgICAgfQogCiAgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgY292ZXJlZCBieSB0aGUgaXNSZXBs
YWNlZCgpIGNoZWNrIGluIHRoZSBhdm9pZEZsb2F0cyBtZXRob2QuCi0gICAgaWYgKGF2b2lkc0Zs
b2F0cygpIHx8IGlzUm9vdCgpIHx8IGlzUmVuZGVyVmlldygpIHx8IGlzRmxvYXRpbmdPclBvc2l0
aW9uZWQoKSB8fCBpc1RhYmxlQ2VsbCgpKSB7CisgICAgaWYgKGF2b2lkc0Zsb2F0cygpIHx8IGlz
Um9vdCgpIHx8IGlzUmVuZGVyVmlldygpIHx8IGlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSB8fCBpc1RhYmxlQ2VsbCgpKSB7CiAgICAgICAgIGlmIChtX2Zsb2F0aW5nT2JqZWN0cykg
ewogICAgICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKSk7
CiAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+Y2xlYXIoKTsKQEAgLTQyMTcsNyArNDIx
Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICBSZW5kZXJCbG9jayog
cGFyZW50QmxvY2sgPSB0b1JlbmRlckJsb2NrKHBhcmVudCgpKTsKICAgICBib29sIHBhcmVudEhh
c0Zsb2F0cyA9IGZhbHNlOwogICAgIFJlbmRlck9iamVjdCogcHJldiA9IHByZXZpb3VzU2libGlu
ZygpOwotICAgIHdoaWxlIChwcmV2ICYmIChwcmV2LT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkg
fHwgIXByZXYtPmlzQm94KCkgfHwgIXByZXYtPmlzUmVuZGVyQmxvY2soKSB8fCB0b1JlbmRlckJs
b2NrKHByZXYpLT5hdm9pZHNGbG9hdHMoKSkpIHsKKyAgICB3aGlsZSAocHJldiAmJiAocHJldi0+
aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8ICFwcmV2LT5pc0JveCgpIHx8ICFw
cmV2LT5pc1JlbmRlckJsb2NrKCkgfHwgdG9SZW5kZXJCbG9jayhwcmV2KS0+YXZvaWRzRmxvYXRz
KCkpKSB7CiAgICAgICAgIGlmIChwcmV2LT5pc0Zsb2F0aW5nKCkpCiAgICAgICAgICAgICBwYXJl
bnRIYXNGbG9hdHMgPSB0cnVlOwogICAgICAgICBwcmV2ID0gcHJldi0+cHJldmlvdXNTaWJsaW5n
KCk7CkBAIC00NDUxLDcgKzQ0NTEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjptYXJrQWxsRGVzY2Vu
ZGFudHNXaXRoRmxvYXRzRm9yTGF5b3V0KFJlbmRlckJveCogZmxvYXRUb1JlbW92ZQogICAgIC8v
IEl0ZXJhdGUgb3ZlciBvdXIgY2hpbGRyZW4gYW5kIG1hcmsgdGhlbSBhcyBuZWVkZWQuCiAgICAg
aWYgKCFjaGlsZHJlbklubGluZSgpKSB7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgICAgIGlmICgoIWZsb2F0VG9SZW1vdmUgJiYgY2hpbGQtPmlzRmxvYXRpbmdPclBv
c2l0aW9uZWQoKSkgfHwgIWNoaWxkLT5pc1JlbmRlckJsb2NrKCkpCisgICAgICAgICAgICBpZiAo
KCFmbG9hdFRvUmVtb3ZlICYmIGNoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpIHx8ICFjaGlsZC0+aXNSZW5kZXJCbG9jaygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNoaWxkQmxvY2sgPSB0b1JlbmRlckJsb2NrKGNo
aWxkKTsKICAgICAgICAgICAgIGlmICgoZmxvYXRUb1JlbW92ZSA/IGNoaWxkQmxvY2stPmNvbnRh
aW5zRmxvYXQoZmxvYXRUb1JlbW92ZSkgOiBjaGlsZEJsb2NrLT5jb250YWluc0Zsb2F0cygpKSB8
fCBjaGlsZEJsb2NrLT5zaHJpbmtUb0F2b2lkRmxvYXRzKCkpCkBAIC00NDY5LDcgKzQ0NjksNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjptYXJrU2libGluZ3NXaXRoRmxvYXRzRm9yTGF5b3V0KFJlbmRl
ckJveCogZmxvYXRUb1JlbW92ZSkKICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9
IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIG5leHQg
PSBuZXh0U2libGluZygpOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICBpZiAoIW5leHQtPmlzUmVuZGVyQmxvY2soKSB8fCBuZXh0LT5pc0Zsb2F0aW5nT3JQb3Np
dGlvbmVkKCkgfHwgdG9SZW5kZXJCbG9jayhuZXh0KS0+YXZvaWRzRmxvYXRzKCkpCisgICAgICAg
IGlmICghbmV4dC0+aXNSZW5kZXJCbG9jaygpIHx8IG5leHQtPmlzRmxvYXRpbmdPck91dE9mRmxv
d1Bvc2l0aW9uZWQoKSB8fCB0b1JlbmRlckJsb2NrKG5leHQpLT5hdm9pZHNGbG9hdHMoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFJlbmRlckJsb2NrKiBuZXh0QmxvY2sgPSB0
b1JlbmRlckJsb2NrKG5leHQpOwpAQCAtNDg4NCw3ICs0ODg0LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExh
eW91dFBvaW4KIAogc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKFJl
bmRlckJveCogYm94KQogewotICAgIHJldHVybiBib3gtPmhlaWdodCgpICYmIGJveC0+c3R5bGUo
KS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWJveC0+aXNGbG9hdGluZ09yUG9zaXRpb25l
ZCgpOworICAgIHJldHVybiBib3gtPmhlaWdodCgpICYmIGJveC0+c3R5bGUoKS0+dmlzaWJpbGl0
eSgpID09IFZJU0lCTEUgJiYgIWJveC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
OwogfQogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50KQpAQCAtNTQxNyw3ICs1NDE3LDcgQEAgUmVuZGVyT2JqZWN0
KiBJbmxpbmVNaW5NYXhJdGVyYXRvcjo6bmV4dCgpCiAgICAgd2hpbGUgKGN1cnJlbnQgfHwgY3Vy
cmVudCA9PSBwYXJlbnQpIHsKICAgICAgICAgaWYgKCFvbGRFbmRPZklubGluZSAmJgogICAgICAg
ICAgICAgKGN1cnJlbnQgPT0gcGFyZW50IHx8Ci0gICAgICAgICAgICAgKCFjdXJyZW50LT5pc0Zs
b2F0aW5nKCkgJiYgIWN1cnJlbnQtPmlzUmVwbGFjZWQoKSAmJiAhY3VycmVudC0+aXNQb3NpdGlv
bmVkKCkpKSkKKyAgICAgICAgICAgICAoIWN1cnJlbnQtPmlzRmxvYXRpbmcoKSAmJiAhY3VycmVu
dC0+aXNSZXBsYWNlZCgpICYmICFjdXJyZW50LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkpKQog
ICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAo
IXJlc3VsdCkgewogICAgICAgICAgICAgLy8gV2UgaGl0IHRoZSBlbmQgb2Ygb3VyIGlubGluZS4g
KEl0IHdhcyBlbXB0eSwgZS5nLiwgPHNwYW4+PC9zcGFuPi4pCkBAIC01NDQyLDcgKzU0NDIsNyBA
QCBSZW5kZXJPYmplY3QqIElubGluZU1pbk1heEl0ZXJhdG9yOjpuZXh0KCkKICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoIXJlc3VsdC0+aXNQ
b3NpdGlvbmVkKCkgJiYgKHJlc3VsdC0+aXNUZXh0KCkgfHwgcmVzdWx0LT5pc0Zsb2F0aW5nKCkg
fHwgcmVzdWx0LT5pc1JlcGxhY2VkKCkgfHwgcmVzdWx0LT5pc1JlbmRlcklubGluZSgpKSkKKyAg
ICAgICAgaWYgKCFyZXN1bHQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChyZXN1bHQtPmlz
VGV4dCgpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3VsdC0+aXNSZXBsYWNlZCgpIHx8
IHJlc3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IAogICAgICAgICBjdXJyZW50ID0gcmVzdWx0OwpAQCAtNTc2OCw3ICs1NzY4LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgTGF5
b3V0VW5pdCBmbG9hdExlZnRXaWR0aCA9IDAsIGZsb2F0UmlnaHRXaWR0aCA9IDA7CiAgICAgd2hp
bGUgKGNoaWxkKSB7CiAgICAgICAgIC8vIFBvc2l0aW9uZWQgY2hpbGRyZW4gZG9uJ3QgYWZmZWN0
IHRoZSBtaW4vbWF4IHdpZHRoCi0gICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsK
KyAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAg
ICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CkBAIC01OTQyLDcgKzU5NDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpm
aXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBm
b3IgKFJlbmRlckJveCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgICAgIGlmICghY3Vyci0+aXNGbG9hdGluZ09y
UG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICBpZiAoIWN1cnItPmlzRmxvYXRpbmdPck91dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgICAgIExheW91dFVuaXQgcmVzdWx0ID0g
Y3Vyci0+Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ICE9IC0xKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Vyci0+bG9naWNhbFRvcCgpICsg
cmVzdWx0OyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCkBAIC01OTczLDcg
KzU5NzMsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsYXN0TGluZUJveEJhc2VsaW5lKCkg
Y29uc3QKICAgICB9IGVsc2UgewogICAgICAgICBib29sIGhhdmVOb3JtYWxGbG93Q2hpbGQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGN1cnIgPSBsYXN0Q2hpbGRCb3goKTsgY3Vy
cjsgY3VyciA9IGN1cnItPnByZXZpb3VzU2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBpZiAo
IWN1cnItPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAgaWYgKCFjdXJy
LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgICAgICBo
YXZlTm9ybWFsRmxvd0NoaWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJl
c3VsdCA9IGN1cnItPmxhc3RMaW5lQm94QmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0ICE9IC0xKQpAQCAtNjIwOCw3ICs2MjA4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBk
YXRlRmlyc3RMZXR0ZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChjdXJyQ2hp
bGQtPmlzTGlzdE1hcmtlcigpKQogICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5u
ZXh0U2libGluZygpOwotICAgICAgICBlbHNlIGlmIChjdXJyQ2hpbGQtPmlzRmxvYXRpbmdPclBv
c2l0aW9uZWQoKSkgeworICAgICAgICBlbHNlIGlmIChjdXJyQ2hpbGQtPmlzRmxvYXRpbmdPck91
dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgaWYgKGN1cnJDaGlsZC0+c3R5bGUo
KS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7CiAgICAgICAgICAgICAgICAgY3VyckNo
aWxkID0gY3VyckNoaWxkLT5maXJzdENoaWxkKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC02MjQ4LDkgKzYyNDgsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigp
CiAvLyAoY3Jhd2xpbmcgaW50byBibG9ja3MpLgogc3RhdGljIGJvb2wgc2hvdWxkQ2hlY2tMaW5l
cyhSZW5kZXJPYmplY3QqIG9iaikKIHsKLSAgICByZXR1cm4gIW9iai0+aXNGbG9hdGluZ09yUG9z
aXRpb25lZCgpICYmICFvYmotPmlzUnVuSW4oKSAmJgotICAgICAgICAgICAgb2JqLT5pc0Jsb2Nr
RmxvdygpICYmIG9iai0+c3R5bGUoKS0+aGVpZ2h0KCkuaXNBdXRvKCkgJiYKLSAgICAgICAgICAg
ICghb2JqLT5pc0RlcHJlY2F0ZWRGbGV4aWJsZUJveCgpIHx8IG9iai0+c3R5bGUoKS0+Ym94T3Jp
ZW50KCkgPT0gVkVSVElDQUwpOworICAgIHJldHVybiAhb2JqLT5pc0Zsb2F0aW5nT3JPdXRPZkZs
b3dQb3NpdGlvbmVkKCkgJiYgIW9iai0+aXNSdW5JbigpCisgICAgICAgICAgICAmJiBvYmotPmlz
QmxvY2tGbG93KCkgJiYgb2JqLT5zdHlsZSgpLT5oZWlnaHQoKS5pc0F1dG8oKQorICAgICAgICAg
ICAgJiYgKCFvYmotPmlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkgfHwgb2JqLT5zdHlsZSgpLT5i
b3hPcmllbnQoKSA9PSBWRVJUSUNBTCk7CiB9CiAKIHN0YXRpYyBSb290SW5saW5lQm94KiBnZXRM
aW5lQXRJbmRleChSZW5kZXJCbG9jayogYmxvY2ssIGludCBpLCBpbnQmIGNvdW50KQpAQCAtNjI5
MSw4ICs2MjkxLDcgQEAgc3RhdGljIGludCBnZXRIZWlnaHRGb3JMaW5lQ291bnQoUmVuZGVyQmxv
Y2sqIGJsb2NrLCBpbnQgbCwgYm9vbCBpbmNsdWRlQm90dG9tLAogICAgICAgICAgICAgICAgICAg
ICBpbnQgcmVzdWx0ID0gZ2V0SGVpZ2h0Rm9yTGluZUNvdW50KHRvUmVuZGVyQmxvY2sob2JqKSwg
bCwgZmFsc2UsIGNvdW50KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBvYmotPnkoKSArIChpbmNs
dWRlQm90dG9tID8gKGJsb2NrLT5ib3JkZXJCb3R0b20oKSArIGJsb2NrLT5wYWRkaW5nQm90dG9t
KCkpIDogWkVST19MQVlPVVRfVU5JVCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKCFvYmotPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSAmJiAhb2JqLT5pc1J1
bkluKCkpCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghb2JqLT5pc0Zsb2F0aW5nT3JPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgIW9iai0+aXNSdW5JbigpKQogICAgICAgICAgICAgICAgICAg
ICBub3JtYWxGbG93Q2hpbGRXaXRob3V0TGluZXMgPSBvYmo7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAobm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzICYmIGwgPT0gMCkKQEAgLTYz
NDUsNyArNjM0NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkanVzdEZvckJvcmRlckZpdChMYXlv
dXRVbml0IHgsIExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmCiAgICAgICAgIH0KICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlckJveCogb2JqID0gZmlyc3RDaGlsZEJv
eCgpOyBvYmo7IG9iaiA9IG9iai0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICAgICAgICAg
IGlmICghb2JqLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW9iai0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvYmotPmlzQmxvY2tGbG93KCkgJiYgIW9iai0+aGFzT3ZlcmZsb3dDbGlw
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRlckJsb2NrKG9iaiktPmFkanVzdEZv
ckJvcmRlckZpdCh4ICsgb2JqLT54KCksIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAob2JqLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgewpAQCAt
NjY2OSw3ICs2NjY4LDcgQEAgc3RhdGljIGJvb2wgaW5Ob3JtYWxGbG93KFJlbmRlckJveCogY2hp
bGQpCiAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSByZW5kZXJWaWV3KSB7CiAgICAgICAgIGlm
IChjdXJyLT5oYXNDb2x1bW5zKCkgfHwgY3Vyci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGN1cnItPmlzRmxvYXRpbmdPclBvc2l0
aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY3VyciA9IGN1cnItPmNv
bnRhaW5pbmdCbG9jaygpOwogICAgIH0KQEAgLTY4NDgsNyArNjg0Nyw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmFkanVzdExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24oUm9vdElubGluZUJveCogbGlu
ZUJveCwgTGF5b3V0CiAgICAgICAgIH0KICAgICAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxI
ZWlnaHQgPSBsaW5lSGVpZ2h0ICsgbWF4KFpFUk9fTEFZT1VUX1VOSVQsIGxvZ2ljYWxPZmZzZXQp
OwogICAgICAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQgPSBoYXNV
bmlmb3JtUGFnZUxvZ2ljYWxIZWlnaHQgPyBwYWdlTG9naWNhbEhlaWdodCA6IHBhZ2VMb2dpY2Fs
SGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQgKyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsK
LSAgICAgICAgaWYgKGxpbmVCb3ggPT0gZmlyc3RSb290Qm94KCkgJiYgdG90YWxMb2dpY2FsSGVp
Z2h0IDwgcGFnZUxvZ2ljYWxIZWlnaHRBdE5ld09mZnNldCAmJiAhaXNQb3NpdGlvbmVkKCkgJiYg
IWlzVGFibGVDZWxsKCkpCisgICAgICAgIGlmIChsaW5lQm94ID09IGZpcnN0Um9vdEJveCgpICYm
IHRvdGFsTG9naWNhbEhlaWdodCA8IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQgJiYgIWlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFpc1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgc2V0
UGFnaW5hdGlvblN0cnV0KHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQgKyBtYXgoWkVST19MQVlPVVRf
VU5JVCwgbG9naWNhbE9mZnNldCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRlbHRh
ICs9IHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQ7CkBAIC02OTA1LDcgKzY5MDQsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrOjphZGp1c3RCbG9ja0NoaWxkRm9yUGFnaW5hdGlvbihMYXlvdXRVbml0
IGxvZ2ljYWxUb3BBZnRlcgogICAgIGlmIChwYWdpbmF0aW9uU3RydXQpIHsKICAgICAgICAgLy8g
V2UgYXJlIHdpbGxpbmcgdG8gcHJvcGFnYXRlIG91dCB0byBvdXIgcGFyZW50IGJsb2NrIGFzIGxv
bmcgYXMgd2Ugd2VyZSBhdCB0aGUgdG9wIG9mIHRoZSBibG9jayBwcmlvcgogICAgICAgICAvLyB0
byBjb2xsYXBzaW5nIG91ciBtYXJnaW5zLCBhbmQgYXMgbG9uZyBhcyB3ZSBkaWRuJ3QgY2xlYXIg
b3IgbW92ZSBhcyBhIHJlc3VsdCBvZiBvdGhlciBwYWdpbmF0aW9uLgotICAgICAgICBpZiAoYXRC
ZWZvcmVTaWRlT2ZCbG9jayAmJiBvbGRUb3AgPT0gcmVzdWx0ICYmICFpc1Bvc2l0aW9uZWQoKSAm
JiAhaXNUYWJsZUNlbGwoKSkgeworICAgICAgICBpZiAoYXRCZWZvcmVTaWRlT2ZCbG9jayAmJiBv
bGRUb3AgPT0gcmVzdWx0ICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhaXNUYWJsZUNl
bGwoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCByZWFsbHkgY2hlY2sgaWYgd2Un
cmUgZXhjZWVkaW5nIHRoZSBwYWdlIGhlaWdodCBiZWZvcmUgcHJvcGFnYXRpbmcgdGhlIHN0cnV0
LCBidXQgd2UgZG9uJ3QKICAgICAgICAgICAgIC8vIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB0
byBkbyBzbyAodGhlIHN0cnV0IG9ubHkgaGFzIHRoZSByZW1haW5pbmcgYW1vdW50IHRvIHB1c2gp
LiBHZWNrbyBnZXRzIHRoaXMgd3JvbmcgdG9vCiAgICAgICAgICAgICAvLyBhbmQgcHVzaGVzIHRv
IHRoZSBuZXh0IHBhZ2UgYW55d2F5LCBzbyBub3QgdG9vIGNvbmNlcm5lZCBhYm91dCBpdC4KQEAg
LTcxMDMsNyArNzEwMiw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkg
Y29uc3QKICAgICAKICAgICBpZiAoaXNGbG9hdGluZygpKQogICAgICAgICByZXR1cm4gIlJlbmRl
ckJsb2NrIChmbG9hdGluZykiOwotICAgIGlmIChpc1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyQmxvY2sgKHBvc2l0
aW9uZWQpIjsKICAgICBpZiAoaXNBbm9ueW1vdXNDb2x1bW5zQmxvY2soKSkKICAgICAgICAgcmV0
dXJuICJSZW5kZXJCbG9jayAoYW5vbnltb3VzIG11bHRpLWNvbHVtbikiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA2NWRkOTA1YWRhYWIwOTRhNTIzMDE4NWE4OTE5
MmMzZDBhNzRkYjQyLi44MWE2ZWQ3NDAxZGVlMjM3YzExYmJmMTgwMGJlNDM1OTQwYjI3NjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMjQ3LDcgKzI0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHNob3VsZFNraXBDcmVhdGluZ1J1bnNGb3JPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmopCiAgICAgewotICAgICAgICByZXR1cm4gb2JqLT5pc0Zsb2F0
aW5nKCkgfHwgKG9iai0+aXNQb3NpdGlvbmVkKCkgJiYgIW9iai0+c3R5bGUoKS0+aXNPcmlnaW5h
bERpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIW9iai0+Y29udGFpbmVyKCktPmlzUmVuZGVySW5saW5l
KCkpOworICAgICAgICByZXR1cm4gb2JqLT5pc0Zsb2F0aW5nKCkgfHwgKG9iai0+aXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkgJiYgIW9iai0+c3R5bGUoKS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVU
eXBlKCkgJiYgIW9iai0+Y29udGFpbmVyKCktPmlzUmVuZGVySW5saW5lKCkpOwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgdm9pZCBhcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlS
dW4+JiwgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqLCBJbmxpbmVCaWRpUmVzb2x2
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKaW5kZXggYjQwYWVjM2Y3MmJlNGZkYWE3YmRhZTkyYjg4MzFiMzY2ODNmOTEyNS4u
YjFjZTYxMTAxOWUxMzQ0Y2U1YWE5NjIzOTU2OGFhOWRmNDkzZDAwNCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTYxNyw3
ICs2MTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzZXRNYXJnaW5zRm9yUnVieVJ1bihCaWRpUnVu
KiBydW4sIFJlbmRlclJ1YnlSdW4qIHJlbmRlcmVyLCBSZQogICAgIGludCBlbmRPdmVyaGFuZzsK
ICAgICBSZW5kZXJPYmplY3QqIG5leHRPYmplY3QgPSAwOwogICAgIGZvciAoQmlkaVJ1biogcnVu
V2l0aE5leHRPYmplY3QgPSBydW4tPm5leHQoKTsgcnVuV2l0aE5leHRPYmplY3Q7IHJ1bldpdGhO
ZXh0T2JqZWN0ID0gcnVuV2l0aE5leHRPYmplY3QtPm5leHQoKSkgewotICAgICAgICBpZiAoIXJ1
bldpdGhOZXh0T2JqZWN0LT5tX29iamVjdC0+aXNQb3NpdGlvbmVkKCkgJiYgIXJ1bldpdGhOZXh0
T2JqZWN0LT5tX2JveC0+aXNMaW5lQnJlYWsoKSkgeworICAgICAgICBpZiAoIXJ1bldpdGhOZXh0
T2JqZWN0LT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIXJ1bldpdGhOZXh0
T2JqZWN0LT5tX2JveC0+aXNMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgbmV4dE9iamVjdCA9
IHJ1bldpdGhOZXh0T2JqZWN0LT5tX29iamVjdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURp
cmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwKICAgICBSZW5k
ZXJPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gMDsKIAogICAgIGZvciAoQmlkaVJ1biogciA9IGZp
cnN0UnVuOyByOyByID0gci0+bmV4dCgpKSB7Ci0gICAgICAgIGlmICghci0+bV9ib3ggfHwgci0+
bV9vYmplY3QtPmlzUG9zaXRpb25lZCgpIHx8IHItPm1fYm94LT5pc0xpbmVCcmVhaygpKQorICAg
ICAgICBpZiAoIXItPm1fYm94IHx8IHItPm1fb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSB8fCByLT5tX2JveC0+aXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQ
b3NpdGlvbmVkIG9iamVjdHMgYXJlIG9ubHkgcGFydGljaXBhdGluZyB0byBmaWd1cmUgb3V0IHRo
ZWlyCiAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ycmVjdCBzdGF0aWMgeCBwb3NpdGlvbi4g
IFRoZXkgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIHdpZHRoLgogICAgICAgICAgICAgICAgICAgICAg
IC8vIFNpbWlsYXJseSwgbGluZSBicmVhayBib3hlcyBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgd2lk
dGguCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LAogCiAgICAgICAg
IC8vIEFsaWduIHBvc2l0aW9uZWQgYm94ZXMgd2l0aCB0aGUgdG9wIG9mIHRoZSBsaW5lIGJveC4g
IFRoaXMgaXMKICAgICAgICAgLy8gYSByZWFzb25hYmxlIGFwcHJveGltYXRpb24gb2YgYW4gYXBw
cm9wcmlhdGUgeSBwb3NpdGlvbi4KLSAgICAgICAgaWYgKHItPm1fb2JqZWN0LT5pc1Bvc2l0aW9u
ZWQoKSkKKyAgICAgICAgaWYgKHItPm1fb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkK
ICAgICAgICAgICAgIHItPm1fYm94LT5zZXRMb2dpY2FsVG9wKGxvZ2ljYWxIZWlnaHQoKSk7CiAK
ICAgICAgICAgLy8gUG9zaXRpb24gaXMgdXNlZCB0byBwcm9wZXJseSBwb3NpdGlvbiBib3RoIHJl
cGxhY2VkIGVsZW1lbnRzIGFuZApAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
JiByZXBhaW4KICAgICAgICAgICAgIGlmICghaGFzSW5saW5lQ2hpbGQgJiYgby0+aXNJbmxpbmUo
KSkKICAgICAgICAgICAgICAgICBoYXNJbmxpbmVDaGlsZCA9IHRydWU7CiAKLSAgICAgICAgICAg
IGlmIChvLT5pc1JlcGxhY2VkKCkgfHwgby0+aXNGbG9hdGluZygpIHx8IG8tPmlzUG9zaXRpb25l
ZCgpKSB7CisgICAgICAgICAgICBpZiAoby0+aXNSZXBsYWNlZCgpIHx8IG8tPmlzRmxvYXRpbmco
KSB8fCBvLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgICAgIFJlbmRl
ckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVsYXlv
dXRDaGlsZHJlbiB8fCBib3gtPmhhc1JlbGF0aXZlRGltZW5zaW9ucygpKQpAQCAtMTQ4OCw3ICsx
NDg4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXBhaW4KICAgICAgICAgICAgICAgICBpZiAocmVs
YXlvdXRDaGlsZHJlbiAmJiBib3gtPm5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbigp
KQogICAgICAgICAgICAgICAgICAgICBvLT5zZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHko
dHJ1ZSwgTWFya09ubHlUaGlzKTsKIAotICAgICAgICAgICAgICAgIGlmIChvLT5pc1Bvc2l0aW9u
ZWQoKSkKKyAgICAgICAgICAgICAgICBpZiAoby0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICAgICAgICAgIG8tPmNvbnRhaW5pbmdCbG9jaygpLT5pbnNlcnRQb3NpdGlvbmVk
T2JqZWN0KGJveCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoby0+aXNGbG9hdGluZygpKQog
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGF0ZS5mbG9hdHMoKS5hcHBlbmQoRmxvYXRXaXRo
UmVjdChib3gpKTsKQEAgLTE4NDksNyArMTg0OSw3IEBAIHN0YXRpYyBib29sIGFsd2F5c1JlcXVp
cmVzTGluZUJveChSZW5kZXJJbmxpbmUqIGZsb3cpCiAKIHN0YXRpYyBib29sIHJlcXVpcmVzTGlu
ZUJveChjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbyA9
IExpbmVJbmZvKCksIFdoaXRlc3BhY2VQb3NpdGlvbiB3aGl0ZXNwYWNlUG9zaXRpb24gPSBMZWFk
aW5nV2hpdGVzcGFjZSkKIHsKLSAgICBpZiAoaXQubV9vYmotPmlzRmxvYXRpbmdPclBvc2l0aW9u
ZWQoKSkKKyAgICBpZiAoaXQubV9vYmotPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGl0Lm1fb2JqLT5pc1JlbmRlcklu
bGluZSgpICYmICFhbHdheXNSZXF1aXJlc0xpbmVCb3godG9SZW5kZXJJbmxpbmUoaXQubV9vYmop
KSAmJiAhcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudCh0b1JlbmRlcklubGluZShpdC5tX29iaiks
IGxpbmVJbmZvKSkKQEAgLTE4ODUsNyArMTg4NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OkxpbmVC
cmVha2VyOjpza2lwVHJhaWxpbmdXaGl0ZXNwYWNlKElubGluZUl0ZXJhdG9yJiBpdGVyYXRvciwK
IHsKICAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgIXJlcXVpcmVzTGluZUJveChpdGVy
YXRvciwgbGluZUluZm8sIFRyYWlsaW5nV2hpdGVzcGFjZSkpIHsKICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSBpdGVyYXRvci5tX29iajsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNQb3Np
dGlvbmVkKCkpCisgICAgICAgIGlmIChvYmplY3QtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIHRvUmVuZGVyQm94KG9iamVj
dCkpOwogICAgICAgICBlbHNlIGlmIChvYmplY3QtPmlzRmxvYXRpbmcoKSkKICAgICAgICAgICAg
IG1fYmxvY2stPmluc2VydEZsb2F0aW5nT2JqZWN0KHRvUmVuZGVyQm94KG9iamVjdCkpOwpAQCAt
MTg5OCw3ICsxODk4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6OnNraXBMZWFk
aW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmUKIHsKICAgICB3aGlsZSAo
IXJlc29sdmVyLnBvc2l0aW9uKCkuYXRFbmQoKSAmJiAhcmVxdWlyZXNMaW5lQm94KHJlc29sdmVy
LnBvc2l0aW9uKCksIGxpbmVJbmZvLCBMZWFkaW5nV2hpdGVzcGFjZSkpIHsKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSByZXNvbHZlci5wb3NpdGlvbigpLm1fb2JqOwotICAgICAgICBp
ZiAob2JqZWN0LT5pc1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBpZiAob2JqZWN0LT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxv
Y2ssIHRvUmVuZGVyQm94KG9iamVjdCkpOwogICAgICAgICAgICAgaWYgKG9iamVjdC0+c3R5bGUo
KS0+aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKICAgICAgICAgICAgICAgICByZXNv
bHZlci5ydW5zKCkuYWRkUnVuKGNyZWF0ZVJ1bigwLCAxLCBvYmplY3QsIHJlc29sdmVyKSk7CkBA
IC0yMTkyLDcgKzIxOTIsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFr
ZXI6Om5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbAogICAgICAgICAgICAg
Z290byBlbmQ7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY3VycmVudC5tX29iai0+aXNQb3Np
dGlvbmVkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQubV9vYmotPmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSB7CiAgICAgICAgICAgICAvLyBJZiBvdXIgb3JpZ2luYWwgZGlzcGxheSB3YXNuJ3Qg
YW4gaW5saW5lIHR5cGUsIHRoZW4gd2UgY2FuCiAgICAgICAgICAgICAvLyBnbyBhaGVhZCBhbmQg
ZGV0ZXJtaW5lIG91ciBzdGF0aWMgaW5saW5lIHBvc2l0aW9uIG5vdy4KICAgICAgICAgICAgIFJl
bmRlckJveCogYm94ID0gdG9SZW5kZXJCb3goY3VycmVudC5tX29iaik7CkBAIC0yNTk5LDcgKzI1
OTksNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRMaW5l
QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbAogICAgICAgICAgICAgICAgIGdvdG8gZW5k
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjdXJyZW50Lm1fb2JqLT5pc0Zsb2F0aW5nT3JQ
b3NpdGlvbmVkKCkpIHsKKyAgICAgICAgaWYgKCFjdXJyZW50Lm1fb2JqLT5pc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIGxhc3QgPSBjdXJyZW50Lm1fb2Jq
OwogICAgICAgICAgICAgaWYgKGxhc3QtPmlzUmVwbGFjZWQoKSAmJiBhdXRvV3JhcCAmJiAoIWxh
c3QtPmlzSW1hZ2UoKSB8fCBhbGxvd0ltYWdlc1RvQnJlYWspICYmICghbGFzdC0+aXNMaXN0TWFy
a2VyKCkgfHwgdG9SZW5kZXJMaXN0TWFya2VyKGxhc3QpLT5pc0luc2lkZSgpKSkgewogICAgICAg
ICAgICAgICAgIHdpZHRoLmNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCAxNjc2M2NmYzZhOGZjZTQxNzhhOWM1MTFlNzFhMmM5ZjRkN2FmZmE5Li41MjQw
ODJlMjZhNGJkOGNhMDgyNzE3ZmFkZTFjMzQ1ZTUzNzFlODM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojp3
aWxsQmVEZXN0cm95ZWQoKQogCiB2b2lkIFJlbmRlckJveDo6cmVtb3ZlRmxvYXRpbmdPclBvc2l0
aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCkKIHsKLSAgICBBU1NFUlQoaXNGbG9hdGluZ09yUG9z
aXRpb25lZCgpKTsKKyAgICBBU1NFUlQoaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
KTsKIAogICAgIGlmIChkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJlbmRlckJveDo6cmVtb3ZlRmxvYXRpbmdPclBvc2l0
aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChp
c1Bvc2l0aW9uZWQoKSkgeworICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IHBhcmVudCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+cGFyZW50KCkpIHsKICAgICAgICAgICAgIGlmIChjdXJyLT5pc1JlbmRlckJsb2NrKCkpCiAg
ICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhjdXJyKS0+cmVtb3ZlUG9zaXRpb25lZE9iamVj
dCh0aGlzKTsKQEAgLTIwMSw5ICsyMDEsOSBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bAogICAg
ICAgICAgICAgbWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKICAgICAgICAgICAgIGlm
IChvbGRTdHlsZS0+cG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikKICAgICAgICAgICAgICAg
ICByZXBhaW50KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChuZXdTdHlsZS0+aXNQb3NpdGlvbmVk
KCkpCisgICAgICAgICAgICBlbHNlIGlmIChuZXdTdHlsZS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpCiAgICAgICAgICAgICAgICAgcGFyZW50KCktPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7
Ci0gICAgICAgICAgICBpZiAoaXNGbG9hdGluZygpICYmICFpc1Bvc2l0aW9uZWQoKSAmJiBuZXdT
dHlsZS0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBpZiAoaXNGbG9hdGluZygpICYmICFp
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBuZXdTdHlsZS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpCiAgICAgICAgICAgICAgICAgcmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21C
bG9ja0xpc3RzKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5ld1N0eWxlICYmIGlzQm9k
eSgpKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAgICAgICAg
IC8vIE5vcm1hbGx5IHdlIGNhbiBkbyBvcHRpbWl6ZWQgcG9zaXRpb25pbmcgbGF5b3V0IGZvciBh
YnNvbHV0ZS9maXhlZCBwb3NpdGlvbmVkIG9iamVjdHMuIFRoZXJlIGlzIG9uZSBzcGVjaWFsIGNh
c2UsIGhvd2V2ZXIsIHdoaWNoIGlzCiAgICAgICAgIC8vIHdoZW4gdGhlIHBvc2l0aW9uZWQgb2Jq
ZWN0J3MgbWFyZ2luLWJlZm9yZSBpcyBjaGFuZ2VkLiBJbiB0aGlzIGNhc2UgdGhlIHBhcmVudCBo
YXMgdG8gZ2V0IGEgbGF5b3V0IGluIG9yZGVyIHRvIHJ1biBtYXJnaW4gY29sbGFwc2luZwogICAg
ICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIG5ldyBzdGF0aWMgcG9zaXRpb24uCi0gICAgICAgIGlm
IChpc1Bvc2l0aW9uZWQoKSAmJiBuZXdTdHlsZS0+aGFzU3RhdGljQmxvY2tQb3NpdGlvbihpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKSAmJiBvbGRTdHlsZS0+bWFyZ2luQmVmb3JlKCkgIT0gbmV3
U3R5bGUtPm1hcmdpbkJlZm9yZSgpCisgICAgICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiBuZXdTdHlsZS0+aGFzU3RhdGljQmxvY2tQb3NpdGlvbihpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKSAmJiBvbGRTdHlsZS0+bWFyZ2luQmVmb3JlKCkgIT0gbmV3U3R5bGUtPm1hcmdpbkJl
Zm9yZSgpCiAgICAgICAgICAgICAmJiBwYXJlbnQoKSAmJiAhcGFyZW50KCktPm5vcm1hbENoaWxk
TmVlZHNMYXlvdXQoKSkKICAgICAgICAgICAgIHBhcmVudCgpLT5zZXRDaGlsZE5lZWRzTGF5b3V0
KHRydWUpOwogICAgIH0KQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIFJlbmRlckJveDo6dXBkYXRl
Qm94TW9kZWxJbmZvRnJvbVN0eWxlKCkKICAgICBpZiAoaXNSb290T2JqZWN0IHx8IGlzVmlld09i
amVjdCkKICAgICAgICAgc2V0SGFzQm94RGVjb3JhdGlvbnModHJ1ZSk7CiAKLSAgICBzZXRQb3Np
dGlvbmVkKHN0eWxlVG9Vc2UtPmlzUG9zaXRpb25lZCgpKTsKLSAgICBzZXRGbG9hdGluZyghaXNQ
b3NpdGlvbmVkKCkgJiYgc3R5bGVUb1VzZS0+aXNGbG9hdGluZygpKTsKKyAgICBzZXRQb3NpdGlv
bmVkKHN0eWxlVG9Vc2UtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKKyAgICBzZXRGbG9hdGlu
ZyghaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgc3R5bGVUb1VzZS0+aXNGbG9hdGluZygpKTsK
IAogICAgIC8vIFdlIGFsc28gaGFuZGxlIDxib2R5PiBhbmQgPGh0bWw+LCB3aG9zZSBvdmVyZmxv
dyBhcHBsaWVzIHRvIHRoZSB2aWV3cG9ydC4KICAgICBpZiAoc3R5bGVUb1VzZS0+b3ZlcmZsb3dY
KCkgIT0gT1ZJU0lCTEUgJiYgIWlzUm9vdE9iamVjdCAmJiAoaXNSZW5kZXJCbG9jaygpIHx8IGlz
VGFibGVSb3coKSB8fCBpc1RhYmxlU2VjdGlvbigpKSkgewpAQCAtMTM4OCw3ICsxMzg4LDcgQEAg
TGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBMYXlvdXRQb2ludCYgcG8KICAgICAgICAgb2Zmc2V0ICs9IHJlbGF0aXZlUG9zaXRp
b25PZmZzZXQoKTsKIAogICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpIHsKLSAg
ICAgICAgaWYgKCFzdHlsZSgpLT5pc1Bvc2l0aW9uZWQoKSAmJiBvLT5oYXNDb2x1bW5zKCkpIHsK
KyAgICAgICAgaWYgKCFzdHlsZSgpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBvLT5oYXND
b2x1bW5zKCkpIHsKICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IHRvUmVuZGVyQmxv
Y2sobyk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IGNvbHVtblJlY3QoZnJhbWVSZWN0KCkpOwog
ICAgICAgICAgICAgYmxvY2stPmFkanVzdFN0YXJ0RWRnZUZvcldyaXRpbmdNb2RlSW5jbHVkaW5n
Q29sdW1ucyhjb2x1bW5SZWN0KTsKQEAgLTE0MzEsNyArMTQzMSw3IEBAIHZvaWQgUmVuZGVyQm94
OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCiAKIHZvaWQgUmVuZGVyQm94Ojpwb3Np
dGlvbkxpbmVCb3goSW5saW5lQm94KiBib3gpCiB7Ci0gICAgaWYgKGlzUG9zaXRpb25lZCgpKSB7
CisgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIC8vIENhY2hlIHRo
ZSB4IHBvc2l0aW9uIG9ubHkgaWYgd2Ugd2VyZSBhbiBJTkxJTkUgdHlwZSBvcmlnaW5hbGx5Lgog
ICAgICAgICBib29sIHdhc0lubGluZSA9IHN0eWxlKCktPmlzT3JpZ2luYWxEaXNwbGF5SW5saW5l
VHlwZSgpOwogICAgICAgICBpZiAod2FzSW5saW5lKSB7CkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBMYQogICAgIGlmICghbykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUG9zaXRpb25lZCgpKQorICAgIGlmIChp
c1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAg
ZmxpcEZvcldyaXRpbmdNb2RlKHJlY3QpOwogCiAgICAgTGF5b3V0UG9pbnQgdG9wTGVmdCA9IHJl
Y3QubG9jYXRpb24oKTsKQEAgLTE2MzcsNyArMTYzNyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlTG9naWNhbFdpZHRoKCkKIAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJ
blJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKQogewotICAgIGlmIChpc1Bvc2l0aW9uZWQoKSkgeworICAgIGlmIChp
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxjdWxh
dGlvbiBpcyBub3QgcGF0Y2hlZCBmb3IgYmxvY2stZmxvdyB5ZXQuCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAogICAgICAgICBjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aChyZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UpOwpAQCAtMTkxNywxMCArMTkxNywxMCBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5k
ZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dAog
ICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoSW5SZWdpb24gPSBsb2dpY2FsV2lkdGgoKTsKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0SW5SZWdpb24gPSBsb2dpY2FsTGVmdCgpOwogICAgIExh
eW91dFVuaXQgd2lkdGhEZWx0YSA9IGxvZ2ljYWxXaWR0aEluUmVnaW9uIC0gb2xkTG9naWNhbFdp
ZHRoOwotICAgIExheW91dFVuaXQgbG9naWNhbExlZnREZWx0YSA9IGlzUG9zaXRpb25lZCgpID8g
bG9naWNhbExlZnRJblJlZ2lvbiAtIG9sZExvZ2ljYWxMZWZ0IDogc3RhcnRNYXJnaW5EZWx0YTsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0RGVsdGEgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSA/IGxvZ2ljYWxMZWZ0SW5SZWdpb24gLSBvbGRMb2dpY2FsTGVmdCA6IHN0YXJ0TWFyZ2luRGVs
dGE7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRJblJlZ2lvbiA9IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aEluUmVnaW9uIC0gKGxvZ2ljYWxMZWZ0SW5SZWdpb24gKyBsb2dpY2FsV2lk
dGhJblJlZ2lvbik7CiAgICAgTGF5b3V0VW5pdCBvbGRMb2dpY2FsUmlnaHQgPSBjb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGggLSAob2xkTG9naWNhbExlZnQgKyBvbGRMb2dpY2FsV2lkdGgpOwot
ICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0RGVsdGEgPSBpc1Bvc2l0aW9uZWQoKSA/IGxvZ2lj
YWxSaWdodEluUmVnaW9uIC0gb2xkTG9naWNhbFJpZ2h0IDogc3RhcnRNYXJnaW5EZWx0YTsKKyAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodERlbHRhID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
PyBsb2dpY2FsUmlnaHRJblJlZ2lvbiAtIG9sZExvZ2ljYWxSaWdodCA6IHN0YXJ0TWFyZ2luRGVs
dGE7CiAKICAgICAvLyBTZXQgb3VyIHZhbHVlcyBiYWNrLgogICAgIG11dGFibGVCb3gtPnNldExv
Z2ljYWxXaWR0aChvbGRMb2dpY2FsV2lkdGgpOwpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgUmVuZGVy
Qm94UmVnaW9uSW5mbyogUmVuZGVyQm94OjpyZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlclJlZ2lv
biogcmVnaW9uLCBMYXlvdXQKIAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRPZmZzZXQgPSAw
OwogICAgIAotICAgIGlmICghaXNQb3NpdGlvbmVkKCkgJiYgYXZvaWRzRmxvYXRzKCkgJiYgY2It
PmNvbnRhaW5zRmxvYXRzKCkpIHsKKyAgICBpZiAoIWlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYm
IGF2b2lkc0Zsb2F0cygpICYmIGNiLT5jb250YWluc0Zsb2F0cygpKSB7CiAgICAgICAgIExheW91
dFVuaXQgc3RhcnRQb3NpdGlvbkRlbHRhID0gY2ItPmNvbXB1dGVTdGFydFBvc2l0aW9uRGVsdGFG
b3JDaGlsZEF2b2lkaW5nRmxvYXRzKHRoaXMsIG1hcmdpblN0YXJ0SW5SZWdpb24sIHJlZ2lvbiwg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAgICAgICAgIGlmIChjYi0+c3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgbG9naWNhbExlZnREZWx0
YSArPSBzdGFydFBvc2l0aW9uRGVsdGE7CkBAIC0xOTYxLDcgKzE5NjEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogICAgICAgICByZXR1cm47CiAKICAgICBMZW5n
dGggaDsKLSAgICBpZiAoaXNQb3NpdGlvbmVkKCkpCisgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKQogICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoKTsKICAgICBl
bHNlIHsKICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7CkBAIC0y
MDkzLDcgKzIwOTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VM
b2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KQogICAgIC8vIG9ubHkgYXQgZXhwbGlj
aXQgY29udGFpbmVycy4KICAgICBib29sIHNraXBwZWRBdXRvSGVpZ2h0Q29udGFpbmluZ0Jsb2Nr
ID0gZmFsc2U7CiAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAg
d2hpbGUgKCFjYi0+aXNSZW5kZXJWaWV3KCkgJiYgIWNiLT5pc0JvZHkoKSAmJiAhY2ItPmlzVGFi
bGVDZWxsKCkgJiYgIWNiLT5pc1Bvc2l0aW9uZWQoKSAmJiBjYi0+c3R5bGUoKS0+bG9naWNhbEhl
aWdodCgpLmlzQXV0bygpKSB7CisgICAgd2hpbGUgKCFjYi0+aXNSZW5kZXJWaWV3KCkgJiYgIWNi
LT5pc0JvZHkoKSAmJiAhY2ItPmlzVGFibGVDZWxsKCkgJiYgIWNiLT5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSAmJiBjYi0+c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkgJiYgIWNiLT5pc0Fub255bW91c0Js
b2NrKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc2tpcHBlZEF1dG9IZWlnaHRDb250
YWluaW5nQmxvY2sgPSB0cnVlOwpAQCAtMjEwNyw3ICsyMTA3LDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdo
dCkKICAgICAvLyBleHBsaWNpdGx5IHNwZWNpZmllZCB0aGF0IGNhbiBiZSB1c2VkIGZvciBhbnkg
cGVyY2VudGFnZSBjb21wdXRhdGlvbnMuCiAgICAgLy8gRklYTUU6IFdlIGNhbid0IGp1c3QgY2hl
Y2sgdG9wL2JvdHRvbSBoZXJlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NjUwMAotICAgIGJvb2wgaXNQb3NpdGlvbmVkV2l0aFNwZWNpZmllZEhlaWdo
dCA9IGNiLT5pc1Bvc2l0aW9uZWQoKSAmJiAoIWNic3R5bGUtPmxvZ2ljYWxIZWlnaHQoKS5pc0F1
dG8oKSB8fCAoIWNic3R5bGUtPnRvcCgpLmlzQXV0bygpICYmICFjYnN0eWxlLT5ib3R0b20oKS5p
c0F1dG8oKSkpOworICAgIGJvb2wgaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNpZmllZEhl
aWdodCA9IGNiLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAoIWNic3R5bGUtPmxvZ2ljYWxI
ZWlnaHQoKS5pc0F1dG8oKSB8fCAoIWNic3R5bGUtPnRvcCgpLmlzQXV0bygpICYmICFjYnN0eWxl
LT5ib3R0b20oKS5pc0F1dG8oKSkpOwogCiAgICAgYm9vbCBpbmNsdWRlQm9yZGVyUGFkZGluZyA9
IGlzVGFibGUoKTsKIApAQCAtMjEzNywxOSArMjEzNywxOSBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KQog
ICAgIC8vIGhlaWdodC4KICAgICBlbHNlIGlmIChjYnN0eWxlLT5sb2dpY2FsSGVpZ2h0KCkuaXNG
aXhlZCgpKQogICAgICAgICByZXN1bHQgPSBjYi0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0KGNic3R5bGUtPmxvZ2ljYWxIZWlnaHQoKS52YWx1ZSgpKTsKLSAgICBlbHNlIGlmIChjYnN0
eWxlLT5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50KCkgJiYgIWlzUG9zaXRpb25lZFdpdGhTcGVj
aWZpZWRIZWlnaHQpIHsKKyAgICBlbHNlIGlmIChjYnN0eWxlLT5sb2dpY2FsSGVpZ2h0KCkuaXNQ
ZXJjZW50KCkgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsK
ICAgICAgICAgLy8gV2UgbmVlZCB0byByZWN1ciBhbmQgY29tcHV0ZSB0aGUgcGVyY2VudGFnZSBo
ZWlnaHQgZm9yIG91ciBjb250YWluaW5nIGJsb2NrLgogICAgICAgICByZXN1bHQgPSBjYi0+Y29t
cHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNic3R5bGUtPmxvZ2ljYWxIZWlnaHQoKSk7CiAg
ICAgICAgIGlmIChyZXN1bHQgIT0gLTEpCiAgICAgICAgICAgICByZXN1bHQgPSBjYi0+Y29tcHV0
ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KHJlc3VsdCk7Ci0gICAgfSBlbHNlIGlmIChjYi0+aXNS
ZW5kZXJWaWV3KCkgfHwgKGNiLT5pc0JvZHkoKSAmJiBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUo
KSkgfHwgaXNQb3NpdGlvbmVkV2l0aFNwZWNpZmllZEhlaWdodCkgeworICAgIH0gZWxzZSBpZiAo
Y2ItPmlzUmVuZGVyVmlldygpIHx8IChjYi0+aXNCb2R5KCkgJiYgZG9jdW1lbnQoKS0+aW5RdWly
a3NNb2RlKCkpIHx8IGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsK
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBhZmZlY3QgdGhlIGJsb2NrJyBoZWlnaHQo
KSBtZW1iZXIgdmFyaWFibGUsIHNpbmNlIHRoaXMKICAgICAgICAgLy8gY2FuIGdldCBjYWxsZWQg
d2hpbGUgdGhlIGJsb2NrIGlzIHN0aWxsIGxheWluZyBvdXQgaXRzIGtpZHMuCiAgICAgICAgIExh
eW91dFVuaXQgb2xkSGVpZ2h0ID0gY2ItPmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgY2ItPmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJlc3VsdCA9IGNiLT5jb250ZW50TG9naWNh
bEhlaWdodCgpOwogICAgICAgICBjYi0+c2V0TG9naWNhbEhlaWdodChvbGRIZWlnaHQpOwotICAg
IH0gZWxzZSBpZiAoY2ItPmlzUm9vdCgpICYmIGlzUG9zaXRpb25lZCgpKQorICAgIH0gZWxzZSBp
ZiAoY2ItPmlzUm9vdCgpICYmIGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAvLyBN
YXRjaCB0aGUgcG9zaXRpb25lZCBvYmplY3RzIGJlaGF2aW9yLCB3aGljaCBpcyB0aGF0IHBvc2l0
aW9uZWQgb2JqZWN0cyB3aWxsIGZpbGwgdGhlaXIgdmlld3BvcnQKICAgICAgICAgLy8gYWx3YXlz
LiAgTm90ZSB3ZSBjb3VsZCBvbmx5IGhpdCB0aGlzIGNhc2UgYnkgcmVjdXJyaW5nIGludG8gY29t
cHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0IG9uIGEgcG9zaXRpb25lZCBjb250YWluaW5nIGJs
b2NrLgogICAgICAgICByZXN1bHQgPSBjYi0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0
KGNiLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCkpOwpAQCAtMjE5Myw3ICsyMTkzLDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0
aCBsb2dpY2FsV2lkdGgpIGNvbnMKICAgICAgICAgICAgIC8vIEZJWE1FOiBjb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgaXMgd3JvbmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1l
bnQncyBibG9jay1mbG93IGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlCiAgICAgICAgICAgICAvLyBj
b250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ5NgotICAgICAgICAgICAgY29uc3QgTGF5
b3V0VW5pdCBjdyA9IGlzUG9zaXRpb25lZCgpID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRo
Rm9yUG9zaXRpb25lZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lcigpKSkgOiBjb250
YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CisgICAgICAgICAgICBjb25zdCBM
YXlvdXRVbml0IGN3ID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBjb250YWluaW5nQmxvY2tM
b2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY29udGFpbmVy
KCkpKSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKTsKICAgICAgICAg
ICAgIGlmIChjdyA+IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94
TG9naWNhbFdpZHRoKG1pbmltdW1WYWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGN3KSk7CiAg
ICAgICAgIH0KQEAgLTIyMjMsNyArMjIyMyw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNvCiAg
ICAgICAgIGNhc2UgUGVyY2VudDoKICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAgICB7
Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIGNiID0gaXNQb3NpdGlvbmVkKCkgPyBjb250YWlu
ZXIoKSA6IGNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBjYiA9
IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpID8gY29udGFpbmVyKCkgOiBjb250YWluaW5nQmxvY2so
KTsKICAgICAgICAgICAgIHdoaWxlIChjYi0+aXNBbm9ueW1vdXMoKSkgewogICAgICAgICAgICAg
ICAgIGNiID0gY2ItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgICAgIHRvUmVuZGVy
QmxvY2soY2IpLT5hZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChjb25zdF9jYXN0PFJlbmRlckJv
eCo+KHRoaXMpKTsKQEAgLTIyMzEsNyArMjIzMSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNv
CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGN1bGF0aW9uIGlzIG5vdCBwYXRjaGVk
IGZvciBibG9jay1mbG93IHlldC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAotICAgICAgICAgICAgaWYgKGNiLT5pc1Bvc2l0aW9u
ZWQoKSAmJiBjYi0+c3R5bGUoKS0+aGVpZ2h0KCkuaXNBdXRvKCkgJiYgIShjYi0+c3R5bGUoKS0+
dG9wKCkuaXNBdXRvKCkgfHwgY2ItPnN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpKSkgeworICAg
ICAgICAgICAgaWYgKGNiLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBjYi0+c3R5bGUoKS0+
aGVpZ2h0KCkuaXNBdXRvKCkgJiYgIShjYi0+c3R5bGUoKS0+dG9wKCkuaXNBdXRvKCkgfHwgY2It
PnN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChj
Yi0+aXNSZW5kZXJCbG9jaygpKTsKICAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sg
PSB0b1JlbmRlckJsb2NrKGNiKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG9sZEhlaWdo
dCA9IGJsb2NrLT5oZWlnaHQoKTsKQEAgLTIyNDUsNyArMjI0NSw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxI
ZWlnaHQpIGNvCiAgICAgICAgICAgICAvLyBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdy4K
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NjQ5NgogICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVIZWlnaHQ7Ci0gICAgICAgICAg
ICBpZiAoaXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2Nr
TG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQodG9SZW5kZXJCb3hNb2RlbE9iamVjdChjYikpOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gIHRv
UmVuZGVyQm94KGNiKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodCgpOwpAQCAtMjMwMCw3ICsyMzAw
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhj
b25zdCBMZW5ndGgmIGgpIGNvbnN0CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDA0NgogICAgICAgICAvLyBGb3IgYWJzb2x1dGVseSBwb3NpdGlv
bmVkIGVsZW1lbnRzIHdob3NlIGNvbnRhaW5pbmcgYmxvY2sgaXMgYmFzZWQgb24gYSBibG9jay1s
ZXZlbCBlbGVtZW50LAogICAgICAgICAvLyB0aGUgcGVyY2VudGFnZSBpcyBjYWxjdWxhdGVkIHdp
dGggcmVzcGVjdCB0byB0aGUgaGVpZ2h0IG9mIHRoZSBwYWRkaW5nIGJveCBvZiB0aGF0IGVsZW1l
bnQKLSAgICAgICAgaWYgKGlzUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5nQmxv
Y2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb250YWluaW5nQmxvY2soKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNvbnRhaW5pbmdCbG9jaygpLT5h
dmFpbGFibGVMb2dpY2FsSGVpZ2h0KCk7CkBAIC0yMzA5LDcgKzIzMDksNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCkg
Y29uc3QKIAogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHRvcC9ib3R0b20gaGVy
ZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1MDAK
LSAgICBpZiAoaXNSZW5kZXJCbG9jaygpICYmIGlzUG9zaXRpb25lZCgpICYmIHN0eWxlKCktPmhl
aWdodCgpLmlzQXV0bygpICYmICEoc3R5bGUoKS0+dG9wKCkuaXNBdXRvKCkgfHwgc3R5bGUoKS0+
Ym90dG9tKCkuaXNBdXRvKCkpKSB7CisgICAgaWYgKGlzUmVuZGVyQmxvY2soKSAmJiBpc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiBzdHlsZSgpLT5oZWlnaHQoKS5pc0F1dG8oKSAmJiAhKHN0eWxl
KCktPnRvcCgpLmlzQXV0bygpIHx8IHN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpKSkgewogICAg
ICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBjb25zdF9jYXN0PFJlbmRlckJsb2NrKj4odG9SZW5k
ZXJCbG9jayh0aGlzKSk7CiAgICAgICAgIExheW91dFVuaXQgb2xkSGVpZ2h0ID0gYmxvY2stPmxv
Z2ljYWxIZWlnaHQoKTsKICAgICAgICAgYmxvY2stPmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CkBA
IC0zNjc5LDcgKzM2NzksNyBAQCBzdGF0aWMgYm9vbCBwZXJjZW50YWdlTG9naWNhbEhlaWdodElz
UmVzb2x2YWJsZShjb25zdCBSZW5kZXJCb3gqIGJveCkKICAgICAvLyBibG9jayBoYXMgYW4gYXV0
byBoZWlnaHQuIFdlIHN0aWxsIHNraXAgYW5vbnltb3VzIGNvbnRhaW5pbmcgYmxvY2tzIGluIGJv
dGggbW9kZXMsIHRob3VnaCwgYW5kIGxvb2sKICAgICAvLyBvbmx5IGF0IGV4cGxpY2l0IGNvbnRh
aW5lcnMuCiAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGNiID0gYm94LT5jb250YWluaW5nQmxvY2so
KTsKLSAgICB3aGlsZSAoIWNiLT5pc1JlbmRlclZpZXcoKSAmJiAhY2ItPmlzQm9keSgpICYmICFj
Yi0+aXNUYWJsZUNlbGwoKSAmJiAhY2ItPmlzUG9zaXRpb25lZCgpICYmIGNiLT5zdHlsZSgpLT5s
b2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkpIHsKKyAgICB3aGlsZSAoIWNiLT5pc1JlbmRlclZpZXco
KSAmJiAhY2ItPmlzQm9keSgpICYmICFjYi0+aXNUYWJsZUNlbGwoKSAmJiAhY2ItPmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpICYmIGNiLT5zdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkp
IHsKICAgICAgICAgaWYgKCFib3gtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpICYmICFjYi0+
aXNBbm9ueW1vdXNCbG9jaygpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNiID0gY2It
PmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtMzY4OSw3ICszNjg5LDcgQEAgc3RhdGljIGJvb2wgcGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoY29uc3QgUmVuZGVyQm94KiBib3gpCiAg
ICAgLy8gZXhwbGljaXRseSBzcGVjaWZpZWQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW55IHBlcmNl
bnRhZ2UgY29tcHV0YXRpb25zLgogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHRv
cC9ib3R0b20gaGVyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDY1MDAKLSAgICBib29sIGlzUG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQgPSBj
Yi0+aXNQb3NpdGlvbmVkKCkgJiYgKCFjYi0+c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmlzQXV0
bygpIHx8ICghY2ItPnN0eWxlKCktPnRvcCgpLmlzQXV0bygpICYmICFjYi0+c3R5bGUoKS0+Ym90
dG9tKCkuaXNBdXRvKCkpKTsKKyAgICBib29sIGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVj
aWZpZWRIZWlnaHQgPSBjYi0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKCFjYi0+c3R5bGUo
KS0+bG9naWNhbEhlaWdodCgpLmlzQXV0bygpIHx8ICghY2ItPnN0eWxlKCktPnRvcCgpLmlzQXV0
bygpICYmICFjYi0+c3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCkpKTsKIAogICAgIC8vIFRhYmxl
IGNlbGxzIHZpb2xhdGUgd2hhdCB0aGUgQ1NTIHNwZWMgc2F5cyB0byBkbyB3aXRoIGhlaWdodHMu
ICBCYXNpY2FsbHkgd2UKICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxsIHNwZWNpZmllZCBh
IGhlaWdodCBvciBub3QuICBXZSBqdXN0IGFsd2F5cyBtYWtlIG91cnNlbHZlcwpAQCAtMzcwMSwx
MSArMzcwMSwxMSBAQCBzdGF0aWMgYm9vbCBwZXJjZW50YWdlTG9naWNhbEhlaWdodElzUmVzb2x2
YWJsZShjb25zdCBSZW5kZXJCb3gqIGJveCkKICAgICAvLyBoZWlnaHQuCiAgICAgaWYgKGNiLT5z
dHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAoY2ItPnN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnQoKSAmJiAhaXNQ
b3NpdGlvbmVkV2l0aFNwZWNpZmllZEhlaWdodCkKKyAgICBpZiAoY2ItPnN0eWxlKCktPmxvZ2lj
YWxIZWlnaHQoKS5pc1BlcmNlbnQoKSAmJiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNp
ZmllZEhlaWdodCkKICAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNv
bHZhYmxlKGNiKTsKLSAgICBpZiAoY2ItPmlzUmVuZGVyVmlldygpIHx8IChjYi0+aXNCb2R5KCkg
JiYgYm94LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgfHwgaXNQb3NpdGlvbmVkV2l0aFNw
ZWNpZmllZEhlaWdodCkKKyAgICBpZiAoY2ItPmlzUmVuZGVyVmlldygpIHx8IChjYi0+aXNCb2R5
KCkgJiYgYm94LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgfHwgaXNPdXRPZkZsb3dQb3Np
dGlvbmVkV2l0aFNwZWNpZmllZEhlaWdodCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KGNiLT5pc1Jvb3QoKSAmJiBib3gtPmlzUG9zaXRpb25lZCgpKSB7CisgICAgaWYgKGNiLT5pc1Jv
b3QoKSAmJiBib3gtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIC8vIE1hdGNo
IHRoZSBwb3NpdGlvbmVkIG9iamVjdHMgYmVoYXZpb3IsIHdoaWNoIGlzIHRoYXQgcG9zaXRpb25l
ZCBvYmplY3RzIHdpbGwgZmlsbCB0aGVpciB2aWV3cG9ydAogICAgICAgICAvLyBhbHdheXMuICBO
b3RlIHdlIGNvdWxkIG9ubHkgaGl0IHRoaXMgY2FzZSBieSByZWN1cnJpbmcgaW50byBjb21wdXRl
UGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQgb24gYSBwb3NpdGlvbmVkIGNvbnRhaW5pbmcgYmxvY2su
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmlu
ZGV4IDIwNGI4MmVjMmIxMjdjZDczMzBkZWVjMWM3MWQ0ZGE4NjM5M2Q4YmEuLjlmMDU3N2U4MjAx
YTdlOGQ5ZmI0MTA1M2JhNzNkNmE3MTI2MzYxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFJlbmRlckJveChOb2RlKik7
CiAgICAgdmlydHVhbCB+UmVuZGVyQm94KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzUm9vdCgpIHx8IGlzUG9zaXRpb25lZCgp
IHx8IGlzUmVsUG9zaXRpb25lZCgpIHx8IGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNPdmVyZmxvd0Ns
aXAoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc01hc2so
KSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgaGFzRmlsdGVyKCkgfHwgc3R5bGUoKS0+c3BlY2lmaWVz
Q29sdW1ucygpOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBpc1Jvb3QoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBpc1Jl
bFBvc2l0aW9uZWQoKSB8fCBpc1RyYW5zcGFyZW50KCkgfHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwg
aGFzVHJhbnNmb3JtKCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFz
UmVmbGVjdGlvbigpIHx8IGhhc0ZpbHRlcigpIHx8IHN0eWxlKCktPnNwZWNpZmllc0NvbHVtbnMo
KTsgfQogCiAgICAgLy8gVXNlIHRoaXMgd2l0aCBjYXV0aW9uISBObyB0eXBlIGNoZWNraW5nIGlz
IGRvbmUhCiAgICAgUmVuZGVyQm94KiBmaXJzdENoaWxkQm94KCkgY29uc3Q7CkBAIC0zMjYsNyAr
MzI2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdHJldGNoZXNUb1ZpZXdwb3J0KCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSAmJiBzdHls
ZSgpLT5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkgJiYgIWlzRmxvYXRpbmdPclBvc2l0aW9uZWQo
KSAmJiAoaXNSb290KCkgfHwgaXNCb2R5KCkpICYmICFkb2N1bWVudCgpLT5zaG91bGREaXNwbGF5
U2VhbWxlc3NseVdpdGhQYXJlbnQoKTsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPmluUXVp
cmtzTW9kZSgpICYmIHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSAmJiAhaXNGbG9h
dGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChpc1Jvb3QoKSB8fCBpc0JvZHkoKSkgJiYg
IWRvY3VtZW50KCktPnNob3VsZERpc3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCgpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgeyByZXR1cm4gSW50
U2l6ZSgpOyB9CkBAIC00MjcsNyArNDI3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1dyaXRp
bmdNb2RlUm9vdCgpIGNvbnN0IHsgcmV0dXJuICFwYXJlbnQoKSB8fCBwYXJlbnQoKS0+c3R5bGUo
KS0+d3JpdGluZ01vZGUoKSAhPSBzdHlsZSgpLT53cml0aW5nTW9kZSgpOyB9CiAKLSAgICBib29s
IGlzRGVwcmVjYXRlZEZsZXhJdGVtKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlz
RmxvYXRpbmdPclBvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNEZXByZWNh
dGVkRmxleGlibGVCb3goKTsgfQorICAgIGJvb2wgaXNEZXByZWNhdGVkRmxleEl0ZW0oKSBjb25z
dCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25l
ZCgpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0RlcHJlY2F0ZWRGbGV4aWJsZUJveCgpOyB9
CiAgICAgCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0
aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA0ODQ1YWYy
ODc1MTkwNmY2NzQzYzM5NjI5YzQ5ZjA4NDVlOTc4M2Q4Li5iNzc0MzhkOTYwYzNkNmVlZGM2ZDkz
ODJmZjI2MzM4NGEwNjhmYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTUzMSw3ICs1MzEsNyBAQCBMYXlvdXRQb2ludCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJl
bnQoY29uc3QgTAogICAgIGlmIChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2Zmc2V0UGFy
ZW50ID0gdGhpcy0+b2Zmc2V0UGFyZW50KCkpIHsKICAgICAgICAgaWYgKG9mZnNldFBhcmVudC0+
aXNCb3goKSAmJiAhb2Zmc2V0UGFyZW50LT5pc0JvZHkoKSkKICAgICAgICAgICAgIHJlZmVyZW5j
ZVBvaW50Lm1vdmUoLXRvUmVuZGVyQm94KG9mZnNldFBhcmVudCktPmJvcmRlckxlZnQoKSwgLXRv
UmVuZGVyQm94KG9mZnNldFBhcmVudCktPmJvcmRlclRvcCgpKTsKLSAgICAgICAgaWYgKCFpc1Bv
c2l0aW9uZWQoKSkgeworICAgICAgICBpZiAoIWlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAg
ICAgICAgICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgcmVmZXJl
bmNlUG9pbnQubW92ZShyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkpOwogICAgICAgICAgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBjdXJyID0gcGFyZW50KCk7CkBAIC01NDIsNyArNTQyLDcgQEAgTGF5
b3V0UG9pbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRv
T2Zmc2V0UGFyZW50KGNvbnN0IEwKICAgICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludC5tb3Zl
KGN1cnItPnBhcmVudCgpLT5vZmZzZXRGb3JDb2x1bW5zKHJlZmVyZW5jZVBvaW50KSk7CiAgICAg
ICAgICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKG9mZnNldFBhcmVudC0+aXNCb3goKSAmJiBvZmZzZXRQYXJlbnQtPmlzQm9keSgp
ICYmICFvZmZzZXRQYXJlbnQtPmlzUmVsUG9zaXRpb25lZCgpICYmICFvZmZzZXRQYXJlbnQtPmlz
UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgaWYgKG9mZnNldFBhcmVudC0+aXNCb3goKSAmJiBv
ZmZzZXRQYXJlbnQtPmlzQm9keSgpICYmICFvZmZzZXRQYXJlbnQtPmlzUmVsUG9zaXRpb25lZCgp
ICYmICFvZmZzZXRQYXJlbnQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZVBvaW50Lm1vdmVCeSh0b1JlbmRlckJveChvZmZzZXRQYXJlbnQpLT50b3BM
ZWZ0TG9jYXRpb24oKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzQwLDcgKzI3NDAsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybQogCiAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQg
PSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIExheW91dFBvaW50KCkpOwogCi0gICAgaWYgKCFzdHls
ZSgpLT5pc1Bvc2l0aW9uZWQoKSAmJiBvLT5oYXNDb2x1bW5zKCkpIHsKKyAgICBpZiAoIXN0eWxl
KCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIG8tPmhhc0NvbHVtbnMoKSkgewogICAgICAg
ICBSZW5kZXJCbG9jayogYmxvY2sgPSBzdGF0aWNfY2FzdDxSZW5kZXJCbG9jayo+KG8pOwogICAg
ICAgICBMYXlvdXRQb2ludCBwb2ludChyb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUu
bWFwcGVkUG9pbnQoKSkpOwogICAgICAgICBwb2ludCAtPSBjb250YWluZXJPZmZzZXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDZj
MGJjY2E2NGMyZDM4NDczZDBhMmYwMGRlYWNmNGM0Y2FlNTM0YzYuLmIxNGY1M2QyMWI3NzZiYjU1
M2NjNDkzOTczZDEwZjc5MWVjNDQxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdDsKICAgICBSZW5kZXJMYXllciogbGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBpc1Jvb3QoKSB8fCBpc1Bvc2l0aW9uZWQoKSB8fCBpc1Jl
bFBvc2l0aW9uZWQoKSB8fCBpc1RyYW5zcGFyZW50KCkgfHwgaGFzVHJhbnNmb3JtKCkgfHwgaGFz
SGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNNYXNrKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IGhhc0Zp
bHRlcigpIHx8IHN0eWxlKCktPnNwZWNpZmllc0NvbHVtbnMoKTsgfQorICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gaXNSb290KCkgfHwgaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVkKCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhh
c1RyYW5zZm9ybSgpIHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzTWFzaygpIHx8IGhhc1Jl
ZmxlY3Rpb24oKSB8fCBoYXNGaWx0ZXIoKSB8fCBzdHlsZSgpLT5zcGVjaWZpZXNDb2x1bW5zKCk7
IH0KIAogICAgIC8vIFRoaXMgd2lsbCB3b3JrIG9uIGlubGluZXMgdG8gcmV0dXJuIHRoZSBib3Vu
ZGluZyBib3ggb2YgYWxsIG9mIHRoZSBsaW5lcycgYm9yZGVyIGJveGVzLgogICAgIHZpcnR1YWwg
SW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5k
ZXggNjFjZTNhZTFkN2FhZGNhZmQyMmU2OWMyNjdjYTIzZjA5NmI2ZDVjNC4uYWVlZWQxMGQzY2Mw
OTk2ZmEzMThhMmE1ZGI4MmE0YTc2N2RlMjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5XaWR0aEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpCiBzdGF0aWMgYm9vbCBjaGlsZERvZXNOb3RBZmZlY3RXaWR0aE9yRmxleGluZyhS
ZW5kZXJPYmplY3QqIGNoaWxkKQogewogICAgIC8vIFBvc2l0aW9uZWQgY2hpbGRyZW4gYW5kIGNv
bGxhcHNlZCBjaGlsZHJlbiBkb24ndCBhZmZlY3QgdGhlIG1pbi9tYXggd2lkdGguCi0gICAgcmV0
dXJuIGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IENPTExBUFNFOworICAgIHJldHVybiBjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
fHwgY2hpbGQtPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRTsKIH0KIAogdm9pZCBS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQpAQCAtMjg1LDcgKzI4NSw3IEBA
IHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9j
aygpOwogCi0gICAgaWYgKCFpc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkgJiYgaGVpZ2h0KCkgPT0g
MCkgeworICAgIGlmICghaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGhlaWdo
dCgpID09IDApIHsKICAgICAgICAgLy8gV2UgYXJlIGEgYmxvY2sgd2l0aCBubyBib3JkZXIgYW5k
IHBhZGRpbmcgYW5kIGEgY29tcHV0ZWQgaGVpZ2h0CiAgICAgICAgIC8vIG9mIDAuICBUaGUgQ1NT
IHNwZWMgc3RhdGVzIHRoYXQgemVyby1oZWlnaHQgYmxvY2tzIGNvbGxhcHNlIHRoZWlyIG1hcmdp
bnMKICAgICAgICAgLy8gdG9nZXRoZXIuCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENo
aWxkcmVuKQogICAgICAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgKGNoaWxkLT5pc1Jl
cGxhY2VkKCkgJiYgKGNoaWxkLT5zdHlsZSgpLT53aWR0aCgpLmlzUGVyY2VudCgpIHx8IGNoaWxk
LT5zdHlsZSgpLT5oZWlnaHQoKS5pc1BlcmNlbnQoKSkpKQogICAgICAgICAgICAgICAgIGNoaWxk
LT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7CiAKLSAgICAgICAgICAg
IGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICAvLyBDb21wdXRlIHRoZSBjaGlsZCdzIHZlcnRpY2FsIG1hcmdpbnMuCkBAIC00MzAsNyAr
NDMwLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250
YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAvLyBOb3cgdGhhdCBvdXIgaGVp
Z2h0IGlzIGFjdHVhbGx5IGtub3duLCB3ZSBjYW4gcGxhY2Ugb3VyIGJveGVzLgogICAgICAgICBt
X3N0cmV0Y2hpbmdDaGlsZHJlbiA9IChzdHlsZSgpLT5ib3hBbGlnbigpID09IEJTVFJFVENIKTsK
ICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7
IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPmlzUG9z
aXRpb25lZCgpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKSB7CiAgICAgICAgICAgICAgICAgY2hpbGQtPmNvbnRhaW5pbmdCbG9jaygpLT5pbnNlcnRQ
b3NpdGlvbmVkT2JqZWN0KGNoaWxkKTsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY2hp
bGRMYXllciA9IGNoaWxkLT5sYXllcigpOwogICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPnNl
dFN0YXRpY0lubGluZVBvc2l0aW9uKHhQb3MpOyAvLyBGSVhNRTogTm90IHJpZ2h0IGZvciByZWdp
b25zLgpAQCAtNDQwLDcgKzQ0MCw5IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhp
cyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IENPTExBUFNF
KSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChjaGlsZC0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IENPTExBUFNFKSB7CiAgICAgICAgICAgICAgICAgLy8g
dmlzaWJpbGl0eTogY29sbGFwc2VkIGNoaWxkcmVuIGRvIG5vdCBwYXJ0aWNpcGF0ZSBpbiBvdXIg
cG9zaXRpb25pbmcuCiAgICAgICAgICAgICAgICAgLy8gQnV0IHdlIG5lZWQgdG8gbGF5IHRoZW0g
ZG93bi4KICAgICAgICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKQEAgLTY3MSw3
ICs2NzMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0VmVydGlj
YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgaWYgKCFoYXZlTGluZUNs
YW1wICYmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNlZCgpICYmIChjaGls
ZC0+c3R5bGUoKS0+d2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBjaGlsZC0+c3R5bGUoKS0+aGVpZ2h0
KCkuaXNQZXJjZW50KCkpKSkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNM
YXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKIAotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1Bv
c2l0aW9uZWQoKSkgeworICAgICAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkgewogICAgICAgICAgICAgICAgIGNoaWxkLT5jb250YWluaW5nQmxvY2soKS0+aW5zZXJ0
UG9zaXRpb25lZE9iamVjdChjaGlsZCk7CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGNo
aWxkTGF5ZXIgPSBjaGlsZC0+bGF5ZXIoKTsKICAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5z
ZXRTdGF0aWNJbmxpbmVQb3NpdGlvbihib3JkZXJTdGFydCgpICsgcGFkZGluZ1N0YXJ0KCkpOyAv
LyBGSVhNRTogTm90IHJpZ2h0IGZvciByZWdpb25zLgpAQCAtNjgxLDcgKzY4Myw5IEBAIHZvaWQg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5
b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVk
c0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkt
PnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBDT0xMQVBT
RSkgewogICAgICAgICAgICAgICAgIC8vIHZpc2liaWxpdHk6IGNvbGxhcHNlZCBjaGlsZHJlbiBk
byBub3QgcGFydGljaXBhdGUgaW4gb3VyIHBvc2l0aW9uaW5nLgogICAgICAgICAgICAgICAgIC8v
IEJ1dCB3ZSBuZWVkIHRvIGxheSB0aGVtIGRvd24uCiAgICAgICAgICAgICAgICAgY2hpbGQtPmxh
eW91dElmTmVlZGVkKCk7CkBAIC0xMDc4LDcgKzEwODIsNyBAQCBjb25zdCBjaGFyICpSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIGlmIChpc0Zs
b2F0aW5nKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChm
bG9hdGluZykiOwotICAgIGlmIChpc1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
IChwb3NpdGlvbmVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVybiAi
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IChnZW5lcmF0ZWQpIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCmluZGV4IDMxMzhmMjJmYzI2ZjQ3OTNiYzY4
OTY0MThlMTc2MmZiYmQ4YTBmMDYuLmMxODBjODUzNmZiYTk4OGViMzFiMzlmYjMyNjEyZjFlZDhh
NDQwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApA
QCAtMTI2LDcgKzEyNiw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyRmllbGRzZXQ6OmxheW91dFNw
ZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIFJlbmRlckJveCogUmVu
ZGVyRmllbGRzZXQ6OmZpbmRMZWdlbmQoKSBjb25zdAogewogICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBsZWdlbmQgPSBmaXJzdENoaWxkKCk7IGxlZ2VuZDsgbGVnZW5kID0gbGVnZW5kLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgIGlmICghbGVnZW5kLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkg
JiYgbGVnZW5kLT5ub2RlKCkgJiYgKGxlZ2VuZC0+bm9kZSgpLT5oYXNUYWdOYW1lKGxlZ2VuZFRh
ZykpKQorICAgICAgICBpZiAoIWxlZ2VuZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25l
ZCgpICYmIGxlZ2VuZC0+bm9kZSgpICYmIChsZWdlbmQtPm5vZGUoKS0+aGFzVGFnTmFtZShsZWdl
bmRUYWcpKSkKICAgICAgICAgICAgIHJldHVybiB0b1JlbmRlckJveChsZWdlbmQpOwogICAgIH0K
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCmluZGV4IDhhYmE2ZDlhMGQ1OTk1ZDE5OGQ4ZTBjYmQ2YWFjNjQwOWFhOWRmNTku
LjQ3Mjg5Y2YyMmVjNDA1ZmE2MDk2NTQ5NzhlZjNhNWU5NjE5YTQ5Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkKICAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCA9IDA7CiAKICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RD
aGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAg
ICAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGlmIChjaGls
ZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIExheW91dFVuaXQgbWFyZ2luID0gbWFyZ2luTG9naWNhbFdpZHRoRm9yQ2hp
bGQoY2hpbGQsIHN0eWxlKCkpOwpAQCAtNjQyLDcgKzY0Miw3IEBAIExheW91dFVuaXQgUmVuZGVy
RmxleGlibGVCb3g6OmF1dG9NYXJnaW5PZmZzZXRJbk1haW5BeGlzKGNvbnN0IE9yZGVyZWRGbGV4
SXRlbUxpCiAgICAgYm9vbCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxGbG93KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkgewogICAgICAgICBS
ZW5kZXJCb3gqIGNoaWxkID0gY2hpbGRyZW5baV07Ci0gICAgICAgIGlmIChjaGlsZC0+aXNQb3Np
dGlvbmVkKCkpCisgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkgewogICAgICAg
ICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkpCkBAIC02ODks
NyArNjg5LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aGFzQXV0b01hcmdpbnNJbkNyb3Nz
QXhpcyhSZW5kZXJCb3gqIGNoaWxkKQogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YXZh
aWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZChMYXlvdXRVbml0IGxpbmVDcm9zc0F4aXNFeHRl
bnQsIFJlbmRlckJveCogY2hpbGQpCiB7CiAgICAgTGF5b3V0VW5pdCBjaGlsZENyb3NzRXh0ZW50
ID0gMDsKLSAgICBpZiAoIWNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoIWNoaWxkLT5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgY2hpbGRDcm9zc0V4dGVudCA9IGNyb3Nz
QXhpc01hcmdpbkV4dGVudEZvckNoaWxkKGNoaWxkKSArIGNyb3NzQXhpc0V4dGVudEZvckNoaWxk
KGNoaWxkKTsKICAgICByZXR1cm4gbGluZUNyb3NzQXhpc0V4dGVudCAtIGNoaWxkQ3Jvc3NFeHRl
bnQ7CiB9CkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0
ZU1haW5BeGlzUHJlZmVycmVkU2l6ZXMoYm9vbCByZWxheW91dENoaWxkcmVuLCBPcmQKICAgICBm
b3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgIG9yZGVyVmFsdWVzLmFkZChjaGlsZC0+
c3R5bGUoKS0+b3JkZXIoKSk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkK
KyAgICAgICAgaWYgKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRlU2l6ZSgpOwpAQCAtODA4
LDcgKzgwOCw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVOZXh0RmxleExpbmUo
T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIE9yZGVyZWRGbGV4CiAgICAgTGF5b3V0VW5pdCBsaW5l
QnJlYWsgPSBsaW5lQnJlYWtMZW5ndGgoKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9
IGl0ZXJhdG9yLmN1cnJlbnRDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkp
IHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkgeworICAgICAgICBpZiAoY2hp
bGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICBvcmRlcmVkQ2hpbGRy
ZW4uYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC04
NTQsNyArODU0LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cmVzb2x2ZUZsZXhpYmxlTGVu
Z3RocyhGbGV4U2lnbiBmbGV4U2lnbiwgY29uc3QgT3JkZXJlZEYKICAgICBXVEY6OlZlY3RvcjxW
aW9sYXRpb24+IG1heFZpb2xhdGlvbnM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGls
ZHJlbi5zaXplKCk7ICsraSkgewogICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0gY2hpbGRyZW5b
aV07Ci0gICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgY2hpbGRTaXplcy5h
cHBlbmQoMCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtOTI2LDcgKzky
Niw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnNldExvZ2ljYWxPdmVycmlkZVNpemUoUmVu
ZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsCiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OnByZXBhcmVDaGlsZEZvclBvc2l0aW9uZWRMYXlvdXQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0
VW5pdCBtYWluQXhpc09mZnNldCwgTGF5b3V0VW5pdCBjcm9zc0F4aXNPZmZzZXQsIFBvc2l0aW9u
ZWRMYXlvdXRNb2RlIGxheW91dE1vZGUpCiB7Ci0gICAgQVNTRVJUKGNoaWxkLT5pc1Bvc2l0aW9u
ZWQoKSk7CisgICAgQVNTRVJUKGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAgICAg
Y2hpbGQtPmNvbnRhaW5pbmdCbG9jaygpLT5pbnNlcnRQb3NpdGlvbmVkT2JqZWN0KGNoaWxkKTsK
ICAgICBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IGNoaWxkLT5sYXllcigpOwogICAgIExheW91
dFVuaXQgaW5saW5lUG9zaXRpb24gPSBpc0NvbHVtbkZsb3coKSA/IGNyb3NzQXhpc09mZnNldCA6
IG1haW5BeGlzT2Zmc2V0OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBj
b25zCiAgICAgYm9vbCBzaG91bGRGbGlwTWFpbkF4aXMgPSAhaXNDb2x1bW5GbG93KCkgJiYgIWlz
TGVmdFRvUmlnaHRGbG93KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5z
aXplKCk7ICsraSkgewogICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0gY2hpbGRyZW5baV07Ci0g
ICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgcHJlcGFyZUNoaWxkRm9yUG9z
aXRpb25lZExheW91dChjaGlsZCwgbWFpbkF4aXNPZmZzZXQsIGNyb3NzQXhpc09mZnNldCwgRmxp
cEZvclJvd1JldmVyc2UpOwogICAgICAgICAgICAgbWFpbkF4aXNPZmZzZXQgKz0ganVzdGlmeUNv
bnRlbnRTcGFjZUJldHdlZW5DaGlsZHJlbihhdmFpbGFibGVGcmVlU3BhY2UsIHN0eWxlKCktPmp1
c3RpZnlDb250ZW50KCksIGNoaWxkU2l6ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0Q29s
dW1uUmV2ZXJzZShjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiBjaGlsZHJlbiwKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVu
ZGVyQm94KiBjaGlsZCA9IGNoaWxkcmVuW2ldOwotICAgICAgICBpZiAoY2hpbGQtPmlzUG9zaXRp
b25lZCgpKSB7CisgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsK
ICAgICAgICAgICAgIGNoaWxkLT5sYXllcigpLT5zZXRTdGF0aWNCbG9ja1Bvc2l0aW9uKG1haW5B
eGlzT2Zmc2V0KTsKICAgICAgICAgICAgIG1haW5BeGlzT2Zmc2V0IC09IGp1c3RpZnlDb250ZW50
U3BhY2VCZXR3ZWVuQ2hpbGRyZW4oYXZhaWxhYmxlRnJlZVNwYWNlLCBzdHlsZSgpLT5qdXN0aWZ5
Q29udGVudCgpLCBjaGlsZFNpemVzLnNpemUoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTExMDgsNyArMTEwOCw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmFsaWduRmxleExpbmVz
KE9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yLCBXVEY6OlZlY3RvcjxMaW5lCiAKIHZvaWQgUmVuZGVy
RmxleGlibGVCb3g6OmFkanVzdEFsaWdubWVudEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExh
eW91dFVuaXQgZGVsdGEpCiB7Ci0gICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQoKSkgeworICAg
IGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5p
dCBzdGF0aWNJbmxpbmVQb3NpdGlvbiA9IGNoaWxkLT5sYXllcigpLT5zdGF0aWNJbmxpbmVQb3Np
dGlvbigpOwogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY0Jsb2NrUG9zaXRpb24gPSBjaGlsZC0+
bGF5ZXIoKS0+c3RhdGljQmxvY2tQb3NpdGlvbigpOwogICAgICAgICBMYXlvdXRVbml0IG1haW5B
eGlzID0gaXNDb2x1bW5GbG93KCkgPyBzdGF0aWNCbG9ja1Bvc2l0aW9uIDogc3RhdGljSW5saW5l
UG9zaXRpb247CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpm
bGlwRm9yUmlnaHRUb0xlZnRDb2x1bW4oT3JkZXJJdGVyYXRvciYgaXRlcmF0b3IpCiAKICAgICBM
YXlvdXRVbml0IGNyb3NzRXh0ZW50ID0gY3Jvc3NBeGlzRXh0ZW50KCk7CiAgICAgZm9yIChSZW5k
ZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3Iu
bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgIGlm
IChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBmbG93QXdhcmVMb2NhdGlvbkZvckNoaWxk
KGNoaWxkKTsKICAgICAgICAgbG9jYXRpb24uc2V0WShjcm9zc0V4dGVudCAtIGNyb3NzQXhpc0V4
dGVudEZvckNoaWxkKGNoaWxkKSAtIGxvY2F0aW9uLnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggYjBiYjQzYTUzZjQ3NDI1YTI0YzE1NzE1MjQ5ZmY3NmUw
OGE0NDgzMC4uODgzZTE3MTBiMDEwMmI5NmJlOGRlMjQ5MjVhYWFiYzc4Mzg5M2FkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25z
dCBjaGFyKiBSZW5kZXJHcmlkOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICBpZiAoaXNGbG9h
dGluZygpKQogICAgICAgICByZXR1cm4gIlJlbmRlckdyaWQgKGZsb2F0aW5nKSI7Ci0gICAgaWYg
KGlzUG9zaXRpb25lZCgpKQorICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAg
ICAgcmV0dXJuICJSZW5kZXJHcmlkIChwb3NpdGlvbmVkKSI7CiAgICAgaWYgKGlzQW5vbnltb3Vz
KCkpCiAgICAgICAgIHJldHVybiAiUmVuZGVyR3JpZCAoZ2VuZXJhdGVkKSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBjZmJmMzVkZTM0ODg4YjcwMjRmMWEz
ZDUxMTQ2ZGFlMTk5NGRiYjczLi5lMTBmOTA4ZWIwZGZjMmI2ZTgxMjI1MzcyN2YxOGM4NWQxZjZj
NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTUzNSw3
ICs1MzUsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1h
dGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdQogCiAgICAgLy8gT3VyIGludHJpbnNp
Y1NpemUgaXMgZW1wdHkgaWYgd2UncmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCBy
ZWxhdGl2ZSB3aWR0aC9oZWlnaHQuIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXpl
IHRvIHVzZS4KICAgICBpZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgJiYgKG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwgbV9pbWFnZVJlc291cmNlLT5pbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KCkpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmluZ0Js
b2NrID0gaXNQb3NpdGlvbmVkKCkgPyBjb250YWluZXIoKSA6IHRoaXMtPmNvbnRhaW5pbmdCbG9j
aygpOworICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9jayA9IGlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpID8gY29udGFpbmVyKCkgOiB0aGlzLT5jb250YWluaW5nQmxvY2soKTsKICAg
ICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay0+aXNCb3goKSkgewogICAgICAgICAgICAgUmVuZGVy
Qm94KiBib3ggPSB0b1JlbmRlckJveChjb250YWluaW5nQmxvY2spOwogICAgICAgICAgICAgaW50
cmluc2ljU2l6ZS5zZXRXaWR0aChib3gtPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggMzgzYzFmYzI4YjY2NGVm
M2RiNDA5MzJmZWNiYTA4NTJhZmNkMjM4Zi4uYTRiMWM3OTMxMGU5YTFlMjYzMDVmNzdhZmUzYjYx
YjM4MGJlNWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
QEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0Nv
bnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYgogICAgIGlmICghYmVm
b3JlQ2hpbGQgJiYgaXNBZnRlckNvbnRlbnQobGFzdENoaWxkKCkpKQogICAgICAgICBiZWZvcmVD
aGlsZCA9IGxhc3RDaGlsZCgpOwogCi0gICAgaWYgKCFuZXdDaGlsZC0+aXNJbmxpbmUoKSAmJiAh
bmV3Q2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkgeworICAgIGlmICghbmV3Q2hpbGQt
PmlzSW5saW5lKCkgJiYgIW5ld0NoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpIHsKICAgICAgICAgLy8gV2UgYXJlIHBsYWNpbmcgYSBibG9jayBpbnNpZGUgYW4gaW5saW5l
LiBXZSBoYXZlIHRvIHBlcmZvcm0gYSBzcGxpdCBvZiB0aGlzCiAgICAgICAgIC8vIGlubGluZSBp
bnRvIGNvbnRpbnVhdGlvbnMuICBUaGlzIGludm9sdmVzIGNyZWF0aW5nIGFuIGFub255bW91cyBi
bG9jayBib3ggdG8gaG9sZAogICAgICAgICAvLyB8bmV3Q2hpbGR8LiAgV2UgdGhlbiBtYWtlIHRo
YXQgYmxvY2sgYm94IGEgY29udGludWF0aW9uIG9mIHRoaXMgaW5saW5lLiAgV2UgdGFrZSBhbGwg
b2YKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRUb0NvbnRp
bnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqCiAgICAgICAgICAg
ICBiZWZvcmVDaGlsZFBhcmVudCA9IGZsb3c7CiAgICAgfQogCi0gICAgaWYgKG5ld0NoaWxkLT5p
c0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCisgICAgaWYgKG5ld0NoaWxkLT5pc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZFBhcmVudC0+
YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOwogCiAg
ICAgLy8gQSBjb250aW51YXRpb24gYWx3YXlzIGNvbnNpc3RzIG9mIHR3byBwb3RlbnRpYWwgY2Fu
ZGlkYXRlczogYW4gaW5saW5lIG9yIGFuIGFub255bW91cwpAQCAtNTU1LDcgKzU1NSw3IEBAIHZv
aWQgUmVuZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxlZExpbmVCb3hSZWN0cyhHZW5lcmF0b3JDb250
ZXh0IHlpZWxkLCBjb25zdCBSZW5kCiAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIg
PSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKSB7Ci0gICAg
ICAgIGlmIChjdXJyLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpCisgICAgICAgIGlmIChjdXJy
LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIAogICAgICAgICAvLyBXZSB3YW50IHRvIGdldCB0aGUgbWFyZ2luIGJv
eCBpbiB0aGUgaW5saW5lIGRpcmVjdGlvbiwgYW5kIHRoZW4gdXNlIG91ciBmb250IGFzY2VudC9k
ZXNjZW50IGluIHRoZSBibG9jawpAQCAtODM3LDcgKzgzNyw3IEBAIEludFJlY3QgUmVuZGVySW5s
aW5lOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIElubGluZUJveCogUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdAogewogICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICBpZiAoY3Vyci0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgICAgICBp
ZiAoY3Vyci0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gV2Ugd2FudCB0byBnZXQgdGhlIG1h
cmdpbiBib3ggaW4gdGhlIGlubGluZSBkaXJlY3Rpb24sIGFuZCB0aGVuIHVzZSBvdXIgZm9udCBh
c2NlbnQvZGVzY2VudCBpbiB0aGUgYmxvY2sKQEAgLTg2MSw3ICs4NjEsNyBAQCBJbmxpbmVCb3gq
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lRmlyc3RMaW5lQm94KCkgY29uc3QKIElubGluZUJv
eCogUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNvbnN0CiB7CiAgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBsYXN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnIt
PnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5pc0Zsb2F0aW5nT3JQb3Np
dGlvbmVkKCkpCisgICAgICAgIGlmIChjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAvLyBX
ZSB3YW50IHRvIGdldCB0aGUgbWFyZ2luIGJveCBpbiB0aGUgaW5saW5lIGRpcmVjdGlvbiwgYW5k
IHRoZW4gdXNlIG91ciBmb250IGFzY2VudC9kZXNjZW50IGluIHRoZSBibG9jawpAQCAtODg5LDcg
Kzg4OSw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVWaXN1YWxPdmVy
Zmxvd0JvdW5kaW5nQm94KCkgY29uc3QKICAgICBMYXlvdXRSZWN0IHJlc3VsdChlbmNsb3NpbmdM
YXlvdXRSZWN0KGZsb2F0UmVzdWx0KSk7CiAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICBpZiAoY3Vyci0+aXNGbG9hdGluZ09yUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoY3Vy
ci0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gRm9yIG92ZXJmbG93IHdlIGp1c3QgaGF2ZSB0
byBwcm9wYWdhdGUgYnkgaGFuZCBhbmQgcmVjb21wdXRlIGl0IGFsbC4KQEAgLTEwNDQsNyArMTA0
NCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsCiAKICAgICBMYXlvdXRQb2ludCB0b3BMZWZ0
ID0gcmVjdC5sb2NhdGlvbigpOwogCi0gICAgaWYgKG8tPmlzQmxvY2tGbG93KCkgJiYgIXN0eWxl
KCktPmlzUG9zaXRpb25lZCgpKSB7CisgICAgaWYgKG8tPmlzQmxvY2tGbG93KCkgJiYgIXN0eWxl
KCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrKiBjYiA9
IHRvUmVuZGVyQmxvY2sobyk7CiAgICAgICAgIGlmIChjYi0+aGFzQ29sdW1ucygpKSB7CiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0KHRvcExlZnQsIHJlY3Quc2l6ZSgpKTsKQEAg
LTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkaXJ0eUxpbmVCb3hlcyhib29s
IGZ1bGxMYXlvdXQpCiAgICAgaWYgKCFhbHdheXNDcmVhdGVMaW5lQm94ZXMoKSkgewogICAgICAg
ICAvLyBXZSBoYXZlIHRvIGdyb3ZlbCBpbnRvIG91ciBjaGlsZHJlbiBpbiBvcmRlciB0byBkaXJ0
eSB0aGUgYXBwcm9wcmlhdGUgbGluZXMuCiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJy
ID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgaWYgKGN1cnItPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAg
IGlmIChjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoY3Vyci0+aXNCb3goKSAmJiAhY3Vyci0+
bmVlZHNMYXlvdXQoKSkgewogICAgICAgICAgICAgICAgIFJlbmRlckJveCogY3VyckJveCA9IHRv
UmVuZGVyQm94KGN1cnIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggMTAxNmRhNTFmYWY1ODg2NzE2MDU4NGI3MzIyZTJkYWI2ZGZiYzc1OS4uMTJjM2I5MjY3
MTY5Mzc0MDY2ZTBiMmU0OWY5MmIwZDYwMjQ5YzI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tD
b250YWluaW5nQmxvY2tDaGFpbkZvclBhZ2luYXRpb24oUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
bmRlcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAvLyBJZiB0aGUgcHJl
dmlvdXMgYmxvY2sgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkLCB0aGVuIHdlIGNhbid0IGJlIHBh
Z2luYXRlZCBieSB0aGUgY29sdW1ucyBibG9jay4KLSAgICBpZiAocHJldkJsb2NrLT5pc1Bvc2l0
aW9uZWQoKSkKKyAgICBpZiAocHJldkJsb2NrLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAvLyBPdGhlcndpc2Ugd2UgYXJlIHBh
Z2luYXRlZCBieSB0aGUgY29sdW1ucyBibG9jay4KQEAgLTgwNyw3ICs4MDcsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICAvLyBDbGVhciBvdXIgY2FjaGVk
IGNsaXAgcmVjdCBpbmZvcm1hdGlvbi4KICAgICBjbGVhckNsaXBSZWN0cygpOwogIAotICAgIGlm
ICghcmVuZGVyZXIoKS0+aXNQb3NpdGlvbmVkKCkgJiYgcmVuZGVyZXIoKS0+cGFyZW50KCkpIHsK
KyAgICBpZiAoIXJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHJlbmRlcmVy
KCktPnBhcmVudCgpKSB7CiAgICAgICAgIC8vIFdlIG11c3QgYWRqdXN0IG91ciBwb3NpdGlvbiBi
eSB3YWxraW5nIHVwIHRoZSByZW5kZXIgdHJlZSBsb29raW5nIGZvciB0aGUKICAgICAgICAgLy8g
bmVhcmVzdCBlbmNsb3Npbmcgb2JqZWN0IHdpdGggYSBsYXllci4KICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBjdXJyID0gcmVuZGVyZXIoKS0+cGFyZW50KCk7CkBAIC04MjYsMTQgKzgyNiwxNCBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICB9CiAgICAgCiAgICAg
Ly8gU3VidHJhY3Qgb3VyIHBhcmVudCdzIHNjcm9sbCBvZmZzZXQuCi0gICAgaWYgKHJlbmRlcmVy
KCktPmlzUG9zaXRpb25lZCgpICYmIGVuY2xvc2luZ1Bvc2l0aW9uZWRBbmNlc3RvcigpKSB7Cisg
ICAgaWYgKHJlbmRlcmVyKCktPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGVuY2xvc2luZ1Bv
c2l0aW9uZWRBbmNlc3RvcigpKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBwb3NpdGlvbmVkUGFy
ZW50ID0gZW5jbG9zaW5nUG9zaXRpb25lZEFuY2VzdG9yKCk7CiAKICAgICAgICAgLy8gRm9yIHBv
c2l0aW9uZWQgbGF5ZXJzLCB3ZSBzdWJ0cmFjdCBvdXQgdGhlIGVuY2xvc2luZyBwb3NpdGlvbmVk
IGxheWVyJ3Mgc2Nyb2xsIG9mZnNldC4KICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBwb3Np
dGlvbmVkUGFyZW50LT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKICAgICAgICAgbG9jYWxQb2lu
dCAtPSBvZmZzZXQ7CiAgICAgICAgIAotICAgICAgICBpZiAocmVuZGVyZXIoKS0+aXNQb3NpdGlv
bmVkKCkgJiYgcG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlvbmVkKCkg
JiYgcG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAg
ICAgICBpZiAocmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcG9zaXRpb25l
ZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlvbmVkKCkgJiYgcG9zaXRpb25lZFBhcmVu
dC0+cmVuZGVyZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0U2l6
ZSBvZmZzZXQgPSB0b1JlbmRlcklubGluZShwb3NpdGlvbmVkUGFyZW50LT5yZW5kZXJlcigpKS0+
cmVsYXRpdmVQb3NpdGlvbmVkSW5saW5lT2Zmc2V0KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpKTsK
ICAgICAgICAgICAgIGxvY2FsUG9pbnQgKz0gb2Zmc2V0OwogICAgICAgICB9CkBAIC05MTUsNyAr
OTE1LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25z
dAogc3RhdGljIGlubGluZSBib29sIGlzUG9zaXRpb25lZENvbnRhaW5lcihSZW5kZXJMYXllciog
bGF5ZXIpCiB7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGxheWVyUmVuZGVyZXIgPSBsYXll
ci0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gbGF5ZXItPmlzUm9vdExheWVyKCkgfHwgbGF5ZXJS
ZW5kZXJlci0+aXNQb3NpdGlvbmVkKCkgfHwgbGF5ZXJSZW5kZXJlci0+aXNSZWxQb3NpdGlvbmVk
KCkgfHwgbGF5ZXItPmhhc1RyYW5zZm9ybSgpOworICAgIHJldHVybiBsYXllci0+aXNSb290TGF5
ZXIoKSB8fCBsYXllclJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXllclJl
bmRlcmVyLT5pc1JlbFBvc2l0aW9uZWQoKSB8fCBsYXllci0+aGFzVHJhbnNmb3JtKCk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZpeGVkUG9zaXRpb25lZENvbnRhaW5lcihSZW5kZXJMYXll
ciogbGF5ZXIpCkBAIC0zOTA1LDcgKzM5MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxh
dGVDbGlwUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKgog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKQog
ICAgICAgICAgICAgICAgIG5ld092ZXJmbG93Q2xpcC5zZXRIYXNSYWRpdXModHJ1ZSk7CiAgICAg
ICAgICAgICBjbGlwUmVjdHMuc2V0T3ZlcmZsb3dDbGlwUmVjdChpbnRlcnNlY3Rpb24obmV3T3Zl
cmZsb3dDbGlwLCBjbGlwUmVjdHMub3ZlcmZsb3dDbGlwUmVjdCgpKSk7Ci0gICAgICAgICAgICBp
ZiAocmVuZGVyZXIoKS0+aXNQb3NpdGlvbmVkKCkgfHwgcmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlv
bmVkKCkpCisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkgfHwgcmVuZGVyZXIoKS0+aXNSZWxQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgY2xp
cFJlY3RzLnNldFBvc0NsaXBSZWN0KGludGVyc2VjdGlvbihuZXdPdmVyZmxvd0NsaXAsIGNsaXBS
ZWN0cy5wb3NDbGlwUmVjdCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlbmRlcmVyKCkt
Pmhhc0NsaXAoKSkgewpAQCAtNDcwMSw3ICs0NzAxLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2hv
dWxkQmVOb3JtYWxGbG93T25seSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgfHwgcmVuZGVyZXIo
KS0+aXNBcHBsZXQoKQogICAgICAgICAgICAgICAgIHx8IHJlbmRlcmVyKCktPmlzUmVuZGVySUZy
YW1lKCkKICAgICAgICAgICAgICAgICB8fCByZW5kZXJlcigpLT5zdHlsZSgpLT5zcGVjaWZpZXND
b2x1bW5zKCkpCi0gICAgICAgICAgICAmJiAhcmVuZGVyZXIoKS0+aXNQb3NpdGlvbmVkKCkKKyAg
ICAgICAgICAgICYmICFyZW5kZXJlcigpLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKQogICAgICAg
ICAgICAgJiYgIXJlbmRlcmVyKCktPmlzUmVsUG9zaXRpb25lZCgpCiAgICAgICAgICAgICAmJiAh
cmVuZGVyZXIoKS0+aGFzVHJhbnNmb3JtKCkKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmlu
ZGV4IDE0NjZlMzliYWUzNDY3YjQyYjNlMzEzMmJjMzEyNTQ5YjEyYTlhMWEuLmIyOTM5MjNlZTVi
YWZkNmU4ODlmNDVjZjE2MmJlYzJmNmM1ZDNkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xODEzLDcgKzE4MTMsNyBA
QCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0
aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIC8vIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRz
IHRoYXQgY3JlYXRlIHRoZWlyIG93biBzdGFja2luZyBjb250ZXh0IChlLmcuIGhhdmUgYW4gZXhw
bGljaXQgei1pbmRleCwKICAgICAvLyBvcGFjaXR5LCB0cmFuc2Zvcm0pIGNhbiBnZXQgdGhlaXIg
b3duIGNvbXBvc2l0ZWQgbGF5ZXIuIEEgc3RhY2tpbmcgY29udGV4dCBpcyByZXF1aXJlZCBvdGhl
cndpc2UKICAgICAvLyB6LWluZGV4IGFuZCBjbGlwcGluZyB3aWxsIGJlIGJyb2tlbi4KLSAgICBp
ZiAoIShyZW5kZXJlci0+aXNQb3NpdGlvbmVkKCkgJiYgcmVuZGVyZXItPnN0eWxlKCktPnBvc2l0
aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiAmJiBsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkpCisg
ICAgaWYgKCEocmVuZGVyZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHJlbmRlcmVyLT5z
dHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gJiYgbGF5ZXItPmlzU3RhY2tpbmdD
b250ZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoU2V0dGluZ3MqIHNl
dHRpbmdzID0gbV9yZW5kZXJWaWV3LT5kb2N1bWVudCgpLT5zZXR0aW5ncygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggMDA1MDhkMzhi
YWM5NDMzZjcyZDg5YmQ3MDhjZGVkYTkwMTgxNTlhOC4uZGJiNTg2MWM4ZDNkZjFjNTg4OWU0NjZi
ZWI2OGEwYTFmMTliMzE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCb3hMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJveExpc3QuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlz
dDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIFJl
bmQKICAgICBSb290SW5saW5lQm94KiBib3ggPSAwOwogICAgIFJlbmRlck9iamVjdCogY3VyciA9
IDA7CiAgICAgZm9yIChjdXJyID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOyBjdXJyOyBjdXJy
ID0gY3Vyci0+cHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGN1cnItPmlzRmxvYXRp
bmdPclBvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxv
d1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChjdXJy
LT5pc1JlcGxhY2VkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uY3BwCmluZGV4IDNlNmE3ZGNhZTlhNGM3NDI2MGJiMzg0MDUwMGEzYTAyZTBmYjI5NjQuLjJm
N2ZmNmUzMjRlOWViMDRlMGQ0MWZhOWRlMGUzYTU3NDdkYzFhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRp
YyBSZW5kZXJPYmplY3QqIGdldFBhcmVudE9mRmlyc3RMaW5lQm94KFJlbmRlckJsb2NrKiBjdXJy
LCBSZW5kZXJPYmplY3QqIG1hCiAgICAgICAgIGlmIChjdXJyQ2hpbGQtPmlzSW5saW5lKCkgJiYg
KCFjdXJyQ2hpbGQtPmlzUmVuZGVySW5saW5lKCkgfHwgY3Vyci0+Z2VuZXJhdGVzTGluZUJveGVz
Rm9ySW5saW5lQ2hpbGQoY3VyckNoaWxkKSkpCiAgICAgICAgICAgICByZXR1cm4gY3VycjsKIAot
ICAgICAgICBpZiAoY3VyckNoaWxkLT5pc0Zsb2F0aW5nKCkgfHwgY3VyckNoaWxkLT5pc1Bvc2l0
aW9uZWQoKSkKKyAgICAgICAgaWYgKGN1cnJDaGlsZC0+aXNGbG9hdGluZygpIHx8IGN1cnJDaGls
ZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBpZiAoY3VyckNoaWxkLT5pc1RhYmxlKCkgfHwgIWN1cnJDaGlsZC0+aXNSZW5kZXJCbG9j
aygpIHx8IChjdXJyQ2hpbGQtPmlzQm94KCkgJiYgdG9SZW5kZXJCb3goY3VyckNoaWxkKS0+aXNX
cml0aW5nTW9kZVJvb3QoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAKaW5kZXggNTM2ZDVmYTIyMjAwZjAwM2MxNzFkMjBhZjlh
NGRlYWEyYjhhNzc1OC4uOTU4Y2M3Njg3ZDA1YWE3MWQyMGNkODI1MTczNDU1Yzc3NmNmYTdmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJs
b2NrLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlck11bHRpQ29sdW1u
QmxvY2s6OnJlbmRlck5hbWUoKSBjb25zdAogeyAgICAKICAgICBpZiAoaXNGbG9hdGluZygpKQog
ICAgICAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uQmxvY2sgKGZsb2F0aW5nKSI7Ci0gICAg
aWYgKGlzUG9zaXRpb25lZCgpKQorICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAg
ICAgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVtbkJsb2NrIChwb3NpdGlvbmVkKSI7CiAgICAg
aWYgKGlzQW5vbnltb3VzQmxvY2soKSkKICAgICAgICAgcmV0dXJuICJSZW5kZXJNdWx0aUNvbHVt
bkJsb2NrIChhbm9ueW1vdXMpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKaW5kZXggMDU5MGI4Y2U2NDkzMzBkNTgwNmU3MWVkZWMzMTQ3N2I1ZDA5N2M5Ny4uYjVj
YTkyYjgxZjQyMjRjNzBiN2IzMzczZDQ4ZDNlNzdjMDI1YWU2NCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoYm9vbCBzY2hlZHVsZVJlbGF5
b3V0LCBSZW5kZXJPYgogICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5lciA9IG9iamVjdC0+
Y29udGFpbmVyKCk7CiAgICAgICAgIGlmICghY29udGFpbmVyICYmICFvYmplY3QtPmlzUmVuZGVy
VmlldygpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIWxhc3QtPmlzVGV4dCgp
ICYmIGxhc3QtPnN0eWxlKCktPmlzUG9zaXRpb25lZCgpKSB7CisgICAgICAgIGlmICghbGFzdC0+
aXNUZXh0KCkgJiYgbGFzdC0+c3R5bGUoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAg
ICAgICAgICAgIGJvb2wgd2lsbFNraXBSZWxhdGl2ZWx5UG9zaXRpb25lZElubGluZXMgPSAhb2Jq
ZWN0LT5pc1JlbmRlckJsb2NrKCkgfHwgb2JqZWN0LT5pc0Fub255bW91c0Jsb2NrKCk7CiAgICAg
ICAgICAgICAvLyBTa2lwIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBpbmxpbmVzIGFuZCBhbm9ueW1v
dXMgYmxvY2tzIHRvIGdldCB0byB0aGUgZW5jbG9zaW5nIFJlbmRlckJsb2NrLgogICAgICAgICAg
ICAgd2hpbGUgKG9iamVjdCAmJiAoIW9iamVjdC0+aXNSZW5kZXJCbG9jaygpIHx8IG9iamVjdC0+
aXNBbm9ueW1vdXNCbG9jaygpKSkKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIFJlbmRlck9iamVj
dDo6c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGJvb2wgc2hvdWxkQmVEaXJ0eSwgTWFy
a2luZ0JlaAogewogICAgIGJvb2wgYWxyZWFkeURpcnR5ID0gcHJlZmVycmVkTG9naWNhbFdpZHRo
c0RpcnR5KCk7CiAgICAgbV9iaXRmaWVsZHMuc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5
KHNob3VsZEJlRGlydHkpOwotICAgIGlmIChzaG91bGRCZURpcnR5ICYmICFhbHJlYWR5RGlydHkg
JiYgbWFya1BhcmVudHMgPT0gTWFya0NvbnRhaW5pbmdCbG9ja0NoYWluICYmIChpc1RleHQoKSB8
fCAhc3R5bGUoKS0+aXNQb3NpdGlvbmVkKCkpKQorICAgIGlmIChzaG91bGRCZURpcnR5ICYmICFh
bHJlYWR5RGlydHkgJiYgbWFya1BhcmVudHMgPT0gTWFya0NvbnRhaW5pbmdCbG9ja0NoYWluICYm
IChpc1RleHQoKSB8fCAhc3R5bGUoKS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpKQogICAgICAg
ICBpbnZhbGlkYXRlQ29udGFpbmVyUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwogfQogCkBAIC02
OTksNyArNjk5LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmludmFsaWRhdGVDb250YWluZXJQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIG8tPm1f
Yml0ZmllbGRzLnNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKLSAgICAgICAg
aWYgKG8tPnN0eWxlKCktPmlzUG9zaXRpb25lZCgpKQorICAgICAgICBpZiAoby0+c3R5bGUoKS0+
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAvLyBBIHBvc2l0aW9uZWQgb2Jq
ZWN0IGhhcyBubyBlZmZlY3Qgb24gdGhlIG1pbi9tYXggd2lkdGggb2YgaXRzIGNvbnRhaW5pbmcg
YmxvY2sgZXZlci4KICAgICAgICAgICAgIC8vIFdlIGNhbiBvcHRpbWl6ZSB0aGlzIGNhc2UgYW5k
IG5vdCBnbyB1cCBhbnkgZnVydGhlci4KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgwNiwxMyAr
MTgwNiwxMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICAgICAgLy8gRm9yIGNo
YW5nZXMgaW4gZmxvYXQgc3R5bGVzLCB3ZSBuZWVkIHRvIGNvbmNlaXZhYmx5IHJlbW92ZSBvdXJz
ZWx2ZXMKICAgICAgICAgICAgIC8vIGZyb20gdGhlIGZsb2F0aW5nIG9iamVjdHMgbGlzdC4KICAg
ICAgICAgICAgIHRvUmVuZGVyQm94KHRoaXMpLT5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENo
aWxkRnJvbUJsb2NrTGlzdHMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNQb3NpdGlvbmVkKCkgJiYg
KG1fc3R5bGUtPnBvc2l0aW9uKCkgIT0gbmV3U3R5bGUtPnBvc2l0aW9uKCkpKQorICAgICAgICBl
bHNlIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSAh
PSBuZXdTdHlsZS0+cG9zaXRpb24oKSkpCiAgICAgICAgICAgICAvLyBGb3IgY2hhbmdlcyBpbiBw
b3NpdGlvbmluZyBzdHlsZXMsIHdlIG5lZWQgdG8gY29uY2VpdmFibHkgcmVtb3ZlIG91cnNlbHZl
cwogICAgICAgICAgICAgLy8gZnJvbSB0aGUgcG9zaXRpb25lZCBvYmplY3RzIGxpc3QuCiAgICAg
ICAgICAgICB0b1JlbmRlckJveCh0aGlzKS0+cmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGls
ZEZyb21CbG9ja0xpc3RzKCk7CiAKLSAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBpc0Zs
b2F0aW5nT3JQb3NpdGlvbmVkKCkgJiYKLSAgICAgICAgICAgICghbmV3U3R5bGUtPmlzRmxvYXRp
bmcoKSAmJiBuZXdTdHlsZS0+cG9zaXRpb24oKSAhPSBBYnNvbHV0ZVBvc2l0aW9uICYmIG5ld1N0
eWxlLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCisgICAgICAgIHNfYWZmZWN0c1BhcmVu
dEJsb2NrID0gaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpCisgICAgICAgICAgICAm
JiAoIW5ld1N0eWxlLT5pc0Zsb2F0aW5nKCkgJiYgbmV3U3R5bGUtPnBvc2l0aW9uKCkgIT0gQWJz
b2x1dGVQb3NpdGlvbiAmJiBuZXdTdHlsZS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKQog
ICAgICAgICAgICAgJiYgcGFyZW50KCkgJiYgKHBhcmVudCgpLT5pc0Jsb2NrRmxvdygpIHx8IHBh
cmVudCgpLT5pc1JlbmRlcklubGluZSgpKTsKIAogICAgICAgICAvLyByZXNldCBzdHlsZSBmbGFn
cwpAQCAtMjc0Nyw3ICsyNzQ3LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVj
dDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICAvLyBBIGlzIHRoZSByb290IGVsZW1lbnQuCiAg
ICAgLy8gQSBpcyB0aGUgSFRNTCBib2R5IGVsZW1lbnQuCiAgICAgLy8gVGhlIGNvbXB1dGVkIHZh
bHVlIG9mIHRoZSBwb3NpdGlvbiBwcm9wZXJ0eSBmb3IgZWxlbWVudCBBIGlzIGZpeGVkLgotICAg
IGlmIChpc1Jvb3QoKSB8fCBpc0JvZHkoKSB8fCAoaXNQb3NpdGlvbmVkKCkgJiYgc3R5bGUoKS0+
cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSkKKyAgICBpZiAoaXNSb290KCkgfHwgaXNCb2R5
KCkgfHwgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHN0eWxlKCktPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gSWYgQSBpcyBhbiBh
cmVhIEhUTUwgZWxlbWVudCB3aGljaCBoYXMgYSBtYXAgSFRNTCBlbGVtZW50IHNvbWV3aGVyZSBp
biB0aGUgYW5jZXN0b3IKQEAgLTI3NjIsMTAgKzI3NjIsMTAgQEAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICAvLyAgICAgICBpcyBv
bmUgb2YgdGhlIGZvbGxvd2luZyBIVE1MIGVsZW1lbnRzOiB0ZCwgdGgsIG9yIHRhYmxlLgogICAg
IC8vICAgICAqIE91ciBvd24gZXh0ZW5zaW9uOiBpZiB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4g
dGhlIGVmZmVjdGl2ZSB6b29tCiAKLSAgICBib29sIHNraXBUYWJsZXMgPSBpc1Bvc2l0aW9uZWQo
KSB8fCBpc1JlbFBvc2l0aW9uZWQoKTsKKyAgICBib29sIHNraXBUYWJsZXMgPSBpc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSB8fCBpc1JlbFBvc2l0aW9uZWQoKTsKICAgICBmbG9hdCBjdXJyWm9vbSA9
IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKICAgICBSZW5kZXJPYmplY3QqIGN1cnIgPSBwYXJl
bnQoKTsKLSAgICB3aGlsZSAoY3VyciAmJiAoIWN1cnItPm5vZGUoKSB8fCAoIWN1cnItPmlzUG9z
aXRpb25lZCgpICYmICFjdXJyLT5pc1JlbFBvc2l0aW9uZWQoKSAmJiAhY3Vyci0+aXNCb2R5KCkp
KSkgeworICAgIHdoaWxlIChjdXJyICYmICghY3Vyci0+bm9kZSgpIHx8ICghY3Vyci0+aXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWN1cnItPmlzUmVsUG9zaXRpb25lZCgpICYmICFjdXJyLT5p
c0JvZHkoKSkpKSB7CiAgICAgICAgIE5vZGUqIGVsZW1lbnQgPSBjdXJyLT5ub2RlKCk7CiAgICAg
ICAgIGlmICghc2tpcFRhYmxlcyAmJiBlbGVtZW50ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRh
YmxlVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdO
YW1lKHRoVGFnKSkpCiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCBiMjE5N2IzNDc2ODQyMDM1ZGRiM2IzNDdiZTkxZjVlMWUxZTli
MTVkLi4zZjAxZTkwZjkzMGZmOTU5ZDAyYjFkZmZhY2U3YmM3NjY2N2IwYjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01MDAsNyArNTAwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpcnR1YWxDb250aW51YXRpb24o
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5mbG9hdGluZygpOyB9Ci0gICAgYm9vbCBpc1Bvc2l0aW9uZWQoKSBj
b25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5wb3NpdGlvbmVkKCk7IH0gLy8gYWJzb2x1dGUgb3Ig
Zml4ZWQgcG9zaXRpb25pbmcKKyAgICBib29sIGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLnBvc2l0aW9uZWQoKTsgfSAvLyBhYnNvbHV0ZSBvciBmaXhl
ZCBwb3NpdGlvbmluZworICAgIGJvb2wgaXNJbkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRmaWVsZHMucmVsUG9zaXRpb25lZCgpOyB9IC8vIHJlbGF0aXZlIHBvc2l0aW9uaW5n
CiAgICAgYm9vbCBpc1JlbFBvc2l0aW9uZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5y
ZWxQb3NpdGlvbmVkKCk7IH0gLy8gcmVsYXRpdmUgcG9zaXRpb25pbmcKICAgICBib29sIGlzVGV4
dCgpIGNvbnN0ICB7IHJldHVybiBtX2JpdGZpZWxkcy5pc1RleHQoKTsgfQogICAgIGJvb2wgaXNC
b3goKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc0JveCgpOyB9CkBAIC01MzgsNyArNTM5
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NlbGVjdGlvbkJvcmRlcigpIGNvbnN0OwogCi0g
ICAgYm9vbCBoYXNDbGlwKCkgY29uc3QgeyByZXR1cm4gaXNQb3NpdGlvbmVkKCkgJiYgc3R5bGUo
KS0+aGFzQ2xpcCgpOyB9CisgICAgYm9vbCBoYXNDbGlwKCkgY29uc3QgeyByZXR1cm4gaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgJiYgc3R5bGUoKS0+aGFzQ2xpcCgpOyB9CiAgICAgYm9vbCBoYXNP
dmVyZmxvd0NsaXAoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNPdmVyZmxvd0NsaXAo
KTsgfQogCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxk
cy5oYXNUcmFuc2Zvcm0oKTsgfQpAQCAtNzgwLDcgKzc4MSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAotICAgIGJv
b2wgaXNGbG9hdGluZ09yUG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0dXJuIChpc0Zsb2F0aW5nKCkg
fHwgaXNQb3NpdGlvbmVkKCkpOyB9CisgICAgYm9vbCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgY29uc3QgeyByZXR1cm4gKGlzRmxvYXRpbmcoKSB8fCBpc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSk7IH0KIAogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCktPm9wYWNpdHkoKSA8IDEuMGY7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gc3R5bGUoKS0+b3BhY2l0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IGY1NDUyOTdkOTlkOGRhMjdjZjc0
YjMyMzMxMmQ2NWVmYzhlMmY5MmIuLjQyMjUwNGU2YmMxZGJjMjY3NTkzZjhiMjA5OTFiMTkzMzI1
N2MxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0OjpyZW1vdmVDaGlsZE5vZGUoUmVuZGVyT2JqZWN0KiBvd25lciwgUmVuZGVyCiB7
CiAgICAgQVNTRVJUKG9sZENoaWxkLT5wYXJlbnQoKSA9PSBvd25lcik7CiAKLSAgICBpZiAob2xk
Q2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkKKyAgICBpZiAob2xkQ2hpbGQtPmlzRmxv
YXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgdG9SZW5kZXJCb3gob2xkQ2hp
bGQpLT5yZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2NrTGlzdHMoKTsKIAog
ICAgIC8vIFNvIHRoYXQgd2UnbGwgZ2V0IHRoZSBhcHByb3ByaWF0ZSBkaXJ0eSBiaXQgc2V0IChl
aXRoZXIgdGhhdCBhIG5vcm1hbCBmbG93IGNoaWxkIGdvdCB5YW5rZWQgb3IKQEAgLTExMSw3ICsx
MTEsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdENoaWxkTGlzdDo6cmVtb3ZlQ2hpbGRO
b2RlKFJlbmRlck9iamVjdCogb3duZXIsIFJlbmRlcgogICAgICAgICBpZiAob2xkQ2hpbGQtPmlz
TGlzdEl0ZW0oKSkKICAgICAgICAgICAgIHRvUmVuZGVyTGlzdEl0ZW0ob2xkQ2hpbGQpLT51cGRh
dGVMaXN0TWFya2VyTnVtYmVycygpOwogCi0gICAgICAgIGlmIChvbGRDaGlsZC0+aXNQb3NpdGlv
bmVkKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCisgICAgICAgIGlmIChvbGRDaGlsZC0+
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgb3duZXItPmNoaWxkcmVuSW5saW5lKCkpCiAgICAg
ICAgICAgICBvd25lci0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQob2xkQ2hpbGQpOwogCiAg
ICAgICAgIGlmIChvbGRDaGlsZC0+aXNSZW5kZXJSZWdpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDI1NTVmY2Q2YTA2MjY3MzE3N2Y2ZWUw
OTMyNmE2MmRkNjU0MDQ1NTUuLjc5NGFjZDgyMDM5NDE4Yzc0NDE0ZWZmOTg0M2MyM2U4MGUzYjUx
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAt
MjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBdXRvSGVpZ2h0T3JDb250YWlu
aW5nQmxvY2tXaXRoQXV0b0hlaWdodChjb25zdCBSZW5kZXJSZXBsCiAgICAgLy8gRm9yIHBlcmNl
bnRhZ2UgaGVpZ2h0czogVGhlIHBlcmNlbnRhZ2UgaXMgY2FsY3VsYXRlZCB3aXRoIHJlc3BlY3Qg
dG8gdGhlIGhlaWdodCBvZiB0aGUgZ2VuZXJhdGVkIGJveCdzCiAgICAgLy8gY29udGFpbmluZyBi
bG9jay4gSWYgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmluZyBibG9jayBpcyBub3Qgc3BlY2lm
aWVkIGV4cGxpY2l0bHkgKGkuZS4sIGl0IGRlcGVuZHMKICAgICAvLyBvbiBjb250ZW50IGhlaWdo
dCksIGFuZCB0aGlzIGVsZW1lbnQgaXMgbm90IGFic29sdXRlbHkgcG9zaXRpb25lZCwgdGhlIHZh
bHVlIGNvbXB1dGVzIHRvICdhdXRvJy4KLSAgICBpZiAoIWxvZ2ljYWxIZWlnaHRMZW5ndGguaXNQ
ZXJjZW50KCkgfHwgcmVwbGFjZWQtPmlzUG9zaXRpb25lZCgpIHx8IHJlcGxhY2VkLT5kb2N1bWVu
dCgpLT5pblF1aXJrc01vZGUoKSkKKyAgICBpZiAoIWxvZ2ljYWxIZWlnaHRMZW5ndGguaXNQZXJj
ZW50KCkgfHwgcmVwbGFjZWQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IHJlcGxhY2VkLT5k
b2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChSZW5kZXJCbG9jayogY2IgPSByZXBsYWNlZC0+Y29udGFpbmluZ0Jsb2NrKCk7ICFjYi0+
aXNSZW5kZXJWaWV3KCk7IGNiID0gY2ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKaW5kZXggNzE2ZTU1ZjA1MDA0NmVhNzQ1
NDMwMTA2NjkzM2E3MmFhMzkyOGIzMi4uOWMyNzM3NWRmMTQ5OTA5YTRjMzJlYTNlNTk4NDVkMGU0
ODA3NzRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApA
QCAtNzYsNyArNzYsNyBAQCBSZW5kZXJSdWJ5VGV4dCogUmVuZGVyUnVieVJ1bjo6cnVieVRleHQo
KSBjb25zdAogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgLy8g
SWYgaW4gZnV0dXJlIGl0IGJlY29tZXMgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgZmxvYXRpbmcgb3Ig
cG9zaXRpb25lZCBydWJ5IHRleHQsCiAgICAgLy8gbGF5b3V0IHdpbGwgaGF2ZSB0byBiZSBjaGFu
Z2VkIHRvIGhhbmRsZSB0aGVtIHByb3Blcmx5LgotICAgIEFTU0VSVCghY2hpbGQgfHwgIWNoaWxk
LT5pc1J1YnlUZXh0KCkgfHwgIWNoaWxkLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpOworICAg
IEFTU0VSVCghY2hpbGQgfHwgIWNoaWxkLT5pc1J1YnlUZXh0KCkgfHwgIWNoaWxkLT5pc0Zsb2F0
aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgIHJldHVybiBjaGlsZCAmJiBjaGlsZC0+
aXNSdWJ5VGV4dCgpID8gc3RhdGljX2Nhc3Q8UmVuZGVyUnVieVRleHQqPihjaGlsZCkgOiAwOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBkOThmZDBk
MzAxOTNhYjA4MDg1NWUwMjE2ZDE4ZDU2ZmY4YjFiNWE4Li5hYjMxODc3OTQxZWFiMzAyY2ExMjli
OTViZDU0YmJiNDgzNGU1ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjphZGRDaGlsZChSZW5k
ZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogICAgIGlmICghYmVm
b3JlQ2hpbGQpCiAgICAgICAgIGJlZm9yZUNoaWxkID0gYWZ0ZXJQc2V1ZG9FbGVtZW50UmVuZGVy
ZXIoKTsKIAotICAgIGJvb2wgd3JhcEluQW5vbnltb3VzU2VjdGlvbiA9ICFjaGlsZC0+aXNQb3Np
dGlvbmVkKCk7CisgICAgYm9vbCB3cmFwSW5Bbm9ueW1vdXNTZWN0aW9uID0gIWNoaWxkLT5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKTsKIAogICAgIGlmIChjaGlsZC0+aXNUYWJsZUNhcHRpb24oKSkg
ewogICAgICAgICBtX2NhcHRpb25zLmFwcGVuZCh0b1JlbmRlclRhYmxlQ2FwdGlvbihjaGlsZCkp
OwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lk
dGgoKQogewogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKIAotICAgIGlmIChpc1Bvc2l0
aW9uZWQoKSkKKyAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIGNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKCk7CiAKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250
YWluaW5nQmxvY2soKTsKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlv
dXQoKQogCiAgICAgc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBib3JkZXJBbmRQ
YWRkaW5nQmVmb3JlKTsKIAotICAgIGlmICghaXNQb3NpdGlvbmVkKCkpCisgICAgaWYgKCFpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKIAog
ICAgIExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gc3R5bGUoKS0+bG9naWNhbEhlaWdodCgp
OwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAg
IGxheW91dENhcHRpb24obV9jYXB0aW9uc1tpXSk7CiAgICAgfQogCi0gICAgaWYgKGlzUG9zaXRp
b25lZCgpKQorICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgY29tcHV0
ZUxvZ2ljYWxIZWlnaHQoKTsKIAogICAgIC8vIHRhYmxlIGNhbiBiZSBjb250YWluaW5nIGJsb2Nr
IG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IGRjYjMwMWQyZWRmNGZkZjI0NjM4Y2QxOTY5MGFjMmFkNzI3
NWI3NzcuLjM1ZDBjODI5YmVmNjJhNjRhMGM0OGExZjFlOTdkYmJiYTRhNzA0YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC01MjEsNyArNTIx
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU3RhdGljQmxvY2tQb3NpdGlvbihib29sIGhvcml6
b250YWwpIGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWwgPyBoYXNBdXRvVG9wQW5kQm90dG9tKCkg
OiBoYXNBdXRvTGVmdEFuZFJpZ2h0KCk7IH0KIAogICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQb3NpdGlvbj4obm9uaW5oZXJpdGVkX2ZsYWdzLl9w
b3NpdGlvbik7IH0KLSAgICBib29sIGlzUG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0dXJuIHBvc2l0
aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247
IH0KKyAgICBib29sIGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIGNvbnN0IHsgcmV0dXJuIHBvc2l0
aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247
IH0KICAgICBFRmxvYXQgZmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmxv
YXQ+KG5vbmluaGVyaXRlZF9mbGFncy5fZmxvYXRpbmcpOyB9CiAKICAgICBMZW5ndGggd2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX2JveC0+d2lkdGgoKTsgfQo=
</data>
<flag name="review"
          id="157158"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>