<?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>235258</bug_id>
          
          <creation_ts>2022-01-14 16:57:36 -0800</creation_ts>
          <short_desc>First step to fix hacked isReplaced: Rename isReplaced functions to isReplacedOrInlineBlock</short_desc>
          <delta_ts>2022-01-15 14:30:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1831128</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-14 16:57:36 -0800</bug_when>
    <thetext>First step to fix hacked isReplaced: Rename isReplaced functions to isReplacedOrInlineBlock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831129</commentid>
    <comment_count>1</comment_count>
      <attachid>449234</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-14 17:11:57 -0800</bug_when>
    <thetext>Created attachment 449234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831133</commentid>
    <comment_count>2</comment_count>
      <attachid>449235</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-14 17:20:01 -0800</bug_when>
    <thetext>Created attachment 449235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831141</commentid>
    <comment_count>3</comment_count>
      <attachid>449235</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-01-14 18:46:17 -0800</bug_when>
    <thetext>Comment on attachment 449235
Patch

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

&gt; Source/WebCore/rendering/RenderReplica.cpp:48
&gt; +    // FIXME: Is the comment above obsolete? Can&apos;t find a check of isReplacedOrInlineBlock guarding setHasTransform any more.
&gt; +    setReplacedOrInlineBlock(true);

Curious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831253</commentid>
    <comment_count>4</comment_count>
      <attachid>449269</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-15 14:01:05 -0800</bug_when>
    <thetext>Created attachment 449269
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831259</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-15 14:29:35 -0800</bug_when>
    <thetext>Committed r288067 (?): &lt;https://commits.webkit.org/r288067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831261</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-15 14:30:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/87642166&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449234</attachid>
            <date>2022-01-14 17:11:57 -0800</date>
            <delta_ts>2022-01-14 17:31:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235258-20220114171156.patch</filename>
            <type>text/plain</type>
            <size>64213</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZmMTIzYTAzZTdhNDc0
ODBlNTU4ODdjNDMxYTk0OGZhYzFiNjA4NS4uZWNmMDkwMWU0YTcyMjUwMzg2NzVhOTFlMGU2ZmJk
ZDc1MDEwMGEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAyMi0wMS0xNCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlyc3Qgc3RlcCB0byBmaXgg
aGFja2VkIGlzUmVwbGFjZWQ6IFJlbmFtZSBpc1JlcGxhY2VkIGZ1bmN0aW9ucyB0byBpc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1MjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGlzUmVwbGFjZWQgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciB0aGluZ3Mg
dGhhdCBhcmUgbm90IENTUyByZXBsYWNlZAorICAgICAgICBlbGVtZW50cy4gVGhhdCdzIGNvbmZ1
c2luZyBhbmQgbm90IGdvb2QuIFdlIHdhbnQgdG8gc3RyYWlnaHRlbiB0aGlzIG91dC4KKyAgICAg
ICAgSW4gdGhpcyBmaXJzdCBzdGVwLCB3ZSByZW5hbWUgdGhlIGlzUmVwbGFjZWQgYW5kIHNldFJl
cGxhY2VkIGZ1bmN0aW9ucworICAgICAgICB0byBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jayBhbmQg
c2V0UmVwbGFjZWRPcklubGluZUJsb2NrLiBUaGVyZSBhcmUgc3RpbGwKKyAgICAgICAgZnVuY3Rp
b25zIHdpdGggb3V0IGFyZ3VtZW50cyBuYW1lZCAiaXNSZXBsYWNlZCIsIHdoaWNoIHdlIGNhbiBk
ZWFsIHdpdGgKKyAgICAgICAgbGF0ZXIuIE90aGVyIGxhdGVyIGNsZWFuLXVwIGFuZCBjbGFyaWZp
Y2F0aW9uIGNvdWxkIG9uZSBkYXkgY2hhbmdlIHdoYXQKKyAgICAgICAgYml0cyB3ZSBzdG9yZSBp
biBSZW5kZXJTdHlsZSBhbmQgcG9zc2libHkgZXZlbiByZW1vdmUgdGhpcyBmdW5jdGlvbiBlbnRp
cmVseS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Q29udGludWF0aW9uKToKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
Tm9uUmVwbGFjZWRJbmxpbmUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnJlbmRlclJlY3QpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjplbmRzT2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyk6
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OmNhblVzZUZvckNoaWxkKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc05vbklubGluZU9yUmVwbGFjZWRFbGVtZW50cyk6
CisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9M
ZWdhY3lJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Ojph
ZGp1c3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmNhbkFj
Y29tbW9kYXRlRWxsaXBzaXMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmFk
ZFRvTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRl
T3ZlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzSXRlcmF0b3JUYXJnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5l
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUxpbmVMYXlvdXQ6OmxheW91dExpbmVCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2Fj
eVJvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJv
eDo6YXNjZW50QW5kRGVzY2VudEZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVGb250Rm9yQm94IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlw
aHNGb3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6
aW5jbHVkZUluaXRpYWxMZXR0ZXJGb3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5Um9vdElubGluZUJveDo6aW5jbHVkZU1hcmdpbkZvckJveCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3Np
dGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaXJzdExpbmVCbG9jayBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RMZXR0ZXJCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpyZWJ1aWxkRmxvYXRpbmdP
YmplY3RTZXRGcm9tSW50cnVkaW5nRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVNaW5NYXhJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6c2hvdWxkVHJlYXRDaGlsZEFzUmVwbGFjZWRJblRhYmxlQ2VsbHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2b2lkc0Zs
b2F0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzVW5zcGxpdHRhYmxl
Rm9yUGFnaW5hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxpbmVI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYXNlbGluZVBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OnNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FuSGF2ZUJveEluZm9JbkZyYWdtZW50IGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5l
Q2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojpj
bGVhckxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5lciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRUcmFpbGluZ0Nvcm5lciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjphYnNvbHV0ZUFuY2hvclJlY3Qg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3JlZW4pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpjb250YWluaW5n
QmxvY2tGb3JQb3NpdGlvblR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpj
YXJldE1heE9mZnNldCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRp
byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzUmVwbGFjZWRPcklu
bGluZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0UmVw
bGFjZWRPcklubGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6UmVu
ZGVyT2JqZWN0Qml0ZmllbGRzOjpSZW5kZXJPYmplY3RCaXRmaWVsZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojppc0F0b21pY0lubGluZUxldmVsQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZXBsYWNlZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldFJlcGxhY2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpSZW5kZXJS
ZXBsaWNhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5n
Q29udGV4dDo6aW5pdGlhbGl6ZUZvckN1cnJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QnJlYWtpbmdDb250ZXh0OjpjYW5CcmVha0F0VGhpc1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkJyZWFraW5nQ29udGV4dDo6Y29tbWl0QW5kVXBkYXRlTGluZUJyZWFrSWZOZWVkZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dENvbnRpbnVhdGlvbik6CisgICAgICAgIFJlbmFtZWQgaW4gYWxsIHRoZXNlIHBsYWNlcy4gQWxz
byBhZGRlZCBvbmUgRklYTUUgZm9yIHNvbWV0aGluZworICAgICAgICBBbGFuIHBvaW50ZWQgb3V0
IHdlJ2QgbGlrZSB0byBkbyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW1vdmVPbmx5
VGhpc0xheWVyKTogUmVtb3ZlZCB1bmhlbHBmdWwgdXNlCisgICAgICAgIG9mIFJlbmRlckxheWVy
OjpyZWZsZWN0aW9uIGZ1bmN0aW9uIGp1c3QgdG8gZmluZCBvdXQgd2hldGhlciB0aGUKKyAgICAg
ICAgUmVuZGVyTGF5ZXI6OnJlZmxlY3Rpb25MYXllciBmdW5jdGlvbiB3aWxsIHJldHVybiBudWxs
IG9yIG5vdC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDogUmVtb3ZlZCB1bm5l
ZWRlZCBSZW5kZXJMYXllcjo6cmVmbGVjdGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDogUmVtb3ZlZCBhbiB1bm5lZWRlZCBpbmNsdWRlCisgICAgICAg
IG9mIFJlbmRlclJlcGxpY2EuaC4KKwogMjAyMi0wMS0xNCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NsZWFudXBdIFJlbW92ZSByZWR1bmRhbnQgKGFuZCBpbmNv
cnJlY3QpIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZXBsYWNlZFR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IGM2MTdhMTA3NmRjY2NmOTkyNzY5MzVhMzA4MWFiYmVkMTA2ODdhNjMuLjQ5ODg2
ZTVkODg4MGQ4YThlZDI3NGMyZmJlMTAzMTY5YTk4ZjUzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cApAQCAtNDM2LDcgKzQzNiw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6Om5leHRTaWJsaW5nKCkgY29uc3QKIAogc3RhdGljIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBuZXh0Q29udGludWF0aW9uKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7Ci0gICAg
aWYgKGlzPFJlbmRlcklubGluZT4ocmVuZGVyZXIpICYmICFyZW5kZXJlci5pc1JlcGxhY2VkKCkp
CisgICAgaWYgKGlzPFJlbmRlcklubGluZT4ocmVuZGVyZXIpICYmICFyZW5kZXJlci5pc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaygpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVySW5saW5l
PihyZW5kZXJlcikuY29udGludWF0aW9uKCk7CiAgICAgaWYgKGlzPFJlbmRlckJsb2NrPihyZW5k
ZXJlcikpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocmVuZGVyZXIpLmlu
bGluZUNvbnRpbnVhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAxZWMwZTkxZGNmOWFlNTY5NjgwOGRmOWRlNjY4
YjI3Y2U3ZThlMTdmLi4xNjU1N2NhNDhmMDM5ZGQ1YzBkNWY0N2E5ZTYzY2U0MzMwZWZlMzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMjMwOSw3ICsyMzA5LDcgQEAgc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvQ29s
dW1uQnJlYWsoQnJlYWtJbnNpZGUgdmFsdWUpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc05vblJl
cGxhY2VkSW5saW5lKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7Ci0gICAgcmV0dXJuIHJlbmRl
cmVyLmlzSW5saW5lKCkgJiYgIXJlbmRlcmVyLmlzUmVwbGFjZWQoKTsKKyAgICByZXR1cm4gcmVu
ZGVyZXIuaXNJbmxpbmUoKSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKTsK
IH0KIAogc3RhdGljIGJvb2wgaXNMYXlvdXREZXBlbmRlbnQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggNTFlMGFjYTM0NDQ5ZmMzYzNkNjU5YjI2NGNmODg1YWIzM2Y3Zjhj
ZC4uM2I3Nzc1NDY4ZjIzYTljNWZmZmJhM2Q3YzUwMGEzMjM1ODRlN2NmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtODIxLDggKzgyMSw5IEBAIExheW91dFJlY3QgTm9kZTo6cmVuZGVyUmVjdChib29s
KiBpc1JlcGxhY2VkKQogICAgIH0KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaGl0UmVu
ZGVyZXI7CiAgICAgd2hpbGUgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJl
bmRlcmVyLT5pc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRl
cmVyLT5pc1JlbmRlckJsb2NrKCkgfHwgcmVuZGVyZXItPmlzSW5saW5lQmxvY2tPcklubGluZVRh
YmxlKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAgICAgKmlzUmVwbGFj
ZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZCgpOworICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVu
ZGVyQmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCBy
ZW5kZXJlci0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IElzIHRoaXMgcmVhbGx5IHdoYXQgY2FsbGVycyB3YW50IGZvciB0aGUgImlzUmVwbGFjZWQi
IGZsYWc/CisgICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJ
bmxpbmVCbG9jaygpOwogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpOwogICAgICAgICB9CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBh
cmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggOWE1MTJlZmU3YzljMDFlZjgyMDEy
Y2I0M2Y5YjYxMTU1ODk2N2EyYS4uN2RlZjE2MmY4MjIzN2RjNmVhOThlNjdmOWQ2NGVlNzIxZjRm
NjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC02MzksNyArNjM5LDcgQEAgc3RhdGlj
IGJvb2wgZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlvbnMoTm9kZSogbm9kZSkK
ICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkgfHwgIWNh
bkhhdmVDaGlsZHJlbkZvckVkaXRpbmcoKm5vZGUpIHx8ICFkb3duY2FzdDxSZW5kZXJCb3g+KCpu
b2RlLT5yZW5kZXJlcigpKS5oZWlnaHQoKSkKKyAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCktPmlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgIWNhbkhhdmVDaGlsZHJlbkZvckVkaXRpbmcoKm5v
ZGUpIHx8ICFkb3duY2FzdDxSZW5kZXJCb3g+KCpub2RlLT5yZW5kZXJlcigpKS5oZWlnaHQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gVGhlcmUgaXMgYSBWaXNpYmxlUG9zaXRp
b24gaW5zaWRlIGFuIGVtcHR5IGlubGluZS1ibG9jayBjb250YWluZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggMmMzZTA3OGEzMmEyZmVmMjFkYTRm
ZWNmOWRkYWRiNzE0MmFlZjMzMy4uZmRmOTBjZDRlNjY3NTk2NTgwODk1MDEzZmM4YjVhZmI0MzVm
MzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAt
MTMyLDcgKzEzMiw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICBhdXRvKiByZW5kZXJlciA9ICZydW4tPnJl
bmRlcmVyKCk7CiAKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmICgocmVu
ZGVyZXItPmlzUmVwbGFjZWQoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0gcnVu
LT5yaWdodG1vc3RDYXJldE9mZnNldCgpKQorICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNS
ZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0g
cnVuLT5yaWdodG1vc3RDYXJldE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBydW4t
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2Rl
ZXBQb3NpdGlvbik7CiAKICAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgewpAQCAt
Mjk4LDcgKzI5OCw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgYXV0byogcmVuZGVyZXIgPSAmcnVuLT5y
ZW5kZXJlcigpOwogCiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoKHJl
bmRlcmVyLT5pc1JlcGxhY2VkKCkgfHwgcmVuZGVyZXItPmlzQlIoKSkgJiYgb2Zmc2V0ID09IHJ1
bi0+bGVmdG1vc3RDYXJldE9mZnNldCgpKQorICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNS
ZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0g
cnVuLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
bV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVl
cFBvc2l0aW9uKTsKIAogICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggMzNhYTExOTdhYWM1ZjY0MTQ5MDE0ODk0ODE2
YTk4OGU5MDljMDkyZi4uMmFmNWZiYjJjOWRkZWY1YmE3YmU1NzgxMjVlZTAxY2Q0YzFiOTg5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTMzLDcgKzUzMyw3IEBAIHN0YXRp
YyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5Vc2VGb3JDaGlsZChjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIGNvCiAKICAgICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93PihjaGlsZCkp
IHsKICAgICAgICAgYXV0byYgYmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGNoaWxk
KTsKLSAgICAgICAgaWYgKCFibG9jay5pc1JlcGxhY2VkKCkgfHwgIWJsb2NrLmlzSW5saW5lKCkp
CisgICAgICAgIGlmICghYmxvY2suaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCAhYmxvY2su
aXNJbmxpbmUoKSkKICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQo
Rmxvd0hhc05vblN1cHBvcnRlZENoaWxkLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucykKICAgICAg
ICAgaWYgKGJsb2NrLmlzRmxvYXRpbmcoKSB8fCBibG9jay5pc1Bvc2l0aW9uZWQoKSkKICAgICAg
ICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoQ2hpbGRCb3hJc0Zsb2F0aW5n
T3JQb3NpdGlvbmVkLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKaW5kZXggZjFlYTE5Njg3NmIyMmRlYWZlMTk2ZjY1NThhOGU5Nzc5NDIx
ZWJkMS4uN2Q2MWFlNTA4MjUzYTFlY2RhZGJkMTE1MGVmODFmZWZiMjMzMjAzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIExpbmVM
YXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChhdXRvJiByZW5kZXJlciA9IG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChib3gubGF5
b3V0Qm94KCkpOyBpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSAmJiByZW5kZXJlci5pc1JlcGxhY2Vk
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9y
TGF5b3V0Qm94KGJveC5sYXlvdXRCb3goKSk7IGlzPFJlbmRlckJveD4ocmVuZGVyZXIpICYmIHJl
bmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHJl
bmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpOwogICAgICAgICAgICAgaWYg
KCFyZW5kZXJCb3guaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiBwYWludEluZm8uc2hvdWxkUGFp
bnRXaXRoaW5Sb290KHJlbmRlckJveCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyQm94LnBhaW50
QXNJbmxpbmVCbG9jayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwCmluZGV4IGQyNjBkMTFhODQ1YTI3Y2NhYjJhNzI4ZGUzZDQxMGM4NjNm
NzdlMDcuLjM4N2Q1MTlhZTUxNzJkNjgwYTViMjg4NDNiYmU4ZmY5OTZjNmIzMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBi
b29sIGhhc05vbklubGluZU9yUmVwbGFjZWRFbGVtZW50cyhjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UpCiB7CiAgICAgZm9yIChhdXRvJiBub2RlIDogaW50ZXJzZWN0aW5nTm9kZXMocmFuZ2UpKSB7
CiAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChy
ZW5kZXJlciAmJiAoIXJlbmRlcmVyLT5pc0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2Vk
KCkpKQorICAgICAgICBpZiAocmVuZGVyZXIgJiYgKCFyZW5kZXJlci0+aXNJbmxpbmUoKSB8fCBy
ZW5kZXJlci0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKaW5kZXggM2I3MDJhOTdmMDRhMWQwMmQx
OGY1Mzg0NjYyYTViMzczOWY0NWY5NS4uY2U3ZjU0MmRkOTdiODUzODYxZTIzYWNmODFmODlmOGQy
MTY3OTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29t
cHV0YXRpb24uY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIExheW91dFJlY3QgY29tcHV0
ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBJbmxpbmUK
ICAgICAvLwogICAgIC8vIEZJWE1FOiBpZ25vcmluZyA6Zmlyc3QtbGluZSwgbWlzc2luZyBnb29k
IHJlYXNvbiB0byB0YWtlIGNhcmUgb2YKICAgICBMYXlvdXRVbml0IGZvbnRIZWlnaHQgPSByZW5k
ZXJlci5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7Ci0gICAgaWYgKGZvbnRIZWlnaHQg
PiByZWN0LmhlaWdodCgpIHx8ICghcmVuZGVyZXIuaXNSZXBsYWNlZCgpICYmICFyZW5kZXJlci5p
c1RhYmxlKCkpKQorICAgIGlmIChmb250SGVpZ2h0ID4gcmVjdC5oZWlnaHQoKSB8fCAoIXJlbmRl
cmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgIXJlbmRlcmVyLmlzVGFibGUoKSkpCiAg
ICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWlnaHQpOwogCiAgICAgLy8gTW92ZSB0byBsb2Nh
bCBjb29yZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAK
aW5kZXggM2YxYTE1ZjhlNTE5MThlYjkzNTM5NGYwOTNmMzI1MjIyZGFlNzg1Mi4uODZmNDFlZjdm
YjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIExlZ2Fj
eUlubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5KQogICAgIGlmIChy
ZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAocmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpCisgICAgaWYgKHJlbmRlcmVyKCkuaXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSkKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cigpKS5tb3ZlKExheW91dFVuaXQoZHgpLCBMYXlvdXRVbml0KGR5KSk7CiB9CiAKQEAgLTI1Myw3
ICsyNTMsNyBAQCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIExlZ2FjeUlubGluZUJveDo6
c2VsZWN0aW9uU3RhdGUoKSBjb25zdAogYm9vbCBMZWdhY3lJbmxpbmVCb3g6OmNhbkFjY29tbW9k
YXRlRWxsaXBzaXMoYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoKSBj
b25zdAogewogICAgIC8vIE5vbi1yZXBsYWNlZCBlbGVtZW50cyBjYW4gYWx3YXlzIGFjY29tbW9k
YXRlIGFuIGVsbGlwc2lzLgotICAgIGlmICghcmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpCisgICAg
aWYgKCFyZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAogICAgIEludFJlY3QgYm94UmVjdChsZWZ0KCksIDAsIG1fbG9naWNhbFdp
ZHRoLCAxMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5s
aW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxv
d0JveC5jcHAKaW5kZXggMmNkZGVkYjE1ZWYwYWU0ODc4M2NjMWNhN2IzNDRmYjAyNDM0NTAyZS4u
NTk1YjU1ZTFmMGFjODQ5Y2I1MGQzZGMxYTg2NTlhNDkyMTI3NmRiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExlZ2FjeUlubGluZUJv
eCogY2hpbGQpCiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSA9IGxpbmVT
dHlsZSgpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRTdHlsZSA9IGNoaWxkLT5s
aW5lU3R5bGUoKTsKICAgICAgICAgYm9vbCBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVM
aW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSBmYWxzZTsKLSAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJl
cigpLmlzUmVwbGFjZWQoKSkKKyAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFj
ZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChjaGls
ZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIo
KS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJl
cigpKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRU
b0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAwIHx8IGNoaWxkU3R5bGUtPnRleHRT
aGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lz
TWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2ZVN0cm9rZVdpZHRoKCkgfHwgaGFz
TWFya2VycyB8fCAhY2hpbGRTdHlsZS0+dGV4dFVuZGVybGluZU9mZnNldCgpLmlzQXV0bygpIHx8
ICFjaGlsZFN0eWxlLT50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLmlzQXV0bygpIHx8IGNoaWxk
U3R5bGUtPnRleHRVbmRlcmxpbmVQb3NpdGlvbigpICE9IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
QXV0bykKICAgICAgICAgICAgICAgICBjaGlsZC0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3co
KTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVC
bG9jaygpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gmIGJveCA9IGRvd25jYXN0PFJl
bmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgaWYgKGJveC5oYXNSZW5k
ZXJPdmVyZmxvdygpIHx8IGJveC5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICAgICAg
ICAgIGNoaWxkLT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwpAQCAtMTIwOSw3ICsxMjA5
LDcgQEAgTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRp
b25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3cKICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGlu
ZUZsb3dCb3g+KCpjaGlsZCkpCiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQs
IGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0ZU92ZXJBbm5vdGF0
aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChj
aGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQt
PnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkg
PT0gUnVieVBvc2l0aW9uOjpCZWZvcmUpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigp
LmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJl
bmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0g
UnVieVBvc2l0aW9uOjpCZWZvcmUpIHsKICAgICAgICAgICAgIGF1dG8mIHJ1YnlSdW4gPSBkb3du
Y2FzdDxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBSZW5k
ZXJSdWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1YnlUZXh0KCk7CiAgICAgICAgICAgICBp
ZiAoIXJ1YnlUZXh0KQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgTGF5b3V0VW5pdCBMZWdhY3lJbmxp
bmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChMYXlvdXRVbml0IGFs
bG8KICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpCiAgICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dC
b3g+KCpjaGlsZCkuY29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoYWxsb3dlZFBvc2l0
aW9uKSk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBp
czxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCku
c3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkFmdGVyKSB7CisgICAgICAg
IGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpICYmIGlzPFJl
bmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVuZGVyZXIoKS5zdHls
ZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QWZ0ZXIpIHsKICAgICAgICAgICAg
IGF1dG8mIHJ1YnlSdW4gPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIo
KSk7CiAgICAgICAgICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1YnlU
ZXh0KCk7CiAgICAgICAgICAgICBpZiAoIXJ1YnlUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaAppbmRleCA3YzRiNjdiOTExYzE2ODdjODA2
Y2RmOTQ3NmRhYmM0YzcxODk0NjMwLi4xZmEwZjA2YTZkOTI5NjBhNDI0MDEyN2QwN2I3NzExMGU4
OTA1M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRl
cmF0b3IuaApAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlPYnNl
cnZlcldpbGxFeGl0T2JqZWN0KE9ic2VydmVyKiBvYnNlcnZlciwgUmVuZGVyT2JqZWN0CiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNJdGVyYXRvclRhcmdldChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsK
ICAgICBBU1NFUlQob2JqZWN0KTsgLy8gVGhlIGl0ZXJhdG9yIHdpbGwgb2YgY291cnNlIHJldHVy
biAwLCBidXQgaXRzIG5vdCBhbiBleHBlY3RlZCBhcmd1bWVudCB0byB0aGlzIGZ1bmN0aW9uLgot
ICAgIHJldHVybiBvYmplY3QtPmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgb2JqZWN0LT5pc0Zsb2F0
aW5nKCkgfHwgb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBvYmplY3QtPmlzUmVw
bGFjZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc1RleHRPckxpbmVCcmVhaygpIHx8IG9iamVj
dC0+aXNGbG9hdGluZygpIHx8IG9iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgb2Jq
ZWN0LT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgT2Jz
ZXJ2ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAK
aW5kZXggODQ4ZTRhYjhhNjUwNzk5NDE5NDhhNGU5ZDllMzAxNGRhMmMxNjM1OC4uNzFkMTkxNmQ0
NzIzYmRmZTg2YTMxMWY2ZTMyMWRhNGIxZjQ1YjdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtNzA3LDcgKzcwNyw3IEBAIHZvaWQgTGVn
YWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoTGVn
YWN5Um9vdElubGluZUJvCiAgICAgdXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9ucyhtX2Zsb3cs
IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxSaWdodCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCBpc0ZpcnN0TGluZSwgc2hvdWxkSW5kZW50VGV4dCwgMCk7CiAgICAgYm9vbCBuZWVkc1dvcmRT
cGFjaW5nOwogCi0gICAgaWYgKGZpcnN0UnVuICYmIGZpcnN0UnVuLT5yZW5kZXJlcigpLmlzUmVw
bGFjZWQoKSkgeworICAgIGlmIChmaXJzdFJ1biAmJiBmaXJzdFJ1bi0+cmVuZGVyZXIoKS5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgIFJlbmRlckJveCYgcmVuZGVyQm94ID0g
ZG93bmNhc3Q8UmVuZGVyQm94PihmaXJzdFJ1bi0+cmVuZGVyZXIoKSk7CiAgICAgICAgIHVwZGF0
ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMobV9mbG93LCBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dp
Y2FsUmlnaHQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUsIHNob3VsZEluZGVu
dFRleHQsIHJlbmRlckJveC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KQEAgLTE3NDEsNyArMTc0
MSw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6bGF5b3V0TGluZUJveGVzKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWluCiAgICAgICAgICAgICBpZiAoIWhhc0lubGlu
ZUNoaWxkICYmIG8uaXNJbmxpbmUoKSkKICAgICAgICAgICAgICAgICBoYXNJbmxpbmVDaGlsZCA9
IHRydWU7CiAKLSAgICAgICAgICAgIGlmIChvLmlzUmVwbGFjZWQoKSB8fCBvLmlzRmxvYXRpbmco
KSB8fCBvLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICBpZiAoby5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IG8uaXNGbG9hdGluZygpIHx8IG8uaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3gmIGJveCA9IGRvd25jYXN0
PFJlbmRlckJveD4obyk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVsYXlvdXRDaGlsZHJlbiB8
fCBib3guaGFzUmVsYXRpdmVEaW1lbnNpb25zKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKaW5kZXggOGUxYTBmYmVmNTZjZjYxMGVkMTdm
YWQ3YzVlODRjYTY0Yzc1ZDAyYi4uZTg5NWNiYjY3MTcwYjY0NDdlY2M3MTNiYTUxY2IzZmJiNmU5
MDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxp
bmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5l
Qm94LmNwcApAQCAtNjc3LDcgKzY3Nyw3IEBAIHZvaWQgTGVnYWN5Um9vdElubGluZUJveDo6YXNj
ZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyCiAKICAg
ICAvLyBSZXBsYWNlZCBib3hlcyB3aWxsIHJldHVybiAwIGZvciB0aGUgbGluZS1oZWlnaHQgaWYg
bGluZS1ib3gtY29udGFpbiBzYXlzIHRoZXkgYXJlCiAgICAgLy8gbm90IHRvIGJlIGluY2x1ZGVk
LgotICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoYm94LnJl
bmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICBpZiAobGluZVN0
eWxlKCkubGluZUJveENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6UmVwbGFjZWQp
KSB7CiAgICAgICAgICAgICBhc2NlbnQgPSBib3guYmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5
cGUoKSk7CiAgICAgICAgICAgICBkZXNjZW50ID0gcm91bmRUb0ludChib3gubGluZUhlaWdodCgp
KSAtIGFzY2VudDsKQEAgLTgzNyw3ICs4MzcsNyBAQCBMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxp
bmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5saW5lQm94KiBib3gsIFZlcgog
ICAgICAgICBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09IFZlcnRpY2FsQWxpZ246OlRleHRCb3R0
b20pIHsKICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gKz0gZm9udE1ldHJpY3MuZGVzY2Vu
dChiYXNlbGluZVR5cGUoKSk7CiAgICAgICAgICAgICAvLyBsaW5lSGVpZ2h0IC0gYmFzZWxpbmVQ
b3NpdGlvbiBpcyBhbHdheXMgMCBmb3IgcmVwbGFjZWQgZWxlbWVudHMgKGV4Y2VwdCBpbmxpbmUg
YmxvY2tzKSwgc28gZG9uJ3QgYm90aGVyIHdhc3RpbmcgdGltZSBpbiB0aGF0IGNhc2UuCi0gICAg
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1JlcGxhY2VkKCkgfHwgcmVuZGVyZXItPmlzSW5saW5l
QmxvY2tPcklubGluZVRhYmxlKCkpCisgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaygpIHx8IHJlbmRlcmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJs
ZSgpKQogICAgICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gLT0gKHJlbmRlcmVyLT5saW5l
SGVpZ2h0KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikgLSByZW5kZXJlci0+YmFzZWxpbmVQb3Np
dGlvbihiYXNlbGluZVR5cGUoKSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZU1pZGRs
ZSkKICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gKz0gLXJlbmRlcmVyLT5saW5lSGVpZ2h0
KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikgLyAyICsgcmVuZGVyZXItPmJhc2VsaW5lUG9zaXRp
b24oYmFzZWxpbmVUeXBlKCksIGZpcnN0TGluZSwgbGluZURpcmVjdGlvbik7CkBAIC04NjEsNyAr
ODYxLDcgQEAgTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9u
Rm9yQm94KExlZ2FjeUlubGluZUJveCogYm94LCBWZXIKIAogYm9vbCBMZWdhY3lSb290SW5saW5l
Qm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsK
LSAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5p
c1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQorICAgIGlmIChi
b3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IChib3gucmVuZGVyZXIo
KS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGxpbmVCb3hDb250YWluID0gcmVuZGVyZXIoKS5z
dHlsZSgpLmxpbmVCb3hDb250YWluKCk7CkBAIC04NzAsNyArODcwLDcgQEAgYm9vbCBMZWdhY3lS
b290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkg
Y29uc3QKIAogYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveChMZWdh
Y3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsKLSAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBs
YWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVo
YXZlc0xpa2VUZXh0KCkpKQorICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3gu
YmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYg
KCFib3guYmVoYXZlc0xpa2VUZXh0KCkgJiYgaXM8TGVnYWN5SW5saW5lRmxvd0JveD4oYm94KSAm
JiAhZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oYm94KS5oYXNUZXh0Q2hpbGRyZW4oKSkK
QEAgLTg4MSw3ICs4ODEsNyBAQCBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVGb250
Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogCiBib29sIExlZ2FjeVJvb3RJbmxp
bmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7
Ci0gICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCku
aXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKKyAgICBpZiAo
Ym94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCAoYm94LnJlbmRlcmVy
KCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghYm94LmJlaGF2ZXNMaWtlVGV4dCgpICYm
IGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkgJiYgIWRvd25jYXN0PExlZ2FjeUlubGluZUZs
b3dCb3g+KGJveCkuaGFzVGV4dENoaWxkcmVuKCkpCkBAIC04OTIsNyArODkyLDcgQEAgYm9vbCBM
ZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2FjeUlubGluZUJveCYg
Ym94KSBjb25zdAogCiBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVJbml0aWFsTGV0
dGVyRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewotICAgIGlmIChib3gucmVu
ZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCisgICAgaWYgKGJveC5yZW5kZXJlcigpLmlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJy
ZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICBpZiAoIWJveC5iZWhhdmVzTGlrZVRleHQoKSAmJiBpczxMZWdhY3lJbmxpbmVG
bG93Qm94Pihib3gpICYmICFkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94Pihib3gpLmhhc1Rl
eHRDaGlsZHJlbigpKQpAQCAtOTAzLDcgKzkwMyw3IEBAIGJvb2wgTGVnYWN5Um9vdElubGluZUJv
eDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0
CiAKIGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZU1hcmdpbkZvckJveChMZWdhY3lJ
bmxpbmVCb3gmIGJveCkgY29uc3QKIHsKLSAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNl
ZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZl
c0xpa2VUZXh0KCkpKQorICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVC
bG9jaygpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVo
YXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcmVu
ZGVyZXIoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCkuY29udGFpbnMoTGluZUJveENvbnRhaW46
OklubGluZUJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRl
eCAzZTJhOGIwMjZkZjViNzczODEwMzYzNTNlMmVhMTBhYjEzNDc2MGYzLi5iMTNlOTdhMTE2YWUz
YTE3YWZiYzUwMzZlMjYzOWZhNWE1YTIzMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTM5Myw4ICszOTMsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1v
dmVQb3NpdGlvbmVkT2JqZWN0c0lmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwg
YwogICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5zZXJ0ZWQgaW50byBvdXIgcG9zaXRpb25lZCBv
YmplY3RzIGxpc3QgZHVyaW5nIGxheW91dC4KICAgICAgICAgYXV0byogY29udGFpbmluZ0Jsb2Nr
ID0gcGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChjb250YWluaW5nQmxvY2sgJiYgIWlzPFJlbmRl
clZpZXc+KCpjb250YWluaW5nQmxvY2spCi0gICAgICAgICAgICAmJiAoY29udGFpbmluZ0Jsb2Nr
LT5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpTdGF0aWMgfHwgKGNvbnRhaW5p
bmdCbG9jay0+aXNJbmxpbmUoKSAmJiAhY29udGFpbmluZ0Jsb2NrLT5pc1JlcGxhY2VkKCkpKSkg
ewotICAgICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5wb3NpdGlvbigpID09
IFBvc2l0aW9uVHlwZTo6UmVsYXRpdmUgJiYgY29udGFpbmluZ0Jsb2NrLT5pc0lubGluZSgpICYm
ICFjb250YWluaW5nQmxvY2stPmlzUmVwbGFjZWQoKSkgeworICAgICAgICAgICAgJiYgKGNvbnRh
aW5pbmdCbG9jay0+c3R5bGUoKS5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlwZTo6U3RhdGljIHx8
IChjb250YWluaW5nQmxvY2stPmlzSW5saW5lKCkgJiYgIWNvbnRhaW5pbmdCbG9jay0+aXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSkpKSB7CisgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2Nr
LT5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpSZWxhdGl2ZSAmJiBjb250YWlu
aW5nQmxvY2stPmlzSW5saW5lKCkgJiYgIWNvbnRhaW5pbmdCbG9jay0+aXNSZXBsYWNlZE9ySW5s
aW5lQmxvY2soKSkgewogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5p
bmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC00MDgsNyArNDA4LDggQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlUG9z
aXRpb25lZE9iamVjdHNJZk5lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGMKIHZv
aWQgUmVuZGVyQmxvY2s6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSA9IGhhc0luaXRpYWxpemVkU3R5bGUoKSA/ICZzdHlsZSgpIDogbnVsbHB0cjsKLSAgICBz
ZXRSZXBsYWNlZChuZXdTdHlsZS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkpOworICAgIC8vIEZJWE1F
OiBTaG91bGQgY2hhbmdlIHRoZSBleHByZXNzaW9uIGJlbG93IHRvIG5ld1N0eWxlLmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2suCisgICAgc2V0UmVwbGFjZWRPcklubGluZUJs
b2NrKG5ld1N0eWxlLmlzRGlzcGxheUlubGluZVR5cGUoKSk7CiAgICAgaWYgKG9sZFN0eWxlKQog
ICAgICAgICByZW1vdmVQb3NpdGlvbmVkT2JqZWN0c0lmTmVlZGVkKCpvbGRTdHlsZSwgbmV3U3R5
bGUpOwogICAgIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKQEAg
LTg3Niw3ICs4NzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzaW1wbGlmaWVkTm9ybWFsRmxvd0xh
eW91dCgpCiAgICAgICAgIExpc3RIYXNoU2V0PExlZ2FjeVJvb3RJbmxpbmVCb3gqPiBsaW5lQm94
ZXM7CiAgICAgICAgIGZvciAoSW5saW5lV2Fsa2VyIHdhbGtlcihkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KCp0aGlzKSk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9ICp3YWxrZXIuY3VycmVudCgpOwotICAg
ICAgICAgICAgaWYgKCFyZW5kZXJlci5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVuZGVy
ZXIuaXNSZXBsYWNlZCgpIHx8IHJlbmRlcmVyLmlzRmxvYXRpbmcoKSkpIHsKKyAgICAgICAgICAg
IGlmICghcmVuZGVyZXIuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKHJlbmRlcmVyLmlzUmVw
bGFjZWRPcklubGluZUJsb2NrKCkgfHwgcmVuZGVyZXIuaXNGbG9hdGluZygpKSkgewogICAgICAg
ICAgICAgICAgIFJlbmRlckJveCYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcik7
CiAgICAgICAgICAgICAgICAgYm94LmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICAgICAg
aWYgKGJveC5pbmxpbmVCb3hXcmFwcGVyKCkpCkBAIC0xMTgwLDcgKzExODEsNyBAQCBib29sIFJl
bmRlckJsb2NrOjpwYWludENoaWxkKFJlbmRlckJveCYgY2hpbGQsIFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYg
KCFjaGlsZC5pc0Zsb2F0aW5nKCkgJiYgY2hpbGQuaXNSZXBsYWNlZCgpICYmIHVzZVByaW50UmVj
dCAmJiBjaGlsZC5oZWlnaHQoKSA8PSB2aWV3KCkucHJpbnRSZWN0KCkuaGVpZ2h0KCkpIHsKKyAg
ICBpZiAoIWNoaWxkLmlzRmxvYXRpbmcoKSAmJiBjaGlsZC5pc1JlcGxhY2VkT3JJbmxpbmVCbG9j
aygpICYmIHVzZVByaW50UmVjdCAmJiBjaGlsZC5oZWlnaHQoKSA8PSB2aWV3KCkucHJpbnRSZWN0
KCkuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gUGFnaW5hdGUgYmxvY2stbGV2ZWwgcmVwbGFjZWQg
ZWxlbWVudHMuCiAgICAgICAgIGlmIChhYnNvbHV0ZUNoaWxkWSArIGNoaWxkLmhlaWdodCgpID4g
dmlldygpLnByaW50UmVjdCgpLm1heFkoKSkgewogICAgICAgICAgICAgaWYgKGFic29sdXRlQ2hp
bGRZIDwgdmlldygpLnRydW5jYXRlZEF0KCkpCkBAIC0yMTc2LDcgKzIxNzcsNyBAQCBWaXNpYmxl
UG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBjb25zdCBSZQogICAgIGlmIChpc1RhYmxlKCkpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIGZyYWdtZW50KTsKIAotICAgIGlmIChpc1Jl
cGxhY2VkKCkpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzZWVtcyB3cm9uZyB3aGVuIHRoZSBvYmplY3QncyB3cml0aW5nLW1v
ZGUgZG9lc24ndCBtYXRjaCB0aGUgbGluZSdzIHdyaXRpbmctbW9kZS4KICAgICAgICAgTGF5b3V0
VW5pdCBwb2ludExvZ2ljYWxMZWZ0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHBvaW50
LngoKSA6IHBvaW50LnkoKTsKICAgICAgICAgTGF5b3V0VW5pdCBwb2ludExvZ2ljYWxUb3AgPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcG9pbnQueSgpIDogcG9pbnQueCgpOwpAQCAtMjQy
OSw3ICsyNDMwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bGluZUhlaWdodChib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLAogICAgIC8vIHRoZSBiYXNlIGNs
YXNzLiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhlIHJvb3QgbGlu
ZQogICAgIC8vIGJveCwgdGhlbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIGFuIGlubGluZS1ibG9jayBp
cyBpcnJlbGV2YW50LCBhbmQgd2UgYmVoYXZlCiAgICAgLy8ganVzdCBsaWtlIGEgYmxvY2suCi0g
ICAgaWYgKGlzUmVwbGFjZWQoKSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSAmJiBsaW5lUG9z
aXRpb25Nb2RlID09IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkKICAgICAgICAgcmV0dXJuIFJl
bmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9k
ZSk7CiAKICAgICBpZiAoZmlyc3RMaW5lICYmIHZpZXcoKS51c2VzRmlyc3RMaW5lUnVsZXMoKSkg
ewpAQCAtMjQ0Nyw3ICsyNDQ4LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGkKICAgICAvLyB0
aGUgYmFzZSBjbGFzcy4gIElmIHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhvdWdoIHdlJ3JlIHRo
ZSByb290IGxpbmUKICAgICAvLyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3ZSdyZSBhbiBpbmxp
bmUtYmxvY2sgaXMgaXJyZWxldmFudCwgYW5kIHdlIGJlaGF2ZQogICAgIC8vIGp1c3QgbGlrZSBh
IGJsb2NrLgotICAgIGlmIChpc1JlcGxhY2VkKCkgJiYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxvY2so
KSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgewogICAg
ICAgICAvLyBGb3IgImxlYWYiIHRoZW1lIG9iamVjdHMsIGxldCB0aGUgdGhlbWUgZGVjaWRlIHdo
YXQgdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGlzLgogICAgICAgICAvLyBGSVhNRTogTWlnaHQgYmUg
YmV0dGVyIHRvIGhhdmUgYSBjdXN0b20gQ1NTIHByb3BlcnR5IGluc3RlYWQsIHNvIHRoYXQgaWYg
dGhlIHRoZW1lCiAgICAgICAgIC8vIGlzIHR1cm5lZCBvZmYsIGNoZWNrYm94ZXMvcmFkaW9zIHdp
bGwgc3RpbGwgaGF2ZSBkZWNlbnQgYmFzZWxpbmVzLgpAQCAtMjU3Niw3ICsyNTc3LDcgQEAgUmVu
ZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCbG9jaygpIGNvbnN0CiAgICAgICAgIGlm
IChoYXNQc2V1ZG8pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUmVuZGVyRWxlbWVudCog
cGFyZW50QmxvY2sgPSBmaXJzdExpbmVCbG9jay0+cGFyZW50KCk7Ci0gICAgICAgIGlmIChmaXJz
dExpbmVCbG9jay0+aXNSZXBsYWNlZCgpIHx8IGZpcnN0TGluZUJsb2NrLT5pc0Zsb2F0aW5nKCkK
KyAgICAgICAgaWYgKGZpcnN0TGluZUJsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8
IGZpcnN0TGluZUJsb2NrLT5pc0Zsb2F0aW5nKCkKICAgICAgICAgICAgIHx8ICFwYXJlbnRCbG9j
ayB8fCBwYXJlbnRCbG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGluZUJsb2NrIHx8ICFpc1Jl
bmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZmlyc3RMaW5lQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocGFy
ZW50QmxvY2spOwpAQCAtMjU5OSw3ICsyNjAwLDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCbG9j
ayogZmluZEZpcnN0TGV0dGVyQmxvY2soUmVuZGVyQmxvY2sqIHN0YXJ0KQogICAgICAgICAgICAg
cmV0dXJuIGZpcnN0TGV0dGVyQmxvY2s7CiAKICAgICAgICAgUmVuZGVyRWxlbWVudCogcGFyZW50
QmxvY2sgPSBmaXJzdExldHRlckJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAgaWYgKGZpcnN0TGV0
dGVyQmxvY2stPmlzUmVwbGFjZWQoKSB8fCAhcGFyZW50QmxvY2sgfHwgcGFyZW50QmxvY2stPmZp
cnN0Q2hpbGQoKSAhPSBmaXJzdExldHRlckJsb2NrCisgICAgICAgIGlmIChmaXJzdExldHRlckJs
b2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRC
bG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGV0dGVyQmxvY2sKICAgICAgICAgICAgIHx8ICFp
c1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgZmlyc3RMZXR0ZXJCbG9jayA9IGRvd25jYXN0PFJl
bmRlckJsb2NrPihwYXJlbnRCbG9jayk7CkBAIC0yNjQ3LDcgKzI2NDgsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPYmplY3QqJiBmaXJzdExldHRlciwgUmVuZGVy
RWxlbWVudComIGZpcgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoY3VycmVudC5pc1JlcGxhY2VkKCkgfHwgaXM8UmVuZGVyQnV0dG9uPihjdXJyZW50
KSB8fCBpczxSZW5kZXJNZW51TGlzdD4oY3VycmVudCkpCisgICAgICAgIH0gZWxzZSBpZiAoY3Vy
cmVudC5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGlzPFJlbmRlckJ1dHRvbj4oY3VycmVu
dCkgfHwgaXM8UmVuZGVyTWVudUxpc3Q+KGN1cnJlbnQpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuaXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQo
KSB8fCBjdXJyZW50LmlzUmVuZGVyR3JpZCgpKQogICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBj
dXJyZW50Lm5leHRTaWJsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IDIxZTYyMTBlNTljMzI3YThjNzQyNWFkNDBmMDcxYmQzMzE3NzNlNGUuLmRlN2NhY2E4
ZGZmNTQ0N2VjZGJiMmUzYjFkMDAwZDc5NzRlNGQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCkBAIC0zOTQsNyArMzk0LDcgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJlY3QmKSBvdmVycmlkZTsK
ICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdFRvQ2xpcE91dEZyb21Cb3JkZXIoY29uc3QgTGF5b3V0
UmVjdCYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVwbGFjZWQoKTsgfQorICAgIGJv
b2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0lu
bGluZSgpICYmIGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCk7IH0KICAgICAKICAgICB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDNlN2UwY2NlMTU5MjA0
M2E4ZWIxNDk5MDg0MDYyNjA3OTA0Y2Y0ZjAuLjQ3OTVkYjdlMzA3ZDc2ZDljYWE0MWU4OGU4MzNj
NjFkNTllYmU4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlYnVpbGRG
bG9hdGluZ09iamVjdFNldEZyb21JbnRydWRpbmdGbG9hdHMoKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgY292ZXJlZCBieSB0aGUgaXNSZXBsYWNlZCgpIGNo
ZWNrIGluIHRoZSBhdm9pZEZsb2F0cyBtZXRob2QuCisgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUg
Y292ZXJlZCBieSB0aGUgaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSBjaGVjayBpbiB0aGUgYXZv
aWRGbG9hdHMgbWV0aG9kLgogICAgIGlmIChhdm9pZHNGbG9hdHMoKSB8fCBpc0RvY3VtZW50RWxl
bWVudFJlbmRlcmVyKCkgfHwgaXNSZW5kZXJWaWV3KCkgfHwgaXNGbG9hdGluZ09yT3V0T2ZGbG93
UG9zaXRpb25lZCgpIHx8IGlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgaWYgKG1fZmxvYXRpbmdP
YmplY3RzKQogICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmNsZWFyKCk7CkBAIC0zNDI1
LDcgKzM0MjUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZv
clBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgICAgICBMYXlvdXRQb2lu
dCBwb2ludChwb2ludEluTG9naWNhbENvbnRlbnRzLngoKSwgY2xvc2VzdFJ1bi0+bGluZSgpLT5i
bG9ja0RpcmVjdGlvblBvaW50SW5MaW5lKCkpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBwb2ludCA9IHBvaW50LnRyYW5zcG9zZWRQb2ludCgp
OwotICAgICAgICBpZiAoY2xvc2VzdFJ1bi0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpCisgICAg
ICAgIGlmIChjbG9zZXN0UnVuLT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkp
CiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91
bmRhcmllcygqdGhpcywgY29uc3RfY2FzdDxSZW5kZXJCb3gmPihkb3duY2FzdDxSZW5kZXJCb3g+
KGNsb3Nlc3RSdW4tPnJlbmRlcmVyKCkpKSwgcG9pbnQpOwogICAgICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxSZW5kZXJPYmplY3QmPihjbG9zZXN0UnVuLT5yZW5kZXJlcigpKS5wb3NpdGlvbkZvclBv
aW50KHBvaW50LCBudWxscHRyKTsKICAgICB9CkBAIC0zOTk3LDcgKzM5OTcsNyBAQCBSZW5kZXJP
YmplY3QqIElubGluZU1pbk1heEl0ZXJhdG9yOjpuZXh0KCkKICAgICBib29sIG9sZEVuZE9mSW5s
aW5lID0gZW5kT2ZJbmxpbmU7CiAgICAgZW5kT2ZJbmxpbmUgPSBmYWxzZTsKICAgICBkbyB7Ci0g
ICAgICAgIGlmICghb2xkRW5kT2ZJbmxpbmUgJiYgKGN1cnJlbnQgJiYgIWN1cnJlbnQtPmlzRmxv
YXRpbmcoKSAmJiAhY3VycmVudC0+aXNSZXBsYWNlZCgpICYmICFjdXJyZW50LT5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkpCisgICAgICAgIGlmICghb2xkRW5kT2ZJbmxpbmUgJiYgKGN1cnJlbnQg
JiYgIWN1cnJlbnQtPmlzRmxvYXRpbmcoKSAmJiAhY3VycmVudC0+aXNSZXBsYWNlZE9ySW5saW5l
QmxvY2soKSAmJiAhY3VycmVudC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpKQogICAgICAgICAg
ICAgcmVzdWx0ID0gY3VycmVudC0+Zmlyc3RDaGlsZFNsb3coKTsKICAgICAgICAgZWxzZSBpZiAo
aW5pdGlhbCkgewogICAgICAgICAgICAgcmVzdWx0ID0gcGFyZW50LmZpcnN0Q2hpbGQoKTsKQEAg
LTQwMjgsNyArNDAyOCw3IEBAIFJlbmRlck9iamVjdCogSW5saW5lTWluTWF4SXRlcmF0b3I6Om5l
eHQoKQogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGlmICghcmVzdWx0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVzdWx0LT5pc1RleHRP
ckxpbmVCcmVhaygpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3VsdC0+aXNSZXBsYWNl
ZCgpIHx8IHJlc3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCisgICAgICAgIGlmICghcmVzdWx0LT5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVzdWx0LT5pc1RleHRPckxpbmVCcmVhaygpIHx8
IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3VsdC0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2so
KSB8fCByZXN1bHQtPmlzUmVuZGVySW5saW5lKCkpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY3VycmVudCA9IHJlc3VsdDsKQEAgLTQxMjYsNyArNDEyNiw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0
JiBtaW5Mb2dpY2FsCiAgICAgYm9vbCBhZGRlZFN0YXJ0UHVuY3R1YXRpb25IYW5nID0gZmFsc2U7
CiAgICAgCiAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBjaGlsZEl0ZXJhdG9yLm5l
eHQoKSkgewotICAgICAgICBib29sIGF1dG9XcmFwID0gY2hpbGQtPmlzUmVwbGFjZWQoKSA/IGNo
aWxkLT5wYXJlbnQoKS0+c3R5bGUoKS5hdXRvV3JhcCgpIDoKKyAgICAgICAgYm9vbCBhdXRvV3Jh
cCA9IGNoaWxkLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpID8gY2hpbGQtPnBhcmVudCgpLT5z
dHlsZSgpLmF1dG9XcmFwKCkgOgogICAgICAgICAgICAgY2hpbGQtPnN0eWxlKCkuYXV0b1dyYXAo
KTsKICAgICAgICAgaWYgKCFjaGlsZC0+aXNCUigpKSB7CiAgICAgICAgICAgICAvLyBTdGVwIE9u
ZTogZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdlIG5lZWQgdG8gdGVybWluYXRlIG91ciBjdXJy
ZW50IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGMyODFj
NjM5YmRiNzcyMWE1MDgwYmUwODhiYWFiOWI2MGVhOGM3MTcuLjE4MTJkYzkxMTJlZmVhYmEyYjAw
ZTVmMWRjMTk2MmEwYzI3OTVmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0yNDAwLDcgKzI0MDAsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJv
bUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogICAgIGlm
IChpc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgb2Zmc2V0ICs9IG9mZnNldEZvckluRmxv
d1Bvc2l0aW9uKCk7CiAKLSAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKQorICAg
IGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKQogICAgICAgICBv
ZmZzZXQgKz0gdG9wTGVmdExvY2F0aW9uT2Zmc2V0KCk7CiAKICAgICBpZiAoaXM8UmVuZGVyQm94
Pihjb250YWluZXIpKQpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBvc2l0
aW9uTGluZUJveChMZWdhY3lJbmxpbmVFbGVtZW50Qm94JiBib3gpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKGlzUmVwbGFjZWRPcklu
bGluZUJsb2NrKCkpIHsKICAgICAgICAgc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQoYm94LnRvcExl
ZnQoKSkpOwogICAgICAgICBzZXRJbmxpbmVCb3hXcmFwcGVyKCZib3gpOwogICAgIH0KQEAgLTMw
ODQsNyArMzA4NCw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAgICAgY29tcHV0ZWRWYWx1
ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxUb3A7CiAKICAgICAvLyBDZWxsIGhlaWdodCBpcyBtYW5h
Z2VkIGJ5IHRoZSB0YWJsZSBhbmQgaW5saW5lIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBkbyBub3Qg
c3VwcG9ydCBhIGhlaWdodCBwcm9wZXJ0eS4KLSAgICBpZiAoaXNUYWJsZUNlbGwoKSB8fCAoaXNJ
bmxpbmUoKSAmJiAhaXNSZXBsYWNlZCgpKSkKKyAgICBpZiAoaXNUYWJsZUNlbGwoKSB8fCAoaXNJ
bmxpbmUoKSAmJiAhaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkpCiAgICAgICAgIHJldHVybiBj
b21wdXRlZFZhbHVlczsKIAogICAgIExlbmd0aCBoOwpAQCAtMzI4Myw3ICszMjgzLDcgQEAgYm9v
bCBSZW5kZXJCb3g6OnNraXBDb250YWluaW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRp
b24oY29uc3QgUmVuZGVyQm94JgogCiBib29sIFJlbmRlckJveDo6c2hvdWxkVHJlYXRDaGlsZEFz
UmVwbGFjZWRJblRhYmxlQ2VsbHMoKSBjb25zdAogewotICAgIGlmIChpc1JlcGxhY2VkKCkpCisg
ICAgaWYgKGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIHJldHVybiBlbGVtZW50KCkgJiYgKGVsZW1lbnQoKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQo
KSB8fCBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKTsKIH0KQEAgLTM4NDgsNyArMzg0
OCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxv
Z2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1
dGVkVmFsdWVzLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZnJhZ21lbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKGlzUmVwbGFjZWQoKSkgeworICAgIGlmIChpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBQb3NpdGlvbmVkIHJlcGxhY2VkIGVsZW1lbnRzIGluc2lk
ZSBhIGZsb3cgdGhyZWFkIGFyZSBub3Qgd29ya2luZyBwcm9wZXJseQogICAgICAgICAvLyB3aXRo
IHZhcmlhYmxlIHdpZHRoIGZyYWdtZW50cyAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTg5NiApLgogICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxX
aWR0aFJlcGxhY2VkKGNvbXB1dGVkVmFsdWVzKTsKQEAgLTQyMzgsNyArNDIzOCw3IEBAIHN0YXRp
YyB2b2lkIGNvbXB1dGVCbG9ja1N0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbFRvcCwgTGVu
Z3RoJiBsb2dpY2FsQm90dG9tCiAKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykg
Y29uc3QKIHsKLSAgICBpZiAoaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKGlzUmVwbGFjZWRPcklu
bGluZUJsb2NrKCkpIHsKICAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVw
bGFjZWQoY29tcHV0ZWRWYWx1ZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDkyMiw3
ICs0OTIyLDcgQEAgYm9vbCBSZW5kZXJCb3g6OmNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgp
IGNvbnN0CiAKIGJvb2wgUmVuZGVyQm94Ojphdm9pZHNGbG9hdHMoKSBjb25zdAogewotICAgIHJl
dHVybiBpc1JlcGxhY2VkKCkgfHwgaXNIUigpIHx8IGlzTGVnZW5kKCkgfHwgaXNGaWVsZHNldCgp
IHx8IGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpOworICAgIHJldHVybiBpc1JlcGxhY2Vk
T3JJbmxpbmVCbG9jaygpIHx8IGlzSFIoKSB8fCBpc0xlZ2VuZCgpIHx8IGlzRmllbGRzZXQoKSB8
fCBjcmVhdGVzTmV3Rm9ybWF0dGluZ0NvbnRleHQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmFk
ZFZpc3VhbEVmZmVjdE92ZXJmbG93KCkKQEAgLTUwOTUsNyArNTA5NSw3IEBAIGJvb2wgUmVuZGVy
Qm94OjpoYXNVbnNwbGl0dGFibGVTY3JvbGxpbmdPdmVyZmxvdygpIGNvbnN0CiAKIGJvb2wgUmVu
ZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSBjb25zdAogewotICAgIHJldHVy
biBpc1JlcGxhY2VkKCkKKyAgICByZXR1cm4gaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKQogICAg
ICAgICB8fCBoYXNVbnNwbGl0dGFibGVTY3JvbGxpbmdPdmVyZmxvdygpCiAgICAgICAgIHx8IChw
YXJlbnQoKSAmJiBpc1dyaXRpbmdNb2RlUm9vdCgpKQogICAgICAgICB8fCAoaXNGbG9hdGluZygp
ICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmIHN0eWxl
KCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDApCkBAIC01MTA0LDE0ICs1MTA0LDE0IEBAIGJvb2wg
UmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSBjb25zdAogCiBMYXlvdXRV
bml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykg
Y29uc3QKIHsKLSAgICBpZiAoaXNSZXBsYWNlZCgpKQorICAgIGlmIChpc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpKQogICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
bV9tYXJnaW5Cb3gudG9wKCkgKyBoZWlnaHQoKSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogbV9t
YXJnaW5Cb3gucmlnaHQoKSArIHdpZHRoKCkgKyBtX21hcmdpbkJveC5sZWZ0KCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25z
dAogewotICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5l
QmxvY2soKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kVG9JbnQoZGlyZWN0aW9uID09
IEhvcml6b250YWxMaW5lID8gbV9tYXJnaW5Cb3gudG9wKCkgKyBoZWlnaHQoKSArIG1fbWFyZ2lu
Qm94LmJvdHRvbSgpIDogbV9tYXJnaW5Cb3gucmlnaHQoKSArIHdpZHRoKCkgKyBtX21hcmdpbkJv
eC5sZWZ0KCkpOwogICAgICAgICBpZiAoYmFzZWxpbmVUeXBlID09IEFscGhhYmV0aWNCYXNlbGlu
ZSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKaW5kZXggYjIyNWE3YjI2ZTYzNDBlYzA2NDUzNTFlMWM4NzkwZTgwNDAwNDY1Yi4uMmM2
OGI5YTU3MjY5NTRmOGNiMTlmZTk2MzU5YTgzYTllMDE5NDcxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaApAQCAtNzEwLDcgKzcxMCw3IEBAIHByb3RlY3RlZDoKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdp
ZHRoTGVuZ3RoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBi
b3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxv
Z2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29u
dGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAgICAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1
cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CisgICAg
dmlydHVhbCBib29sIHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNvbnN0IHsgcmV0dXJu
IGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxl
KCk7IH0KIAogICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8
TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXgg
ZjA1ZDQwYjNkYTM2OTMwZGI4MDUwZGZkMzRjNzZmMDAwMjI3ZjM1MC4uMjI3NjdlYjJjZmNhYjMx
NGE3MTUwNDZkYTY1MGUzNDA0MzI4ZTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIyNSw3ICsyMjUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgY2FuSGF2ZUJveEluZm9JbkZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gIWlzRmxv
YXRpbmcoKSAmJiAhaXNSZXBsYWNlZCgpICYmICFpc0lubGluZSgpICYmICFpc1RhYmxlQ2VsbCgp
ICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9jaygpOyB9CisgICAgYm9vbCBj
YW5IYXZlQm94SW5mb0luRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiAhaXNGbG9hdGluZygpICYm
ICFpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpICYmICFpc0lubGluZSgpICYmICFpc1RhYmxlQ2Vs
bCgpICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9jaygpOyB9CiAKICAgICB2
b2lkIGdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0U2l6ZSYgcGhhc2UsIEZsb2F0U2l6ZSYgdGlsZVNpemUp
IGNvbnN0OwogICAgIHZvaWQgY29udGVudENoYW5nZWQoQ29udGVudENoYW5nZVR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAppbmRleCA3ZTE4ZmYwYTZlNWZlYTQyZDYzNmE0OGUxMTA3MmM2MzYzMjc0Yjhi
Li5hZWQzMmU2OWQyOGFlOGViMjczYWJhZjgxODRjMzI2YWE1NzkzNGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcApAQCAtMTAwMyw3ICsxMDAzLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRpbmdDb250ZW50
U2l6ZSgpOwotICAgICAgICBpZiAocmVsYXlvdXRDaGlsZHJlbiB8fCAoY2hpbGQtPmlzUmVwbGFj
ZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSB8
fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpCisgICAg
ICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNlZE9ySW5saW5lQmxv
Y2soKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSB8
fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpCiAgICAg
ICAgICAgICB8fCAoY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgJiYgaXM8UmVuZGVy
QmxvY2tGbG93PigqY2hpbGQpKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNM
YXlvdXQoTWFya09ubHlUaGlzKTsKIApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OmNsZWFyTGluZUNsYW1wKCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgpOwotICAg
ICAgICBpZiAoKGNoaWxkLT5pc1JlcGxhY2VkKCkgJiYgKGNoaWxkLT5zdHlsZSgpLndpZHRoKCku
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCkpKQorICAgICAgICBpZiAoKGNoaWxkLT5pc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpICYmIChjaGlsZC0+c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRl
ZCgpIHx8IGNoaWxkLT5zdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkK
ICAgICAgICAgICAgIHx8IChjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSAmJiBpczxS
ZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCkpKSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGRO
ZWVkc0xheW91dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAKaW5kZXggZTc5ZTBmZDcwNWNkYWQ3MWJiMWVjZDQyNjAyNGM2Y2YxODAyNTQ2NC4uYzBkMjI4
MjE1YWVjNWFjZTc3OWQ0NWYyNzhlM2YzOTM2YjI5ZTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTU4Myw3ICsxNTgzLDcgQEAgQ29sb3IgUmVu
ZGVyRWxlbWVudDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAogYm9vbCBSZW5k
ZXJFbGVtZW50OjpnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50LCBib29sJiBpbnNp
ZGVGaXhlZCkgY29uc3QKIHsKLSAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSB7
CisgICAgaWYgKCFpc0lubGluZSgpIHx8IGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAg
ICAgICAgcG9pbnQgPSBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBVc2VUcmFuc2Zvcm1z
LCAmaW5zaWRlRml4ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjA5LDE0
ICsxNjA5LDE0IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBv
aW50JiBwb2ludCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUKG8pOwogCi0gICAgICAgIGlmICghby0+aXNJbmxpbmUoKSB8fCBvLT5pc1JlcGxhY2Vk
KCkpIHsKKyAgICAgICAgaWYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlzUmVwbGFjZWRPcklubGlu
ZUJsb2NrKCkpIHsKICAgICAgICAgICAgIHBvaW50ID0gby0+bG9jYWxUb0Fic29sdXRlKEZsb2F0
UG9pbnQoKSwgVXNlVHJhbnNmb3JtcywgJmluc2lkZUZpeGVkKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHAtPm5vZGUoKSAmJiBwLT5ub2RlKCkg
PT0gZWxlbWVudCgpICYmIGlzPFJlbmRlclRleHQ+KCpvKSAmJiAhSW5saW5lSXRlcmF0b3I6OmZp
cnN0VGV4dEJveEZvcihkb3duY2FzdDxSZW5kZXJUZXh0PigqbykpKSB7CiAgICAgICAgICAgICAv
LyBkbyBub3RoaW5nIC0gc2tpcCB1bnJlbmRlcmVkIHdoaXRlc3BhY2UgdGhhdCBpcyBhIGNoaWxk
IG9yIG5leHQgc2libGluZyBvZiB0aGUgYW5jaG9yCi0gICAgICAgIH0gZWxzZSBpZiAoaXM8UmVu
ZGVyVGV4dD4oKm8pIHx8IG8tPmlzUmVwbGFjZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlz
PFJlbmRlclRleHQ+KCpvKSB8fCBvLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAg
ICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQoKTsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJU
ZXh0PigqbykpIHsKICAgICAgICAgICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2Fz
dDxSZW5kZXJUZXh0Pigqbyk7CkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBib29sIFJlbmRlckVsZW1l
bnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wmIGluc2lkZUZpeGVk
KSBjb25zdAogCiBib29sIFJlbmRlckVsZW1lbnQ6OmdldFRyYWlsaW5nQ29ybmVyKEZsb2F0UG9p
bnQmIHBvaW50LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3QKIHsKLSAgICBpZiAoIWlzSW5saW5l
KCkgfHwgaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKCFpc0lubGluZSgpIHx8IGlzUmVwbGFjZWRP
cklubGluZUJsb2NrKCkpIHsKICAgICAgICAgcG9pbnQgPSBsb2NhbFRvQWJzb2x1dGUoTGF5b3V0
UG9pbnQoZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuc2l6ZSgpKSwgVXNlVHJhbnNmb3Jtcywg
Jmluc2lkZUZpeGVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTY2Myw3ICsx
NjYzLDcgQEAgYm9vbCBSZW5kZXJFbGVtZW50OjpnZXRUcmFpbGluZ0Nvcm5lcihGbG9hdFBvaW50
JiBwb2ludCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnMKICAgICAgICAgICAgIG8gPSBwcmV2Owog
ICAgICAgICB9CiAgICAgICAgIEFTU0VSVChvKTsKLSAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+
KCpvKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpv
KSB8fCBvLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgICAgICBwb2ludCA9
IEZsb2F0UG9pbnQoKTsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqbykpIHsKICAg
ICAgICAgICAgICAgICBMYXlvdXRSZWN0IGxpbmVzQm94ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
Km8pLmxpbmVzQm91bmRpbmdCb3goKTsKQEAgLTE2OTEsNyArMTY5MSw3IEBAIExheW91dFJlY3Qg
UmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lkZUZpeGVkKSBjb25z
dAogICAgIEZsb2F0UG9pbnQgbG93ZXJSaWdodCA9IHRyYWlsaW5nOwogCiAgICAgLy8gVmVydGlj
YWwgd3JpdGluZyBtb2RlcyBtaWdodCBtZWFuIHRoZSBsZWFkaW5nIHBvaW50IGlzIG5vdCBpbiB0
aGUgdG9wIGxlZnQKLSAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSB7CisgICAg
aWYgKCFpc0lubGluZSgpIHx8IGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAg
dXBwZXJMZWZ0ID0gRmxvYXRQb2ludChzdGQ6Om1pbihsZWFkaW5nLngoKSwgdHJhaWxpbmcueCgp
KSwgc3RkOjptaW4obGVhZGluZy55KCksIHRyYWlsaW5nLnkoKSkpOwogICAgICAgICBsb3dlclJp
Z2h0ID0gRmxvYXRQb2ludChzdGQ6Om1heChsZWFkaW5nLngoKSwgdHJhaWxpbmcueCgpKSwgc3Rk
OjptYXgobGVhZGluZy55KCksIHRyYWlsaW5nLnkoKSkpOwogICAgIH0gLy8gT3RoZXJ3aXNlLCBp
dCdzIG5vdCBvYnZpb3VzIHdoYXQgdG8gZG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggYzVjYWRmMDE4MGFjMzE4NjA1YmUxYzcyZjkwMjAw
OGM0ZTlhMWUwZi4uMjA5ZmY2YWVlNjE1NDk4ZDU2NTU3YTg3NTdiODY3ZDViYTFlNTk5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcApAQCAtNTQs
NyArNTQsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyRnVsbFNjcmVlblBs
YWNlaG9sZGVyKTsKIFJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQm
IGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3go
ZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewotICAgIHNldFJlcGxhY2VkKGZhbHNlKTsgCisg
ICAgc2V0UmVwbGFjZWRPcklubGluZUJsb2NrKGZhbHNlKTsKIH0KIAogUmVuZGVyRnVsbFNjcmVl
bjo6flJlbmRlckZ1bGxTY3JlZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggNmVjNDA1NjUyZDg0MWRlODRmOWExYzljYzM2MTVjZDMyZTM2MDFlZC4uZWZi
NzhkN2FhNmQxYzMzNzQ5NWU2NDY3ZjllNTE5MTUzNmMyMDJhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MjMsOCArNTIzLDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6cmVtb3ZlT25seVRoaXNMYXllcihMYXllckNoYW5nZVRpbWluZyB0aW1pbmcpCiAKICAg
ICAvLyBSZW1vdmUgdGhlIGNoaWxkIHJlZmxlY3Rpb24gbGF5ZXIgYmVmb3JlIG1vdmluZyBvdGhl
ciBjaGlsZCBsYXllcnMuCiAgICAgLy8gVGhlIHJlZmxlY3Rpb24gbGF5ZXIgc2hvdWxkIG5vdCBi
ZSBtb3ZlZCB0byB0aGUgcGFyZW50LgotICAgIGlmIChyZWZsZWN0aW9uKCkpCi0gICAgICAgIHJl
bW92ZUNoaWxkKCpyZWZsZWN0aW9uTGF5ZXIoKSk7CisgICAgaWYgKGF1dG8qIHJlZmxlY3Rpb25M
YXllciA9IHRoaXMtPnJlZmxlY3Rpb25MYXllcigpKQorICAgICAgICByZW1vdmVDaGlsZCgqcmVm
bGVjdGlvbkxheWVyKTsKIAogICAgIC8vIE5vdyB3YWxrIG91ciBraWRzIGFuZCByZWF0dGFjaCB0
aGVtIHRvIG91ciBwYXJlbnQuCiAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnQgPSBtX2ZpcnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAyYjA0NTFhZWNiNjEwOWIw
YTJkYzhlNGI4NWE3MDMyYzQyOTIzZWFmLi40NGE1YTQzYjUzYzkzNTFiZjc5YTNjNmQ1NzQ2MmJi
NGU5MDc5YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDM5
LDcgKzQzOSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUmVmbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHJlbmRlcmVyKCkuaGFzUmVmbGVjdGlvbigpOyB9CiAgICAgYm9vbCBpc1JlZmxlY3Rp
b24oKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLmlzUmVwbGljYSgpOyB9Ci0gICAgUmVuZGVy
UmVwbGljYSogcmVmbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmbGVjdGlvbi5nZXQoKTsg
fQogICAgIFJlbmRlckxheWVyKiByZWZsZWN0aW9uTGF5ZXIoKSBjb25zdDsKICAgICBib29sIGlz
UmVmbGVjdGlvbkxheWVyKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZjZl
NWRhYzg0NTBlZGExMDA4NDNjZDgzOThmMzk3ZjkyMDBiNzdlYi4uN2U4ZGQ2ODgyNGNmYjQ1NjIw
ODBlNTk0ZWNkODQwMmE2YzlmYzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRl
ICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlICJSZW5kZXJSZXBsaWNh
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggNmUxM2YzYWEzNGEyNDg4ZjY1MDYy
MTU0Mjk3NzVmYmYyNjUxNzQ3Yy4uMzg5ZDVhM2U5ZTc4ODE1MDIwMmEwZDA1MzE5YzExOWFiNTMw
MDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
Y3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5l
c0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QmIGNvbnRhaW4KICAgICAgICAg
aWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChjdXJyZW50LT5pc1JlcGxhY2VkKCkpIHsKKyAg
ICAgICAgaWYgKGN1cnJlbnQtPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpjdXJyZW50KS5pbmxp
bmVCb3hXcmFwcGVyKCkpCiAgICAgICAgICAgICAgICAgYm94ID0gJndyYXBwZXItPnJvb3QoKTsK
ICAgICAgICAgfSBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPigqY3VycmVudCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAwMWIxYjAxM2M4
MTUyNDc5NDIzM2Y1MDAxMDAxNzYzYjkzYmEzZmQ0Li4wMWU1ZGNlOGU3NTJmMzkwMThhYzg2NzFm
NjY4NWVjMjYwYjg0ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwCkBAIC0xNDY3LDkgKzE0NjcsOCBAQCBSZW5kZXJMaXN0TWFya2VyOjpSZW5k
ZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUmVuZGVyU3R5bGUmJiBzdHls
ZQogICAgIDogUmVuZGVyQm94KGxpc3RJdGVtLmRvY3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9saXN0SXRlbShsaXN0SXRlbSkKIHsKLSAgICAvLyBpbml0IFJlbmRlck9iamVj
dCBhdHRyaWJ1dGVzCi0gICAgc2V0SW5saW5lKHRydWUpOyAgIC8vIG91ciBvYmplY3QgaXMgSW5s
aW5lCi0gICAgc2V0UmVwbGFjZWQodHJ1ZSk7IC8vIHByZXRlbmQgdG8gYmUgcmVwbGFjZWQKKyAg
ICBzZXRJbmxpbmUodHJ1ZSk7CisgICAgc2V0UmVwbGFjZWRPcklubGluZUJsb2NrKHRydWUpOyAv
LyBwcmV0ZW5kIHRvIGJlIHJlcGxhY2VkCiB9CiAKIFJlbmRlckxpc3RNYXJrZXI6On5SZW5kZXJM
aXN0TWFya2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggNTA0NTAyNDg4ZDg0ZGE5MTVhNGQyMTA3N2U4YzhjYTlhOWZmZTRjYi4uYmFhYjI5ZDNiOTZh
YTZlYzI5YjU4MzFjZjRkZWUzYWFlNzAyNjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTY2OCw3ICs2NjgsNyBAQCBSZW5kZXJCbG9jayogUmVuZGVy
T2JqZWN0Ojpjb250YWluaW5nQmxvY2tGb3JQb3NpdGlvblR5cGUoUG9zaXRpb25UeXBlIHBvc2l0
aW9uVAogICAgIGlmIChwb3NpdGlvblR5cGUgPT0gUG9zaXRpb25UeXBlOjpTdGF0aWMgfHwgcG9z
aXRpb25UeXBlID09IFBvc2l0aW9uVHlwZTo6UmVsYXRpdmUgfHwgcG9zaXRpb25UeXBlID09IFBv
c2l0aW9uVHlwZTo6U3RpY2t5KSB7CiAgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrRm9yT2Jq
ZWN0SW5GbG93ID0gWyZdIHsKICAgICAgICAgICAgIGF1dG8qIGFuY2VzdG9yID0gcmVuZGVyZXIu
cGFyZW50KCk7Ci0gICAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IgJiYgKChhbmNlc3Rvci0+aXNJ
bmxpbmUoKSAmJiAhYW5jZXN0b3ItPmlzUmVwbGFjZWQoKSkgfHwgIWFuY2VzdG9yLT5pc1JlbmRl
ckJsb2NrKCkpKQorICAgICAgICAgICAgd2hpbGUgKGFuY2VzdG9yICYmICgoYW5jZXN0b3ItPmlz
SW5saW5lKCkgJiYgIWFuY2VzdG9yLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB8fCAhYW5j
ZXN0b3ItPmlzUmVuZGVyQmxvY2soKSkpCiAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KGFuY2VzdG9yKTsKICAgICAgICAgfTsKQEAgLTE3MDcsNyArMTcwNyw3IEBAIGludCBSZW5kZXJP
YmplY3Q6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKIAogaW50IFJlbmRlck9iamVjdDo6Y2FyZXRN
YXhPZmZzZXQoKSBjb25zdAogewotICAgIGlmIChpc1JlcGxhY2VkKCkpCisgICAgaWYgKGlzUmVw
bGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIHJldHVybiBub2RlKCkgPyBzdGQ6Om1heCgx
VSwgbm9kZSgpLT5jb3VudENoaWxkTm9kZXMoKSkgOiAxOwogICAgIGlmIChpc0hSKCkpCiAgICAg
ICAgIHJldHVybiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IGMzNTY2NTBjNWRmOTRkNmJhZWZjMDllZWM0ODU1NGYzNmRjNTZjNjIuLjZmZjIwMjEyYmE5Yzk4
MWJjODdmZTFmNGI3ZjJiNTA4Y2VjMzNkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKQEAgLTM4Nyw3ICszODcsNyBAQCBwdWJsaWM6CiAgICAgLy8gcmVzdCBvZiB0
aGUgcmVuZGVyaW5nIHRyZWUgd2lsbCBtb3ZlIHRvIGEgc2ltaWxhciBtb2RlbC4KICAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsK
IAotICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBpc1Jl
cGxhY2VkKCkgJiYgKGlzSW1hZ2UoKSB8fCBpc1ZpZGVvKCkgfHwgaXNDYW52YXMoKSk7IH0KKyAg
ICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNl
ZE9ySW5saW5lQmxvY2soKSAmJiAoaXNJbWFnZSgpIHx8IGlzVmlkZW8oKSB8fCBpc0NhbnZhcygp
KTsgfQogICAgIGJvb2wgaXNBbm9ueW1vdXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5p
c0Fub255bW91cygpOyB9CiAgICAgYm9vbCBpc0Fub255bW91c0Jsb2NrKCkgY29uc3Q7CiAKQEAg
LTQxMCw3ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RhYmxlUm93KCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRmaWVsZHMuaXNUYWJsZVJvdygpOyB9CiAgICAgYm9vbCBpc1JlbmRlclZpZXco
KSBjb25zdCAgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNCb3goKSAmJiBtX2JpdGZpZWxkcy5pc1Rl
eHRPclJlbmRlclZpZXcoKTsgfQogICAgIGJvb2wgaXNJbmxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5pc0lubGluZSgpOyB9IC8vIGlubGluZSBvYmplY3QKLSAgICBib29sIGlzUmVw
bGFjZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc1JlcGxhY2VkKCk7IH0gLy8gYSAi
cmVwbGFjZWQiIGVsZW1lbnQgKHNlZSBDU1MpCisgICAgYm9vbCBpc1JlcGxhY2VkT3JJbmxpbmVC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzUmVwbGFjZWRPcklubGluZUJsb2Nr
KCk7IH0KICAgICBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuaG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7IH0KIAogICAgIGJvb2wgaGFzUmVm
bGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFy
ZURhdGEoKS5oYXNSZWZsZWN0aW9uKCk7IH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJc0JveCgpIHsgbV9iaXRmaWVsZHMuc2V0SXNCb3godHJ1ZSk7IH0KICAgICB2
b2lkIHNldElzVGFibGVSb3coKSB7IG1fYml0ZmllbGRzLnNldElzVGFibGVSb3codHJ1ZSk7IH0K
ICAgICB2b2lkIHNldElzUmVuZGVyVmlldygpIHsgQVNTRVJUKGlzQm94KCkpOyBtX2JpdGZpZWxk
cy5zZXRJc1RleHRPclJlbmRlclZpZXcodHJ1ZSk7IH0KLSAgICB2b2lkIHNldFJlcGxhY2VkKGJv
b2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0SXNSZXBsYWNlZChiKTsgfQorICAgIHZvaWQg
c2V0UmVwbGFjZWRPcklubGluZUJsb2NrKGJvb2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0
SXNSZXBsYWNlZE9ySW5saW5lQmxvY2soYik7IH0KICAgICB2b2lkIHNldEhvcml6b250YWxXcml0
aW5nTW9kZShib29sIGIgPSB0cnVlKSB7IG1fYml0ZmllbGRzLnNldEhvcml6b250YWxXcml0aW5n
TW9kZShiKTsgfQogICAgIHZvaWQgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KGJvb2wgYiA9IHRy
dWUpIHsgbV9iaXRmaWVsZHMuc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KGIpOyB9CiAgICAgdm9p
ZCBzZXRIYXNMYXllcihib29sIGIgPSB0cnVlKSB7IG1fYml0ZmllbGRzLnNldEhhc0xheWVyKGIp
OyB9CkBAIC04NTgsNyArODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV9pc0JveChm
YWxzZSkKICAgICAgICAgICAgICwgbV9pc1RhYmxlUm93KGZhbHNlKQogICAgICAgICAgICAgLCBt
X2lzSW5saW5lKHRydWUpCi0gICAgICAgICAgICAsIG1faXNSZXBsYWNlZChmYWxzZSkKKyAgICAg
ICAgICAgICwgbV9pc1JlcGxhY2VkT3JJbmxpbmVCbG9jayhmYWxzZSkKICAgICAgICAgICAgICwg
bV9pc0xpbmVCcmVhayhmYWxzZSkKICAgICAgICAgICAgICwgbV9ob3Jpem9udGFsV3JpdGluZ01v
ZGUodHJ1ZSkKICAgICAgICAgICAgICwgbV9oYXNMYXllcihmYWxzZSkKQEAgLTg5MCw3ICs4OTAs
NyBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc0JveCwgSXNCb3gp
OwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1RhYmxlUm93LCBJc1RhYmxlUm93KTsK
ICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNJbmxpbmUsIElzSW5saW5lKTsKLSAgICAg
ICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNSZXBsYWNlZCwgSXNSZXBsYWNlZCk7CisgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKGlzUmVwbGFjZWRPcklubGluZUJsb2NrLCBJc1JlcGxhY2Vk
T3JJbmxpbmVCbG9jayk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzTGluZUJyZWFr
LCBJc0xpbmVCcmVhayk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhvcml6b250YWxX
cml0aW5nTW9kZSwgSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTsKIApAQCAtMTIwMCw3ICsxMjAwLDcg
QEAgaW5saW5lIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpuZXh0SW5GbG93U2libGluZygp
IGNvbnN0CiAKIGlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNBdG9taWNJbmxpbmVMZXZlbEJv
eCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0eWxlKCkuaXNEaXNwbGF5SW5saW5lVHlwZSgpICYm
ICEoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSAmJiAhaXNSZXBsYWNl
ZCgpKTsKKyAgICByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIShzdHls
ZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0OjpoYXNQb3RlbnRpYWxs
eVNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAppbmRleCBlOWYxMWZkNGExODEzYTk0MmM4YmJmMDRmMGJjM2FiMzdl
MGM4MGVlLi4yMjVmNTljYWM2MGMzODgzZjU1NzIwZjNmOWFjOTRmZjc0MzVkZTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTYxLDIxICs2MSwy
MSBAQCBSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGNEZWZhdWx0V2lk
dGgsIGNEZWZhdWx0SGVpZ2h0KQogewotICAgIHNldFJlcGxhY2VkKHRydWUpOworICAgIHNldFJl
cGxhY2VkT3JJbmxpbmVCbG9jayh0cnVlKTsKIH0KIAogUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJl
cGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IExheW91
dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShz
dHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5z
aWNTaXplKQogewotICAgIHNldFJlcGxhY2VkKHRydWUpOworICAgIHNldFJlcGxhY2VkT3JJbmxp
bmVCbG9jayh0cnVlKTsKIH0KIAogUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50
cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIFJl
bmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQog
ewotICAgIHNldFJlcGxhY2VkKHRydWUpOworICAgIHNldFJlcGxhY2VkT3JJbmxpbmVCbG9jayh0
cnVlKTsKIH0KIAogUmVuZGVyUmVwbGFjZWQ6On5SZW5kZXJSZXBsYWNlZCgpID0gZGVmYXVsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAppbmRleCA1ZWRhYjJl
N2U1NDIwNjMyZTA3NjgxODU5YzMwZjg1ZWQ4Y2E5ODIyLi4yOGY4ODA1YTJlNzJhMDVlZDIxMDE1
MjIyOWU5ZjQ0MDhmZjgyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxpY2EuY3BwCkBAIC00NCw3ICs0NCw4IEBAIFJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2Eo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIC8vIHJlbmRlcmVy
cyBiZWluZyByZXBsaWNhdGVkLCBzbyB0aGV5IGFsd2F5cyByZXBvcnQgdGhhdCB0aGV5IGFyZSBp
bmxpbmUsIG5vbi1yZXBsYWNlZC4KICAgICAvLyBIb3dldmVyLCB3ZSBuZWVkIHRyYW5zZm9ybXMg
dG8gYmUgYXBwbGllZCB0byByZXBsaWNhcyBmb3IgcmVmbGVjdGlvbnMsIHNvIGhhdmUgdG8gcGFz
cwogICAgIC8vIHRoZSBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSBjaGVjayBiZWZv
cmUgc2V0SGFzVHJhbnNmb3JtKCkuCi0gICAgc2V0UmVwbGFjZWQodHJ1ZSk7CisgICAgLy8gRklY
TUU6IElzIHRoZSBjb21tZW50IGFib3ZlIG9ic29sZXRlPyBDYW4ndCBmaW5kIGEgY2hlY2sgb2Yg
aXNSZXBsYWNlZE9ySW5saW5lQmxvY2sgZ3VhcmRpbmcgc2V0SGFzVHJhbnNmb3JtIGFueSBtb3Jl
LgorICAgIHNldFJlcGxhY2VkT3JJbmxpbmVCbG9jayh0cnVlKTsKIH0KIAogUmVuZGVyUmVwbGlj
YTo6flJlbmRlclJlcGxpY2EoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5jcHAKaW5kZXggMGEyODFhYTc2ZjFhNmNkZDUzZjdkZTgzZjM5MzNjZjll
MzA3ZTc2OC4uNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlmZTViYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICAsIG1fbGFzdENoYXJhY3RlcigwKQogICAgICwgbV9zZWNvbmRU
b0xhc3RDaGFyYWN0ZXIoMCkKIHsKLSAgICBzZXRSZXBsYWNlZCh0cnVlKTsKKyAgICBzZXRSZXBs
YWNlZE9ySW5saW5lQmxvY2sodHJ1ZSk7CiAgICAgc2V0SW5saW5lKHRydWUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IGIw
MDdjYjhmMjlkNzVmYmFhZjJjODIzNDgwM2IxMTYxNTE4MWY5NWUuLjBjNjZkN2NmYzA1ODVhOTE4
MTg0ODk4MWQ3NmNmM2EyYTllZTlkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0yMTgsOCArMjE4LDggQEAgaW5saW5lIHZvaWQg
QnJlYWtpbmdDb250ZXh0Ojppbml0aWFsaXplRm9yQ3VycmVudE9iamVjdCgpCiAgICAgaWYgKG1f
bmV4dE9iamVjdCAmJiBtX25leHRPYmplY3QtPnBhcmVudCgpICYmICFtX25leHRPYmplY3QtPnBh
cmVudCgpLT5pc0Rlc2NlbmRhbnRPZihyZW5kZXJlci5wYXJlbnQoKSkpCiAgICAgICAgIG1faW5j
bHVkZUVuZFdpZHRoID0gdHJ1ZTsKIAotICAgIG1fY3VycldTID0gcmVuZGVyZXIuaXNSZXBsYWNl
ZCgpID8gcmVuZGVyZXIucGFyZW50KCktPnN0eWxlKCkud2hpdGVTcGFjZSgpIDogcmVuZGVyZXIu
c3R5bGUoKS53aGl0ZVNwYWNlKCk7Ci0gICAgbV9sYXN0V1MgPSBtX2xhc3RPYmplY3QtPmlzUmVw
bGFjZWQoKSA/IG1fbGFzdE9iamVjdC0+cGFyZW50KCktPnN0eWxlKCkud2hpdGVTcGFjZSgpIDog
bV9sYXN0T2JqZWN0LT5zdHlsZSgpLndoaXRlU3BhY2UoKTsKKyAgICBtX2N1cnJXUyA9IHJlbmRl
cmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgPyByZW5kZXJlci5wYXJlbnQoKS0+c3R5bGUo
KS53aGl0ZVNwYWNlKCkgOiByZW5kZXJlci5zdHlsZSgpLndoaXRlU3BhY2UoKTsKKyAgICBtX2xh
c3RXUyA9IG1fbGFzdE9iamVjdC0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSA/IG1fbGFzdE9i
amVjdC0+cGFyZW50KCktPnN0eWxlKCkud2hpdGVTcGFjZSgpIDogbV9sYXN0T2JqZWN0LT5zdHls
ZSgpLndoaXRlU3BhY2UoKTsKIAogICAgIG1fYXV0b1dyYXAgPSBSZW5kZXJTdHlsZTo6YXV0b1dy
YXAobV9jdXJyV1MpOwogICAgIG1fYXV0b1dyYXBXYXNFdmVyVHJ1ZU9uTGluZSA9IG1fYXV0b1dy
YXBXYXNFdmVyVHJ1ZU9uTGluZSB8fCBtX2F1dG9XcmFwOwpAQCAtMTA4Niw3ICsxMDg2LDcgQEAg
aW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpjYW5CcmVha0F0VGhpc1Bvc2l0aW9uKCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQXZvaWQgYnJlYWtpbmcgYmVmb3JlIGVtcHR5
IGlubGluZXMgKGFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgb2JqZWN0IGlzbid0IHJlcGxhY2VkKS4K
LSAgICBpZiAoIW1fY3VycmVudC5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVy
SW5saW5lPihtX25leHRPYmplY3QpICYmIGlzRW1wdHlJbmxpbmUoZG93bmNhc3Q8UmVuZGVySW5s
aW5lPigqbV9uZXh0T2JqZWN0KSkpCisgICAgaWYgKCFtX2N1cnJlbnQucmVuZGVyZXIoKS0+aXNS
ZXBsYWNlZE9ySW5saW5lQmxvY2soKSAmJiBpczxSZW5kZXJJbmxpbmU+KG1fbmV4dE9iamVjdCkg
JiYgaXNFbXB0eUlubGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCptX25leHRPYmplY3QpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5IGlmIHdlIGF1dG93
cmFwIGFuZCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBhcyB3ZSB3aWxsIGFsd2F5
cyB3YW50IHRvIGJyZWFrIGF0IHN1Y2ggYSBwb3NpdGlvbi4KQEAgLTExNTAsNyArMTE1MCw3IEBA
IGlubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6Y29tbWl0QW5kVXBkYXRlTGluZUJyZWFrSWZO
ZWVkZWQoKQogCiAgICAgaWYgKCFtX2N1cnJlbnQucmVuZGVyZXIoKS0+aXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIG1fbGFzdE9iamVjdCA9IG1fY3VycmVudC5y
ZW5kZXJlcigpOwotICAgICAgICBpZiAobV9sYXN0T2JqZWN0LT5pc1JlcGxhY2VkKCkgJiYgbV9h
dXRvV3JhcCAmJiAhbV9sYXN0T2JqZWN0LT5pc1J1YnlSdW4oKSAmJiAoIW1fbGFzdE9iamVjdC0+
aXNJbWFnZSgpIHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFrKSAmJiAoIWlzPFJlbmRlckxpc3RNYXJr
ZXI+KCptX2xhc3RPYmplY3QpIHx8IGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KCptX2xhc3RP
YmplY3QpLmlzSW5zaWRlKCkpKSB7CisgICAgICAgIGlmIChtX2xhc3RPYmplY3QtPmlzUmVwbGFj
ZWRPcklubGluZUJsb2NrKCkgJiYgbV9hdXRvV3JhcCAmJiAhbV9sYXN0T2JqZWN0LT5pc1J1YnlS
dW4oKSAmJiAoIW1fbGFzdE9iamVjdC0+aXNJbWFnZSgpIHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFr
KSAmJiAoIWlzPFJlbmRlckxpc3RNYXJrZXI+KCptX2xhc3RPYmplY3QpIHx8IGRvd25jYXN0PFJl
bmRlckxpc3RNYXJrZXI+KCptX2xhc3RPYmplY3QpLmlzSW5zaWRlKCkpKSB7CiAgICAgICAgICAg
ICBpZiAobV9uZXh0T2JqZWN0KQogICAgICAgICAgICAgICAgIGNvbW1pdExpbmVCcmVha0F0Q3Vy
cmVudFdpZHRoKCptX25leHRPYmplY3QpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCmluZGV4IDAwZjc1MmQ1YjEyNWE3
ZjM1YTg0MmRkMjhmY2E1MjZlZTIxMWNhZGIuLjg4Nzg5MzQ3ZmY5MWU3MWYxMTdjY2Y3NzdlYzUx
ZDE0NGQwMDQ3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJl
YWtlci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBMZWdhY3lJbmxpbmVJdGVyYXRvciBMaW5lQnJl
YWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaQogICAg
ICAgICAgICAgY29udGV4dC5oYW5kbGVGbG9hdCgpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRl
eHQuY3VycmVudE9iamVjdCgpLT5pc1JlbmRlcklubGluZSgpKSB7CiAgICAgICAgICAgICBjb250
ZXh0LmhhbmRsZUVtcHR5SW5saW5lKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5jdXJy
ZW50T2JqZWN0KCktPmlzUmVwbGFjZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQu
Y3VycmVudE9iamVjdCgpLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgICAg
ICBjb250ZXh0LmhhbmRsZVJlcGxhY2VkKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5j
dXJyZW50T2JqZWN0KCktPmlzVGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoY29udGV4dC5oYW5k
bGVUZXh0KHdvcmRNZWFzdXJlbWVudHMsIG1faHlwaGVuYXRlZCwgY29uc2VjdXRpdmVIeXBoZW5h
dGVkTGluZXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcAppbmRleCAyNDU5M2ExZDljMGVm
YzViYmJkNDAwMmViM2NkNzEwZWVmNmNhNWUxLi5iMjEzMTlkNDIxNzJhYzRhNzdjYjc3ZWY5NDZi
MjVjZWE4N2FlZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlcklubGluZS5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIGJvb2wgY2FuVXNlQXNQYXJlbnRGb3JDb250aW51YXRpb24oY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKIAogc3RhdGljIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXh0Q29u
dGludWF0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYgKGlzPFJlbmRlcklu
bGluZT4oKnJlbmRlcmVyKSAmJiAhcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkKKyAgICBpZiAoaXM8
UmVuZGVySW5saW5lPigqcmVuZGVyZXIpICYmICFyZW5kZXJlci0+aXNSZXBsYWNlZE9ySW5saW5l
QmxvY2soKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVy
KS5jb250aW51YXRpb24oKTsKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpyZW5k
ZXJlcikuaW5saW5lQ29udGludWF0aW9uKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="475254"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449235</attachid>
            <date>2022-01-14 17:20:01 -0800</date>
            <delta_ts>2022-01-14 18:46:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235258-20220114172000.patch</filename>
            <type>text/plain</type>
            <size>65346</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZmMTIzYTAzZTdhNDc0
ODBlNTU4ODdjNDMxYTk0OGZhYzFiNjA4NS4uYmY1YmU4NmVjODUyMzU4NjFhNjA4ZGJiZDM5MjA0
MTQ5M2U3NDVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAyMi0wMS0xNCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlyc3Qgc3RlcCB0byBmaXgg
aGFja2VkIGlzUmVwbGFjZWQ6IFJlbmFtZSBpc1JlcGxhY2VkIGZ1bmN0aW9ucyB0byBpc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1MjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGlzUmVwbGFjZWQgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciB0aGluZ3Mg
dGhhdCBhcmUgbm90IENTUyByZXBsYWNlZAorICAgICAgICBlbGVtZW50cy4gVGhhdCdzIGNvbmZ1
c2luZyBhbmQgbm90IGdvb2QuIFdlIHdhbnQgdG8gc3RyYWlnaHRlbiB0aGlzIG91dC4KKyAgICAg
ICAgSW4gdGhpcyBmaXJzdCBzdGVwLCB3ZSByZW5hbWUgdGhlIGlzUmVwbGFjZWQgYW5kIHNldFJl
cGxhY2VkIGZ1bmN0aW9ucworICAgICAgICB0byBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jayBhbmQg
c2V0UmVwbGFjZWRPcklubGluZUJsb2NrLiBUaGVyZSBhcmUgc3RpbGwKKyAgICAgICAgZnVuY3Rp
b25zIHdpdGggb3V0IGFyZ3VtZW50cyBuYW1lZCAiaXNSZXBsYWNlZCIsIHdoaWNoIHdlIGNhbiBk
ZWFsIHdpdGgKKyAgICAgICAgbGF0ZXIuIE90aGVyIGxhdGVyIGNsZWFuLXVwIGFuZCBjbGFyaWZp
Y2F0aW9uIGNvdWxkIG9uZSBkYXkgY2hhbmdlIHdoYXQKKyAgICAgICAgYml0cyB3ZSBzdG9yZSBp
biBSZW5kZXJTdHlsZSBhbmQgcG9zc2libHkgZXZlbiByZW1vdmUgdGhpcyBmdW5jdGlvbiBlbnRp
cmVseS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Q29udGludWF0aW9uKToKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
Tm9uUmVwbGFjZWRJbmxpbmUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnJlbmRlclJlY3QpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjplbmRzT2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyk6
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OmNhblVzZUZvckNoaWxkKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc05vbklubGluZU9yUmVwbGFjZWRFbGVtZW50cyk6
CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6cmVuZGVyUmVjdEZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZv
ckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZUJveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVy
QW5ub3RhdGlvbkFkanVzdG1lbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJ
bmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJdGVyYXRvclRhcmdldCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0Zvckxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6bGF5b3V0TGluZUJveGVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9z
aXRpb25Gb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6aW5j
bHVkZUxlYWRpbmdGb3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElu
bGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5Um9vdElubGluZUJveDo6aW5jbHVkZUdseXBoc0ZvckJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlSW5pdGlhbExldHRlckZvckJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlTWFy
Z2luRm9yQm94IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3RzSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnN0eWxlV2lsbENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2ltcGxpZmllZE5vcm1hbEZsb3dMYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRGaXJzdExldHRlckJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRG
aXJzdExldHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnJlYnVpbGRGbG9hdGluZ09iamVjdFNldEZyb21JbnRydWRpbmdGbG9hdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0
aElubGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZU1pbk1heEl0ZXJhdG9y
OjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFp
bmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzaG91bGRUcmVhdENoaWxkQXNSZXBs
YWNlZEluVGFibGVDZWxscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6YXZvaWRzRmxvYXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bGluZUhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2hvdWxkQ29t
cHV0ZVNpemVBc1JlcGxhY2VkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
YW5IYXZlQm94SW5mb0luRnJhZ21lbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNsZWFyTGluZUNsYW1wKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVt
ZW50OjpnZXRMZWFkaW5nQ29ybmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OmdldFRyYWlsaW5nQ29ybmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OmFic29sdXRlQW5jaG9yUmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVl
bjo6UmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVz
RnJvbUNoYW5nZWRDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtl
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9ja0ZvclBvc2l0aW9uVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNhcmV0TWF4T2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNSZXBsYWNlZE9ySW5saW5lQmxvY2sgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRSZXBsYWNlZE9ySW5saW5lQmxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RCaXRmaWVsZHM6OlJlbmRlck9i
amVjdEJpdGZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRvbWlj
SW5saW5lTGV2ZWxCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpp
c1JlcGxhY2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2V0UmVwbGFjZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFj
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlSdW46OlJl
bmRlclJ1YnlSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0Ojppbml0aWFsaXplRm9yQ3VycmVu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRU
aGlzUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0Ojpjb21taXRB
bmRVcGRhdGVMaW5lQnJlYWtJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGlu
ZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6Om5leHRMaW5lQnJl
YWspOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlcklubGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Q29udGludWF0aW9uKToKKyAgICAgICAgUmVu
YW1lZCBpbiBhbGwgdGhlc2UgcGxhY2VzLiBBbHNvIGFkZGVkIG9uZSBGSVhNRSBmb3Igc29tZXRo
aW5nCisgICAgICAgIEFsYW4gcG9pbnRlZCBvdXQgd2UnZCBsaWtlIHRvIGRvIGluIHRoZSBmdXR1
cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnJlbW92ZU9ubHlUaGlzTGF5ZXIpOiBSZW1vdmVkIHVuaGVscGZ1
bCB1c2UKKyAgICAgICAgb2YgUmVuZGVyTGF5ZXI6OnJlZmxlY3Rpb24gZnVuY3Rpb24ganVzdCB0
byBmaW5kIG91dCB3aGV0aGVyIHRoZQorICAgICAgICBSZW5kZXJMYXllcjo6cmVmbGVjdGlvbkxh
eWVyIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIG51bGwgb3Igbm90LgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5oOiBSZW1vdmVkIHVubmVlZGVkIFJlbmRlckxheWVyOjpyZWZsZWN0aW9u
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOiBSZW1vdmVk
IGFuIHVubmVlZGVkIGluY2x1ZGUKKyAgICAgICAgb2YgUmVuZGVyUmVwbGljYS5oLgorCiAyMDIy
LTAxLTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2xlYW51
cF0gUmVtb3ZlIHJlZHVuZGFudCAoYW5kIGluY29ycmVjdCkgUmVuZGVyU3R5bGU6OmlzRGlzcGxh
eVJlcGxhY2VkVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYzYxN2ExMDc2ZGNjY2Y5OTI3
NjkzNWEzMDgxYWJiZWQxMDY4N2E2My4uNDk4ODZlNWQ4ODgwZDhhOGVkMjc0YzJmYmUxMDMxNjlh
OThmNTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bmV4dFNpYmxpbmcoKSBj
b25zdAogCiBzdGF0aWMgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5leHRDb250aW51YXRpb24oUmVu
ZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJl
cikgJiYgIXJlbmRlcmVyLmlzUmVwbGFjZWQoKSkKKyAgICBpZiAoaXM8UmVuZGVySW5saW5lPihy
ZW5kZXJlcikgJiYgIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKS5jb250aW51YXRpb24oKTsK
ICAgICBpZiAoaXM8UmVuZGVyQmxvY2s+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PFJlbmRlckJsb2NrPihyZW5kZXJlcikuaW5saW5lQ29udGludWF0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IDFlYzBlOTFkY2Y5YWU1Njk2ODA4ZGY5ZGU2NjhiMjdjZTdlOGUxN2YuLjE2NTU3Y2E0OGYwMzlk
ZDVjMGQ1ZjQ3YTllNjNjZTQzMzBlZmUzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMzA5LDcgKzIzMDksNyBAQCBz
dGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9Db2x1bW5CcmVhayhCcmVha0luc2lkZSB2YWx1ZSkK
IAogc3RhdGljIGlubGluZSBib29sIGlzTm9uUmVwbGFjZWRJbmxpbmUoUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlcikKIHsKLSAgICByZXR1cm4gcmVuZGVyZXIuaXNJbmxpbmUoKSAmJiAhcmVuZGVyZXIu
aXNSZXBsYWNlZCgpOworICAgIHJldHVybiByZW5kZXJlci5pc0lubGluZSgpICYmICFyZW5kZXJl
ci5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpOwogfQogCiBzdGF0aWMgYm9vbCBpc0xheW91dERl
cGVuZGVudChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1MWUwYWNhMzQ0
NDlmYzNjM2Q2NTliMjY0Y2Y4ODVhYjMzZjdmOGNkLi4zYjc3NzU0NjhmMjNhOWM1ZmZmYmEzZDdj
NTAwYTMyMzU4NGU3Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MjEsOCArODIxLDkgQEAgTGF5
b3V0UmVjdCBOb2RlOjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpCiAgICAgfQogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBoaXRSZW5kZXJlcjsKICAgICB3aGlsZSAocmVuZGVyZXIg
JiYgIXJlbmRlcmVyLT5pc0JvZHkoKSAmJiAhcmVuZGVyZXItPmlzRG9jdW1lbnRFbGVtZW50UmVu
ZGVyZXIoKSkgewotICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSB8fCByZW5k
ZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5kZXJlci0+aXNSZXBsYWNl
ZCgpKSB7Ci0gICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVyLT5pc1JlcGxhY2VkKCk7
CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpIHx8IHJlbmRlcmVyLT5pc0lu
bGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxpbmVC
bG9jaygpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyByZWFsbHkgd2hhdCBjYWxs
ZXJzIHdhbnQgZm9yIHRoZSAiaXNSZXBsYWNlZCIgZmxhZz8KKyAgICAgICAgICAgICppc1JlcGxh
Y2VkID0gcmVuZGVyZXItPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAppbmRleCA5YTUxMmVmZTdjOWMwMWVmODIwMTJjYjQzZjliNjExNTU4OTY3YTJhLi43ZGVmMTYy
ZjgyMjM3ZGM2ZWE5OGU2N2Y5ZDY0ZWU3MjFmNGY2NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKQEAgLTYzOSw3ICs2MzksNyBAQCBzdGF0aWMgYm9vbCBlbmRzT2ZOb2RlQXJlVmlzdWFsbHlE
aXN0aW5jdFBvc2l0aW9ucyhOb2RlKiBub2RlKQogICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50
Pigqbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIW5vZGUtPnJl
bmRlcmVyKCktPmlzUmVwbGFjZWQoKSB8fCAhY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZygqbm9k
ZSkgfHwgIWRvd25jYXN0PFJlbmRlckJveD4oKm5vZGUtPnJlbmRlcmVyKCkpLmhlaWdodCgpKQor
ICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCAh
Y2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZygqbm9kZSkgfHwgIWRvd25jYXN0PFJlbmRlckJveD4o
Km5vZGUtPnJlbmRlcmVyKCkpLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBUaGVyZSBpcyBhIFZpc2libGVQb3NpdGlvbiBpbnNpZGUgYW4gZW1wdHkgaW5saW5lLWJs
b2NrIGNvbnRhaW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cAppbmRleCAyYzNlMDc4YTMyYTJmZWYyMWRhNGZlY2Y5ZGRhZGI3MTQyYWVmMzMzLi5mZGY5MGNk
NGU2Njc1OTY1ODA4OTUwMTNmYzhiNWFmYjQzNWYzNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gJnJ1bi0+cmVuZGVyZXIoKTsKIAogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNSZXBsYWNlZCgpIHx8IHJlbmRl
cmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBydW4tPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCkpCisg
ICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IHJl
bmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBydW4tPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
cHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKIAogICAgICAgICAgICAg
aWYgKCFyZW5kZXJlci0+bm9kZSgpKSB7CkBAIC0yOTgsNyArMjk4LDcgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAg
ICAgICBhdXRvKiByZW5kZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7CiAKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzUmVwbGFjZWQoKSB8fCByZW5k
ZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0gcnVuLT5sZWZ0bW9zdENhcmV0T2Zmc2V0KCkpCisg
ICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IHJl
bmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBydW4tPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gcnVuLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBu
ZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zp
c3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogCiAgICAgICAgICAgICBp
ZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRl
eCAzM2FhMTE5N2FhYzVmNjQxNDkwMTQ4OTQ4MTZhOTg4ZTkwOWMwOTJmLi4yYWY1ZmJiMmM5ZGRl
ZjViYTdiZTU3ODEyNWVlMDFjZDRjMWI5ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwCkBAIC01MzMsNyArNTMzLDcgQEAgc3RhdGljIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+
IGNhblVzZUZvckNoaWxkKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY28KIAogICAgIGlm
IChpczxSZW5kZXJCbG9ja0Zsb3c+KGNoaWxkKSkgewogICAgICAgICBhdXRvJiBibG9jayA9IGRv
d25jYXN0PFJlbmRlckJsb2NrRmxvdz4oY2hpbGQpOwotICAgICAgICBpZiAoIWJsb2NrLmlzUmVw
bGFjZWQoKSB8fCAhYmxvY2suaXNJbmxpbmUoKSkKKyAgICAgICAgaWYgKCFibG9jay5pc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaygpIHx8ICFibG9jay5pc0lubGluZSgpKQogICAgICAgICAgICAgU0VU
X1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uU3VwcG9ydGVkQ2hpbGQsIHJl
YXNvbnMsIGluY2x1ZGVSZWFzb25zKQogICAgICAgICBpZiAoYmxvY2suaXNGbG9hdGluZygpIHx8
IGJsb2NrLmlzUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJO
X0lGX05FRURFRChDaGlsZEJveElzRmxvYXRpbmdPclBvc2l0aW9uZWQsIHJlYXNvbnMsIGluY2x1
ZGVSZWFzb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCBmMWVhMTk2
ODc2YjIyZGVhZmUxOTZmNjU1OGE4ZTk3Nzk0MjFlYmQxLi43ZDYxYWU1MDgyNTNhMWVjZGFkYmQx
MTUwZWY4MWZlZmIyMzMyMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApA
QCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVl
LnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveC5sYXlvdXRCb3goKSk7IGlzPFJlbmRlckJveD4ocmVu
ZGVyZXIpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgeworICAgICAgICBpZiAoYXV0byYgcmVu
ZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3goYm94LmxheW91dEJveCgpKTsg
aXM8UmVuZGVyQm94PihyZW5kZXJlcikgJiYgcmVuZGVyZXIuaXNSZXBsYWNlZE9ySW5saW5lQmxv
Y2soKSkgewogICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94
PihyZW5kZXJlcik7CiAgICAgICAgICAgICBpZiAoIXJlbmRlckJveC5oYXNTZWxmUGFpbnRpbmdM
YXllcigpICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyQm94KSkKICAg
ICAgICAgICAgICAgICByZW5kZXJCb3gucGFpbnRBc0lubGluZUJsb2NrKHBhaW50SW5mbywgcGFp
bnRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggZDI2MGQx
MWE4NDVhMjdjY2FiMmE3MjhkZTNkNDEwYzg2M2Y3N2UwNy4uMzg3ZDUxOWFlNTE3MmQ2ODBhNWIy
ODg0M2JiZThmZjk5NmM2YjMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIGJvb2wgaGFzTm9uSW5saW5lT3JSZXBsYWNlZEVs
ZW1lbnRzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICBmb3IgKGF1dG8mIG5vZGUg
OiBpbnRlcnNlY3RpbmdOb2RlcyhyYW5nZSkpIHsKICAgICAgICAgYXV0byByZW5kZXJlciA9IG5v
ZGUucmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmICghcmVuZGVyZXItPmlzSW5s
aW5lKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkpCisgICAgICAgIGlmIChyZW5kZXJlciAm
JiAoIXJlbmRlcmVyLT5pc0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxpbmVC
bG9jaygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGFjMGRmZGE3NDExNGUwMjg3
NzJjMDYyYTMwZmY3NTE2NDQ4ZWJhOTIuLmI4ZmMwYjdkNDFkMWY1Y2YwNGFiYTk3NTQyN2ZiNDJl
ZTAyNzgwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0yMDQsOCArMjA0
LDggQEAgQ0dSZWN0IEZyYW1lOjpyZW5kZXJSZWN0Rm9yUG9pbnQoQ0dQb2ludCBwb2ludCwgYm9v
bCogaXNSZXBsYWNlZCwgZmxvYXQqIGZvbnRTaXoKICAgICAgICAgICAgIHByaW50ZigiJXMgJWYg
JWYgJWYgJWZcbiIsIG5vZGVOYW1lLCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0
LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgfHwgcmVuZGVyZXItPmlzSW5saW5lQmxv
Y2tPcklubGluZVRhYmxlKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkgewotICAgICAgICAg
ICAgKmlzUmVwbGFjZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZCgpOworICAgICAgICBpZiAocmVu
ZGVyZXItPmlzUmVuZGVyQmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5l
VGFibGUoKSB8fCByZW5kZXJlci0+aXNSZXBsYWNlZE9ySW5saW5lQm94KCkpIHsKKyAgICAgICAg
ICAgICppc1JlcGxhY2VkID0gcmVuZGVyZXItPmlzUmVwbGFjZWRPcklubGluZUJveCgpOwogI2lm
IENIRUNLX0ZPTlRfU0laRQogICAgICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIHRleHRSZW5k
ZXJlciA9IGhpdFJlbmRlcmVyOyB0ZXh0UmVuZGVyZXI7IHRleHRSZW5kZXJlciA9IHRleHRSZW5k
ZXJlci0+dHJhdmVyc2VOZXh0KGhpdFJlbmRlcmVyKSkgewogICAgICAgICAgICAgICAgIGlmICh0
ZXh0UmVuZGVyZXItPmlzVGV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAppbmRleCAzYjcwMmE5N2YwNGExZDAyZDE4ZjUzODQ2
NjJhNWIzNzM5ZjQ1Zjk1Li5jZTdmNTQyZGQ5N2I4NTM4NjFlMjNhY2Y4MWY4OWY4ZDIxNjc5NzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlv
bi5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjb21wdXRlQ2FyZXRS
ZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IElubGluZQogICAgIC8v
CiAgICAgLy8gRklYTUU6IGlnbm9yaW5nIDpmaXJzdC1saW5lLCBtaXNzaW5nIGdvb2QgcmVhc29u
IHRvIHRha2UgY2FyZSBvZgogICAgIExheW91dFVuaXQgZm9udEhlaWdodCA9IHJlbmRlcmVyLnN0
eWxlKCkuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKLSAgICBpZiAoZm9udEhlaWdodCA+IHJlY3Qu
aGVpZ2h0KCkgfHwgKCFyZW5kZXJlci5pc1JlcGxhY2VkKCkgJiYgIXJlbmRlcmVyLmlzVGFibGUo
KSkpCisgICAgaWYgKGZvbnRIZWlnaHQgPiByZWN0LmhlaWdodCgpIHx8ICghcmVuZGVyZXIuaXNS
ZXBsYWNlZE9ySW5saW5lQmxvY2soKSAmJiAhcmVuZGVyZXIuaXNUYWJsZSgpKSkKICAgICAgICAg
cmVjdC5zZXRIZWlnaHQoZm9udEhlaWdodCk7CiAKICAgICAvLyBNb3ZlIHRvIGxvY2FsIGNvb3Jk
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcAppbmRleCAz
ZjFhMTVmOGU1MTkxOGViOTM1Mzk0ZjA5M2YzMjUyMjJkYWU3ODUyLi44NmY0MWVmN2ZiMDU2Y2Nk
NjE1ZTU3NzFhMDgzYzJkOTg4YzBmMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lQm94LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgTGVnYWN5SW5saW5l
Qm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCiAgICAgaWYgKHJlbmRlcmVy
KCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChy
ZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkKKyAgICBpZiAocmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJ
bmxpbmVCbG9jaygpKQogICAgICAgICBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLm1v
dmUoTGF5b3V0VW5pdChkeCksIExheW91dFVuaXQoZHkpKTsKIH0KIApAQCAtMjUzLDcgKzI1Myw3
IEBAIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgTGVnYWN5SW5saW5lQm94OjpzZWxlY3Rp
b25TdGF0ZSgpIGNvbnN0CiBib29sIExlZ2FjeUlubGluZUJveDo6Y2FuQWNjb21tb2RhdGVFbGxp
cHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0CiB7
CiAgICAgLy8gTm9uLXJlcGxhY2VkIGVsZW1lbnRzIGNhbiBhbHdheXMgYWNjb21tb2RhdGUgYW4g
ZWxsaXBzaXMuCi0gICAgaWYgKCFyZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkKKyAgICBpZiAoIXJl
bmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCiAgICAgSW50UmVjdCBib3hSZWN0KGxlZnQoKSwgMCwgbV9sb2dpY2FsV2lkdGgsIDEw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNw
cAppbmRleCAyY2RkZWRiMTVlZjBhZTQ4NzgzY2MxY2E3YjM0NGZiMDI0MzQ1MDJlLi41OTViNTVl
MWYwYWM4NDljYjUwZDNkYzFhODY1OWE0OTIxMjc2ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAg
dm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGls
ZCkKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlID0gbGluZVN0eWxlKCk7
CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZFN0eWxlID0gY2hpbGQtPmxpbmVTdHls
ZSgpOwogICAgICAgICBib29sIHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWln
aHRBbmRCYXNlbGluZSA9IGZhbHNlOwotICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNS
ZXBsYWNlZCgpKQorICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5s
aW5lQmxvY2soKSkKICAgICAgICAgICAgIHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxp
bmVIZWlnaHRBbmRCYXNlbGluZSA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5iZWhh
dmVzTGlrZVRleHQoKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzTGlu
ZUJyZWFrKCkgfHwgY2hpbGQtPnJlbmRlcmVyKCkucGFyZW50KCkgIT0gJnJlbmRlcmVyKCkpIHsK
QEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZShM
ZWdhY3lJbmxpbmVCb3gqIGNoaWxkKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNo
aWxkU3R5bGUtPmxldHRlclNwYWNpbmcoKSA8IDAgfHwgY2hpbGRTdHlsZS0+dGV4dFNoYWRvdygp
IHx8IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpO
b25lIHx8IGNoaWxkU3R5bGUtPmhhc1Bvc2l0aXZlU3Ryb2tlV2lkdGgoKSB8fCBoYXNNYXJrZXJz
IHx8ICFjaGlsZFN0eWxlLT50ZXh0VW5kZXJsaW5lT2Zmc2V0KCkuaXNBdXRvKCkgfHwgIWNoaWxk
U3R5bGUtPnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkuaXNBdXRvKCkgfHwgY2hpbGRTdHlsZS0+
dGV4dFVuZGVybGluZVBvc2l0aW9uKCkgIT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKQog
ICAgICAgICAgICAgICAgIGNoaWxkLT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwotICAg
ICAgICB9IGVsc2UgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgeworICAgICAg
ICB9IGVsc2UgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkp
IHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJveCYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94
PihjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBpZiAoYm94Lmhhc1JlbmRlck92ZXJm
bG93KCkgfHwgYm94Lmhhc1NlbGZQYWludGluZ0xheWVyKCkpCiAgICAgICAgICAgICAgICAgY2hp
bGQtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CkBAIC0xMjA5LDcgKzEyMDksNyBAQCBM
YXlvdXRVbml0IExlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVz
dG1lbnQoTGF5b3V0VW5pdCBhbGxvdwogICAgICAgICBpZiAoaXM8TGVnYWN5SW5saW5lRmxvd0Jv
eD4oKmNoaWxkKSkKICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgZG93bmNh
c3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKS5jb21wdXRlT3ZlckFubm90YXRpb25BZGp1
c3RtZW50KGFsbG93ZWRQb3NpdGlvbikpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNoaWxkLT5y
ZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVy
ZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5
UG9zaXRpb246OkJlZm9yZSkgeworICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIo
KSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9z
aXRpb246OkJlZm9yZSkgewogICAgICAgICAgICAgYXV0byYgcnVieVJ1biA9IGRvd25jYXN0PFJl
bmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgIFJlbmRlclJ1YnlU
ZXh0KiBydWJ5VGV4dCA9IHJ1YnlSdW4ucnVieVRleHQoKTsKICAgICAgICAgICAgIGlmICghcnVi
eVRleHQpCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBMYXlvdXRVbml0IExlZ2FjeUlubGluZUZsb3dC
b3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsbwogICAg
ICAgICBpZiAoaXM8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNoaWxkKSkKICAgICAgICAgICAgIHJl
c3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oKmNo
aWxkKS5jb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24pKTsK
IAotICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRl
clJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgp
LnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QWZ0ZXIpIHsKKyAgICAgICAgaWYgKGNo
aWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgaXM8UmVuZGVyUnVi
eVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVi
eVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRlcikgewogICAgICAgICAgICAgYXV0byYg
cnVieVJ1biA9IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKTsKICAg
ICAgICAgICAgIFJlbmRlclJ1YnlUZXh0KiBydWJ5VGV4dCA9IHJ1YnlSdW4ucnVieVRleHQoKTsK
ICAgICAgICAgICAgIGlmICghcnVieVRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lJbmxpbmVJdGVyYXRvci5oCmluZGV4IDdjNGI2N2I5MTFjMTY4N2M4MDZjZGY5NDc2
ZGFiYzRjNzE4OTQ2MzAuLjFmYTBmMDZhNmQ5Mjk2MGE0MjQwMTI3ZDA3Yjc3MTEwZTg5MDUzYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVJdGVyYXRvci5o
CkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeU9ic2VydmVyV2ls
bEV4aXRPYmplY3QoT2JzZXJ2ZXIqIG9ic2VydmVyLCBSZW5kZXJPYmplY3QKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0l0ZXJhdG9yVGFyZ2V0KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEFT
U0VSVChvYmplY3QpOyAvLyBUaGUgaXRlcmF0b3Igd2lsbCBvZiBjb3Vyc2UgcmV0dXJuIDAsIGJ1
dCBpdHMgbm90IGFuIGV4cGVjdGVkIGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rpb24uCi0gICAgcmV0
dXJuIG9iamVjdC0+aXNUZXh0T3JMaW5lQnJlYWsoKSB8fCBvYmplY3QtPmlzRmxvYXRpbmcoKSB8
fCBvYmplY3QtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IG9iamVjdC0+aXNSZXBsYWNlZCgp
OworICAgIHJldHVybiBvYmplY3QtPmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgb2JqZWN0LT5pc0Zs
b2F0aW5nKCkgfHwgb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBvYmplY3QtPmlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBPYnNlcnZlcj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAppbmRleCA4
NDhlNGFiOGE2NTA3OTk0MTk0OGE0ZTlkOWUzMDE0ZGEyYzE2MzU4Li43MWQxOTE2ZDQ3MjNiZGZl
ODZhMzExZjZlMzIxZGE0YjFmNDViN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUxpbmVMYXlvdXQuY3BwCkBAIC03MDcsNyArNzA3LDcgQEAgdm9pZCBMZWdhY3lMaW5l
TGF5b3V0Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShMZWdhY3lSb290
SW5saW5lQm8KICAgICB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRpb25zKG1fZmxvdywgbGluZUxv
Z2ljYWxMZWZ0LCBsaW5lTG9naWNhbFJpZ2h0LCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGlzRmly
c3RMaW5lLCBzaG91bGRJbmRlbnRUZXh0LCAwKTsKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmc7
CiAKLSAgICBpZiAoZmlyc3RSdW4gJiYgZmlyc3RSdW4tPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgp
KSB7CisgICAgaWYgKGZpcnN0UnVuICYmIGZpcnN0UnVuLT5yZW5kZXJlcigpLmlzUmVwbGFjZWRP
cklubGluZUJsb2NrKCkpIHsKICAgICAgICAgUmVuZGVyQm94JiByZW5kZXJCb3ggPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KGZpcnN0UnVuLT5yZW5kZXJlcigpKTsKICAgICAgICAgdXBkYXRlTG9naWNh
bElubGluZVBvc2l0aW9ucyhtX2Zsb3csIGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxSaWdo
dCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpc0ZpcnN0TGluZSwgc2hvdWxkSW5kZW50VGV4dCwg
cmVuZGVyQm94LmxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQpAQCAtMTc0MSw3ICsxNzQxLDcgQEAg
dm9pZCBMZWdhY3lMaW5lTGF5b3V0OjpsYXlvdXRMaW5lQm94ZXMoYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0JiByZXBhaW4KICAgICAgICAgICAgIGlmICghaGFzSW5saW5lQ2hpbGQg
JiYgby5pc0lubGluZSgpKQogICAgICAgICAgICAgICAgIGhhc0lubGluZUNoaWxkID0gdHJ1ZTsK
IAotICAgICAgICAgICAgaWYgKG8uaXNSZXBsYWNlZCgpIHx8IG8uaXNGbG9hdGluZygpIHx8IG8u
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChvLmlzUmVwbGFjZWRP
cklubGluZUJsb2NrKCkgfHwgby5pc0Zsb2F0aW5nKCkgfHwgby5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkgewogICAgICAgICAgICAgICAgIFJlbmRlckJveCYgYm94ID0gZG93bmNhc3Q8UmVuZGVy
Qm94PihvKTsKIAogICAgICAgICAgICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IGJveC5o
YXNSZWxhdGl2ZURpbWVuc2lvbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lSb290SW5saW5lQm94LmNwcAppbmRleCA4ZTFhMGZiZWY1NmNmNjEwZWQxN2ZhZDdjNWU4
NGNhNjRjNzVkMDJiLi5lODk1Y2JiNjcxNzBiNjQ0N2VjYzcxM2JhNTFjYjNmYmI2ZTkwNmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3Bw
CkBAIC02NzcsNyArNjc3LDcgQEAgdm9pZCBMZWdhY3lSb290SW5saW5lQm94Ojphc2NlbnRBbmRE
ZXNjZW50Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94LCBHbHlwaE92ZXIKIAogICAgIC8vIFJl
cGxhY2VkIGJveGVzIHdpbGwgcmV0dXJuIDAgZm9yIHRoZSBsaW5lLWhlaWdodCBpZiBsaW5lLWJv
eC1jb250YWluIHNheXMgdGhleSBhcmUKICAgICAvLyBub3QgdG8gYmUgaW5jbHVkZWQuCi0gICAg
aWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgeworICAgIGlmIChib3gucmVuZGVyZXIo
KS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgIGlmIChsaW5lU3R5bGUoKS5s
aW5lQm94Q29udGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpSZXBsYWNlZCkpIHsKICAg
ICAgICAgICAgIGFzY2VudCA9IGJveC5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSgpKTsK
ICAgICAgICAgICAgIGRlc2NlbnQgPSByb3VuZFRvSW50KGJveC5saW5lSGVpZ2h0KCkpIC0gYXNj
ZW50OwpAQCAtODM3LDcgKzgzNyw3IEBAIExheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6
dmVydGljYWxQb3NpdGlvbkZvckJveChMZWdhY3lJbmxpbmVCb3gqIGJveCwgVmVyCiAgICAgICAg
IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6VGV4dEJvdHRvbSkgewog
ICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiArPSBmb250TWV0cmljcy5kZXNjZW50KGJhc2Vs
aW5lVHlwZSgpKTsKICAgICAgICAgICAgIC8vIGxpbmVIZWlnaHQgLSBiYXNlbGluZVBvc2l0aW9u
IGlzIGFsd2F5cyAwIGZvciByZXBsYWNlZCBlbGVtZW50cyAoZXhjZXB0IGlubGluZSBibG9ja3Mp
LCBzbyBkb24ndCBib3RoZXIgd2FzdGluZyB0aW1lIGluIHRoYXQgY2FzZS4KLSAgICAgICAgICAg
IGlmICghcmVuZGVyZXItPmlzUmVwbGFjZWQoKSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09y
SW5saW5lVGFibGUoKSkKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXItPmlzUmVwbGFjZWRPcklu
bGluZUJsb2NrKCkgfHwgcmVuZGVyZXItPmlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpCiAg
ICAgICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiAtPSAocmVuZGVyZXItPmxpbmVIZWlnaHQo
Zmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKSAtIHJlbmRlcmVyLT5iYXNlbGluZVBvc2l0aW9uKGJh
c2VsaW5lVHlwZSgpLCBmaXJzdExpbmUsIGxpbmVEaXJlY3Rpb24pKTsKICAgICAgICAgfSBlbHNl
IGlmICh2ZXJ0aWNhbEFsaWduID09IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlKQogICAg
ICAgICAgICAgdmVydGljYWxQb3NpdGlvbiArPSAtcmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RM
aW5lLCBsaW5lRGlyZWN0aW9uKSAvIDIgKyByZW5kZXJlci0+YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZVR5cGUoKSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKTsKQEAgLTg2MSw3ICs4NjEsNyBA
QCBMYXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3go
TGVnYWN5SW5saW5lQm94KiBib3gsIFZlcgogCiBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6Omlu
Y2x1ZGVMZWFkaW5nRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewotICAgIGlm
IChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9y
TGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCisgICAgaWYgKGJveC5yZW5k
ZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4
dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGF1dG8gbGluZUJveENvbnRhaW4gPSByZW5kZXJlcigpLnN0eWxlKCku
bGluZUJveENvbnRhaW4oKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCBib29sIExlZ2FjeVJvb3RJbmxp
bmVCb3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAog
CiBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVGb250Rm9yQm94KExlZ2FjeUlubGlu
ZUJveCYgYm94KSBjb25zdAogewotICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkg
fHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlr
ZVRleHQoKSkpCisgICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2Nr
KCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVz
TGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoIWJveC5i
ZWhhdmVzTGlrZVRleHQoKSAmJiBpczxMZWdhY3lJbmxpbmVGbG93Qm94Pihib3gpICYmICFkb3du
Y2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94Pihib3gpLmhhc1RleHRDaGlsZHJlbigpKQpAQCAtODgx
LDcgKzg4MSw3IEBAIGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3go
TGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiAKIGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6
aW5jbHVkZUdseXBoc0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsKLSAgICBp
ZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRP
ckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQorICAgIGlmIChib3gucmVu
ZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IChib3gucmVuZGVyZXIoKS5pc1Rl
eHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCFib3guYmVoYXZlc0xpa2VUZXh0KCkgJiYgaXM8TGVn
YWN5SW5saW5lRmxvd0JveD4oYm94KSAmJiAhZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4o
Ym94KS5oYXNUZXh0Q2hpbGRyZW4oKSkKQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIExlZ2FjeVJv
b3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNv
bnN0CiAKIGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJGb3JC
b3goTGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7Ci0gICAgaWYgKGJveC5yZW5kZXJlcigp
LmlzUmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAh
Ym94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKKyAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNl
ZE9ySW5saW5lQmxvY2soKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAm
JiAhYm94LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIGlmICghYm94LmJlaGF2ZXNMaWtlVGV4dCgpICYmIGlzPExlZ2FjeUlubGluZUZsb3dCb3g+
KGJveCkgJiYgIWRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkuaGFzVGV4dENoaWxk
cmVuKCkpCkBAIC05MDMsNyArOTAzLDcgQEAgYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNs
dWRlSW5pdGlhbExldHRlckZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIAogYm9v
bCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94KExlZ2FjeUlubGluZUJv
eCYgYm94KSBjb25zdAogewotICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwg
KGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRl
eHQoKSkpCisgICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkg
fHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlr
ZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiByZW5kZXJlcigp
LnN0eWxlKCkubGluZUJveENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFpbjo6SW5saW5l
Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDNlMmE4
YjAyNmRmNWI3NzM4MTAzNjM1M2UyZWExMGFiMTM0NzYwZjMuLmIxM2U5N2ExMTZhZTNhMTdhZmJj
NTAzNmUyNjM5ZmE1YTVhMjMyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMzkzLDggKzM5Myw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZVBvc2l0
aW9uZWRPYmplY3RzSWZOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjCiAgICAg
ICAgIC8vIFRoZXkgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIG91ciBwb3NpdGlvbmVkIG9iamVjdHMg
bGlzdCBkdXJpbmcgbGF5b3V0LgogICAgICAgICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBwYXJl
bnQoKTsKICAgICAgICAgd2hpbGUgKGNvbnRhaW5pbmdCbG9jayAmJiAhaXM8UmVuZGVyVmlldz4o
KmNvbnRhaW5pbmdCbG9jaykKLSAgICAgICAgICAgICYmIChjb250YWluaW5nQmxvY2stPnN0eWxl
KCkucG9zaXRpb24oKSA9PSBQb3NpdGlvblR5cGU6OlN0YXRpYyB8fCAoY29udGFpbmluZ0Jsb2Nr
LT5pc0lubGluZSgpICYmICFjb250YWluaW5nQmxvY2stPmlzUmVwbGFjZWQoKSkpKSB7Ci0gICAg
ICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gUG9zaXRp
b25UeXBlOjpSZWxhdGl2ZSAmJiBjb250YWluaW5nQmxvY2stPmlzSW5saW5lKCkgJiYgIWNvbnRh
aW5pbmdCbG9jay0+aXNSZXBsYWNlZCgpKSB7CisgICAgICAgICAgICAmJiAoY29udGFpbmluZ0Js
b2NrLT5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpTdGF0aWMgfHwgKGNvbnRh
aW5pbmdCbG9jay0+aXNJbmxpbmUoKSAmJiAhY29udGFpbmluZ0Jsb2NrLT5pc1JlcGxhY2VkT3JJ
bmxpbmVCbG9jaygpKSkpIHsKKyAgICAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2stPnN0eWxl
KCkucG9zaXRpb24oKSA9PSBQb3NpdGlvblR5cGU6OlJlbGF0aXZlICYmIGNvbnRhaW5pbmdCbG9j
ay0+aXNJbmxpbmUoKSAmJiAhY29udGFpbmluZ0Jsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9j
aygpKSB7CiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2Nr
LT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTQwOCw3ICs0MDgsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVk
T2JqZWN0c0lmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgYwogdm9pZCBSZW5k
ZXJCbG9jazo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSYgbmV3U3R5bGUpCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlID0g
aGFzSW5pdGlhbGl6ZWRTdHlsZSgpID8gJnN0eWxlKCkgOiBudWxscHRyOwotICAgIHNldFJlcGxh
Y2VkKG5ld1N0eWxlLmlzRGlzcGxheUlubGluZVR5cGUoKSk7CisgICAgLy8gRklYTUU6IFNob3Vs
ZCBjaGFuZ2UgdGhlIGV4cHJlc3Npb24gYmVsb3cgdG8gbmV3U3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpJbmxpbmVCbG9jay4KKyAgICBzZXRSZXBsYWNlZE9ySW5saW5lQmxvY2sobmV3
U3R5bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpKTsKICAgICBpZiAob2xkU3R5bGUpCiAgICAgICAg
IHJlbW92ZVBvc2l0aW9uZWRPYmplY3RzSWZOZWVkZWQoKm9sZFN0eWxlLCBuZXdTdHlsZSk7CiAg
ICAgUmVuZGVyQm94OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwpAQCAtODc2LDcg
Kzg3Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkK
ICAgICAgICAgTGlzdEhhc2hTZXQ8TGVnYWN5Um9vdElubGluZUJveCo+IGxpbmVCb3hlczsKICAg
ICAgICAgZm9yIChJbmxpbmVXYWxrZXIgd2Fsa2VyKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
KnRoaXMpKTsgIXdhbGtlci5hdEVuZCgpOyB3YWxrZXIuYWR2YW5jZSgpKSB7CiAgICAgICAgICAg
ICBSZW5kZXJPYmplY3QmIHJlbmRlcmVyID0gKndhbGtlci5jdXJyZW50KCk7Ci0gICAgICAgICAg
ICBpZiAoIXJlbmRlcmVyLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChyZW5kZXJlci5pc1Jl
cGxhY2VkKCkgfHwgcmVuZGVyZXIuaXNGbG9hdGluZygpKSkgeworICAgICAgICAgICAgaWYgKCFy
ZW5kZXJlci5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVuZGVyZXIuaXNSZXBsYWNlZE9y
SW5saW5lQmxvY2soKSB8fCByZW5kZXJlci5pc0Zsb2F0aW5nKCkpKSB7CiAgICAgICAgICAgICAg
ICAgUmVuZGVyQm94JiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsKICAgICAg
ICAgICAgICAgICBib3gubGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgICAgICAgICBpZiAoYm94
LmlubGluZUJveFdyYXBwZXIoKSkKQEAgLTExODAsNyArMTE4MSw3IEBAIGJvb2wgUmVuZGVyQmxv
Y2s6OnBhaW50Q2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWNoaWxk
LmlzRmxvYXRpbmcoKSAmJiBjaGlsZC5pc1JlcGxhY2VkKCkgJiYgdXNlUHJpbnRSZWN0ICYmIGNo
aWxkLmhlaWdodCgpIDw9IHZpZXcoKS5wcmludFJlY3QoKS5oZWlnaHQoKSkgeworICAgIGlmICgh
Y2hpbGQuaXNGbG9hdGluZygpICYmIGNoaWxkLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYg
dXNlUHJpbnRSZWN0ICYmIGNoaWxkLmhlaWdodCgpIDw9IHZpZXcoKS5wcmludFJlY3QoKS5oZWln
aHQoKSkgewogICAgICAgICAvLyBQYWdpbmF0ZSBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVtZW50
cy4KICAgICAgICAgaWYgKGFic29sdXRlQ2hpbGRZICsgY2hpbGQuaGVpZ2h0KCkgPiB2aWV3KCku
cHJpbnRSZWN0KCkubWF4WSgpKSB7CiAgICAgICAgICAgICBpZiAoYWJzb2x1dGVDaGlsZFkgPCB2
aWV3KCkudHJ1bmNhdGVkQXQoKSkKQEAgLTIxNzYsNyArMjE3Nyw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGNvbnN0IFJlCiAgICAgaWYgKGlzVGFibGUoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6
cG9zaXRpb25Gb3JQb2ludChwb2ludCwgZnJhZ21lbnQpOwogCi0gICAgaWYgKGlzUmVwbGFjZWQo
KSkgeworICAgIGlmIChpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNlZW1zIHdyb25nIHdoZW4gdGhlIG9iamVjdCdzIHdyaXRpbmctbW9kZSBkb2Vz
bid0IG1hdGNoIHRoZSBsaW5lJ3Mgd3JpdGluZy1tb2RlLgogICAgICAgICBMYXlvdXRVbml0IHBv
aW50TG9naWNhbExlZnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcG9pbnQueCgpIDog
cG9pbnQueSgpOwogICAgICAgICBMYXlvdXRVbml0IHBvaW50TG9naWNhbFRvcCA9IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludC55KCkgOiBwb2ludC54KCk7CkBAIC0yNDI5LDcgKzI0
MzAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sCiAgICAgLy8gdGhlIGJhc2UgY2xhc3MuICBJ
ZiB3ZSdyZSBiZWluZyBxdWVyaWVkIGFzIHRob3VnaCB3ZSdyZSB0aGUgcm9vdCBsaW5lCiAgICAg
Ly8gYm94LCB0aGVuIHRoZSBmYWN0IHRoYXQgd2UncmUgYW4gaW5saW5lLWJsb2NrIGlzIGlycmVs
ZXZhbnQsIGFuZCB3ZSBiZWhhdmUKICAgICAvLyBqdXN0IGxpa2UgYSBibG9jay4KLSAgICBpZiAo
aXNSZXBsYWNlZCgpICYmIGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKQorICAgIGlmIChpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpICYmIGxpbmVQb3NpdGlvbk1v
ZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKQogICAgICAgICByZXR1cm4gUmVuZGVyQm94
OjpsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKIAog
ICAgIGlmIChmaXJzdExpbmUgJiYgdmlldygpLnVzZXNGaXJzdExpbmVSdWxlcygpKSB7CkBAIC0y
NDQ3LDcgKzI0NDgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaQogICAgIC8vIHRoZSBiYXNl
IGNsYXNzLiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhlIHJvb3Qg
bGluZQogICAgIC8vIGJveCwgdGhlbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIGFuIGlubGluZS1ibG9j
ayBpcyBpcnJlbGV2YW50LCBhbmQgd2UgYmVoYXZlCiAgICAgLy8ganVzdCBsaWtlIGEgYmxvY2su
Ci0gICAgaWYgKGlzUmVwbGFjZWQoKSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgeworICAgIGlmIChpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpICYmIGxp
bmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSB7CiAgICAgICAgIC8v
IEZvciAibGVhZiIgdGhlbWUgb2JqZWN0cywgbGV0IHRoZSB0aGVtZSBkZWNpZGUgd2hhdCB0aGUg
YmFzZWxpbmUgcG9zaXRpb24gaXMuCiAgICAgICAgIC8vIEZJWE1FOiBNaWdodCBiZSBiZXR0ZXIg
dG8gaGF2ZSBhIGN1c3RvbSBDU1MgcHJvcGVydHkgaW5zdGVhZCwgc28gdGhhdCBpZiB0aGUgdGhl
bWUKICAgICAgICAgLy8gaXMgdHVybmVkIG9mZiwgY2hlY2tib3hlcy9yYWRpb3Mgd2lsbCBzdGls
bCBoYXZlIGRlY2VudCBiYXNlbGluZXMuCkBAIC0yNTc2LDcgKzI1NzcsNyBAQCBSZW5kZXJCbG9j
ayogUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKICAgICAgICAgaWYgKGhhc1Bz
ZXVkbykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRC
bG9jayA9IGZpcnN0TGluZUJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAgaWYgKGZpcnN0TGluZUJs
b2NrLT5pc1JlcGxhY2VkKCkgfHwgZmlyc3RMaW5lQmxvY2stPmlzRmxvYXRpbmcoKQorICAgICAg
ICBpZiAoZmlyc3RMaW5lQmxvY2stPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgZmlyc3RM
aW5lQmxvY2stPmlzRmxvYXRpbmcoKQogICAgICAgICAgICAgfHwgIXBhcmVudEJsb2NrIHx8IHBh
cmVudEJsb2NrLT5maXJzdENoaWxkKCkgIT0gZmlyc3RMaW5lQmxvY2sgfHwgIWlzUmVuZGVyQmxv
Y2tGbG93T3JSZW5kZXJCdXR0b24oKnBhcmVudEJsb2NrKSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBmaXJzdExpbmVCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihwYXJlbnRCbG9j
ayk7CkBAIC0yNTk5LDcgKzI2MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJsb2NrKiBmaW5k
Rmlyc3RMZXR0ZXJCbG9jayhSZW5kZXJCbG9jayogc3RhcnQpCiAgICAgICAgICAgICByZXR1cm4g
Zmlyc3RMZXR0ZXJCbG9jazsKIAogICAgICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRCbG9jayA9
IGZpcnN0TGV0dGVyQmxvY2stPnBhcmVudCgpOwotICAgICAgICBpZiAoZmlyc3RMZXR0ZXJCbG9j
ay0+aXNSZXBsYWNlZCgpIHx8ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRCbG9jay0+Zmlyc3RDaGls
ZCgpICE9IGZpcnN0TGV0dGVyQmxvY2sKKyAgICAgICAgaWYgKGZpcnN0TGV0dGVyQmxvY2stPmlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgIXBhcmVudEJsb2NrIHx8IHBhcmVudEJsb2NrLT5m
aXJzdENoaWxkKCkgIT0gZmlyc3RMZXR0ZXJCbG9jawogICAgICAgICAgICAgfHwgIWlzUmVuZGVy
QmxvY2tGbG93T3JSZW5kZXJCdXR0b24oKnBhcmVudEJsb2NrKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBmaXJzdExldHRlckJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KHBhcmVudEJsb2NrKTsKQEAgLTI2NDcsNyArMjY0OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmdldEZpcnN0TGV0dGVyKFJlbmRlck9iamVjdComIGZpcnN0TGV0dGVyLCBSZW5kZXJFbGVtZW50
KiYgZmlyCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmaXJzdExldHRlciA9IGN1cnJlbnQubmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfSBlbHNlIGlm
IChjdXJyZW50LmlzUmVwbGFjZWQoKSB8fCBpczxSZW5kZXJCdXR0b24+KGN1cnJlbnQpIHx8IGlz
PFJlbmRlck1lbnVMaXN0PihjdXJyZW50KSkKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Lmlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgaXM8UmVuZGVyQnV0dG9uPihjdXJyZW50KSB8fCBp
czxSZW5kZXJNZW51TGlzdD4oY3VycmVudCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZWxzZSBpZiAoY3VycmVudC5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpIHx8IGN1
cnJlbnQuaXNSZW5kZXJHcmlkKCkpCiAgICAgICAgICAgICBmaXJzdExldHRlciA9IGN1cnJlbnQu
bmV4dFNpYmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXgg
MjFlNjIxMGU1OWMzMjdhOGM3NDI1YWQ0MGYwNzFiZDMzMTc3M2U0ZS4uZGU3Y2FjYThkZmY1NDQ3
ZWNkYmIyZTNiMWQwMDBkNzk3NGU0ZDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKQEAgLTM5NCw3ICszOTQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhZGp1
c3RCb3JkZXJCb3hSZWN0Rm9yUGFpbnRpbmcoTGF5b3V0UmVjdCYpIG92ZXJyaWRlOwogICAgIExh
eW91dFJlY3QgcGFpbnRSZWN0VG9DbGlwT3V0RnJvbUJvcmRlcihjb25zdCBMYXlvdXRSZWN0Jikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGlzSW5saW5lKCkgJiYgaXNSZXBsYWNlZCgpOyB9CisgICAgYm9vbCBpc0lu
bGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzSW5saW5lKCkg
JiYgaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKTsgfQogICAgIAogICAgIHZvaWQgYWJzb2x1dGVS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggM2U3ZTBjY2UxNTkyMDQzYThlYjE0
OTkwODQwNjI2MDc5MDRjZjRmMC4uNDc5NWRiN2UzMDdkNzZkOWNhYTQxZTg4ZTgzM2M2MWQ1OWVi
ZTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
QEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVidWlsZEZsb2F0aW5n
T2JqZWN0U2V0RnJvbUludHJ1ZGluZ0Zsb2F0cygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAv
LyBJbmxpbmUgYmxvY2tzIGFyZSBjb3ZlcmVkIGJ5IHRoZSBpc1JlcGxhY2VkKCkgY2hlY2sgaW4g
dGhlIGF2b2lkRmxvYXRzIG1ldGhvZC4KKyAgICAvLyBJbmxpbmUgYmxvY2tzIGFyZSBjb3ZlcmVk
IGJ5IHRoZSBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIGNoZWNrIGluIHRoZSBhdm9pZEZsb2F0
cyBtZXRob2QuCiAgICAgaWYgKGF2b2lkc0Zsb2F0cygpIHx8IGlzRG9jdW1lbnRFbGVtZW50UmVu
ZGVyZXIoKSB8fCBpc1JlbmRlclZpZXcoKSB8fCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgaXNUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMp
CiAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+Y2xlYXIoKTsKQEAgLTM0MjUsNyArMzQy
NSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRX
aXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgIExheW91dFBvaW50IHBvaW50
KHBvaW50SW5Mb2dpY2FsQ29udGVudHMueCgpLCBjbG9zZXN0UnVuLT5saW5lKCktPmJsb2NrRGly
ZWN0aW9uUG9pbnRJbkxpbmUoKSk7CiAgICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgICAgIHBvaW50ID0gcG9pbnQudHJhbnNwb3NlZFBvaW50KCk7Ci0gICAg
ICAgIGlmIChjbG9zZXN0UnVuLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkKKyAgICAgICAgaWYg
KGNsb3Nlc3RSdW4tPnJlbmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkKICAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVz
KCp0aGlzLCBjb25zdF9jYXN0PFJlbmRlckJveCY+KGRvd25jYXN0PFJlbmRlckJveD4oY2xvc2Vz
dFJ1bi0+cmVuZGVyZXIoKSkpLCBwb2ludCk7CiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFJl
bmRlck9iamVjdCY+KGNsb3Nlc3RSdW4tPnJlbmRlcmVyKCkpLnBvc2l0aW9uRm9yUG9pbnQocG9p
bnQsIG51bGxwdHIpOwogICAgIH0KQEAgLTM5OTcsNyArMzk5Nyw3IEBAIFJlbmRlck9iamVjdCog
SW5saW5lTWluTWF4SXRlcmF0b3I6Om5leHQoKQogICAgIGJvb2wgb2xkRW5kT2ZJbmxpbmUgPSBl
bmRPZklubGluZTsKICAgICBlbmRPZklubGluZSA9IGZhbHNlOwogICAgIGRvIHsKLSAgICAgICAg
aWYgKCFvbGRFbmRPZklubGluZSAmJiAoY3VycmVudCAmJiAhY3VycmVudC0+aXNGbG9hdGluZygp
ICYmICFjdXJyZW50LT5pc1JlcGxhY2VkKCkgJiYgIWN1cnJlbnQtPmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSkKKyAgICAgICAgaWYgKCFvbGRFbmRPZklubGluZSAmJiAoY3VycmVudCAmJiAhY3Vy
cmVudC0+aXNGbG9hdGluZygpICYmICFjdXJyZW50LT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygp
ICYmICFjdXJyZW50LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkpCiAgICAgICAgICAgICByZXN1
bHQgPSBjdXJyZW50LT5maXJzdENoaWxkU2xvdygpOwogICAgICAgICBlbHNlIGlmIChpbml0aWFs
KSB7CiAgICAgICAgICAgICByZXN1bHQgPSBwYXJlbnQuZmlyc3RDaGlsZCgpOwpAQCAtNDAyOCw3
ICs0MDI4LDcgQEAgUmVuZGVyT2JqZWN0KiBJbmxpbmVNaW5NYXhJdGVyYXRvcjo6bmV4dCgpCiAg
ICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCFy
ZXN1bHQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIChyZXN1bHQtPmlzVGV4dE9yTGluZUJy
ZWFrKCkgfHwgcmVzdWx0LT5pc0Zsb2F0aW5nKCkgfHwgcmVzdWx0LT5pc1JlcGxhY2VkKCkgfHwg
cmVzdWx0LT5pc1JlbmRlcklubGluZSgpKSkKKyAgICAgICAgaWYgKCFyZXN1bHQtPmlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpICYmIChyZXN1bHQtPmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgcmVzdWx0
LT5pc0Zsb2F0aW5nKCkgfHwgcmVzdWx0LT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IHJl
c3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
dXJyZW50ID0gcmVzdWx0OwpAQCAtNDEyNiw3ICs0MTI2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWwKICAgICBib29sIGFkZGVkU3RhcnRQdW5jdHVhdGlvbkhhbmcgPSBmYWxzZTsKICAgICAK
ICAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGNoaWxkSXRlcmF0b3IubmV4dCgpKSB7
Ci0gICAgICAgIGJvb2wgYXV0b1dyYXAgPSBjaGlsZC0+aXNSZXBsYWNlZCgpID8gY2hpbGQtPnBh
cmVudCgpLT5zdHlsZSgpLmF1dG9XcmFwKCkgOgorICAgICAgICBib29sIGF1dG9XcmFwID0gY2hp
bGQtPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgPyBjaGlsZC0+cGFyZW50KCktPnN0eWxlKCku
YXV0b1dyYXAoKSA6CiAgICAgICAgICAgICBjaGlsZC0+c3R5bGUoKS5hdXRvV3JhcCgpOwogICAg
ICAgICBpZiAoIWNoaWxkLT5pc0JSKCkpIHsKICAgICAgICAgICAgIC8vIFN0ZXAgT25lOiBkZXRl
cm1pbmUgd2hldGhlciBvciBub3Qgd2UgbmVlZCB0byB0ZXJtaW5hdGUgb3VyIGN1cnJlbnQgbGlu
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzI4MWM2MzliZGI3
NzIxYTUwODBiZTA4OGJhYWI5YjYwZWE4YzcxNy4uMTgxMmRjOTExMmVmZWFiYTJiMDBlNWYxZGMx
OTYyYTBjMjc5NWZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTI0MDAsNyArMjQwMCw3IEBAIExheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0CiAgICAgaWYgKGlzSW5G
bG93UG9zaXRpb25lZCgpKQogICAgICAgICBvZmZzZXQgKz0gb2Zmc2V0Rm9ySW5GbG93UG9zaXRp
b24oKTsKIAotICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpCisgICAgaWYgKCFp
c0lubGluZSgpIHx8IGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIG9mZnNldCAr
PSB0b3BMZWZ0TG9jYXRpb25PZmZzZXQoKTsKIAogICAgIGlmIChpczxSZW5kZXJCb3g+KGNvbnRh
aW5lcikpCkBAIC0yNDU3LDcgKzI0NTcsNyBAQCB2b2lkIFJlbmRlckJveDo6cG9zaXRpb25MaW5l
Qm94KExlZ2FjeUlubGluZUVsZW1lbnRCb3gmIGJveCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxv
Y2soKSkgewogICAgICAgICBzZXRMb2NhdGlvbihMYXlvdXRQb2ludChib3gudG9wTGVmdCgpKSk7
CiAgICAgICAgIHNldElubGluZUJveFdyYXBwZXIoJmJveCk7CiAgICAgfQpAQCAtMzA4NCw3ICsz
MDg0LDcgQEAgUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbmkKICAgICBjb21wdXRlZFZhbHVlcy5tX3Bv
c2l0aW9uID0gbG9naWNhbFRvcDsKIAogICAgIC8vIENlbGwgaGVpZ2h0IGlzIG1hbmFnZWQgYnkg
dGhlIHRhYmxlIGFuZCBpbmxpbmUgbm9uLXJlcGxhY2VkIGVsZW1lbnRzIGRvIG5vdCBzdXBwb3J0
IGEgaGVpZ2h0IHByb3BlcnR5LgotICAgIGlmIChpc1RhYmxlQ2VsbCgpIHx8IChpc0lubGluZSgp
ICYmICFpc1JlcGxhY2VkKCkpKQorICAgIGlmIChpc1RhYmxlQ2VsbCgpIHx8IChpc0lubGluZSgp
ICYmICFpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVk
VmFsdWVzOwogCiAgICAgTGVuZ3RoIGg7CkBAIC0zMjgzLDcgKzMyODMsNyBAQCBib29sIFJlbmRl
ckJveDo6c2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRDYWxjdWxhdGlvbihjb25z
dCBSZW5kZXJCb3gmCiAKIGJvb2wgUmVuZGVyQm94OjpzaG91bGRUcmVhdENoaWxkQXNSZXBsYWNl
ZEluVGFibGVDZWxscygpIGNvbnN0CiB7Ci0gICAgaWYgKGlzUmVwbGFjZWQoKSkKKyAgICBpZiAo
aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0
dXJuIGVsZW1lbnQoKSAmJiAoZWxlbWVudCgpLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpIHx8IGlz
PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpOwogfQpAQCAtMzg0OCw3ICszODQ4LDcgQEAg
c3RhdGljIHZvaWQgY29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9naWNhbExl
ZnQsIExlbmd0aCYgbG9naWNhbFJpZ2gKIAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1
ZXMsIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCkgY29uc3QKIHsKLSAgICBpZiAo
aXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFBvc2l0aW9uZWQgcmVwbGFjZWQgZWxlbWVudHMgaW5zaWRlIGEgZmxv
dyB0aHJlYWQgYXJlIG5vdCB3b3JraW5nIHByb3Blcmx5CiAgICAgICAgIC8vIHdpdGggdmFyaWFi
bGUgd2lkdGggZnJhZ21lbnRzIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5ODk2ICkuCiAgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVw
bGFjZWQoY29tcHV0ZWRWYWx1ZXMpOwpAQCAtNDIzOCw3ICs0MjM4LDcgQEAgc3RhdGljIHZvaWQg
Y29tcHV0ZUJsb2NrU3RhdGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsVG9wLCBMZW5ndGgmIGxv
Z2ljYWxCb3R0b20KIAogdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhl
aWdodChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAog
ewotICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxv
Y2soKSkgewogICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChj
b21wdXRlZFZhbHVlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00OTIyLDcgKzQ5MjIs
NyBAQCBib29sIFJlbmRlckJveDo6Y3JlYXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QK
IAogYm9vbCBSZW5kZXJCb3g6OmF2b2lkc0Zsb2F0cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlz
UmVwbGFjZWQoKSB8fCBpc0hSKCkgfHwgaXNMZWdlbmQoKSB8fCBpc0ZpZWxkc2V0KCkgfHwgY3Jl
YXRlc05ld0Zvcm1hdHRpbmdDb250ZXh0KCk7CisgICAgcmV0dXJuIGlzUmVwbGFjZWRPcklubGlu
ZUJsb2NrKCkgfHwgaXNIUigpIHx8IGlzTGVnZW5kKCkgfHwgaXNGaWVsZHNldCgpIHx8IGNyZWF0
ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpOwogfQogCiB2b2lkIFJlbmRlckJveDo6YWRkVmlzdWFs
RWZmZWN0T3ZlcmZsb3coKQpAQCAtNTA5NSw3ICs1MDk1LDcgQEAgYm9vbCBSZW5kZXJCb3g6Omhh
c1Vuc3BsaXR0YWJsZVNjcm9sbGluZ092ZXJmbG93KCkgY29uc3QKIAogYm9vbCBSZW5kZXJCb3g6
OmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzUmVw
bGFjZWQoKQorICAgIHJldHVybiBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpCiAgICAgICAgIHx8
IGhhc1Vuc3BsaXR0YWJsZVNjcm9sbGluZ092ZXJmbG93KCkKICAgICAgICAgfHwgKHBhcmVudCgp
ICYmIGlzV3JpdGluZ01vZGVSb290KCkpCiAgICAgICAgIHx8IChpc0Zsb2F0aW5nKCkgJiYgc3R5
bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgc3R5bGUoKS5pbml0
aWFsTGV0dGVyRHJvcCgpID4gMCkKQEAgLTUxMDQsMTQgKzUxMDQsMTQgQEAgYm9vbCBSZW5kZXJC
b3g6OmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIGNvbnN0CiAKIExheW91dFVuaXQgUmVu
ZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAog
ewotICAgIGlmIChpc1JlcGxhY2VkKCkpCisgICAgaWYgKGlzUmVwbGFjZWRPcklubGluZUJsb2Nr
KCkpCiAgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtX21hcmdp
bkJveC50b3AoKSArIGhlaWdodCgpICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiBtX21hcmdpbkJv
eC5yaWdodCgpICsgd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKTsKICAgICByZXR1cm4gMDsK
IH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSwgYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgLypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0CiB7Ci0g
ICAgaWYgKGlzUmVwbGFjZWQoKSkgeworICAgIGlmIChpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygp
KSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmRUb0ludChkaXJlY3Rpb24gPT0gSG9yaXpv
bnRhbExpbmUgPyBtX21hcmdpbkJveC50b3AoKSArIGhlaWdodCgpICsgbV9tYXJnaW5Cb3guYm90
dG9tKCkgOiBtX21hcmdpbkJveC5yaWdodCgpICsgd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQo
KSk7CiAgICAgICAgIGlmIChiYXNlbGluZVR5cGUgPT0gQWxwaGFiZXRpY0Jhc2VsaW5lKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApp
bmRleCBiMjI1YTdiMjZlNjM0MGVjMDY0NTM1MWUxYzg3OTBlODA0MDA0NjViLi4yYzY4YjlhNTcy
Njk1NGY4Y2IxOWZlOTYzNTlhODNhOWUwMTk0NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCkBAIC03MTAsNyArNzEwLDcgQEAgcHJvdGVjdGVkOgogICAgIExheW91dFVuaXQg
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGhMZW5n
dGgsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGJvcmRlckFu
ZFBhZGRpbmcpIGNvbnN0OwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBj
b21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhl
aWdodExlbmd0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVp
Z2h0LCBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0OwogICAgIAotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1Jl
cGxhY2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSAmJiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKTsgfQog
CiAgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29y
ZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqLCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCBmMDVkNDBi
M2RhMzY5MzBkYjgwNTBkZmQzNGM3NmYwMDAyMjdmMzUwLi4yMjc2N2ViMmNmY2FiMzE0YTcxNTA0
NmRhNjUwZTM0MDQzMjhlMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjI1LDcgKzIyNSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgYm9v
bCBjYW5IYXZlQm94SW5mb0luRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiAhaXNGbG9hdGluZygp
ICYmICFpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5lKCkgJiYgIWlzVGFibGVDZWxsKCkgJiYgaXNS
ZW5kZXJCbG9jaygpICYmICFpc1JlbmRlclNWR0Jsb2NrKCk7IH0KKyAgICBib29sIGNhbkhhdmVC
b3hJbmZvSW5GcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuICFpc0Zsb2F0aW5nKCkgJiYgIWlzUmVw
bGFjZWRPcklubGluZUJsb2NrKCkgJiYgIWlzSW5saW5lKCkgJiYgIWlzVGFibGVDZWxsKCkgJiYg
aXNSZW5kZXJCbG9jaygpICYmICFpc1JlbmRlclNWR0Jsb2NrKCk7IH0KIAogICAgIHZvaWQgZ2V0
R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgRmxvYXRTaXplJiBwaGFzZSwgRmxvYXRTaXplJiB0aWxlU2l6ZSkgY29uc3Q7
CiAgICAgdm9pZCBjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwCmluZGV4IDdlMThmZjBhNmU1ZmVhNDJkNjM2YTQ4ZTExMDcyYzYzNjMyNzRiOGIuLmFlZDMy
ZTY5ZDI4YWU4ZWIyNzNhYmFmODE4NGMzMjZhYTU3OTM0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBA
IC0xMDAzLDcgKzEwMDMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBw
bHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgY2hpbGQtPmNsZWFyT3ZlcnJpZGluZ0NvbnRlbnRTaXplKCk7
Ci0gICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNlZCgpICYm
IChjaGlsZC0+c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IGNoaWxk
LT5zdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkKKyAgICAgICAgaWYg
KHJlbGF5b3V0Q2hpbGRyZW4gfHwgKGNoaWxkLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpICYm
IChjaGlsZC0+c3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpIHx8IGNoaWxk
LT5zdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkKICAgICAgICAgICAg
IHx8IChjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSAmJiBpczxSZW5kZXJCbG9ja0Zs
b3c+KCpjaGlsZCkpKSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dChN
YXJrT25seVRoaXMpOwogCkBAIC0xMTA0LDcgKzExMDQsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6Y2xlYXJMaW5lQ2xhbXAoKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgY2hpbGQtPmNsZWFyT3ZlcnJpZGluZ0NvbnRlbnRTaXplKCk7Ci0gICAgICAgIGlm
ICgoY2hpbGQtPmlzUmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSkpCisgICAgICAgIGlmICgoY2hpbGQtPmlzUmVwbGFjZWRPcklubGluZUJsb2Nr
KCkgJiYgKGNoaWxkLT5zdHlsZSgpLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwg
Y2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKQogICAgICAg
ICAgICAgfHwgKGNoaWxkLT5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpICYmIGlzPFJlbmRlckJs
b2NrRmxvdz4oKmNoaWxkKSkpIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5
b3V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRl
eCBlNzllMGZkNzA1Y2RhZDcxYmIxZWNkNDI2MDI0YzZjZjE4MDI1NDY0Li5jMGQyMjgyMTVhZWM1
YWNlNzc5ZDQ1ZjI3OGUzZjM5MzZiMjllN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBDb2xvciBSZW5kZXJFbGVt
ZW50OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogCiBib29sIFJlbmRlckVsZW1l
bnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wmIGluc2lkZUZpeGVk
KSBjb25zdAogewotICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpIHsKKyAgICBp
ZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICBw
b2ludCA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIFVzZVRyYW5zZm9ybXMsICZpbnNp
ZGVGaXhlZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE2MDksMTQgKzE2MDks
MTQgQEAgYm9vbCBSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBv
aW50LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3QKICAgICAgICAgfQogICAgICAgICBBU1NFUlQo
byk7CiAKLSAgICAgICAgaWYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlzUmVwbGFjZWQoKSkgewor
ICAgICAgICBpZiAoIW8tPmlzSW5saW5lKCkgfHwgby0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2so
KSkgewogICAgICAgICAgICAgcG9pbnQgPSBvLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgp
LCBVc2VUcmFuc2Zvcm1zLCAmaW5zaWRlRml4ZWQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocC0+bm9kZSgpICYmIHAtPm5vZGUoKSA9PSBlbGVt
ZW50KCkgJiYgaXM8UmVuZGVyVGV4dD4oKm8pICYmICFJbmxpbmVJdGVyYXRvcjo6Zmlyc3RUZXh0
Qm94Rm9yKGRvd25jYXN0PFJlbmRlclRleHQ+KCpvKSkpIHsKICAgICAgICAgICAgIC8vIGRvIG5v
dGhpbmcgLSBza2lwIHVucmVuZGVyZWQgd2hpdGVzcGFjZSB0aGF0IGlzIGEgY2hpbGQgb3IgbmV4
dCBzaWJsaW5nIG9mIHRoZSBhbmNob3IKLSAgICAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJUZXh0
PigqbykgfHwgby0+aXNSZXBsYWNlZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVy
VGV4dD4oKm8pIHx8IG8tPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgICAg
IHBvaW50ID0gRmxvYXRQb2ludCgpOwogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpv
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KCpvKTsKQEAgLTE2NDAsNyArMTY0MCw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6Z2V0
TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBwb2ludCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0
CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6Z2V0VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9p
bnQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdAogewotICAgIGlmICghaXNJbmxpbmUoKSB8fCBp
c1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZE9ySW5saW5l
QmxvY2soKSkgewogICAgICAgICBwb2ludCA9IGxvY2FsVG9BYnNvbHV0ZShMYXlvdXRQb2ludChk
b3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKS5zaXplKCkpLCBVc2VUcmFuc2Zvcm1zLCAmaW5zaWRl
Rml4ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjYzLDcgKzE2NjMsNyBA
QCBib29sIFJlbmRlckVsZW1lbnQ6OmdldFRyYWlsaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50
LCBib29sJiBpbnNpZGVGaXhlZCkgY29ucwogICAgICAgICAgICAgbyA9IHByZXY7CiAgICAgICAg
IH0KICAgICAgICAgQVNTRVJUKG8pOwotICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm8pIHx8
IG8tPmlzUmVwbGFjZWQoKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm8pIHx8IG8t
PmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgICAgIHBvaW50ID0gRmxvYXRQ
b2ludCgpOwogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpvKSkgewogICAgICAgICAg
ICAgICAgIExheW91dFJlY3QgbGluZXNCb3ggPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbykubGlu
ZXNCb3VuZGluZ0JveCgpOwpAQCAtMTY5MSw3ICsxNjkxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJF
bGVtZW50OjphYnNvbHV0ZUFuY2hvclJlY3QoYm9vbCogaW5zaWRlRml4ZWQpIGNvbnN0CiAgICAg
RmxvYXRQb2ludCBsb3dlclJpZ2h0ID0gdHJhaWxpbmc7CiAKICAgICAvLyBWZXJ0aWNhbCB3cml0
aW5nIG1vZGVzIG1pZ2h0IG1lYW4gdGhlIGxlYWRpbmcgcG9pbnQgaXMgbm90IGluIHRoZSB0b3Ag
bGVmdAotICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoIWlz
SW5saW5lKCkgfHwgaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICB1cHBlckxl
ZnQgPSBGbG9hdFBvaW50KHN0ZDo6bWluKGxlYWRpbmcueCgpLCB0cmFpbGluZy54KCkpLCBzdGQ6
Om1pbihsZWFkaW5nLnkoKSwgdHJhaWxpbmcueSgpKSk7CiAgICAgICAgIGxvd2VyUmlnaHQgPSBG
bG9hdFBvaW50KHN0ZDo6bWF4KGxlYWRpbmcueCgpLCB0cmFpbGluZy54KCkpLCBzdGQ6Om1heChs
ZWFkaW5nLnkoKSwgdHJhaWxpbmcueSgpKSk7CiAgICAgfSAvLyBPdGhlcndpc2UsIGl0J3Mgbm90
IG9idmlvdXMgd2hhdCB0byBkby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGdWxsU2NyZWVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
dWxsU2NyZWVuLmNwcAppbmRleCBjNWNhZGYwMTgwYWMzMTg2MDViZTFjNzJmOTAyMDA4YzRlOWEx
ZTBmLi4yMDlmZjZhZWU2MTU0OThkNTY1NTdhODc1N2I4NjdkNWJhMWU1OTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCkBAIC01NCw3ICs1NCw3
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xk
ZXIpOwogUmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYgZG9jdW1l
bnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChkb2N1bWVu
dCwgV1RGTW92ZShzdHlsZSkpCiB7Ci0gICAgc2V0UmVwbGFjZWQoZmFsc2UpOyAKKyAgICBzZXRS
ZXBsYWNlZE9ySW5saW5lQmxvY2soZmFsc2UpOwogfQogCiBSZW5kZXJGdWxsU2NyZWVuOjp+UmVu
ZGVyRnVsbFNjcmVlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCA2ZWM0MDU2NTJkODQxZGU4NGY5YTFjOWNjMzYxNWNkMzJlMzYwMWVkLi5lZmI3OGQ3YWE2
ZDFjMzM3NDk1ZTY0NjdmOWU1MTkxNTM2YzIwMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTUyMyw4ICs1MjMsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpy
ZW1vdmVPbmx5VGhpc0xheWVyKExheWVyQ2hhbmdlVGltaW5nIHRpbWluZykKIAogICAgIC8vIFJl
bW92ZSB0aGUgY2hpbGQgcmVmbGVjdGlvbiBsYXllciBiZWZvcmUgbW92aW5nIG90aGVyIGNoaWxk
IGxheWVycy4KICAgICAvLyBUaGUgcmVmbGVjdGlvbiBsYXllciBzaG91bGQgbm90IGJlIG1vdmVk
IHRvIHRoZSBwYXJlbnQuCi0gICAgaWYgKHJlZmxlY3Rpb24oKSkKLSAgICAgICAgcmVtb3ZlQ2hp
bGQoKnJlZmxlY3Rpb25MYXllcigpKTsKKyAgICBpZiAoYXV0byogcmVmbGVjdGlvbkxheWVyID0g
dGhpcy0+cmVmbGVjdGlvbkxheWVyKCkpCisgICAgICAgIHJlbW92ZUNoaWxkKCpyZWZsZWN0aW9u
TGF5ZXIpOwogCiAgICAgLy8gTm93IHdhbGsgb3VyIGtpZHMgYW5kIHJlYXR0YWNoIHRoZW0gdG8g
b3VyIHBhcmVudC4KICAgICBSZW5kZXJMYXllciogY3VycmVudCA9IG1fZmlyc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDJiMDQ1MWFlY2I2MTA5YjBhMmRjOGU0
Yjg1YTcwMzJjNDI5MjNlYWYuLjQ0YTVhNDNiNTNjOTM1MWJmNzlhM2M2ZDU3NDYyYmI0ZTkwNzlh
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00MzksNyArNDM5
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNSZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyZXIoKS5oYXNSZWZsZWN0aW9uKCk7IH0KICAgICBib29sIGlzUmVmbGVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuaXNSZXBsaWNhKCk7IH0KLSAgICBSZW5kZXJSZXBsaWNh
KiByZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZsZWN0aW9uLmdldCgpOyB9CiAgICAg
UmVuZGVyTGF5ZXIqIHJlZmxlY3Rpb25MYXllcigpIGNvbnN0OwogICAgIGJvb2wgaXNSZWZsZWN0
aW9uTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmNmU1ZGFjODQ1
MGVkYTEwMDg0M2NkODM5OGYzOTdmOTIwMGI3N2ViLi43ZThkZDY4ODI0Y2ZiNDU2MjA4MGU1OTRl
Y2Q4NDAyYTZjOWZjMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgotI2luY2x1ZGUgIlJlbmRlclJlcGxpY2EuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCb3hMaXN0LmNwcAppbmRleCA2ZTEzZjNhYTM0YTI0ODhmNjUwNjIxNTQyOTc3
NWZiZjI2NTE3NDdjLi4zODlkNWEzZTllNzg4MTUwMjAyYTBkMDUzMTljMTE5YWI1MzAwNTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKQEAg
LTMzMiw3ICszMzIsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNo
YW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgY29udGFpbgogICAgICAgICBpZiAoY3Vy
cmVudC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaWYgKGN1cnJlbnQtPmlzUmVwbGFjZWQoKSkgeworICAgICAgICBp
ZiAoY3VycmVudC0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8gd3JhcHBlciA9IGRvd25jYXN0PFJlbmRlckJveD4oKmN1cnJlbnQpLmlubGluZUJveFdy
YXBwZXIoKSkKICAgICAgICAgICAgICAgICBib3ggPSAmd3JhcHBlci0+cm9vdCgpOwogICAgICAg
ICB9IGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KCpjdXJyZW50KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDAxYjFiMDEzYzgxNTI0Nzk0
MjMzZjUwMDEwMDE3NjNiOTNiYTNmZDQuLjAxZTVkY2U4ZTc1MmYzOTAxOGFjODY3MWY2Njg1ZWMy
NjBiODRkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAKQEAgLTE0NjcsOSArMTQ2Nyw4IEBAIFJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RN
YXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxpc3RJdGVtLCBSZW5kZXJTdHlsZSYmIHN0eWxlCiAgICAg
OiBSZW5kZXJCb3gobGlzdEl0ZW0uZG9jdW1lbnQoKSwgV1RGTW92ZShzdHlsZSksIDApCiAgICAg
LCBtX2xpc3RJdGVtKGxpc3RJdGVtKQogewotICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJp
YnV0ZXMKLSAgICBzZXRJbmxpbmUodHJ1ZSk7ICAgLy8gb3VyIG9iamVjdCBpcyBJbmxpbmUKLSAg
ICBzZXRSZXBsYWNlZCh0cnVlKTsgLy8gcHJldGVuZCB0byBiZSByZXBsYWNlZAorICAgIHNldElu
bGluZSh0cnVlKTsKKyAgICBzZXRSZXBsYWNlZE9ySW5saW5lQmxvY2sodHJ1ZSk7IC8vIHByZXRl
bmQgdG8gYmUgcmVwbGFjZWQKIH0KIAogUmVuZGVyTGlzdE1hcmtlcjo6flJlbmRlckxpc3RNYXJr
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1MDQ1
MDI0ODhkODRkYTkxNWE0ZDIxMDc3ZThjOGNhOWE5ZmZlNGNiLi5iYWFiMjlkM2I5NmFhNmVjMjli
NTgzMWNmNGRlZTNhYWU3MDI2MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtNjY4LDcgKzY2OCw3IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJPYmplY3Q6
OmNvbnRhaW5pbmdCbG9ja0ZvclBvc2l0aW9uVHlwZShQb3NpdGlvblR5cGUgcG9zaXRpb25UCiAg
ICAgaWYgKHBvc2l0aW9uVHlwZSA9PSBQb3NpdGlvblR5cGU6OlN0YXRpYyB8fCBwb3NpdGlvblR5
cGUgPT0gUG9zaXRpb25UeXBlOjpSZWxhdGl2ZSB8fCBwb3NpdGlvblR5cGUgPT0gUG9zaXRpb25U
eXBlOjpTdGlja3kpIHsKICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tGb3JPYmplY3RJbkZs
b3cgPSBbJl0gewogICAgICAgICAgICAgYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5wYXJlbnQo
KTsKLSAgICAgICAgICAgIHdoaWxlIChhbmNlc3RvciAmJiAoKGFuY2VzdG9yLT5pc0lubGluZSgp
ICYmICFhbmNlc3Rvci0+aXNSZXBsYWNlZCgpKSB8fCAhYW5jZXN0b3ItPmlzUmVuZGVyQmxvY2so
KSkpCisgICAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IgJiYgKChhbmNlc3Rvci0+aXNJbmxpbmUo
KSAmJiAhYW5jZXN0b3ItPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHx8ICFhbmNlc3Rvci0+
aXNSZW5kZXJCbG9jaygpKSkKICAgICAgICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5w
YXJlbnQoKTsKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oYW5jZXN0
b3IpOwogICAgICAgICB9OwpAQCAtMTcwNyw3ICsxNzA3LDcgQEAgaW50IFJlbmRlck9iamVjdDo6
Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogCiBpbnQgUmVuZGVyT2JqZWN0OjpjYXJldE1heE9mZnNl
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzUmVwbGFjZWQoKSkKKyAgICBpZiAoaXNSZXBsYWNlZE9y
SW5saW5lQmxvY2soKSkKICAgICAgICAgcmV0dXJuIG5vZGUoKSA/IHN0ZDo6bWF4KDFVLCBub2Rl
KCktPmNvdW50Q2hpbGROb2RlcygpKSA6IDE7CiAgICAgaWYgKGlzSFIoKSkKICAgICAgICAgcmV0
dXJuIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggYzM1NjY1
MGM1ZGY5NGQ2YmFlZmMwOWVlYzQ4NTU0ZjM2ZGM1NmM2Mi4uNmZmMjAyMTJiYTljOTgxYmM4N2Zl
MWY0YjdmMmI1MDhjZWMzM2QzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtMzg3LDcgKzM4Nyw3IEBAIHB1YmxpYzoKICAgICAvLyByZXN0IG9mIHRoZSByZW5k
ZXJpbmcgdHJlZSB3aWxsIG1vdmUgdG8gYSBzaW1pbGFyIG1vZGVsLgogICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogCi0gICAg
Ym9vbCBoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIGlzUmVwbGFjZWQo
KSAmJiAoaXNJbWFnZSgpIHx8IGlzVmlkZW8oKSB8fCBpc0NhbnZhcygpKTsgfQorICAgIGJvb2wg
aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBpc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpICYmIChpc0ltYWdlKCkgfHwgaXNWaWRlbygpIHx8IGlzQ2FudmFzKCkpOyB9CiAg
ICAgYm9vbCBpc0Fub255bW91cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzQW5vbnlt
b3VzKCk7IH0KICAgICBib29sIGlzQW5vbnltb3VzQmxvY2soKSBjb25zdDsKIApAQCAtNDEwLDcg
KzQxMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVGFibGVSb3coKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5pc1RhYmxlUm93KCk7IH0KICAgICBib29sIGlzUmVuZGVyVmlldygpIGNvbnN0
ICB7IHJldHVybiBtX2JpdGZpZWxkcy5pc0JveCgpICYmIG1fYml0ZmllbGRzLmlzVGV4dE9yUmVu
ZGVyVmlldygpOyB9CiAgICAgYm9vbCBpc0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0Zmll
bGRzLmlzSW5saW5lKCk7IH0gLy8gaW5saW5lIG9iamVjdAotICAgIGJvb2wgaXNSZXBsYWNlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzUmVwbGFjZWQoKTsgfSAvLyBhICJyZXBsYWNl
ZCIgZWxlbWVudCAoc2VlIENTUykKKyAgICBib29sIGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKTsgfQog
ICAgIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5ob3Jpem9udGFsV3JpdGluZ01vZGUoKTsgfQogCiAgICAgYm9vbCBoYXNSZWZsZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgp
Lmhhc1JlZmxlY3Rpb24oKTsgfQpAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzQm94KCkgeyBtX2JpdGZpZWxkcy5zZXRJc0JveCh0cnVlKTsgfQogICAgIHZvaWQgc2V0
SXNUYWJsZVJvdygpIHsgbV9iaXRmaWVsZHMuc2V0SXNUYWJsZVJvdyh0cnVlKTsgfQogICAgIHZv
aWQgc2V0SXNSZW5kZXJWaWV3KCkgeyBBU1NFUlQoaXNCb3goKSk7IG1fYml0ZmllbGRzLnNldElz
VGV4dE9yUmVuZGVyVmlldyh0cnVlKTsgfQotICAgIHZvaWQgc2V0UmVwbGFjZWQoYm9vbCBiID0g
dHJ1ZSkgeyBtX2JpdGZpZWxkcy5zZXRJc1JlcGxhY2VkKGIpOyB9CisgICAgdm9pZCBzZXRSZXBs
YWNlZE9ySW5saW5lQmxvY2soYm9vbCBiID0gdHJ1ZSkgeyBtX2JpdGZpZWxkcy5zZXRJc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jayhiKTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KGJvb2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKGIp
OyB9CiAgICAgdm9pZCBzZXRIYXNOb25WaXNpYmxlT3ZlcmZsb3coYm9vbCBiID0gdHJ1ZSkgeyBt
X2JpdGZpZWxkcy5zZXRIYXNOb25WaXNpYmxlT3ZlcmZsb3coYik7IH0KICAgICB2b2lkIHNldEhh
c0xheWVyKGJvb2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0SGFzTGF5ZXIoYik7IH0KQEAg
LTg1OCw3ICs4NTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBtX2lzQm94KGZhbHNlKQog
ICAgICAgICAgICAgLCBtX2lzVGFibGVSb3coZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNJbmxp
bmUodHJ1ZSkKLSAgICAgICAgICAgICwgbV9pc1JlcGxhY2VkKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2lzUmVwbGFjZWRPcklubGluZUJsb2NrKGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzTGlu
ZUJyZWFrKGZhbHNlKQogICAgICAgICAgICAgLCBtX2hvcml6b250YWxXcml0aW5nTW9kZSh0cnVl
KQogICAgICAgICAgICAgLCBtX2hhc0xheWVyKGZhbHNlKQpAQCAtODkwLDcgKzg5MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzQm94LCBJc0JveCk7CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzVGFibGVSb3csIElzVGFibGVSb3cpOwogICAgICAg
ICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc0lubGluZSwgSXNJbmxpbmUpOwotICAgICAgICBBRERf
Qk9PTEVBTl9CSVRGSUVMRChpc1JlcGxhY2VkLCBJc1JlcGxhY2VkKTsKKyAgICAgICAgQUREX0JP
T0xFQU5fQklURklFTEQoaXNSZXBsYWNlZE9ySW5saW5lQmxvY2ssIElzUmVwbGFjZWRPcklubGlu
ZUJsb2NrKTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNMaW5lQnJlYWssIElzTGlu
ZUJyZWFrKTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaG9yaXpvbnRhbFdyaXRpbmdN
b2RlLCBIb3Jpem9udGFsV3JpdGluZ01vZGUpOwogCkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbmxp
bmUgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6Om5leHRJbkZsb3dTaWJsaW5nKCkgY29uc3QK
IAogaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0F0b21pY0lubGluZUxldmVsQm94KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIShzdHls
ZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxhY2VkKCkpOwor
ICAgIHJldHVybiBzdHlsZSgpLmlzRGlzcGxheUlubGluZVR5cGUoKSAmJiAhKHN0eWxlKCkuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUgJiYgIWlzUmVwbGFjZWRPcklubGluZUJsb2Nr
KCkpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6Omhhc1BvdGVudGlhbGx5U2Nyb2xs
YWJsZU92ZXJmbG93KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCmluZGV4IGU5ZjExZmQ0YTE4MTNhOTQyYzhiYmYwNGYwYmMzYWIzN2UwYzgwZWUu
LjIyNWY1OWNhYzYwYzM4ODNmNTU3MjBmM2Y5YWM5NGZmNzQzNWRlNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNjEsMjEgKzYxLDIxIEBAIFJl
bmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5k
ZXJSZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoY0RlZmF1bHRXaWR0aCwgY0Rl
ZmF1bHRIZWlnaHQpCiB7Ci0gICAgc2V0UmVwbGFjZWQodHJ1ZSk7CisgICAgc2V0UmVwbGFjZWRP
cklubGluZUJsb2NrKHRydWUpOwogfQogCiBSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYg
aW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
UmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUp
CiB7Ci0gICAgc2V0UmVwbGFjZWQodHJ1ZSk7CisgICAgc2V0UmVwbGFjZWRPcklubGluZUJsb2Nr
KHRydWUpOwogfQogCiBSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVw
bGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7Ci0gICAg
c2V0UmVwbGFjZWQodHJ1ZSk7CisgICAgc2V0UmVwbGFjZWRPcklubGluZUJsb2NrKHRydWUpOwog
fQogCiBSZW5kZXJSZXBsYWNlZDo6flJlbmRlclJlcGxhY2VkKCkgPSBkZWZhdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCmluZGV4IDVlZGFiMmU3ZTU0MjA2
MzJlMDc2ODE4NTljMzBmODVlZDhjYTk4MjIuLjI4Zjg4MDVhMmU3MmEwNWVkMjEwMTUyMjI5ZTlm
NDQwOGZmODI3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsaWNhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5j
cHAKQEAgLTQ0LDcgKzQ0LDggQEAgUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgLy8gcmVuZGVyZXJzIGJlaW5n
IHJlcGxpY2F0ZWQsIHNvIHRoZXkgYWx3YXlzIHJlcG9ydCB0aGF0IHRoZXkgYXJlIGlubGluZSwg
bm9uLXJlcGxhY2VkLgogICAgIC8vIEhvd2V2ZXIsIHdlIG5lZWQgdHJhbnNmb3JtcyB0byBiZSBh
cHBsaWVkIHRvIHJlcGxpY2FzIGZvciByZWZsZWN0aW9ucywgc28gaGF2ZSB0byBwYXNzCiAgICAg
Ly8gdGhlIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpIGNoZWNrIGJlZm9yZSBzZXRI
YXNUcmFuc2Zvcm0oKS4KLSAgICBzZXRSZXBsYWNlZCh0cnVlKTsKKyAgICAvLyBGSVhNRTogSXMg
dGhlIGNvbW1lbnQgYWJvdmUgb2Jzb2xldGU/IENhbid0IGZpbmQgYSBjaGVjayBvZiBpc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jayBndWFyZGluZyBzZXRIYXNUcmFuc2Zvcm0gYW55IG1vcmUuCisgICAg
c2V0UmVwbGFjZWRPcklubGluZUJsb2NrKHRydWUpOwogfQogCiBSZW5kZXJSZXBsaWNhOjp+UmVu
ZGVyUmVwbGljYSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5UnVuLmNwcAppbmRleCAwYTI4MWFhNzZmMWE2Y2RkNTNmN2RlODNmMzkzM2NmOWUzMDdlNzY4
Li41YTExNWY1NzFjYTI2ODY3Y2U2YWQwMjM2Mjg2ZTI0NDhlOWZlNWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlbmRl
clJ1YnlSdW46OlJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgICwgbV9sYXN0Q2hhcmFjdGVyKDApCiAgICAgLCBtX3NlY29uZFRvTGFzdENo
YXJhY3RlcigwKQogewotICAgIHNldFJlcGxhY2VkKHRydWUpOworICAgIHNldFJlcGxhY2VkT3JJ
bmxpbmVCbG9jayh0cnVlKTsKICAgICBzZXRJbmxpbmUodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggYjAwN2NiOGYy
OWQ3NWZiYWFmMmM4MjM0ODAzYjExNjE1MTgxZjk1ZS4uMGM2NmQ3Y2ZjMDU4NWE5MTgxODQ4OTgx
ZDc2Y2YzYTJhOWVlOWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
QnJlYWtpbmdDb250ZXh0LmgKQEAgLTIxOCw4ICsyMTgsOCBAQCBpbmxpbmUgdm9pZCBCcmVha2lu
Z0NvbnRleHQ6OmluaXRpYWxpemVGb3JDdXJyZW50T2JqZWN0KCkKICAgICBpZiAobV9uZXh0T2Jq
ZWN0ICYmIG1fbmV4dE9iamVjdC0+cGFyZW50KCkgJiYgIW1fbmV4dE9iamVjdC0+cGFyZW50KCkt
PmlzRGVzY2VuZGFudE9mKHJlbmRlcmVyLnBhcmVudCgpKSkKICAgICAgICAgbV9pbmNsdWRlRW5k
V2lkdGggPSB0cnVlOwogCi0gICAgbV9jdXJyV1MgPSByZW5kZXJlci5pc1JlcGxhY2VkKCkgPyBy
ZW5kZXJlci5wYXJlbnQoKS0+c3R5bGUoKS53aGl0ZVNwYWNlKCkgOiByZW5kZXJlci5zdHlsZSgp
LndoaXRlU3BhY2UoKTsKLSAgICBtX2xhc3RXUyA9IG1fbGFzdE9iamVjdC0+aXNSZXBsYWNlZCgp
ID8gbV9sYXN0T2JqZWN0LT5wYXJlbnQoKS0+c3R5bGUoKS53aGl0ZVNwYWNlKCkgOiBtX2xhc3RP
YmplY3QtPnN0eWxlKCkud2hpdGVTcGFjZSgpOworICAgIG1fY3VycldTID0gcmVuZGVyZXIuaXNS
ZXBsYWNlZE9ySW5saW5lQmxvY2soKSA/IHJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpLndoaXRl
U3BhY2UoKSA6IHJlbmRlcmVyLnN0eWxlKCkud2hpdGVTcGFjZSgpOworICAgIG1fbGFzdFdTID0g
bV9sYXN0T2JqZWN0LT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpID8gbV9sYXN0T2JqZWN0LT5w
YXJlbnQoKS0+c3R5bGUoKS53aGl0ZVNwYWNlKCkgOiBtX2xhc3RPYmplY3QtPnN0eWxlKCkud2hp
dGVTcGFjZSgpOwogCiAgICAgbV9hdXRvV3JhcCA9IFJlbmRlclN0eWxlOjphdXRvV3JhcChtX2N1
cnJXUyk7CiAgICAgbV9hdXRvV3JhcFdhc0V2ZXJUcnVlT25MaW5lID0gbV9hdXRvV3JhcFdhc0V2
ZXJUcnVlT25MaW5lIHx8IG1fYXV0b1dyYXA7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCBpbmxpbmUg
Ym9vbCBCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlzUG9zaXRpb24oKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBdm9pZCBicmVha2luZyBiZWZvcmUgZW1wdHkgaW5saW5l
cyAoYXMgbG9uZyBhcyB0aGUgY3VycmVudCBvYmplY3QgaXNuJ3QgcmVwbGFjZWQpLgotICAgIGlm
ICghbV9jdXJyZW50LnJlbmRlcmVyKCktPmlzUmVwbGFjZWQoKSAmJiBpczxSZW5kZXJJbmxpbmU+
KG1fbmV4dE9iamVjdCkgJiYgaXNFbXB0eUlubGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpt
X25leHRPYmplY3QpKSkKKyAgICBpZiAoIW1fY3VycmVudC5yZW5kZXJlcigpLT5pc1JlcGxhY2Vk
T3JJbmxpbmVCbG9jaygpICYmIGlzPFJlbmRlcklubGluZT4obV9uZXh0T2JqZWN0KSAmJiBpc0Vt
cHR5SW5saW5lKGRvd25jYXN0PFJlbmRlcklubGluZT4oKm1fbmV4dE9iamVjdCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBSZXR1cm4gZWFybHkgaWYgd2UgYXV0b3dyYXAgYW5k
IHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyBhIHNwYWNlIGFzIHdlIHdpbGwgYWx3YXlzIHdhbnQg
dG8gYnJlYWsgYXQgc3VjaCBhIHBvc2l0aW9uLgpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgaW5saW5l
IHZvaWQgQnJlYWtpbmdDb250ZXh0Ojpjb21taXRBbmRVcGRhdGVMaW5lQnJlYWtJZk5lZWRlZCgp
CiAKICAgICBpZiAoIW1fY3VycmVudC5yZW5kZXJlcigpLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpIHsKICAgICAgICAgbV9sYXN0T2JqZWN0ID0gbV9jdXJyZW50LnJlbmRlcmVy
KCk7Ci0gICAgICAgIGlmIChtX2xhc3RPYmplY3QtPmlzUmVwbGFjZWQoKSAmJiBtX2F1dG9XcmFw
ICYmICFtX2xhc3RPYmplY3QtPmlzUnVieVJ1bigpICYmICghbV9sYXN0T2JqZWN0LT5pc0ltYWdl
KCkgfHwgbV9hbGxvd0ltYWdlc1RvQnJlYWspICYmICghaXM8UmVuZGVyTGlzdE1hcmtlcj4oKm1f
bGFzdE9iamVjdCkgfHwgZG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4oKm1fbGFzdE9iamVjdCku
aXNJbnNpZGUoKSkpIHsKKyAgICAgICAgaWYgKG1fbGFzdE9iamVjdC0+aXNSZXBsYWNlZE9ySW5s
aW5lQmxvY2soKSAmJiBtX2F1dG9XcmFwICYmICFtX2xhc3RPYmplY3QtPmlzUnVieVJ1bigpICYm
ICghbV9sYXN0T2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9hbGxvd0ltYWdlc1RvQnJlYWspICYmICgh
aXM8UmVuZGVyTGlzdE1hcmtlcj4oKm1fbGFzdE9iamVjdCkgfHwgZG93bmNhc3Q8UmVuZGVyTGlz
dE1hcmtlcj4oKm1fbGFzdE9iamVjdCkuaXNJbnNpZGUoKSkpIHsKICAgICAgICAgICAgIGlmICht
X25leHRPYmplY3QpCiAgICAgICAgICAgICAgICAgY29tbWl0TGluZUJyZWFrQXRDdXJyZW50V2lk
dGgoKm1fbmV4dE9iamVjdCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKaW5kZXggMDBmNzUyZDViMTI1YTdmMzVhODQy
ZGQyOGZjYTUyNmVlMjExY2FkYi4uODg3ODkzNDdmZjkxZTcxZjExN2NjZjc3N2VjNTFkMTQ0ZDAw
NDc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIExlZ2FjeUlubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpu
ZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpCiAgICAgICAgICAg
ICBjb250ZXh0LmhhbmRsZUZsb2F0KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5jdXJy
ZW50T2JqZWN0KCktPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgICAgIGNvbnRleHQuaGFu
ZGxlRW1wdHlJbmxpbmUoKTsKLSAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmN1cnJlbnRPYmpl
Y3QoKS0+aXNSZXBsYWNlZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5jdXJyZW50
T2JqZWN0KCktPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgICAgIGNvbnRl
eHQuaGFuZGxlUmVwbGFjZWQoKTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmN1cnJlbnRP
YmplY3QoKS0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjb250ZXh0LmhhbmRsZVRleHQo
d29yZE1lYXN1cmVtZW50cywgbV9oeXBoZW5hdGVkLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwCmluZGV4IDI0NTkzYTFkOWMwZWZjNWJiYmQ0
MDAyZWIzY2Q3MTBlZWY2Y2E1ZTEuLmIyMTMxOWQ0MjE3MmFjNGE3N2NiNzdlZjk0NmIyNWNlYTg3
YWVmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0
aWMgYm9vbCBjYW5Vc2VBc1BhcmVudEZvckNvbnRpbnVhdGlvbihjb25zdCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogCiBzdGF0aWMgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5leHRDb250aW51YXRp
b24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVySW5saW5lPigq
cmVuZGVyZXIpICYmICFyZW5kZXJlci0+aXNSZXBsYWNlZCgpKQorICAgIGlmIChpczxSZW5kZXJJ
bmxpbmU+KCpyZW5kZXJlcikgJiYgIXJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygp
KQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLmNvbnRp
bnVhdGlvbigpOwogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnJlbmRlcmVyKS5p
bmxpbmVDb250aW51YXRpb24oKTsKIH0K
</data>
<flag name="review"
          id="475253"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="475256"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449269</attachid>
            <date>2022-01-15 14:01:05 -0800</date>
            <delta_ts>2022-01-15 14:01:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235258-20220115140104.patch</filename>
            <type>text/plain</type>
            <size>66220</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVhY2M1OTdmMjEwNjY5
ZDcyNGRmZWYzNWU3YjVkNzBlMGM3NmNlNC4uZTc2ZjM3OWMzMTEyN2Q3NDcyMDBiNzkwNWM1ZmFh
YTQ1ZTM1YTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAorMjAyMi0wMS0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlyc3Qgc3RlcCB0byBmaXgg
aGFja2VkIGlzUmVwbGFjZWQ6IFJlbmFtZSBpc1JlcGxhY2VkIGZ1bmN0aW9ucyB0byBpc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1MjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxhbiBCdWp0YXMuCisKKyAg
ICAgICAgVGhlIGlzUmVwbGFjZWQgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciB0aGluZ3MgdGhh
dCBhcmUgbm90IENTUyByZXBsYWNlZAorICAgICAgICBlbGVtZW50cy4gVGhhdCdzIGNvbmZ1c2lu
ZyBhbmQgbm90IGdvb2QuIFdlIHdhbnQgdG8gc3RyYWlnaHRlbiB0aGlzIG91dC4KKyAgICAgICAg
SW4gdGhpcyBmaXJzdCBzdGVwLCB3ZSByZW5hbWUgdGhlIGlzUmVwbGFjZWQgYW5kIHNldFJlcGxh
Y2VkIGZ1bmN0aW9ucworICAgICAgICB0byBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jayBhbmQgc2V0
UmVwbGFjZWRPcklubGluZUJsb2NrLiBUaGVyZSBhcmUgc3RpbGwKKyAgICAgICAgZnVuY3Rpb25z
IHdpdGggb3V0IGFyZ3VtZW50cyBuYW1lZCAiaXNSZXBsYWNlZCIsIHdoaWNoIHdlIGNhbiBkZWFs
IHdpdGgKKyAgICAgICAgbGF0ZXIuIE90aGVyIGxhdGVyIGNsZWFuLXVwIGFuZCBjbGFyaWZpY2F0
aW9uIGNvdWxkIG9uZSBkYXkgY2hhbmdlIHdoYXQKKyAgICAgICAgYml0cyB3ZSBzdG9yZSBpbiBS
ZW5kZXJTdHlsZSBhbmQgcG9zc2libHkgZXZlbiByZW1vdmUgdGhpcyBmdW5jdGlvbiBlbnRpcmVs
eS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0Q29udGludWF0aW9uKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcDoKKyAgICAgICAgKGludGVyZmFjZU1h
c2tGcm9tT2JqZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uUmVwbGFjZWRJbmxpbmUpOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlclJlY3QpOgorICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmRzT2ZOb2RlQXJl
VmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmNhblVzZUZvckNoaWxkKToKKyAgICAgICAg
KiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6Cisg
ICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc05v
bklubGluZU9yUmVwbGFjZWRFbGVtZW50cyk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50IGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZUNhcmV0UmVjdEZvckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmFk
anVzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6Y2FuQWNj
b21tb2RhdGVFbGxpcHNpcyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lRmxvd0JveDo6YWRk
VG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUZsb3dCb3g6OmNvbXB1dGVP
dmVyQW5ub3RhdGlvbkFkanVzdG1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2Vi
Q29yZTo6aXNJdGVyYXRvclRhcmdldCk6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUxpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlu
bGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
TGluZUxheW91dDo6bGF5b3V0TGluZUJveGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5
Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94
Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUxlYWRpbmdGb3JCb3ggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZUdseXBo
c0ZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSb290SW5saW5lQm94Ojpp
bmNsdWRlSW5pdGlhbExldHRlckZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OnJlbW92ZVBvc2l0aW9uZWRPYmplY3RzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnN0eWxlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6c2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnBhaW50Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0
aW9uRm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdExldHRlckJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnJlYnVpbGRGbG9hdGluZ09i
amVjdFNldEZyb21JbnRydWRpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZU1pbk1heEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpzaG91bGRUcmVhdENoaWxkQXNSZXBsYWNlZEluVGFibGVDZWxscyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZvaWRzRmxv
YXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aXNVbnNwbGl0dGFibGVG
b3JQYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bGluZUhl
aWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6c2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYW5IYXZlQm94SW5mb0luRnJhZ21lbnQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVD
bGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNs
ZWFyTGluZUNsYW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5nQ29ybmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmdldFRyYWlsaW5nQ29ybmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmFic29sdXRlQW5jaG9yUmVjdCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdC
bG9ja0ZvclBvc2l0aW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNh
cmV0TWF4T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZXBsYWNlZE9ySW5s
aW5lQmxvY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRSZXBs
YWNlZE9ySW5saW5lQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpSZW5k
ZXJPYmplY3RCaXRmaWVsZHM6OlJlbmRlck9iamVjdEJpdGZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRvbWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1JlcGxhY2VkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0UmVwbGFjZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJSZXBsaWNhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxpY2E6OlJlbmRlclJl
cGxpY2EpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdD
b250ZXh0Ojppbml0aWFsaXplRm9yQ3VycmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlzUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QnJlYWtpbmdDb250ZXh0Ojpjb21taXRBbmRVcGRhdGVMaW5lQnJlYWtJZk5lZWRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
Q29udGludWF0aW9uKToKKyAgICAgICAgUmVuYW1lZCBpbiBhbGwgdGhlc2UgcGxhY2VzLiBBbHNv
IGFkZGVkIG9uZSBGSVhNRSBmb3Igc29tZXRoaW5nCisgICAgICAgIEFsYW4gcG9pbnRlZCBvdXQg
d2UnZCBsaWtlIHRvIGRvIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlbW92ZU9ubHlU
aGlzTGF5ZXIpOiBSZW1vdmVkIHVuaGVscGZ1bCB1c2UKKyAgICAgICAgb2YgUmVuZGVyTGF5ZXI6
OnJlZmxlY3Rpb24gZnVuY3Rpb24ganVzdCB0byBmaW5kIG91dCB3aGV0aGVyIHRoZQorICAgICAg
ICBSZW5kZXJMYXllcjo6cmVmbGVjdGlvbkxheWVyIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIG51bGwg
b3Igbm90LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOiBSZW1vdmVkIHVubmVl
ZGVkIFJlbmRlckxheWVyOjpyZWZsZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOiBSZW1vdmVkIGFuIHVubmVlZGVkIGluY2x1ZGUKKyAgICAgICAg
b2YgUmVuZGVyUmVwbGljYS5oLgorCiAyMDIyLTAxLTE1ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9yZW5kZXJpbmcvZGlt
ZW5zaW9uLWF0dHJpYnV0ZXMuaHRtbCBpcyBmYWlsaW5nIHdoZW4gdGFibGUgd2lkdGggaXMgc2V0
IHRvIDBweApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYzYxN2ExMDc2ZGNjY2Y5OTI3NjkzNWEz
MDgxYWJiZWQxMDY4N2E2My4uNDk4ODZlNWQ4ODgwZDhhOGVkMjc0YzJmYmUxMDMxNjlhOThmNTNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bmV4dFNpYmxpbmcoKSBjb25zdAog
CiBzdGF0aWMgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5leHRDb250aW51YXRpb24oUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlcikKIHsKLSAgICBpZiAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJlcikgJiYg
IXJlbmRlcmVyLmlzUmVwbGFjZWQoKSkKKyAgICBpZiAoaXM8UmVuZGVySW5saW5lPihyZW5kZXJl
cikgJiYgIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKS5jb250aW51YXRpb24oKTsKICAgICBp
ZiAoaXM8UmVuZGVyQmxvY2s+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJl
bmRlckJsb2NrPihyZW5kZXJlcikuaW5saW5lQ29udGludWF0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwCmluZGV4
IDE2YzRmNTgxM2RhOGRmZGFkNTMwZWQ0MmNmMGI3ZWZiYTEwNWM5NDUuLmZhOGU0NzkzMDA1NzNl
OWFhNGFkNDRmNjRmY2Y0MWZiNDk5NjQ4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwCkBAIC0xMjA5LDcgKzEyMDks
NyBAQCBzdGF0aWMgZ3VpbnQxNiBpbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBWENvcmVPYmplY3Qq
IGNvcmVPYmplY3QpCiAgICAgICAgIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsK
IAogICAgIC8vIEh5cGVybGluayAobGlua3MgYW5kIGVtYmVkZGVkIG9iamVjdHMpLgotICAgIGlm
IChjb3JlT2JqZWN0LT5pc0xpbmsoKSB8fCAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzUmVwbGFj
ZWQoKSkpCisgICAgaWYgKGNvcmVPYmplY3QtPmlzTGluaygpIHx8IChyZW5kZXJlciAmJiByZW5k
ZXJlci0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkpCiAgICAgICAgIGludGVyZmFjZU1hc2sg
fD0gMSA8PCBXQUlIeXBlcmxpbms7CiAKICAgICAvLyBUZXh0LCBFZGl0YWJsZSBUZXh0ICYgSHlw
ZXJ0ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDViNDA1MTcxNmQxMWE5OTE2NGY2OWEwZDM1MzRjOTYwZjZjYTE2ZGYu
LjlkM2I0NmNkODNkYjhjMjUyOGU5YTcwNTVkNGJmZTk4MDBhYjljNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMzA3
LDcgKzIzMDcsNyBAQCBzdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9Db2x1bW5CcmVhayhCcmVh
a0luc2lkZSB2YWx1ZSkKIAogc3RhdGljIGlubGluZSBib29sIGlzTm9uUmVwbGFjZWRJbmxpbmUo
UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKLSAgICByZXR1cm4gcmVuZGVyZXIuaXNJbmxpbmUo
KSAmJiAhcmVuZGVyZXIuaXNSZXBsYWNlZCgpOworICAgIHJldHVybiByZW5kZXJlci5pc0lubGlu
ZSgpICYmICFyZW5kZXJlci5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc0xheW91dERlcGVuZGVudChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA1MWUwYWNhMzQ0NDlmYzNjM2Q2NTliMjY0Y2Y4ODVhYjMzZjdmOGNkLi4zYjc3NzU0Njhm
MjNhOWM1ZmZmYmEzZDdjNTAwYTMyMzU4NGU3Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC04MjEs
OCArODIxLDkgQEAgTGF5b3V0UmVjdCBOb2RlOjpyZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQp
CiAgICAgfQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBoaXRSZW5kZXJlcjsKICAgICB3
aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc0JvZHkoKSAmJiAhcmVuZGVyZXItPmlzRG9j
dW1lbnRFbGVtZW50UmVuZGVyZXIoKSkgewotICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVy
QmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5k
ZXJlci0+aXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgICAgICAqaXNSZXBsYWNlZCA9IHJlbmRlcmVy
LT5pc1JlcGxhY2VkKCk7CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpIHx8
IHJlbmRlcmVyLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIHx8IHJlbmRlcmVyLT5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBy
ZWFsbHkgd2hhdCBjYWxsZXJzIHdhbnQgZm9yIHRoZSAiaXNSZXBsYWNlZCIgZmxhZz8KKyAgICAg
ICAgICAgICppc1JlcGxhY2VkID0gcmVuZGVyZXItPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCk7
CiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7
CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcAppbmRleCA5YTUxMmVmZTdjOWMwMWVmODIwMTJjYjQzZjliNjExNTU4
OTY3YTJhLi43ZGVmMTYyZjgyMjM3ZGM2ZWE5OGU2N2Y5ZDY0ZWU3MjFmNGY2NTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTYzOSw3ICs2MzksNyBAQCBzdGF0aWMgYm9vbCBlbmRzT2ZO
b2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyhOb2RlKiBub2RlKQogICAgIGlmIChpczxI
VE1MVGFibGVFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoIW5vZGUtPnJlbmRlcmVyKCktPmlzUmVwbGFjZWQoKSB8fCAhY2FuSGF2ZUNoaWxkcmVu
Rm9yRWRpdGluZygqbm9kZSkgfHwgIWRvd25jYXN0PFJlbmRlckJveD4oKm5vZGUtPnJlbmRlcmVy
KCkpLmhlaWdodCgpKQorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZE9ySW5s
aW5lQmxvY2soKSB8fCAhY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZygqbm9kZSkgfHwgIWRvd25j
YXN0PFJlbmRlckJveD4oKm5vZGUtPnJlbmRlcmVyKCkpLmhlaWdodCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBUaGVyZSBpcyBhIFZpc2libGVQb3NpdGlvbiBpbnNpZGUgYW4g
ZW1wdHkgaW5saW5lLWJsb2NrIGNvbnRhaW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcAppbmRleCAyYzNlMDc4YTMyYTJmZWYyMWRhNGZlY2Y5ZGRhZGI3MTQy
YWVmMzMzLi5mZGY5MGNkNGU2Njc1OTY1ODA4OTUwMTNmYzhiNWFmYjQzNWYzNTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC0xMzIsNyArMTMyLDcg
QEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0
ZSgpIGNvbnN0CiAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gJnJ1bi0+cmVuZGVyZXIoKTsKIAog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNSZXBs
YWNlZCgpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBydW4tPnJpZ2h0bW9zdENh
cmV0T2Zmc2V0KCkpCisgICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBydW4tPnJpZ2h0bW9z
dENhcmV0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
IAogICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpKSB7CkBAIC0yOTgsNyArMjk4LDcg
QEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUoKSBjb25zdAogICAgICAgICBhdXRvKiByZW5kZXJlciA9ICZydW4tPnJlbmRlcmVyKCk7CiAK
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzUmVw
bGFjZWQoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0gcnVuLT5sZWZ0bW9zdENh
cmV0T2Zmc2V0KCkpCisgICAgICAgICAgICBpZiAoKHJlbmRlcmVyLT5pc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBydW4tPmxlZnRtb3N0
Q2FyZXRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcnVuLT5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwog
CiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNv
dmVyYWdlLmNwcAppbmRleCAzM2FhMTE5N2FhYzVmNjQxNDkwMTQ4OTQ4MTZhOTg4ZTkwOWMwOTJm
Li4yYWY1ZmJiMmM5ZGRlZjViYTdiZTU3ODEyNWVlMDFjZDRjMWI5ODljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwCkBAIC01MzMsNyArNTMzLDcgQEAgc3RhdGljIE9wdGlvblNldDxB
dm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckNoaWxkKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgY28KIAogICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KGNoaWxkKSkgewogICAgICAgICBh
dXRvJiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oY2hpbGQpOwotICAgICAgICBp
ZiAoIWJsb2NrLmlzUmVwbGFjZWQoKSB8fCAhYmxvY2suaXNJbmxpbmUoKSkKKyAgICAgICAgaWYg
KCFibG9jay5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8ICFibG9jay5pc0lubGluZSgpKQog
ICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uU3Vw
cG9ydGVkQ2hpbGQsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKQogICAgICAgICBpZiAoYmxvY2su
aXNGbG9hdGluZygpIHx8IGJsb2NrLmlzUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgU0VUX1JF
QVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChDaGlsZEJveElzRmxvYXRpbmdPclBvc2l0aW9uZWQs
IHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cAppbmRleCBmMWVhMTk2ODc2YjIyZGVhZmUxOTZmNjU1OGE4ZTk3Nzk0MjFlYmQxLi43ZDYxYWU1
MDgyNTNhMWVjZGFkYmQxMTUwZWY4MWZlZmIyMzMyMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8mIHJlbmRl
cmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveC5sYXlvdXRCb3goKSk7IGlz
PFJlbmRlckJveD4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLmlzUmVwbGFjZWQoKSkgeworICAgICAg
ICBpZiAoYXV0byYgcmVuZGVyZXIgPSBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRCb3goYm94
LmxheW91dEJveCgpKTsgaXM8UmVuZGVyQm94PihyZW5kZXJlcikgJiYgcmVuZGVyZXIuaXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93
bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcik7CiAgICAgICAgICAgICBpZiAoIXJlbmRlckJveC5o
YXNTZWxmUGFpbnRpbmdMYXllcigpICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3Qo
cmVuZGVyQm94KSkKICAgICAgICAgICAgICAgICByZW5kZXJCb3gucGFpbnRBc0lubGluZUJsb2Nr
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAKaW5kZXggZDI2MGQxMWE4NDVhMjdjY2FiMmE3MjhkZTNkNDEwYzg2M2Y3N2UwNy4uMzg3ZDUx
OWFlNTE3MmQ2ODBhNWIyODg0M2JiZThmZjk5NmM2YjMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIGJvb2wgaGFzTm9uSW5s
aW5lT3JSZXBsYWNlZEVsZW1lbnRzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKICAgICBm
b3IgKGF1dG8mIG5vZGUgOiBpbnRlcnNlY3RpbmdOb2RlcyhyYW5nZSkpIHsKICAgICAgICAgYXV0
byByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmICgh
cmVuZGVyZXItPmlzSW5saW5lKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkpCisgICAgICAg
IGlmIChyZW5kZXJlciAmJiAoIXJlbmRlcmVyLT5pc0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGFj
MGRmZGE3NDExNGUwMjg3NzJjMDYyYTMwZmY3NTE2NDQ4ZWJhOTIuLjRlZmIzODYzZmU4M2M0N2Uw
M2VmYzA1YjJiYWQzYWYxZGQ0OGI2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
CkBAIC0yMDQsOCArMjA0LDggQEAgQ0dSZWN0IEZyYW1lOjpyZW5kZXJSZWN0Rm9yUG9pbnQoQ0dQ
b2ludCBwb2ludCwgYm9vbCogaXNSZXBsYWNlZCwgZmxvYXQqIGZvbnRTaXoKICAgICAgICAgICAg
IHByaW50ZigiJXMgJWYgJWYgJWYgJWZcbiIsIG5vZGVOYW1lLCByZWN0Lm9yaWdpbi54LCByZWN0
Lm9yaWdpbi55LCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogICAgICAgICB9
CiAjZW5kaWYKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgfHwgcmVuZGVy
ZXItPmlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgfHwgcmVuZGVyZXItPmlzUmVwbGFjZWQo
KSkgewotICAgICAgICAgICAgKmlzUmVwbGFjZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZCgpOwor
ICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSB8fCByZW5kZXJlci0+aXNJbmxp
bmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCByZW5kZXJlci0+aXNSZXBsYWNlZE9ySW5saW5lQmxv
Y2soKSkgeworICAgICAgICAgICAgKmlzUmVwbGFjZWQgPSByZW5kZXJlci0+aXNSZXBsYWNlZE9y
SW5saW5lQmxvY2soKTsKICNpZiBDSEVDS19GT05UX1NJWkUKICAgICAgICAgICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiB0ZXh0UmVuZGVyZXIgPSBoaXRSZW5kZXJlcjsgdGV4dFJlbmRlcmVyOyB0ZXh0
UmVuZGVyZXIgPSB0ZXh0UmVuZGVyZXItPnRyYXZlcnNlTmV4dChoaXRSZW5kZXJlcikpIHsKICAg
ICAgICAgICAgICAgICBpZiAodGV4dFJlbmRlcmVyLT5pc1RleHQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKaW5kZXggM2I3MDJh
OTdmMDRhMWQwMmQxOGY1Mzg0NjYyYTViMzczOWY0NWY5NS4uY2U3ZjU0MmRkOTdiODUzODYxZTIz
YWNmODFmODlmOGQyMTY3OTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIExheW91
dFJlY3QgY29tcHV0ZUNhcmV0UmVjdEZvckJveChjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBj
b25zdCBJbmxpbmUKICAgICAvLwogICAgIC8vIEZJWE1FOiBpZ25vcmluZyA6Zmlyc3QtbGluZSwg
bWlzc2luZyBnb29kIHJlYXNvbiB0byB0YWtlIGNhcmUgb2YKICAgICBMYXlvdXRVbml0IGZvbnRI
ZWlnaHQgPSByZW5kZXJlci5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7Ci0gICAgaWYg
KGZvbnRIZWlnaHQgPiByZWN0LmhlaWdodCgpIHx8ICghcmVuZGVyZXIuaXNSZXBsYWNlZCgpICYm
ICFyZW5kZXJlci5pc1RhYmxlKCkpKQorICAgIGlmIChmb250SGVpZ2h0ID4gcmVjdC5oZWlnaHQo
KSB8fCAoIXJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgIXJlbmRlcmVyLmlz
VGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWlnaHQpOwogCiAgICAgLy8g
TW92ZSB0byBsb2NhbCBjb29yZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUJveC5jcHAKaW5kZXggM2YxYTE1ZjhlNTE5MThlYjkzNTM5NGYwOTNmMzI1MjIyZGFlNzg1
Mi4uODZmNDFlZjdmYjA1NmNjZDYxNWU1NzcxYTA4M2MyZDk4OGMwZjEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIExlZ2FjeUlubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5
KQogICAgIGlmIChyZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAocmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpCisgICAgaWYgKHJlbmRl
cmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkKICAgICAgICAgZG93bmNhc3Q8UmVuZGVy
Qm94PihyZW5kZXJlcigpKS5tb3ZlKExheW91dFVuaXQoZHgpLCBMYXlvdXRVbml0KGR5KSk7CiB9
CiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIExlZ2Fj
eUlubGluZUJveDo6c2VsZWN0aW9uU3RhdGUoKSBjb25zdAogYm9vbCBMZWdhY3lJbmxpbmVCb3g6
OmNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxp
cHNpc1dpZHRoKSBjb25zdAogewogICAgIC8vIE5vbi1yZXBsYWNlZCBlbGVtZW50cyBjYW4gYWx3
YXlzIGFjY29tbW9kYXRlIGFuIGVsbGlwc2lzLgotICAgIGlmICghcmVuZGVyZXIoKS5pc1JlcGxh
Y2VkKCkpCisgICAgaWYgKCFyZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIEludFJlY3QgYm94UmVjdChsZWZ0KCksIDAs
IG1fbG9naWNhbFdpZHRoLCAxMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lRmxvd0JveC5jcHAKaW5kZXggMmNkZGVkYjE1ZWYwYWU0ODc4M2NjMWNhN2IzNDRm
YjAyNDM0NTAyZS4uNTk1YjU1ZTFmMGFjODQ5Y2I1MGQzZGMxYTg2NTlhNDkyMTI3NmRiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUZsb3dCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcApA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKExl
Z2FjeUlubGluZUJveCogY2hpbGQpCiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRT
dHlsZSA9IGxpbmVTdHlsZSgpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRTdHls
ZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKICAgICAgICAgYm9vbCBzaG91bGRDbGVhckRlc2NlbmRh
bnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSBmYWxzZTsKLSAgICAgICAgaWYgKGNo
aWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkKKyAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJl
cigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgICAgICBzaG91bGRDbGVhckRl
c2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICBl
bHNlIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChjaGls
ZC0+cmVuZGVyZXIoKS5pc0xpbmVCcmVhaygpIHx8IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgp
ICE9ICZyZW5kZXJlcigpKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVG
bG93Qm94OjphZGRUb0xpbmUoTGVnYWN5SW5saW5lQm94KiBjaGlsZCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAwIHx8IGNoaWxk
U3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0g
VGV4dEVtcGhhc2lzTWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2ZVN0cm9rZVdp
ZHRoKCkgfHwgaGFzTWFya2VycyB8fCAhY2hpbGRTdHlsZS0+dGV4dFVuZGVybGluZU9mZnNldCgp
LmlzQXV0bygpIHx8ICFjaGlsZFN0eWxlLT50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLmlzQXV0
bygpIHx8IGNoaWxkU3R5bGUtPnRleHRVbmRlcmxpbmVQb3NpdGlvbigpICE9IFRleHRVbmRlcmxp
bmVQb3NpdGlvbjo6QXV0bykKICAgICAgICAgICAgICAgICBjaGlsZC0+Y2xlYXJLbm93blRvSGF2
ZU5vT3ZlcmZsb3coKTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1Jl
cGxhY2VkKCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gmIGJveCA9
IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgaWYg
KGJveC5oYXNSZW5kZXJPdmVyZmxvdygpIHx8IGJveC5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQog
ICAgICAgICAgICAgICAgIGNoaWxkLT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwpAQCAt
MTIwOSw3ICsxMjA5LDcgQEAgTGF5b3V0VW5pdCBMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRl
T3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3cKICAgICAgICAgaWYgKGlz
PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkpCiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1heChyZXN1bHQsIGRvd25jYXN0PExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0
ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24pKTsKICAgICAgICAgCi0g
ICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVi
eVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVi
eVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpCZWZvcmUpIHsKKyAgICAgICAgaWYgKGNoaWxk
LT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgaXM8UmVuZGVyUnVieVJ1
bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBv
c2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpCZWZvcmUpIHsKICAgICAgICAgICAgIGF1dG8mIHJ1
YnlSdW4gPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAg
ICAgICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1YnlUZXh0KCk7CiAg
ICAgICAgICAgICBpZiAoIXJ1YnlUZXh0KQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgTGF5b3V0VW5p
dCBMZWdhY3lJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChM
YXlvdXRVbml0IGFsbG8KICAgICAgICAgaWYgKGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KCpjaGls
ZCkpCiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGRvd25jYXN0PExlZ2Fj
eUlubGluZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQo
YWxsb3dlZFBvc2l0aW9uKSk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVw
bGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQt
PnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkFmdGVy
KSB7CisgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9j
aygpICYmIGlzPFJlbmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVu
ZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QWZ0ZXIpIHsK
ICAgICAgICAgICAgIGF1dG8mIHJ1YnlSdW4gPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihjaGls
ZC0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBy
dWJ5UnVuLnJ1YnlUZXh0KCk7CiAgICAgICAgICAgICBpZiAoIXJ1YnlUZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaAppbmRleCA3YzRiNjdi
OTExYzE2ODdjODA2Y2RmOTQ3NmRhYmM0YzcxODk0NjMwLi4xZmEwZjA2YTZkOTI5NjBhNDI0MDEy
N2QwN2I3NzExMGU4OTA1M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lSXRlcmF0b3IuaApAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBub3RpZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KE9ic2VydmVyKiBvYnNlcnZlciwgUmVuZGVy
T2JqZWN0CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJdGVyYXRvclRhcmdldChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsgLy8gVGhlIGl0ZXJhdG9yIHdpbGwgb2Yg
Y291cnNlIHJldHVybiAwLCBidXQgaXRzIG5vdCBhbiBleHBlY3RlZCBhcmd1bWVudCB0byB0aGlz
IGZ1bmN0aW9uLgotICAgIHJldHVybiBvYmplY3QtPmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgb2Jq
ZWN0LT5pc0Zsb2F0aW5nKCkgfHwgb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBv
YmplY3QtPmlzUmVwbGFjZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc1RleHRPckxpbmVCcmVh
aygpIHx8IG9iamVjdC0+aXNGbG9hdGluZygpIHx8IG9iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgb2JqZWN0LT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgT2JzZXJ2ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5jcHAKaW5kZXggODQ4ZTRhYjhhNjUwNzk5NDE5NDhhNGU5ZDllMzAxNGRhMmMxNjM1
OC4uNzFkMTkxNmQ0NzIzYmRmZTg2YTMxMWY2ZTMyMWRhNGIxZjQ1YjdmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcApAQCAtNzA3LDcgKzcwNyw3
IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9u
c0ZvckxpbmUoTGVnYWN5Um9vdElubGluZUJvCiAgICAgdXBkYXRlTG9naWNhbElubGluZVBvc2l0
aW9ucyhtX2Zsb3csIGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxSaWdodCwgYXZhaWxhYmxl
TG9naWNhbFdpZHRoLCBpc0ZpcnN0TGluZSwgc2hvdWxkSW5kZW50VGV4dCwgMCk7CiAgICAgYm9v
bCBuZWVkc1dvcmRTcGFjaW5nOwogCi0gICAgaWYgKGZpcnN0UnVuICYmIGZpcnN0UnVuLT5yZW5k
ZXJlcigpLmlzUmVwbGFjZWQoKSkgeworICAgIGlmIChmaXJzdFJ1biAmJiBmaXJzdFJ1bi0+cmVu
ZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAgIFJlbmRlckJveCYg
cmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihmaXJzdFJ1bi0+cmVuZGVyZXIoKSk7CiAg
ICAgICAgIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMobV9mbG93LCBsaW5lTG9naWNhbExl
ZnQsIGxpbmVMb2dpY2FsUmlnaHQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaXNGaXJzdExpbmUs
IHNob3VsZEluZGVudFRleHQsIHJlbmRlckJveC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KQEAg
LTE3NDEsNyArMTc0MSw3IEBAIHZvaWQgTGVnYWN5TGluZUxheW91dDo6bGF5b3V0TGluZUJveGVz
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWluCiAgICAgICAgICAgICBp
ZiAoIWhhc0lubGluZUNoaWxkICYmIG8uaXNJbmxpbmUoKSkKICAgICAgICAgICAgICAgICBoYXNJ
bmxpbmVDaGlsZCA9IHRydWU7CiAKLSAgICAgICAgICAgIGlmIChvLmlzUmVwbGFjZWQoKSB8fCBv
LmlzRmxvYXRpbmcoKSB8fCBvLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAgICAg
ICBpZiAoby5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IG8uaXNGbG9hdGluZygpIHx8IG8u
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJCb3gmIGJv
eCA9IGRvd25jYXN0PFJlbmRlckJveD4obyk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVsYXlv
dXRDaGlsZHJlbiB8fCBib3guaGFzUmVsYXRpdmVEaW1lbnNpb25zKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKaW5kZXggOGUxYTBmYmVm
NTZjZjYxMGVkMTdmYWQ3YzVlODRjYTY0Yzc1ZDAyYi4uZTg5NWNiYjY3MTcwYjY0NDdlY2M3MTNi
YTUxY2IzZmJiNmU5MDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeVJvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lSb290SW5saW5lQm94LmNwcApAQCAtNjc3LDcgKzY3Nyw3IEBAIHZvaWQgTGVnYWN5Um9vdElu
bGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5
cGhPdmVyCiAKICAgICAvLyBSZXBsYWNlZCBib3hlcyB3aWxsIHJldHVybiAwIGZvciB0aGUgbGlu
ZS1oZWlnaHQgaWYgbGluZS1ib3gtY29udGFpbiBzYXlzIHRoZXkgYXJlCiAgICAgLy8gbm90IHRv
IGJlIGluY2x1ZGVkLgotICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpIHsKKyAg
ICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAg
ICBpZiAobGluZVN0eWxlKCkubGluZUJveENvbnRhaW4oKS5jb250YWlucyhMaW5lQm94Q29udGFp
bjo6UmVwbGFjZWQpKSB7CiAgICAgICAgICAgICBhc2NlbnQgPSBib3guYmFzZWxpbmVQb3NpdGlv
bihiYXNlbGluZVR5cGUoKSk7CiAgICAgICAgICAgICBkZXNjZW50ID0gcm91bmRUb0ludChib3gu
bGluZUhlaWdodCgpKSAtIGFzY2VudDsKQEAgLTgzNyw3ICs4MzcsNyBAQCBMYXlvdXRVbml0IExl
Z2FjeVJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5saW5lQm94
KiBib3gsIFZlcgogICAgICAgICBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09IFZlcnRpY2FsQWxp
Z246OlRleHRCb3R0b20pIHsKICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gKz0gZm9udE1l
dHJpY3MuZGVzY2VudChiYXNlbGluZVR5cGUoKSk7CiAgICAgICAgICAgICAvLyBsaW5lSGVpZ2h0
IC0gYmFzZWxpbmVQb3NpdGlvbiBpcyBhbHdheXMgMCBmb3IgcmVwbGFjZWQgZWxlbWVudHMgKGV4
Y2VwdCBpbmxpbmUgYmxvY2tzKSwgc28gZG9uJ3QgYm90aGVyIHdhc3RpbmcgdGltZSBpbiB0aGF0
IGNhc2UuCi0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1JlcGxhY2VkKCkgfHwgcmVuZGVy
ZXItPmlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpCisgICAgICAgICAgICBpZiAoIXJlbmRl
cmVyLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IHJlbmRlcmVyLT5pc0lubGluZUJsb2Nr
T3JJbmxpbmVUYWJsZSgpKQogICAgICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gLT0gKHJl
bmRlcmVyLT5saW5lSGVpZ2h0KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikgLSByZW5kZXJlci0+
YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUoKSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9u
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZU1pZGRsZSkKICAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gKz0gLXJlbmRlcmVy
LT5saW5lSGVpZ2h0KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikgLyAyICsgcmVuZGVyZXItPmJh
c2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKCksIGZpcnN0TGluZSwgbGluZURpcmVjdGlvbik7
CkBAIC04NjEsNyArODYxLDcgQEAgTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94Ojp2ZXJ0
aWNhbFBvc2l0aW9uRm9yQm94KExlZ2FjeUlubGluZUJveCogYm94LCBWZXIKIAogYm9vbCBMZWdh
Y3lSb290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJv
eCkgY29uc3QKIHsKLSAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gu
cmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkp
KQorICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IChi
b3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGxpbmVCb3hDb250YWluID0g
cmVuZGVyZXIoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCk7CkBAIC04NzAsNyArODcwLDcgQEAg
Ym9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxp
bmVCb3gmIGJveCkgY29uc3QKIAogYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlRm9u
dEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsKLSAgICBpZiAoYm94LnJlbmRl
cmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygp
ICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQorICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVh
aygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgaWYgKCFib3guYmVoYXZlc0xpa2VUZXh0KCkgJiYgaXM8TGVnYWN5SW5saW5lRmxv
d0JveD4oYm94KSAmJiAhZG93bmNhc3Q8TGVnYWN5SW5saW5lRmxvd0JveD4oYm94KS5oYXNUZXh0
Q2hpbGRyZW4oKSkKQEAgLTg4MSw3ICs4ODEsNyBAQCBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6
OmluY2x1ZGVGb250Rm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogCiBib29sIExl
Z2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3goTGVnYWN5SW5saW5lQm94JiBi
b3gpIGNvbnN0CiB7Ci0gICAgaWYgKGJveC5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSB8fCAoYm94
LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94LmJlaGF2ZXNMaWtlVGV4dCgp
KSkKKyAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSB8fCAo
Ym94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94LmJlaGF2ZXNMaWtlVGV4
dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghYm94LmJlaGF2ZXNM
aWtlVGV4dCgpICYmIGlzPExlZ2FjeUlubGluZUZsb3dCb3g+KGJveCkgJiYgIWRvd25jYXN0PExl
Z2FjeUlubGluZUZsb3dCb3g+KGJveCkuaGFzVGV4dENoaWxkcmVuKCkpCkBAIC04OTIsNyArODky
LDcgQEAgYm9vbCBMZWdhY3lSb290SW5saW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2Fj
eUlubGluZUJveCYgYm94KSBjb25zdAogCiBib29sIExlZ2FjeVJvb3RJbmxpbmVCb3g6OmluY2x1
ZGVJbml0aWFsTGV0dGVyRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewotICAg
IGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4
dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCisgICAgaWYgKGJveC5y
ZW5kZXJlcigpLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgKGJveC5yZW5kZXJlcigpLmlz
VGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoIWJveC5iZWhhdmVzTGlrZVRleHQoKSAmJiBpczxM
ZWdhY3lJbmxpbmVGbG93Qm94Pihib3gpICYmICFkb3duY2FzdDxMZWdhY3lJbmxpbmVGbG93Qm94
Pihib3gpLmhhc1RleHRDaGlsZHJlbigpKQpAQCAtOTAzLDcgKzkwMyw3IEBAIGJvb2wgTGVnYWN5
Um9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJGb3JCb3goTGVnYWN5SW5saW5lQm94
JiBib3gpIGNvbnN0CiAKIGJvb2wgTGVnYWN5Um9vdElubGluZUJveDo6aW5jbHVkZU1hcmdpbkZv
ckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCkgY29uc3QKIHsKLSAgICBpZiAoYm94LnJlbmRlcmVy
KCkuaXNSZXBsYWNlZCgpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYm
ICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQorICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaygpIHx8IChib3gucmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygp
ICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCkuY29udGFpbnMoTGlu
ZUJveENvbnRhaW46OklubGluZUJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCAzZTJhOGIwMjZkZjViNzczODEwMzYzNTNlMmVhMTBhYjEzNDc2MGYzLi5i
MTNlOTdhMTE2YWUzYTE3YWZiYzUwMzZlMjYzOWZhNWE1YTIzMjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM5Myw4ICszOTMsOCBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0c0lmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
JiBvbGRTdHlsZSwgYwogICAgICAgICAvLyBUaGV5IHdpbGwgYmUgaW5zZXJ0ZWQgaW50byBvdXIg
cG9zaXRpb25lZCBvYmplY3RzIGxpc3QgZHVyaW5nIGxheW91dC4KICAgICAgICAgYXV0byogY29u
dGFpbmluZ0Jsb2NrID0gcGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChjb250YWluaW5nQmxvY2sg
JiYgIWlzPFJlbmRlclZpZXc+KCpjb250YWluaW5nQmxvY2spCi0gICAgICAgICAgICAmJiAoY29u
dGFpbmluZ0Jsb2NrLT5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpTdGF0aWMg
fHwgKGNvbnRhaW5pbmdCbG9jay0+aXNJbmxpbmUoKSAmJiAhY29udGFpbmluZ0Jsb2NrLT5pc1Jl
cGxhY2VkKCkpKSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5w
b3NpdGlvbigpID09IFBvc2l0aW9uVHlwZTo6UmVsYXRpdmUgJiYgY29udGFpbmluZ0Jsb2NrLT5p
c0lubGluZSgpICYmICFjb250YWluaW5nQmxvY2stPmlzUmVwbGFjZWQoKSkgeworICAgICAgICAg
ICAgJiYgKGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlw
ZTo6U3RhdGljIHx8IChjb250YWluaW5nQmxvY2stPmlzSW5saW5lKCkgJiYgIWNvbnRhaW5pbmdC
bG9jay0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkpKSB7CisgICAgICAgICAgICBpZiAoY29u
dGFpbmluZ0Jsb2NrLT5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpSZWxhdGl2
ZSAmJiBjb250YWluaW5nQmxvY2stPmlzSW5saW5lKCkgJiYgIWNvbnRhaW5pbmdCbG9jay0+aXNS
ZXBsYWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9j
ayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00MDgsNyArNDA4LDggQEAgdm9pZCBSZW5kZXJCbG9j
azo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdHNJZk5lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgb2xk
U3R5bGUsIGMKIHZvaWQgUmVuZGVyQmxvY2s6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSA9IGhhc0luaXRpYWxpemVkU3R5bGUoKSA/ICZzdHlsZSgpIDogbnVs
bHB0cjsKLSAgICBzZXRSZXBsYWNlZChuZXdTdHlsZS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkpOwor
ICAgIC8vIEZJWE1FOiBTaG91bGQgY2hhbmdlIHRoZSBleHByZXNzaW9uIGJlbG93IHRvIG5ld1N0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2suCisgICAgc2V0UmVwbGFj
ZWRPcklubGluZUJsb2NrKG5ld1N0eWxlLmlzRGlzcGxheUlubGluZVR5cGUoKSk7CiAgICAgaWYg
KG9sZFN0eWxlKQogICAgICAgICByZW1vdmVQb3NpdGlvbmVkT2JqZWN0c0lmTmVlZGVkKCpvbGRT
dHlsZSwgbmV3U3R5bGUpOwogICAgIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5l
d1N0eWxlKTsKQEAgLTg3Niw3ICs4NzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzaW1wbGlmaWVk
Tm9ybWFsRmxvd0xheW91dCgpCiAgICAgICAgIExpc3RIYXNoU2V0PExlZ2FjeVJvb3RJbmxpbmVC
b3gqPiBsaW5lQm94ZXM7CiAgICAgICAgIGZvciAoSW5saW5lV2Fsa2VyIHdhbGtlcihkb3duY2Fz
dDxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzKSk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFu
Y2UoKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlciA9ICp3YWxrZXIuY3Vy
cmVudCgpOwotICAgICAgICAgICAgaWYgKCFyZW5kZXJlci5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiAocmVuZGVyZXIuaXNSZXBsYWNlZCgpIHx8IHJlbmRlcmVyLmlzRmxvYXRpbmcoKSkpIHsK
KyAgICAgICAgICAgIGlmICghcmVuZGVyZXIuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKHJl
bmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgfHwgcmVuZGVyZXIuaXNGbG9hdGluZygp
KSkgewogICAgICAgICAgICAgICAgIFJlbmRlckJveCYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94
PihyZW5kZXJlcik7CiAgICAgICAgICAgICAgICAgYm94LmxheW91dElmTmVlZGVkKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKGJveC5pbmxpbmVCb3hXcmFwcGVyKCkpCkBAIC0xMTgwLDcgKzExODEs
NyBAQCBib29sIFJlbmRlckJsb2NrOjpwYWludENoaWxkKFJlbmRlckJveCYgY2hpbGQsIFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgaWYgKCFjaGlsZC5pc0Zsb2F0aW5nKCkgJiYgY2hpbGQuaXNSZXBsYWNlZCgpICYm
IHVzZVByaW50UmVjdCAmJiBjaGlsZC5oZWlnaHQoKSA8PSB2aWV3KCkucHJpbnRSZWN0KCkuaGVp
Z2h0KCkpIHsKKyAgICBpZiAoIWNoaWxkLmlzRmxvYXRpbmcoKSAmJiBjaGlsZC5pc1JlcGxhY2Vk
T3JJbmxpbmVCbG9jaygpICYmIHVzZVByaW50UmVjdCAmJiBjaGlsZC5oZWlnaHQoKSA8PSB2aWV3
KCkucHJpbnRSZWN0KCkuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gUGFnaW5hdGUgYmxvY2stbGV2
ZWwgcmVwbGFjZWQgZWxlbWVudHMuCiAgICAgICAgIGlmIChhYnNvbHV0ZUNoaWxkWSArIGNoaWxk
LmhlaWdodCgpID4gdmlldygpLnByaW50UmVjdCgpLm1heFkoKSkgewogICAgICAgICAgICAgaWYg
KGFic29sdXRlQ2hpbGRZIDwgdmlldygpLnRydW5jYXRlZEF0KCkpCkBAIC0yMTc2LDcgKzIxNzcs
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZQogICAgIGlmIChpc1RhYmxlKCkpCiAgICAgICAg
IHJldHVybiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIGZyYWdtZW50KTsKIAot
ICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxvY2so
KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyB3cm9uZyB3aGVuIHRoZSBvYmplY3Qn
cyB3cml0aW5nLW1vZGUgZG9lc24ndCBtYXRjaCB0aGUgbGluZSdzIHdyaXRpbmctbW9kZS4KICAg
ICAgICAgTGF5b3V0VW5pdCBwb2ludExvZ2ljYWxMZWZ0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IHBvaW50LngoKSA6IHBvaW50LnkoKTsKICAgICAgICAgTGF5b3V0VW5pdCBwb2ludExv
Z2ljYWxUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcG9pbnQueSgpIDogcG9pbnQu
eCgpOwpAQCAtMjQyOSw3ICsyNDMwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLAogICAgIC8v
IHRoZSBiYXNlIGNsYXNzLiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUg
dGhlIHJvb3QgbGluZQogICAgIC8vIGJveCwgdGhlbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIGFuIGlu
bGluZS1ibG9jayBpcyBpcnJlbGV2YW50LCBhbmQgd2UgYmVoYXZlCiAgICAgLy8ganVzdCBsaWtl
IGEgYmxvY2suCi0gICAgaWYgKGlzUmVwbGFjZWQoKSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkKKyAgICBpZiAoaXNSZXBsYWNlZE9ySW5saW5lQmxvY2so
KSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkKICAgICAg
ICAgcmV0dXJuIFJlbmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGlu
ZVBvc2l0aW9uTW9kZSk7CiAKICAgICBpZiAoZmlyc3RMaW5lICYmIHZpZXcoKS51c2VzRmlyc3RM
aW5lUnVsZXMoKSkgewpAQCAtMjQ0Nyw3ICsyNDQ4LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9j
azo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGkKICAgICAvLyB0aGUgYmFzZSBjbGFzcy4gIElmIHdlJ3JlIGJlaW5nIHF1ZXJpZWQgYXMgdGhv
dWdoIHdlJ3JlIHRoZSByb290IGxpbmUKICAgICAvLyBib3gsIHRoZW4gdGhlIGZhY3QgdGhhdCB3
ZSdyZSBhbiBpbmxpbmUtYmxvY2sgaXMgaXJyZWxldmFudCwgYW5kIHdlIGJlaGF2ZQogICAgIC8v
IGp1c3QgbGlrZSBhIGJsb2NrLgotICAgIGlmIChpc1JlcGxhY2VkKCkgJiYgbGluZVBvc2l0aW9u
TW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIHsKKyAgICBpZiAoaXNSZXBsYWNlZE9y
SW5saW5lQmxvY2soKSAmJiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT25Db250YWluaW5n
TGluZSkgewogICAgICAgICAvLyBGb3IgImxlYWYiIHRoZW1lIG9iamVjdHMsIGxldCB0aGUgdGhl
bWUgZGVjaWRlIHdoYXQgdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGlzLgogICAgICAgICAvLyBGSVhN
RTogTWlnaHQgYmUgYmV0dGVyIHRvIGhhdmUgYSBjdXN0b20gQ1NTIHByb3BlcnR5IGluc3RlYWQs
IHNvIHRoYXQgaWYgdGhlIHRoZW1lCiAgICAgICAgIC8vIGlzIHR1cm5lZCBvZmYsIGNoZWNrYm94
ZXMvcmFkaW9zIHdpbGwgc3RpbGwgaGF2ZSBkZWNlbnQgYmFzZWxpbmVzLgpAQCAtMjU3Niw3ICsy
NTc3LDcgQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCbG9jaygpIGNvbnN0
CiAgICAgICAgIGlmIChoYXNQc2V1ZG8pCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUmVu
ZGVyRWxlbWVudCogcGFyZW50QmxvY2sgPSBmaXJzdExpbmVCbG9jay0+cGFyZW50KCk7Ci0gICAg
ICAgIGlmIChmaXJzdExpbmVCbG9jay0+aXNSZXBsYWNlZCgpIHx8IGZpcnN0TGluZUJsb2NrLT5p
c0Zsb2F0aW5nKCkKKyAgICAgICAgaWYgKGZpcnN0TGluZUJsb2NrLT5pc1JlcGxhY2VkT3JJbmxp
bmVCbG9jaygpIHx8IGZpcnN0TGluZUJsb2NrLT5pc0Zsb2F0aW5nKCkKICAgICAgICAgICAgIHx8
ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRCbG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGluZUJs
b2NrIHx8ICFpc1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZmlyc3RMaW5lQmxvY2sgPSBkb3duY2FzdDxSZW5k
ZXJCbG9jaz4ocGFyZW50QmxvY2spOwpAQCAtMjU5OSw3ICsyNjAwLDcgQEAgc3RhdGljIGlubGlu
ZSBSZW5kZXJCbG9jayogZmluZEZpcnN0TGV0dGVyQmxvY2soUmVuZGVyQmxvY2sqIHN0YXJ0KQog
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0TGV0dGVyQmxvY2s7CiAKICAgICAgICAgUmVuZGVyRWxl
bWVudCogcGFyZW50QmxvY2sgPSBmaXJzdExldHRlckJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAg
aWYgKGZpcnN0TGV0dGVyQmxvY2stPmlzUmVwbGFjZWQoKSB8fCAhcGFyZW50QmxvY2sgfHwgcGFy
ZW50QmxvY2stPmZpcnN0Q2hpbGQoKSAhPSBmaXJzdExldHRlckJsb2NrCisgICAgICAgIGlmIChm
aXJzdExldHRlckJsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8ICFwYXJlbnRCbG9j
ayB8fCBwYXJlbnRCbG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGV0dGVyQmxvY2sKICAgICAg
ICAgICAgIHx8ICFpc1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgZmlyc3RMZXR0ZXJCbG9jayA9
IGRvd25jYXN0PFJlbmRlckJsb2NrPihwYXJlbnRCbG9jayk7CkBAIC0yNjQ3LDcgKzI2NDgsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPYmplY3QqJiBmaXJzdExl
dHRlciwgUmVuZGVyRWxlbWVudComIGZpcgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5nKCk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5pc1JlcGxhY2VkKCkgfHwgaXM8UmVuZGVyQnV0
dG9uPihjdXJyZW50KSB8fCBpczxSZW5kZXJNZW51TGlzdD4oY3VycmVudCkpCisgICAgICAgIH0g
ZWxzZSBpZiAoY3VycmVudC5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGlzPFJlbmRlckJ1
dHRvbj4oY3VycmVudCkgfHwgaXM8UmVuZGVyTWVudUxpc3Q+KGN1cnJlbnQpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuaXNGbGV4aWJsZUJveEluY2x1ZGlu
Z0RlcHJlY2F0ZWQoKSB8fCBjdXJyZW50LmlzUmVuZGVyR3JpZCgpKQogICAgICAgICAgICAgZmly
c3RMZXR0ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCmluZGV4IDIxZTYyMTBlNTljMzI3YThjNzQyNWFkNDBmMDcxYmQzMzE3NzNl
NGUuLmRlN2NhY2E4ZGZmNTQ0N2VjZGJiMmUzYjFkMDAwZDc5NzRlNGQ2MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zOTQsNyArMzk0LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgYWRqdXN0Qm9yZGVyQm94UmVjdEZvclBhaW50aW5nKExheW91dFJlY3Qm
KSBvdmVycmlkZTsKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdFRvQ2xpcE91dEZyb21Cb3JkZXIo
Y29uc3QgTGF5b3V0UmVjdCYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5s
aW5lVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVwbGFjZWQo
KTsgfQorICAgIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCk7IH0KICAgICAK
ICAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDNl
N2UwY2NlMTU5MjA0M2E4ZWIxNDk5MDg0MDYyNjA3OTA0Y2Y0ZjAuLjQ3OTVkYjdlMzA3ZDc2ZDlj
YWE0MWU4OGU4MzNjNjFkNTllYmU4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OnJlYnVpbGRGbG9hdGluZ09iamVjdFNldEZyb21JbnRydWRpbmdGbG9hdHMoKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgY292ZXJlZCBieSB0aGUgaXNS
ZXBsYWNlZCgpIGNoZWNrIGluIHRoZSBhdm9pZEZsb2F0cyBtZXRob2QuCisgICAgLy8gSW5saW5l
IGJsb2NrcyBhcmUgY292ZXJlZCBieSB0aGUgaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSBjaGVj
ayBpbiB0aGUgYXZvaWRGbG9hdHMgbWV0aG9kLgogICAgIGlmIChhdm9pZHNGbG9hdHMoKSB8fCBp
c0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkgfHwgaXNSZW5kZXJWaWV3KCkgfHwgaXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgaWYg
KG1fZmxvYXRpbmdPYmplY3RzKQogICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmNsZWFy
KCk7CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93
Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgICAg
ICBMYXlvdXRQb2ludCBwb2ludChwb2ludEluTG9naWNhbENvbnRlbnRzLngoKSwgY2xvc2VzdFJ1
bi0+bGluZSgpLT5ibG9ja0RpcmVjdGlvblBvaW50SW5MaW5lKCkpOwogICAgICAgICBpZiAoIWlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBwb2ludCA9IHBvaW50LnRyYW5z
cG9zZWRQb2ludCgpOwotICAgICAgICBpZiAoY2xvc2VzdFJ1bi0+cmVuZGVyZXIoKS5pc1JlcGxh
Y2VkKCkpCisgICAgICAgIGlmIChjbG9zZXN0UnVuLT5yZW5kZXJlcigpLmlzUmVwbGFjZWRPcklu
bGluZUJsb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3Rp
bmdFZGl0aW5nQm91bmRhcmllcygqdGhpcywgY29uc3RfY2FzdDxSZW5kZXJCb3gmPihkb3duY2Fz
dDxSZW5kZXJCb3g+KGNsb3Nlc3RSdW4tPnJlbmRlcmVyKCkpKSwgcG9pbnQpOwogICAgICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihjbG9zZXN0UnVuLT5yZW5kZXJlcigpKS5w
b3NpdGlvbkZvclBvaW50KHBvaW50LCBudWxscHRyKTsKICAgICB9CkBAIC0zOTk3LDcgKzM5OTcs
NyBAQCBSZW5kZXJPYmplY3QqIElubGluZU1pbk1heEl0ZXJhdG9yOjpuZXh0KCkKICAgICBib29s
IG9sZEVuZE9mSW5saW5lID0gZW5kT2ZJbmxpbmU7CiAgICAgZW5kT2ZJbmxpbmUgPSBmYWxzZTsK
ICAgICBkbyB7Ci0gICAgICAgIGlmICghb2xkRW5kT2ZJbmxpbmUgJiYgKGN1cnJlbnQgJiYgIWN1
cnJlbnQtPmlzRmxvYXRpbmcoKSAmJiAhY3VycmVudC0+aXNSZXBsYWNlZCgpICYmICFjdXJyZW50
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkpCisgICAgICAgIGlmICghb2xkRW5kT2ZJbmxpbmUg
JiYgKGN1cnJlbnQgJiYgIWN1cnJlbnQtPmlzRmxvYXRpbmcoKSAmJiAhY3VycmVudC0+aXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSAmJiAhY3VycmVudC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
KQogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudC0+Zmlyc3RDaGlsZFNsb3coKTsKICAgICAg
ICAgZWxzZSBpZiAoaW5pdGlhbCkgewogICAgICAgICAgICAgcmVzdWx0ID0gcGFyZW50LmZpcnN0
Q2hpbGQoKTsKQEAgLTQwMjgsNyArNDAyOCw3IEBAIFJlbmRlck9iamVjdCogSW5saW5lTWluTWF4
SXRlcmF0b3I6Om5leHQoKQogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIGlmICghcmVzdWx0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVz
dWx0LT5pc1RleHRPckxpbmVCcmVhaygpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3Vs
dC0+aXNSZXBsYWNlZCgpIHx8IHJlc3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCisgICAgICAgIGlm
ICghcmVzdWx0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVzdWx0LT5pc1RleHRPckxp
bmVCcmVhaygpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3VsdC0+aXNSZXBsYWNlZE9y
SW5saW5lQmxvY2soKSB8fCByZXN1bHQtPmlzUmVuZGVySW5saW5lKCkpKQogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY3VycmVudCA9IHJlc3VsdDsKQEAgLTQxMjYsNyArNDEyNiw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRo
cyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgYm9vbCBhZGRlZFN0YXJ0UHVuY3R1YXRpb25I
YW5nID0gZmFsc2U7CiAgICAgCiAgICAgd2hpbGUgKFJlbmRlck9iamVjdCogY2hpbGQgPSBjaGls
ZEl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICBib29sIGF1dG9XcmFwID0gY2hpbGQtPmlzUmVw
bGFjZWQoKSA/IGNoaWxkLT5wYXJlbnQoKS0+c3R5bGUoKS5hdXRvV3JhcCgpIDoKKyAgICAgICAg
Ym9vbCBhdXRvV3JhcCA9IGNoaWxkLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpID8gY2hpbGQt
PnBhcmVudCgpLT5zdHlsZSgpLmF1dG9XcmFwKCkgOgogICAgICAgICAgICAgY2hpbGQtPnN0eWxl
KCkuYXV0b1dyYXAoKTsKICAgICAgICAgaWYgKCFjaGlsZC0+aXNCUigpKSB7CiAgICAgICAgICAg
ICAvLyBTdGVwIE9uZTogZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdlIG5lZWQgdG8gdGVybWlu
YXRlIG91ciBjdXJyZW50IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDIwMmI0NDI3NGYxN2M3ODBjNDQ0MzRjMzU2ZWZmYWZkNzA5ZWNkNzUuLmNiNGY0OTRj
NGE0MTQ4N2M1MmU4YmEzMzE3N2E4NmYzMWQ2MGM1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCkBAIC0yNDAwLDcgKzI0MDAsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJv
eDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExh
eW91dAogICAgIGlmIChpc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgb2Zmc2V0ICs9IG9m
ZnNldEZvckluRmxvd1Bvc2l0aW9uKCk7CiAKLSAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBs
YWNlZCgpKQorICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygp
KQogICAgICAgICBvZmZzZXQgKz0gdG9wTGVmdExvY2F0aW9uT2Zmc2V0KCk7CiAKICAgICBpZiAo
aXM8UmVuZGVyQm94Pihjb250YWluZXIpKQpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OnBvc2l0aW9uTGluZUJveChMZWdhY3lJbmxpbmVFbGVtZW50Qm94JiBib3gpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKGlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgc2V0TG9jYXRpb24oTGF5b3V0UG9p
bnQoYm94LnRvcExlZnQoKSkpOwogICAgICAgICBzZXRJbmxpbmVCb3hXcmFwcGVyKCZib3gpOwog
ICAgIH0KQEAgLTMwODUsNyArMzA4NSw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAgICAg
Y29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxUb3A7CiAKICAgICAvLyBDZWxsIGhl
aWdodCBpcyBtYW5hZ2VkIGJ5IHRoZSB0YWJsZSBhbmQgaW5saW5lIG5vbi1yZXBsYWNlZCBlbGVt
ZW50cyBkbyBub3Qgc3VwcG9ydCBhIGhlaWdodCBwcm9wZXJ0eS4KLSAgICBpZiAoaXNUYWJsZUNl
bGwoKSB8fCAoaXNJbmxpbmUoKSAmJiAhaXNSZXBsYWNlZCgpKSkKKyAgICBpZiAoaXNUYWJsZUNl
bGwoKSB8fCAoaXNJbmxpbmUoKSAmJiAhaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZFZhbHVlczsKIAogICAgIExlbmd0aCBoOwpAQCAtMzI4NCw3ICsz
Mjg0LDcgQEAgYm9vbCBSZW5kZXJCb3g6OnNraXBDb250YWluaW5nQmxvY2tGb3JQZXJjZW50SGVp
Z2h0Q2FsY3VsYXRpb24oY29uc3QgUmVuZGVyQm94JgogCiBib29sIFJlbmRlckJveDo6c2hvdWxk
VHJlYXRDaGlsZEFzUmVwbGFjZWRJblRhYmxlQ2VsbHMoKSBjb25zdAogewotICAgIGlmIChpc1Jl
cGxhY2VkKCkpCisgICAgaWYgKGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIHJldHVybiBlbGVtZW50KCkgJiYgKGVsZW1lbnQoKS0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSB8fCBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKTsKIH0KQEAg
LTM4NDksNyArMzg0OSw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5j
ZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxSaWdoCiAKIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMmIGNvbXB1dGVkVmFsdWVzLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogZnJhZ21lbnQp
IGNvbnN0CiB7Ci0gICAgaWYgKGlzUmVwbGFjZWQoKSkgeworICAgIGlmIChpc1JlcGxhY2VkT3JJ
bmxpbmVCbG9jaygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQb3NpdGlvbmVkIHJlcGxhY2VkIGVs
ZW1lbnRzIGluc2lkZSBhIGZsb3cgdGhyZWFkIGFyZSBub3Qgd29ya2luZyBwcm9wZXJseQogICAg
ICAgICAvLyB3aXRoIHZhcmlhYmxlIHdpZHRoIGZyYWdtZW50cyAoc2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTg5NiApLgogICAgICAgICBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKGNvbXB1dGVkVmFsdWVzKTsKQEAgLTQyMzksNyArNDIz
OSw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVCbG9ja1N0YXRpY0Rpc3RhbmNlKExlbmd0aCYgbG9n
aWNhbFRvcCwgTGVuZ3RoJiBsb2dpY2FsQm90dG9tCiAKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21w
dXRlZFZhbHVlcykgY29uc3QKIHsKLSAgICBpZiAoaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKGlz
UmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsSGVpZ2h0UmVwbGFjZWQoY29tcHV0ZWRWYWx1ZXMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNDkyMyw3ICs0OTIzLDcgQEAgYm9vbCBSZW5kZXJCb3g6OmNyZWF0ZXNOZXdGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0CiAKIGJvb2wgUmVuZGVyQm94Ojphdm9pZHNGbG9hdHMoKSBjb25z
dAogewotICAgIHJldHVybiBpc1JlcGxhY2VkKCkgfHwgaXNIUigpIHx8IGlzTGVnZW5kKCkgfHwg
aXNGaWVsZHNldCgpIHx8IGNyZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpOworICAgIHJldHVy
biBpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGlzSFIoKSB8fCBpc0xlZ2VuZCgpIHx8IGlz
RmllbGRzZXQoKSB8fCBjcmVhdGVzTmV3Rm9ybWF0dGluZ0NvbnRleHQoKTsKIH0KIAogdm9pZCBS
ZW5kZXJCb3g6OmFkZFZpc3VhbEVmZmVjdE92ZXJmbG93KCkKQEAgLTUwOTYsNyArNTA5Niw3IEBA
IGJvb2wgUmVuZGVyQm94OjpoYXNVbnNwbGl0dGFibGVTY3JvbGxpbmdPdmVyZmxvdygpIGNvbnN0
CiAKIGJvb2wgUmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSBjb25zdAog
ewotICAgIHJldHVybiBpc1JlcGxhY2VkKCkKKyAgICByZXR1cm4gaXNSZXBsYWNlZE9ySW5saW5l
QmxvY2soKQogICAgICAgICB8fCBoYXNVbnNwbGl0dGFibGVTY3JvbGxpbmdPdmVyZmxvdygpCiAg
ICAgICAgIHx8IChwYXJlbnQoKSAmJiBpc1dyaXRpbmdNb2RlUm9vdCgpKQogICAgICAgICB8fCAo
aXNGbG9hdGluZygpICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0
dGVyICYmIHN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDApCkBAIC01MTA1LDE0ICs1MTA1
LDE0IEBAIGJvb2wgUmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSBjb25z
dAogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8s
IExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3Np
dGlvbk1vZGUqLykgY29uc3QKIHsKLSAgICBpZiAoaXNSZXBsYWNlZCgpKQorICAgIGlmIChpc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpKQogICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6
b250YWxMaW5lID8gbV9tYXJnaW5Cb3gudG9wKCkgKyBoZWlnaHQoKSArIG1fbWFyZ2luQm94LmJv
dHRvbSgpIDogbV9tYXJnaW5Cb3gucmlnaHQoKSArIHdpZHRoKCkgKyBtX21hcmdpbkJveC5sZWZ0
KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjpiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgLypmaXJzdExpbmUqLywgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9u
TW9kZSovKSBjb25zdAogewotICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKKyAgICBpZiAoaXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kVG9JbnQo
ZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbV9tYXJnaW5Cb3gudG9wKCkgKyBoZWlnaHQo
KSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogbV9tYXJnaW5Cb3gucmlnaHQoKSArIHdpZHRoKCkg
KyBtX21hcmdpbkJveC5sZWZ0KCkpOwogICAgICAgICBpZiAoYmFzZWxpbmVUeXBlID09IEFscGhh
YmV0aWNCYXNlbGluZSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNzdlNDU4MTU3MTkxMzg1ODJkNTZmYTJlOWE3OTg2Njk1
ZDdhNjE1ZS4uNjIyYWE2MThhY2I5YTQzODQ1ODE5MjZiNmZjMTk2YzdmMTQ3ZGQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNzEwLDcgKzcxMCw3IEBAIHByb3RlY3Rl
ZDoKICAgICBMYXlvdXRVbml0IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhMZW5n
dGggbG9naWNhbFdpZHRoTGVuZ3RoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwg
TGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNp
bmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25z
dDsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkg
Y29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJs
ZSgpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNv
bnN0IHsgcmV0dXJuIGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgIWlzSW5saW5lQmxvY2tP
cklubGluZVRhYmxlKCk7IH0KIAogICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
LCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmgKaW5kZXggZjA1ZDQwYjNkYTM2OTMwZGI4MDUwZGZkMzRjNzZmMDAwMjI3ZjM1MC4uMjI3
NjdlYjJjZmNhYjMxNGE3MTUwNDZkYTY1MGUzNDA0MzI4ZTBjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIyNSw3ICsyMjUsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBv
dmVycmlkZTsKIAotICAgIGJvb2wgY2FuSGF2ZUJveEluZm9JbkZyYWdtZW50KCkgY29uc3QgeyBy
ZXR1cm4gIWlzRmxvYXRpbmcoKSAmJiAhaXNSZXBsYWNlZCgpICYmICFpc0lubGluZSgpICYmICFp
c1RhYmxlQ2VsbCgpICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9jaygpOyB9
CisgICAgYm9vbCBjYW5IYXZlQm94SW5mb0luRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiAhaXNG
bG9hdGluZygpICYmICFpc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpICYmICFpc0lubGluZSgpICYm
ICFpc1RhYmxlQ2VsbCgpICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9jaygp
OyB9CiAKICAgICB2b2lkIGdldEdlb21ldHJ5Rm9yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsIEZsb2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0U2l6ZSYgcGhhc2UsIEZsb2F0U2l6
ZSYgdGlsZVNpemUpIGNvbnN0OwogICAgIHZvaWQgY29udGVudENoYW5nZWQoQ29udGVudENoYW5n
ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCA3ZTE4ZmYwYTZlNWZlYTQyZDYzNmE0OGUxMTA3
MmM2MzYzMjc0YjhiLi5hZWQzMmU2OWQyOGFlOGViMjczYWJhZjgxODRjMzI2YWE1NzkzNGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcApAQCAtMTAwMyw3ICsxMDAzLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3Is
IGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJy
aWRpbmdDb250ZW50U2l6ZSgpOwotICAgICAgICBpZiAocmVsYXlvdXRDaGlsZHJlbiB8fCAoY2hp
bGQtPmlzUmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0
ZWQoKSkpCisgICAgICAgIGlmIChyZWxheW91dENoaWxkcmVuIHx8IChjaGlsZC0+aXNSZXBsYWNl
ZE9ySW5saW5lQmxvY2soKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0
ZWQoKSkpCiAgICAgICAgICAgICB8fCAoY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkg
JiYgaXM8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpKSkgewogICAgICAgICAgICAgY2hpbGQtPnNl
dENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIApAQCAtMTEwNCw3ICsxMTA0LDcgQEAg
dm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNsZWFyTGluZUNsYW1wKCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGNoaWxkLT5jbGVhck92ZXJyaWRpbmdDb250ZW50
U2l6ZSgpOwotICAgICAgICBpZiAoKGNoaWxkLT5pc1JlcGxhY2VkKCkgJiYgKGNoaWxkLT5zdHls
ZSgpLndpZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgY2hpbGQtPnN0eWxlKCkuaGVp
Z2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpKQorICAgICAgICBpZiAoKGNoaWxkLT5pc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpICYmIChjaGlsZC0+c3R5bGUoKS53aWR0aCgpLmlzUGVyY2Vu
dE9yQ2FsY3VsYXRlZCgpIHx8IGNoaWxkLT5zdHlsZSgpLmhlaWdodCgpLmlzUGVyY2VudE9yQ2Fs
Y3VsYXRlZCgpKSkKICAgICAgICAgICAgIHx8IChjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5pc0F1
dG8oKSAmJiBpczxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCkpKSB7CiAgICAgICAgICAgICBjaGls
ZC0+c2V0Q2hpbGROZWVkc0xheW91dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggZjc4OTcxZjM4NDQ5NTUyNGI4N2NhMzM1MDAzMTRhMWJkMGVh
ZDM1NS4uZTNlYTU3NmU2MzAyYWRkMWEzYmI4MzQyNzI2YTFiMDNmNzdiMGVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTU4OCw3ICsxNTg4LDcg
QEAgQ29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QK
IAogYm9vbCBSZW5kZXJFbGVtZW50OjpnZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIHBvaW50
LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3QKIHsKLSAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNS
ZXBsYWNlZCgpKSB7CisgICAgaWYgKCFpc0lubGluZSgpIHx8IGlzUmVwbGFjZWRPcklubGluZUJs
b2NrKCkpIHsKICAgICAgICAgcG9pbnQgPSBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBV
c2VUcmFuc2Zvcm1zLCAmaW5zaWRlRml4ZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC0xNjE0LDE0ICsxNjE0LDE0IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6Z2V0TGVhZGluZ0Nv
cm5lcihGbG9hdFBvaW50JiBwb2ludCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0CiAgICAgICAg
IH0KICAgICAgICAgQVNTRVJUKG8pOwogCi0gICAgICAgIGlmICghby0+aXNJbmxpbmUoKSB8fCBv
LT5pc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgaWYgKCFvLT5pc0lubGluZSgpIHx8IG8tPmlzUmVw
bGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgICAgIHBvaW50ID0gby0+bG9jYWxUb0Fi
c29sdXRlKEZsb2F0UG9pbnQoKSwgVXNlVHJhbnNmb3JtcywgJmluc2lkZUZpeGVkKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHAtPm5vZGUoKSAm
JiBwLT5ub2RlKCkgPT0gZWxlbWVudCgpICYmIGlzPFJlbmRlclRleHQ+KCpvKSAmJiAhSW5saW5l
SXRlcmF0b3I6OmZpcnN0VGV4dEJveEZvcihkb3duY2FzdDxSZW5kZXJUZXh0PigqbykpKSB7CiAg
ICAgICAgICAgICAvLyBkbyBub3RoaW5nIC0gc2tpcCB1bnJlbmRlcmVkIHdoaXRlc3BhY2UgdGhh
dCBpcyBhIGNoaWxkIG9yIG5leHQgc2libGluZyBvZiB0aGUgYW5jaG9yCi0gICAgICAgIH0gZWxz
ZSBpZiAoaXM8UmVuZGVyVGV4dD4oKm8pIHx8IG8tPmlzUmVwbGFjZWQoKSkgeworICAgICAgICB9
IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KCpvKSB8fCBvLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9j
aygpKSB7CiAgICAgICAgICAgICBwb2ludCA9IEZsb2F0UG9pbnQoKTsKICAgICAgICAgICAgIGlm
IChpczxSZW5kZXJUZXh0PigqbykpIHsKICAgICAgICAgICAgICAgICBhdXRvJiB0ZXh0UmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigqbyk7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCBib29s
IFJlbmRlckVsZW1lbnQ6OmdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wm
IGluc2lkZUZpeGVkKSBjb25zdAogCiBib29sIFJlbmRlckVsZW1lbnQ6OmdldFRyYWlsaW5nQ29y
bmVyKEZsb2F0UG9pbnQmIHBvaW50LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3QKIHsKLSAgICBp
ZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKCFpc0lubGluZSgpIHx8
IGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpIHsKICAgICAgICAgcG9pbnQgPSBsb2NhbFRvQWJz
b2x1dGUoTGF5b3V0UG9pbnQoZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuc2l6ZSgpKSwgVXNl
VHJhbnNmb3JtcywgJmluc2lkZUZpeGVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMTY2OCw3ICsxNjY4LDcgQEAgYm9vbCBSZW5kZXJFbGVtZW50OjpnZXRUcmFpbGluZ0Nvcm5l
cihGbG9hdFBvaW50JiBwb2ludCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnMKICAgICAgICAgICAg
IG8gPSBwcmV2OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChvKTsKLSAgICAgICAgaWYgKGlz
PFJlbmRlclRleHQ+KCpvKSB8fCBvLT5pc1JlcGxhY2VkKCkpIHsKKyAgICAgICAgaWYgKGlzPFJl
bmRlclRleHQ+KCpvKSB8fCBvLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7CiAgICAgICAg
ICAgICBwb2ludCA9IEZsb2F0UG9pbnQoKTsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0
PigqbykpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGxpbmVzQm94ID0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4oKm8pLmxpbmVzQm91bmRpbmdCb3goKTsKQEAgLTE2OTYsNyArMTY5Niw3IEBA
IExheW91dFJlY3QgUmVuZGVyRWxlbWVudDo6YWJzb2x1dGVBbmNob3JSZWN0KGJvb2wqIGluc2lk
ZUZpeGVkKSBjb25zdAogICAgIEZsb2F0UG9pbnQgbG93ZXJSaWdodCA9IHRyYWlsaW5nOwogCiAg
ICAgLy8gVmVydGljYWwgd3JpdGluZyBtb2RlcyBtaWdodCBtZWFuIHRoZSBsZWFkaW5nIHBvaW50
IGlzIG5vdCBpbiB0aGUgdG9wIGxlZnQKLSAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNl
ZCgpKSB7CisgICAgaWYgKCFpc0lubGluZSgpIHx8IGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkp
IHsKICAgICAgICAgdXBwZXJMZWZ0ID0gRmxvYXRQb2ludChzdGQ6Om1pbihsZWFkaW5nLngoKSwg
dHJhaWxpbmcueCgpKSwgc3RkOjptaW4obGVhZGluZy55KCksIHRyYWlsaW5nLnkoKSkpOwogICAg
ICAgICBsb3dlclJpZ2h0ID0gRmxvYXRQb2ludChzdGQ6Om1heChsZWFkaW5nLngoKSwgdHJhaWxp
bmcueCgpKSwgc3RkOjptYXgobGVhZGluZy55KCksIHRyYWlsaW5nLnkoKSkpOwogICAgIH0gLy8g
T3RoZXJ3aXNlLCBpdCdzIG5vdCBvYnZpb3VzIHdoYXQgdG8gZG8uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggYzVjYWRmMDE4MGFjMzE4NjA1
YmUxYzcyZjkwMjAwOGM0ZTlhMWUwZi4uMjA5ZmY2YWVlNjE1NDk4ZDU2NTU3YTg3NTdiODY3ZDVi
YTFlNTk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxT
Y3JlZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVu
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVy
RnVsbFNjcmVlblBsYWNlaG9sZGVyKTsKIFJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3Jl
ZW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
RmxleGlibGVCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewotICAgIHNldFJlcGxhY2Vk
KGZhbHNlKTsgCisgICAgc2V0UmVwbGFjZWRPcklubGluZUJsb2NrKGZhbHNlKTsKIH0KIAogUmVu
ZGVyRnVsbFNjcmVlbjo6flJlbmRlckZ1bGxTY3JlZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggY2NjZTFjNjhmYzU1YzVlZDU0NWQ4ZGZiNmQ0NDE4M2U2
ODUxNGY4OS4uMWQwZjRlYTkwNmMwN2FmNWU2MWI0YzE2Y2Y1YzI2NzcyMWZlNjgwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MjMsOCArNTIzLDggQEAg
dm9pZCBSZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNMYXllcihMYXllckNoYW5nZVRpbWluZyB0
aW1pbmcpCiAKICAgICAvLyBSZW1vdmUgdGhlIGNoaWxkIHJlZmxlY3Rpb24gbGF5ZXIgYmVmb3Jl
IG1vdmluZyBvdGhlciBjaGlsZCBsYXllcnMuCiAgICAgLy8gVGhlIHJlZmxlY3Rpb24gbGF5ZXIg
c2hvdWxkIG5vdCBiZSBtb3ZlZCB0byB0aGUgcGFyZW50LgotICAgIGlmIChyZWZsZWN0aW9uKCkp
Ci0gICAgICAgIHJlbW92ZUNoaWxkKCpyZWZsZWN0aW9uTGF5ZXIoKSk7CisgICAgaWYgKGF1dG8q
IHJlZmxlY3Rpb25MYXllciA9IHRoaXMtPnJlZmxlY3Rpb25MYXllcigpKQorICAgICAgICByZW1v
dmVDaGlsZCgqcmVmbGVjdGlvbkxheWVyKTsKIAogICAgIC8vIE5vdyB3YWxrIG91ciBraWRzIGFu
ZCByZWF0dGFjaCB0aGVtIHRvIG91ciBwYXJlbnQuCiAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnQg
PSBtX2ZpcnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3NTc4
NWRmODNhOWNjOTBiMWQ1YzhkMTQ1OTVmN2NmNGVjZDdlNmIwLi5kM2Y1ZDFlN2IyN2Q2MjJmZjFm
ZTU0YmUzMTZmNjZiZTQxNDI1NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaApAQCAtNDM5LDcgKzQzOSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUmVmbGVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuaGFzUmVmbGVjdGlvbigpOyB9CiAgICAgYm9v
bCBpc1JlZmxlY3Rpb24oKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLmlzUmVwbGljYSgpOyB9
Ci0gICAgUmVuZGVyUmVwbGljYSogcmVmbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmbGVj
dGlvbi5nZXQoKTsgfQogICAgIFJlbmRlckxheWVyKiByZWZsZWN0aW9uTGF5ZXIoKSBjb25zdDsK
ICAgICBib29sIGlzUmVmbGVjdGlvbkxheWVyKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKaW5kZXggZjZlNWRhYzg0NTBlZGExMDA4NDNjZDgzOThmMzk3ZjkyMDBiNzdlYi4uN2U4ZGQ2
ODgyNGNmYjQ1NjIwODBlNTk0ZWNkODQwMmE2YzlmYzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTU2LDcgKzU2LDYg
QEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2lu
Zy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlICJS
ZW5kZXJSZXBsaWNhLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggNmUxM2YzYWEz
NGEyNDg4ZjY1MDYyMTU0Mjk3NzVmYmYyNjUxNzQ3Yy4uMzg5ZDVhM2U5ZTc4ODE1MDIwMmEwZDA1
MzE5YzExOWFiNTMwMDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCb3hMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJveExpc3QuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlz
dDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QmIGNvbnRh
aW4KICAgICAgICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChjdXJyZW50LT5pc1JlcGxh
Y2VkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkp
IHsKICAgICAgICAgICAgIGlmIChhdXRvIHdyYXBwZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpj
dXJyZW50KS5pbmxpbmVCb3hXcmFwcGVyKCkpCiAgICAgICAgICAgICAgICAgYm94ID0gJndyYXBw
ZXItPnJvb3QoKTsKICAgICAgICAgfSBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPigqY3VycmVudCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRl
eCAwMWIxYjAxM2M4MTUyNDc5NDIzM2Y1MDAxMDAxNzYzYjkzYmEzZmQ0Li4wMWU1ZGNlOGU3NTJm
MzkwMThhYzg2NzFmNjY4NWVjMjYwYjg0ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xNDY3LDkgKzE0NjcsOCBAQCBSZW5kZXJMaXN0
TWFya2VyOjpSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUmVuZGVy
U3R5bGUmJiBzdHlsZQogICAgIDogUmVuZGVyQm94KGxpc3RJdGVtLmRvY3VtZW50KCksIFdURk1v
dmUoc3R5bGUpLCAwKQogICAgICwgbV9saXN0SXRlbShsaXN0SXRlbSkKIHsKLSAgICAvLyBpbml0
IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCi0gICAgc2V0SW5saW5lKHRydWUpOyAgIC8vIG91ciBv
YmplY3QgaXMgSW5saW5lCi0gICAgc2V0UmVwbGFjZWQodHJ1ZSk7IC8vIHByZXRlbmQgdG8gYmUg
cmVwbGFjZWQKKyAgICBzZXRJbmxpbmUodHJ1ZSk7CisgICAgc2V0UmVwbGFjZWRPcklubGluZUJs
b2NrKHRydWUpOyAvLyBwcmV0ZW5kIHRvIGJlIHJlcGxhY2VkCiB9CiAKIFJlbmRlckxpc3RNYXJr
ZXI6On5SZW5kZXJMaXN0TWFya2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggNTA0NTAyNDg4ZDg0ZGE5MTVhNGQyMTA3N2U4YzhjYTlhOWZmZTRjYi4u
YmFhYjI5ZDNiOTZhYTZlYzI5YjU4MzFjZjRkZWUzYWFlNzAyNjEyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTY2OCw3ICs2NjgsNyBAQCBSZW5kZXJC
bG9jayogUmVuZGVyT2JqZWN0Ojpjb250YWluaW5nQmxvY2tGb3JQb3NpdGlvblR5cGUoUG9zaXRp
b25UeXBlIHBvc2l0aW9uVAogICAgIGlmIChwb3NpdGlvblR5cGUgPT0gUG9zaXRpb25UeXBlOjpT
dGF0aWMgfHwgcG9zaXRpb25UeXBlID09IFBvc2l0aW9uVHlwZTo6UmVsYXRpdmUgfHwgcG9zaXRp
b25UeXBlID09IFBvc2l0aW9uVHlwZTo6U3RpY2t5KSB7CiAgICAgICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrRm9yT2JqZWN0SW5GbG93ID0gWyZdIHsKICAgICAgICAgICAgIGF1dG8qIGFuY2VzdG9y
ID0gcmVuZGVyZXIucGFyZW50KCk7Ci0gICAgICAgICAgICB3aGlsZSAoYW5jZXN0b3IgJiYgKChh
bmNlc3Rvci0+aXNJbmxpbmUoKSAmJiAhYW5jZXN0b3ItPmlzUmVwbGFjZWQoKSkgfHwgIWFuY2Vz
dG9yLT5pc1JlbmRlckJsb2NrKCkpKQorICAgICAgICAgICAgd2hpbGUgKGFuY2VzdG9yICYmICgo
YW5jZXN0b3ItPmlzSW5saW5lKCkgJiYgIWFuY2VzdG9yLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9j
aygpKSB8fCAhYW5jZXN0b3ItPmlzUmVuZGVyQmxvY2soKSkpCiAgICAgICAgICAgICAgICAgYW5j
ZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyQmxvY2s+KGFuY2VzdG9yKTsKICAgICAgICAgfTsKQEAgLTE3MDcsNyArMTcwNyw3IEBA
IGludCBSZW5kZXJPYmplY3Q6OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKIAogaW50IFJlbmRlck9i
amVjdDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAogewotICAgIGlmIChpc1JlcGxhY2VkKCkpCisg
ICAgaWYgKGlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkpCiAgICAgICAgIHJldHVybiBub2RlKCkg
PyBzdGQ6Om1heCgxVSwgbm9kZSgpLT5jb3VudENoaWxkTm9kZXMoKSkgOiAxOwogICAgIGlmIChp
c0hSKCkpCiAgICAgICAgIHJldHVybiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCmluZGV4IGMzNTY2NTBjNWRmOTRkNmJhZWZjMDllZWM0ODU1NGYzNmRjNTZjNjIuLjZm
ZjIwMjEyYmE5Yzk4MWJjODdmZTFmNGI3ZjJiNTA4Y2VjMzNkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTM4Nyw3ICszODcsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gcmVzdCBvZiB0aGUgcmVuZGVyaW5nIHRyZWUgd2lsbCBtb3ZlIHRvIGEgc2ltaWxhciBtb2Rl
bC4KICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRU
ZXN0QWN0aW9uKTsKIAotICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBpc1JlcGxhY2VkKCkgJiYgKGlzSW1hZ2UoKSB8fCBpc1ZpZGVvKCkgfHwgaXNDYW52
YXMoKSk7IH0KKyAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1
cm4gaXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSAmJiAoaXNJbWFnZSgpIHx8IGlzVmlkZW8oKSB8
fCBpc0NhbnZhcygpKTsgfQogICAgIGJvb2wgaXNBbm9ueW1vdXMoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5pc0Fub255bW91cygpOyB9CiAgICAgYm9vbCBpc0Fub255bW91c0Jsb2NrKCkg
Y29uc3Q7CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RhYmxlUm93
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNUYWJsZVJvdygpOyB9CiAgICAgYm9vbCBp
c1JlbmRlclZpZXcoKSBjb25zdCAgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNCb3goKSAmJiBtX2Jp
dGZpZWxkcy5pc1RleHRPclJlbmRlclZpZXcoKTsgfQogICAgIGJvb2wgaXNJbmxpbmUoKSBjb25z
dCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc0lubGluZSgpOyB9IC8vIGlubGluZSBvYmplY3QKLSAg
ICBib29sIGlzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc1JlcGxhY2Vk
KCk7IH0gLy8gYSAicmVwbGFjZWQiIGVsZW1lbnQgKHNlZSBDU1MpCisgICAgYm9vbCBpc1JlcGxh
Y2VkT3JJbmxpbmVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzUmVwbGFjZWRP
cklubGluZUJsb2NrKCk7IH0KICAgICBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7IH0KIAogICAg
IGJvb2wgaGFzUmVmbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVE
YXRhKCkgJiYgcmFyZURhdGEoKS5oYXNSZWZsZWN0aW9uKCk7IH0KQEAgLTUwNiw3ICs1MDYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0JveCgpIHsgbV9iaXRmaWVsZHMuc2V0SXNCb3godHJ1
ZSk7IH0KICAgICB2b2lkIHNldElzVGFibGVSb3coKSB7IG1fYml0ZmllbGRzLnNldElzVGFibGVS
b3codHJ1ZSk7IH0KICAgICB2b2lkIHNldElzUmVuZGVyVmlldygpIHsgQVNTRVJUKGlzQm94KCkp
OyBtX2JpdGZpZWxkcy5zZXRJc1RleHRPclJlbmRlclZpZXcodHJ1ZSk7IH0KLSAgICB2b2lkIHNl
dFJlcGxhY2VkKGJvb2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0SXNSZXBsYWNlZChiKTsg
fQorICAgIHZvaWQgc2V0UmVwbGFjZWRPcklubGluZUJsb2NrKGJvb2wgYiA9IHRydWUpIHsgbV9i
aXRmaWVsZHMuc2V0SXNSZXBsYWNlZE9ySW5saW5lQmxvY2soYik7IH0KICAgICB2b2lkIHNldEhv
cml6b250YWxXcml0aW5nTW9kZShib29sIGIgPSB0cnVlKSB7IG1fYml0ZmllbGRzLnNldEhvcml6
b250YWxXcml0aW5nTW9kZShiKTsgfQogICAgIHZvaWQgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93
KGJvb2wgYiA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KGIp
OyB9CiAgICAgdm9pZCBzZXRIYXNMYXllcihib29sIGIgPSB0cnVlKSB7IG1fYml0ZmllbGRzLnNl
dEhhc0xheWVyKGIpOyB9CkBAIC04NTgsNyArODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICwgbV9pc0JveChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc1RhYmxlUm93KGZhbHNlKQogICAg
ICAgICAgICAgLCBtX2lzSW5saW5lKHRydWUpCi0gICAgICAgICAgICAsIG1faXNSZXBsYWNlZChm
YWxzZSkKKyAgICAgICAgICAgICwgbV9pc1JlcGxhY2VkT3JJbmxpbmVCbG9jayhmYWxzZSkKICAg
ICAgICAgICAgICwgbV9pc0xpbmVCcmVhayhmYWxzZSkKICAgICAgICAgICAgICwgbV9ob3Jpem9u
dGFsV3JpdGluZ01vZGUodHJ1ZSkKICAgICAgICAgICAgICwgbV9oYXNMYXllcihmYWxzZSkKQEAg
LTg5MCw3ICs4OTAsNyBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChp
c0JveCwgSXNCb3gpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1RhYmxlUm93LCBJ
c1RhYmxlUm93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNJbmxpbmUsIElzSW5s
aW5lKTsKLSAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNSZXBsYWNlZCwgSXNSZXBsYWNl
ZCk7CisgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzUmVwbGFjZWRPcklubGluZUJsb2Nr
LCBJc1JlcGxhY2VkT3JJbmxpbmVCbG9jayk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGlzTGluZUJyZWFrLCBJc0xpbmVCcmVhayk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGhvcml6b250YWxXcml0aW5nTW9kZSwgSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTsKIApAQCAtMTIw
MCw3ICsxMjAwLDcgQEAgaW5saW5lIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpuZXh0SW5G
bG93U2libGluZygpIGNvbnN0CiAKIGlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNBdG9taWNJ
bmxpbmVMZXZlbEJveCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0eWxlKCkuaXNEaXNwbGF5SW5s
aW5lVHlwZSgpICYmICEoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSAm
JiAhaXNSZXBsYWNlZCgpKTsKKyAgICByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBl
KCkgJiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1Jl
cGxhY2VkT3JJbmxpbmVCbG9jaygpKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojpo
YXNQb3RlbnRpYWxseVNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOTAzMjFkM2Q4YTZkNmViNzY1MGE5
NGRjMDZiNTJlMmY5MmJmYmVmLi5lOTYzN2VlYmUyMDYwOWFlMGM1ZDJiMWQ2ZjZiM2U2MWJjOWYx
Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAg
LTYxLDIxICs2MSwyMSBAQCBSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXpl
KGNEZWZhdWx0V2lkdGgsIGNEZWZhdWx0SGVpZ2h0KQogewotICAgIHNldFJlcGxhY2VkKHRydWUp
OworICAgIHNldFJlcGxhY2VkT3JJbmxpbmVCbG9jayh0cnVlKTsKIH0KIAogUmVuZGVyUmVwbGFj
ZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUs
IGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2lj
U2l6ZShpbnRyaW5zaWNTaXplKQogewotICAgIHNldFJlcGxhY2VkKHRydWUpOworICAgIHNldFJl
cGxhY2VkT3JJbmxpbmVCbG9jayh0cnVlKTsKIH0KIAogUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJl
cGxhY2VkKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgTGF5
b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGTW92
ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRy
aW5zaWNTaXplKQogewotICAgIHNldFJlcGxhY2VkKHRydWUpOworICAgIHNldFJlcGxhY2VkT3JJ
bmxpbmVCbG9jayh0cnVlKTsKIH0KIAogUmVuZGVyUmVwbGFjZWQ6On5SZW5kZXJSZXBsYWNlZCgp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcApp
bmRleCA1ZWRhYjJlN2U1NDIwNjMyZTA3NjgxODU5YzMwZjg1ZWQ4Y2E5ODIyLi4yOGY4ODA1YTJl
NzJhMDVlZDIxMDE1MjIyOWU5ZjQ0MDhmZjgyNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC00NCw3ICs0NCw4IEBAIFJlbmRlclJlcGxpY2E6OlJl
bmRlclJlcGxpY2EoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAg
IC8vIHJlbmRlcmVycyBiZWluZyByZXBsaWNhdGVkLCBzbyB0aGV5IGFsd2F5cyByZXBvcnQgdGhh
dCB0aGV5IGFyZSBpbmxpbmUsIG5vbi1yZXBsYWNlZC4KICAgICAvLyBIb3dldmVyLCB3ZSBuZWVk
IHRyYW5zZm9ybXMgdG8gYmUgYXBwbGllZCB0byByZXBsaWNhcyBmb3IgcmVmbGVjdGlvbnMsIHNv
IGhhdmUgdG8gcGFzcwogICAgIC8vIHRoZSBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgp
KSBjaGVjayBiZWZvcmUgc2V0SGFzVHJhbnNmb3JtKCkuCi0gICAgc2V0UmVwbGFjZWQodHJ1ZSk7
CisgICAgLy8gRklYTUU6IElzIHRoZSBjb21tZW50IGFib3ZlIG9ic29sZXRlPyBDYW4ndCBmaW5k
IGEgY2hlY2sgb2YgaXNSZXBsYWNlZE9ySW5saW5lQmxvY2sgZ3VhcmRpbmcgc2V0SGFzVHJhbnNm
b3JtIGFueSBtb3JlLgorICAgIHNldFJlcGxhY2VkT3JJbmxpbmVCbG9jayh0cnVlKTsKIH0KIAog
UmVuZGVyUmVwbGljYTo6flJlbmRlclJlcGxpY2EoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKaW5kZXggMGEyODFhYTc2ZjFhNmNkZDUzZjdk
ZTgzZjM5MzNjZjllMzA3ZTc2OC4uNWExMTVmNTcxY2EyNjg2N2NlNmFkMDIzNjI4NmUyNDQ4ZTlm
ZTViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAt
NTAsNyArNTAsNyBAQCBSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICAsIG1fbGFzdENoYXJhY3RlcigwKQogICAg
ICwgbV9zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoMCkKIHsKLSAgICBzZXRSZXBsYWNlZCh0cnVlKTsK
KyAgICBzZXRSZXBsYWNlZE9ySW5saW5lQmxvY2sodHJ1ZSk7CiAgICAgc2V0SW5saW5lKHRydWUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCmluZGV4IGIwMDdjYjhmMjlkNzVmYmFhZjJjODIzNDgwM2IxMTYxNTE4MWY5NWUuLjBjNjZk
N2NmYzA1ODVhOTE4MTg0ODk4MWQ3NmNmM2EyYTllZTlkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC0yMTgsOCArMjE4LDggQEAg
aW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0Ojppbml0aWFsaXplRm9yQ3VycmVudE9iamVjdCgp
CiAgICAgaWYgKG1fbmV4dE9iamVjdCAmJiBtX25leHRPYmplY3QtPnBhcmVudCgpICYmICFtX25l
eHRPYmplY3QtPnBhcmVudCgpLT5pc0Rlc2NlbmRhbnRPZihyZW5kZXJlci5wYXJlbnQoKSkpCiAg
ICAgICAgIG1faW5jbHVkZUVuZFdpZHRoID0gdHJ1ZTsKIAotICAgIG1fY3VycldTID0gcmVuZGVy
ZXIuaXNSZXBsYWNlZCgpID8gcmVuZGVyZXIucGFyZW50KCktPnN0eWxlKCkud2hpdGVTcGFjZSgp
IDogcmVuZGVyZXIuc3R5bGUoKS53aGl0ZVNwYWNlKCk7Ci0gICAgbV9sYXN0V1MgPSBtX2xhc3RP
YmplY3QtPmlzUmVwbGFjZWQoKSA/IG1fbGFzdE9iamVjdC0+cGFyZW50KCktPnN0eWxlKCkud2hp
dGVTcGFjZSgpIDogbV9sYXN0T2JqZWN0LT5zdHlsZSgpLndoaXRlU3BhY2UoKTsKKyAgICBtX2N1
cnJXUyA9IHJlbmRlcmVyLmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgPyByZW5kZXJlci5wYXJl
bnQoKS0+c3R5bGUoKS53aGl0ZVNwYWNlKCkgOiByZW5kZXJlci5zdHlsZSgpLndoaXRlU3BhY2Uo
KTsKKyAgICBtX2xhc3RXUyA9IG1fbGFzdE9iamVjdC0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2so
KSA/IG1fbGFzdE9iamVjdC0+cGFyZW50KCktPnN0eWxlKCkud2hpdGVTcGFjZSgpIDogbV9sYXN0
T2JqZWN0LT5zdHlsZSgpLndoaXRlU3BhY2UoKTsKIAogICAgIG1fYXV0b1dyYXAgPSBSZW5kZXJT
dHlsZTo6YXV0b1dyYXAobV9jdXJyV1MpOwogICAgIG1fYXV0b1dyYXBXYXNFdmVyVHJ1ZU9uTGlu
ZSA9IG1fYXV0b1dyYXBXYXNFdmVyVHJ1ZU9uTGluZSB8fCBtX2F1dG9XcmFwOwpAQCAtMTA4Niw3
ICsxMDg2LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpjYW5CcmVha0F0VGhpc1Bv
c2l0aW9uKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQXZvaWQgYnJlYWtpbmcg
YmVmb3JlIGVtcHR5IGlubGluZXMgKGFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgb2JqZWN0IGlzbid0
IHJlcGxhY2VkKS4KLSAgICBpZiAoIW1fY3VycmVudC5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkg
JiYgaXM8UmVuZGVySW5saW5lPihtX25leHRPYmplY3QpICYmIGlzRW1wdHlJbmxpbmUoZG93bmNh
c3Q8UmVuZGVySW5saW5lPigqbV9uZXh0T2JqZWN0KSkpCisgICAgaWYgKCFtX2N1cnJlbnQucmVu
ZGVyZXIoKS0+aXNSZXBsYWNlZE9ySW5saW5lQmxvY2soKSAmJiBpczxSZW5kZXJJbmxpbmU+KG1f
bmV4dE9iamVjdCkgJiYgaXNFbXB0eUlubGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCptX25l
eHRPYmplY3QpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gUmV0dXJuIGVhcmx5
IGlmIHdlIGF1dG93cmFwIGFuZCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBhcyB3
ZSB3aWxsIGFsd2F5cyB3YW50IHRvIGJyZWFrIGF0IHN1Y2ggYSBwb3NpdGlvbi4KQEAgLTExNTAs
NyArMTE1MCw3IEBAIGlubGluZSB2b2lkIEJyZWFraW5nQ29udGV4dDo6Y29tbWl0QW5kVXBkYXRl
TGluZUJyZWFrSWZOZWVkZWQoKQogCiAgICAgaWYgKCFtX2N1cnJlbnQucmVuZGVyZXIoKS0+aXNG
bG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIG1fbGFzdE9iamVjdCA9
IG1fY3VycmVudC5yZW5kZXJlcigpOwotICAgICAgICBpZiAobV9sYXN0T2JqZWN0LT5pc1JlcGxh
Y2VkKCkgJiYgbV9hdXRvV3JhcCAmJiAhbV9sYXN0T2JqZWN0LT5pc1J1YnlSdW4oKSAmJiAoIW1f
bGFzdE9iamVjdC0+aXNJbWFnZSgpIHx8IG1fYWxsb3dJbWFnZXNUb0JyZWFrKSAmJiAoIWlzPFJl
bmRlckxpc3RNYXJrZXI+KCptX2xhc3RPYmplY3QpIHx8IGRvd25jYXN0PFJlbmRlckxpc3RNYXJr
ZXI+KCptX2xhc3RPYmplY3QpLmlzSW5zaWRlKCkpKSB7CisgICAgICAgIGlmIChtX2xhc3RPYmpl
Y3QtPmlzUmVwbGFjZWRPcklubGluZUJsb2NrKCkgJiYgbV9hdXRvV3JhcCAmJiAhbV9sYXN0T2Jq
ZWN0LT5pc1J1YnlSdW4oKSAmJiAoIW1fbGFzdE9iamVjdC0+aXNJbWFnZSgpIHx8IG1fYWxsb3dJ
bWFnZXNUb0JyZWFrKSAmJiAoIWlzPFJlbmRlckxpc3RNYXJrZXI+KCptX2xhc3RPYmplY3QpIHx8
IGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KCptX2xhc3RPYmplY3QpLmlzSW5zaWRlKCkpKSB7
CiAgICAgICAgICAgICBpZiAobV9uZXh0T2JqZWN0KQogICAgICAgICAgICAgICAgIGNvbW1pdExp
bmVCcmVha0F0Q3VycmVudFdpZHRoKCptX25leHRPYmplY3QpOwogICAgICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCmluZGV4IDAw
Zjc1MmQ1YjEyNWE3ZjM1YTg0MmRkMjhmY2E1MjZlZTIxMWNhZGIuLjg4Nzg5MzQ3ZmY5MWU3MWYx
MTdjY2Y3NzdlYzUxZDE0NGQwMDQ3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lQnJlYWtlci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBMZWdhY3lJbmxpbmVJdGVy
YXRvciBMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyLCBMaQogICAgICAgICAgICAgY29udGV4dC5oYW5kbGVGbG9hdCgpOwogICAgICAgICB9IGVs
c2UgaWYgKGNvbnRleHQuY3VycmVudE9iamVjdCgpLT5pc1JlbmRlcklubGluZSgpKSB7CiAgICAg
ICAgICAgICBjb250ZXh0LmhhbmRsZUVtcHR5SW5saW5lKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
Y29udGV4dC5jdXJyZW50T2JqZWN0KCktPmlzUmVwbGFjZWQoKSkgeworICAgICAgICB9IGVsc2Ug
aWYgKGNvbnRleHQuY3VycmVudE9iamVjdCgpLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpKSB7
CiAgICAgICAgICAgICBjb250ZXh0LmhhbmRsZVJlcGxhY2VkKCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY29udGV4dC5jdXJyZW50T2JqZWN0KCktPmlzVGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAo
Y29udGV4dC5oYW5kbGVUZXh0KHdvcmRNZWFzdXJlbWVudHMsIG1faHlwaGVuYXRlZCwgY29uc2Vj
dXRpdmVIeXBoZW5hdGVkTGluZXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcAppbmRleCAy
NDU5M2ExZDljMGVmYzViYmJkNDAwMmViM2NkNzEwZWVmNmNhNWUxLi5iMjEzMTlkNDIxNzJhYzRh
NzdjYjc3ZWY5NDZiMjVjZWE4N2FlZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlcklubGluZS5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIGJvb2wgY2FuVXNlQXNQYXJlbnRGb3JDb250aW51YXRpb24o
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogc3RhdGljIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBuZXh0Q29udGludWF0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYg
KGlzPFJlbmRlcklubGluZT4oKnJlbmRlcmVyKSAmJiAhcmVuZGVyZXItPmlzUmVwbGFjZWQoKSkK
KyAgICBpZiAoaXM8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpICYmICFyZW5kZXJlci0+aXNSZXBs
YWNlZE9ySW5saW5lQmxvY2soKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlcklubGlu
ZT4oKnJlbmRlcmVyKS5jb250aW51YXRpb24oKTsKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
QmxvY2s+KCpyZW5kZXJlcikuaW5saW5lQ29udGludWF0aW9uKCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>